@cdktn/commons 0.25.0-pre.4 → 0.25.0-pre.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/util.d.ts CHANGED
@@ -33,7 +33,8 @@ export declare function mkdtemp(closure: (dir: string) => Promise<void>): Promis
33
33
  * @param command the executable to spawn
34
34
  * @param args arguments passed to the executable
35
35
  * @param options spawn options; `noColor: true` strips ANSI escapes from captured output (auto-detected from CLI flags
36
- * / `FORCE_COLOR=0` when omitted)
36
+ * / `FORCE_COLOR=0` when omitted); `logStderrAsDebug: true` tees stderr to `processLoggerDebug` instead, for runs
37
+ * whose diagnostics are not final and would only alarm the reader
37
38
  * @param stdout optional per-chunk callback for sanitized stdout
38
39
  * @param stderr optional per-chunk callback for sanitized stderr; passing a callback suppresses default terminal echo
39
40
  * @param sendToStderr when false, suppresses both the stderr callback invocation and the default terminal echo
@@ -41,6 +42,7 @@ export declare function mkdtemp(closure: (dir: string) => Promise<void>): Promis
41
42
  */
42
43
  export declare const exec: (command: string, args: string[], options: SpawnOptions & {
43
44
  noColor?: boolean;
45
+ logStderrAsDebug?: boolean;
44
46
  }, stdout?: (chunk: string) => any, stderr?: (chunk: string | Uint8Array) => any, sendToStderr?: boolean) => Promise<string>;
45
47
  export declare function readCDKTFVersion(outputDir: string): Promise<string>;
46
48
  export declare function readCDKTFManifest(): Promise<IManifest>;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAmC5C;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,mBAkBnD;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAa7B;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,iBAOpE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,IAAI,YACN,MAAM,QACT,MAAM,EAAE,WACL,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,WACpC,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,WACtB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,KAAK,GAAG,6BAE3C,QAAQ,MAAM,CAoEhB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGzB,UAAU,CAAC;gBADlB,OAAO,CAAC,EAAE,MAAM,EACT,UAAU,CAAC,oBAAQ;CAM7B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EACf,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,iBAUvC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAmC5C;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,mBAkBnD;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAa7B;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,iBAOpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,IAAI,YACN,MAAM,QACT,MAAM,EAAE,WACL,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,WAChE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,WACtB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,KAAK,GAAG,6BAE3C,QAAQ,MAAM,CAsEhB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGzB,UAAU,CAAC;gBADlB,OAAO,CAAC,EAAE,MAAM,EACT,UAAU,CAAC,oBAAQ;CAM7B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EACf,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,iBAUvC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
package/build/util.js CHANGED
@@ -123,7 +123,8 @@ exports.mkdtemp = mkdtemp;
123
123
  * @param command the executable to spawn
124
124
  * @param args arguments passed to the executable
125
125
  * @param options spawn options; `noColor: true` strips ANSI escapes from captured output (auto-detected from CLI flags
126
- * / `FORCE_COLOR=0` when omitted)
126
+ * / `FORCE_COLOR=0` when omitted); `logStderrAsDebug: true` tees stderr to `processLoggerDebug` instead, for runs
127
+ * whose diagnostics are not final and would only alarm the reader
127
128
  * @param stdout optional per-chunk callback for sanitized stdout
128
129
  * @param stderr optional per-chunk callback for sanitized stderr; passing a callback suppresses default terminal echo
129
130
  * @param sendToStderr when false, suppresses both the stderr callback invocation and the default terminal echo
@@ -137,7 +138,8 @@ const exec = async (command, args, options, stdout, stderr, sendToStderr = true)
137
138
  }
138
139
  // Drop spawn's `signal` option: the child already gets the interrupt via the process group, and a second signal
139
140
  // aborts terraform's graceful shutdown. Just wait for its own "close".
140
- const { signal: _signal, ...spawnOptions } = options;
141
+ const { signal: _signal, logStderrAsDebug, ...spawnOptions } = options;
142
+ const logStderr = logStderrAsDebug ? logging_1.processLoggerDebug : logging_1.processLoggerError;
141
143
  return new Promise((ok, ko) => {
142
144
  var _a, _b, _c, _d;
143
145
  const child = (0, cross_spawn_1.spawn)(command, args, spawnOptions);
@@ -167,7 +169,7 @@ const exec = async (command, args, options, stdout, stderr, sendToStderr = true)
167
169
  const sanitizedChunk = options.noColor
168
170
  ? (0, strip_ansi_1.default)(chunk.toLocaleString())
169
171
  : chunk.toLocaleString();
170
- (0, logging_1.processLoggerError)(sanitizedChunk);
172
+ logStderr(sanitizedChunk);
171
173
  if (sendToStderr) {
172
174
  stderr(sanitizedChunk);
173
175
  }
@@ -179,7 +181,7 @@ const exec = async (command, args, options, stdout, stderr, sendToStderr = true)
179
181
  const sanitizedChunk = options.noColor
180
182
  ? (0, strip_ansi_1.default)(chunk.toLocaleString())
181
183
  : chunk.toLocaleString();
182
- (0, logging_1.processLoggerError)(sanitizedChunk);
184
+ logStderr(sanitizedChunk);
183
185
  if (sendToStderr) {
184
186
  process.stderr.write(sanitizedChunk);
185
187
  }
@@ -296,4 +298,4 @@ function hasFlag(flag) {
296
298
  return (position !== -1 &&
297
299
  (terminatorPosition === -1 || position < terminatorPosition));
298
300
  }
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsNkNBQW9DO0FBQ3BDLDZDQUErQjtBQUMvQix1REFBK0M7QUFDL0MsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qix1Q0FBbUU7QUFDbkUsaUNBQTRDO0FBQzVDLGlEQUFtQztBQUNuQyw0REFBbUM7QUFJbkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFTLG1CQUFtQixDQUMxQixLQUFZLEVBQ1osVUFBa0IsRUFDbEIsVUFBa0I7SUFFakIsS0FBbUIsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ3hDLEtBQW1CLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNJLEtBQUssVUFBVSxLQUFLLENBQ3pCLE9BQWUsRUFDZixPQUFpQixFQUFFLEVBQ25CLFVBQWdELEVBQUU7SUFFbEQsT0FBTyxJQUFBLFlBQUksRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE9BQU8sRUFDUCxDQUFDLEtBQWEsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1lBQ3BDLENBQUMsQ0FBQyxJQUFBLG9CQUFTLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QixDQUFDLEVBQ0QsR0FBRyxFQUFFO1FBQ0gsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSxvQ0FBb0M7SUFDdEMsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBckJELHNCQXFCQztBQUVNLEtBQUssVUFBVSxXQUFXLENBQy9CLE9BQWUsRUFDZixPQUE0QjtJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsTUFBTSxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO1lBQVMsQ0FBQztRQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDO0FBZkQsa0NBZUM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUFDLE9BQXVDO0lBQ25FLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7QUFDSCxDQUFDO0FBUEQsMEJBT0M7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixPQUFlLEVBQ2YsSUFBYyxFQUNkLE9BQTZDLEVBQzdDLE1BQStCLEVBQy9CLE1BQTRDLEVBQzVDLFlBQVksR0FBRyxJQUFJLEVBQ0YsRUFBRTtJQUNuQixzRkFBc0Y7SUFDdEYsMkZBQTJGO0lBQzNGLElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxFQUFFLENBQUM7UUFDbEUsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELGdIQUFnSDtJQUNoSCx1RUFBdUU7SUFDdkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFckQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTs7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBSyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2hDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUN6QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTztvQkFDcEMsQ0FBQyxDQUFDLElBQUEsb0JBQVMsRUFBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25DLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNCLElBQUEsNEJBQWtCLEVBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBQSxLQUFLLENBQUMsTUFBTSwwQ0FBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQ3pDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPO29CQUNwQyxDQUFDLENBQUMsSUFBQSxvQkFBUyxFQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDM0IsSUFBQSw0QkFBa0IsRUFBQyxjQUFjLENBQUMsQ0FBQztnQkFDbkMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixNQUFBLEtBQUssQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUEwQixFQUFFLEVBQUU7Z0JBQ3RELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPO29CQUNwQyxDQUFDLENBQUMsSUFBQSxvQkFBUyxFQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDM0IsSUFBQSw0QkFBa0IsRUFBQyxjQUFjLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQTBCLEVBQUUsRUFBRTtnQkFDdEQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU87b0JBQ3BDLENBQUMsQ0FBQyxJQUFBLG9CQUFTLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMzQixJQUFBLDRCQUFrQixFQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ25DLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUNyQixHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQ3hELENBQUM7Z0JBQ0YsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUEzRVcsUUFBQSxJQUFJLFFBMkVmO0FBRUssS0FBSyxVQUFVLGdCQUFnQixDQUFDLFNBQWlCO0lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBVEQsNENBU0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCO0lBQ3JDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFjLENBQUM7QUFDbEQsQ0FBQztBQUpELDhDQUlDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxHQUFXO0lBQ3ZDLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBTEQsc0NBS0M7QUFFRCxNQUFhLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQ0UsT0FBZ0IsRUFDVCxVQUFtQjtRQUUxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7UUFGL0MsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUcxQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCO1FBQzdFLDRHQUE0RztJQUM5RyxDQUFDO0NBQ0Y7QUFURCw4QkFTQztBQUVNLEtBQUssVUFBVSxZQUFZLENBQ2hDLEdBQVcsRUFDWCxjQUFzQjtJQUV0Qiw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLGtFQUFrRTtJQUNsRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUFLLENBQWdCLENBQUM7SUFDekUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLEVBQUUsQ0FDQSxJQUFJLFNBQVMsQ0FDWCxrQkFBa0IsR0FBRyxNQUFNLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFDakQsUUFBUSxDQUFDLFVBQVUsQ0FDcEIsQ0FDRixDQUFDO2dCQUNGLE9BQU87WUFDVCxDQUFDO1lBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFOUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUNqQyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBbkNELG9DQW1DQztBQUVEOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLDhCQUE4QixDQUNsRCxDQUFlLEVBQ2YsUUFBc0M7SUFFdEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFaRCx3RUFZQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUI7SUFDakMsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDO0FBQ2hFLENBQUM7QUFGRCxrREFFQztBQUVELG9FQUFvRTtBQUNwRSw0Q0FBNEM7QUFDNUMsU0FBUyxPQUFPLENBQUMsSUFBWTtJQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQ0wsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUNmLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLENBQzdELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFNwYXduT3B0aW9ucyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gXCJjcm9zcy1zcGF3blwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBodHRwcywgaHR0cCB9IGZyb20gXCJmb2xsb3ctcmVkaXJlY3RzXCI7XG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHByb2Nlc3NMb2dnZXJFcnJvciwgcHJvY2Vzc0xvZ2dlckRlYnVnIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgSU1hbmlmZXN0LCBNYW5pZmVzdCB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tIFwic3RyaXAtYW5zaVwiO1xuXG50eXBlIEV4ZWNFcnJvciA9IEVycm9yICYgeyBzdGRlcnI6IHN0cmluZzsgc3Rkb3V0OiBzdHJpbmcgfTtcblxuLyoqXG4gKiBBdHRhY2ggY2FwdHVyZWQgc3RkZXJyL3N0ZG91dCB0byBhIHByb2Nlc3MtZmFpbHVyZSBFcnJvci5cbiAqXG4gKiBUaGUgYm9keSB0ZXh0IGlzIGV4cG9zZWQgdHdvIHdheXM6XG4gKiAtIGAuc3RkZXJyYCBhbmQgYC5zdGRvdXRgIHByb3BlcnRpZXMsIGZvciBjYWxsZXJzIHRoYXQgcmVuZGVyIHRoZSBzdHJlYW1zIHNlcGFyYXRlbHkgKGUuZy4gc3ludGgtc3RhY2sncyBjaGFsa1xuICogICBmb3JtYXR0aW5nKS5cbiAqIC0gQSBgdG9TdHJpbmcoKWAgb3ZlcnJpZGUgdGhhdCBhcHBlbmRzIHRoZSBib2R5IGFmdGVyIHRoZSBoZWFkbGluZSwgc28gY2FsbGVycyB1c2luZyBgJHtlfWAgaW50ZXJwb2xhdGlvbiBzdXJmYWNlIHRoZVxuICogICB1bmRlcmx5aW5nIHRvb2wgb3V0cHV0IHdpdGhvdXQgZG91YmxlLXByaW50aW5nIGZvciB0aGUgcHJvcGVydHktcmVhZGluZyBjYWxsZXJzLlxuICpcbiAqIFRoZSBFcnJvcidzIGAubWVzc2FnZWAgaXMgbGVmdCB1bnRvdWNoZWQgYXMgdGhlIGhlYWRsaW5lIG9ubHkuXG4gKlxuICogQHBhcmFtIGVycm9yIHRoZSBFcnJvciB0byBkZWNvcmF0ZSAoaXRzIGAubWVzc2FnZWAgYmVjb21lcyB0aGUgdG9TdHJpbmcgaGVhZGxpbmUpXG4gKiBAcGFyYW0gc3RkZXJyVGV4dCBjYXB0dXJlZCBzdGRlcnIsIG1heSBiZSBlbXB0eVxuICogQHBhcmFtIHN0ZG91dFRleHQgY2FwdHVyZWQgc3Rkb3V0LCBtYXkgYmUgZW1wdHlcbiAqL1xuZnVuY3Rpb24gYXR0YWNoUHJvY2Vzc091dHB1dChcbiAgZXJyb3I6IEVycm9yLFxuICBzdGRlcnJUZXh0OiBzdHJpbmcsXG4gIHN0ZG91dFRleHQ6IHN0cmluZyxcbik6IGFzc2VydHMgZXJyb3IgaXMgRXhlY0Vycm9yIHtcbiAgKGVycm9yIGFzIEV4ZWNFcnJvcikuc3RkZXJyID0gc3RkZXJyVGV4dDtcbiAgKGVycm9yIGFzIEV4ZWNFcnJvcikuc3Rkb3V0ID0gc3Rkb3V0VGV4dDtcbiAgY29uc3QgYm9keSA9IFtzdGRlcnJUZXh0LCBzdGRvdXRUZXh0XS5maWx0ZXIoQm9vbGVhbikuam9pbihcIlxcblwiKTtcbiAgaWYgKGJvZHkpIHtcbiAgICBjb25zdCBoZWFkbGluZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgZXJyb3IudG9TdHJpbmcgPSAoKSA9PiBgRXJyb3I6ICR7aGVhZGxpbmV9XFxuJHtib2R5fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBTcGF3biBhIGNoaWxkIHByb2Nlc3MgYW5kIG1pcnJvciBpdHMgc3Rkb3V0IHRvIHRoZSBwYXJlbnQncyBjb25zb2xlLlxuICpcbiAqIFRoaW4gd3JhcHBlciBvdmVyIHtAbGluayBleGVjfSBmb3IgY2FsbGVycyB0aGF0IHdhbnQgc3Rkb3V0IGNodW5rcyBlY2hvZWQgdmlhIGBjb25zb2xlLmxvZ2AgYXMgdGhleSBhcnJpdmUuIFN0ZGVyciBpc1xuICogY2FwdHVyZWQgc2lsZW50bHkgYW5kIHN1cmZhY2VkIG9uIHRoZSB0aHJvd24gRXJyb3IncyBgLnN0ZGVycmAgLyBgdG9TdHJpbmcoKWAgaWYgdGhlIHByb2Nlc3MgZXhpdHMgbm9uLXplcm8uXG4gKlxuICogQHBhcmFtIHByb2dyYW0gdGhlIGV4ZWN1dGFibGUgdG8gc3Bhd25cbiAqIEBwYXJhbSBhcmdzIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGV4ZWN1dGFibGVcbiAqIEBwYXJhbSBvcHRpb25zIHNwYXduIG9wdGlvbnM7IGBub0NvbG9yOiB0cnVlYCBzdHJpcHMgQU5TSSBlc2NhcGVzIGZyb20gY2FwdHVyZWQgb3V0cHV0XG4gKiBAcmV0dXJucyB0aGUgZnVsbCBjb25jYXRlbmF0ZWQgc3Rkb3V0IGFzIGEgc3RyaW5nIG9uIHN1Y2Nlc3NcbiAqIEB0aHJvd3MgYW4gRXJyb3Igd2l0aCBgLnN0ZGVycmAgYW5kIGAuc3Rkb3V0YCBwcm9wZXJ0aWVzIChzZWUge0BsaW5rIGF0dGFjaFByb2Nlc3NPdXRwdXR9KSBvbiBub24temVybyBleGl0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGVsbChcbiAgcHJvZ3JhbTogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSA9IFtdLFxuICBvcHRpb25zOiBTcGF3bk9wdGlvbnMgJiB7IG5vQ29sb3I/OiBib29sZWFuIH0gPSB7fSxcbikge1xuICByZXR1cm4gZXhlYyhcbiAgICBwcm9ncmFtLFxuICAgIGFyZ3MsXG4gICAgb3B0aW9ucyxcbiAgICAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgPyBzdHJpcEFuc2koY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgOiBjaHVuay50b0xvY2FsZVN0cmluZygpO1xuICAgICAgY29uc29sZS5sb2coc2FuaXRpemVkQ2h1bmspO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgLy8gTm8tb3A6IHBhc3NpbmcgYSBjYWxsYmFjayAodnMuIHVuZGVmaW5lZCkgc3VwcHJlc3NlcyBleGVjKCkncyBkZWZhdWx0XG4gICAgICAvLyBwYXNzLXRocm91Z2ggdG8gcHJvY2Vzcy5zdGRlcnI7IGlubmVyIGV4ZWMoKSBzdGlsbCBjb2xsZWN0cyBpdCBmb3JcbiAgICAgIC8vIHRoZSB0aHJvd24gZXJyb3IncyAuc3RkZXJyIGZpZWxkLlxuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoVGVtcERpcihcbiAgZGlybmFtZTogc3RyaW5nLFxuICBjbG9zdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+LFxuKSB7XG4gIGNvbnN0IHByZXZkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICBjb25zdCBwYXJlbnQgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5cIikpO1xuICBjb25zdCB3b3JrZGlyID0gcGF0aC5qb2luKHBhcmVudCwgZGlybmFtZSk7XG4gIGF3YWl0IGZzLm1rZGlycCh3b3JrZGlyKTtcbiAgdHJ5IHtcbiAgICBwcm9jZXNzLmNoZGlyKHdvcmtkaXIpO1xuICAgIGF3YWl0IGNsb3N1cmUoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBwcm9jZXNzLmNoZGlyKHByZXZkaXIpO1xuICAgIGF3YWl0IGZzLnJlbW92ZShwYXJlbnQpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBta2R0ZW1wKGNsb3N1cmU6IChkaXI6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPikge1xuICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwiY2RrdGYuXCIpKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbG9zdXJlKHdvcmtkaXIpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJlbW92ZSh3b3JrZGlyKTtcbiAgfVxufVxuXG4vKipcbiAqIFNwYXduIGEgY2hpbGQgcHJvY2VzcyBhbmQgcmVzb2x2ZSB3aXRoIGl0cyBzdGRvdXQsIG9yIHJlamVjdCB3aXRoIGEgZGVjb3JhdGVkIEVycm9yIG9uIG5vbi16ZXJvIGV4aXQuXG4gKlxuICogQ2FwdHVyZWQgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIGFsd2F5cyB0ZWUnZCB0byBgcHJvY2Vzc0xvZ2dlckRlYnVnYCAvIGBwcm9jZXNzTG9nZ2VyRXJyb3JgLiBUaGUgb3B0aW9uYWwgYHN0ZG91dGAgYW5kXG4gKiBgc3RkZXJyYCBjYWxsYmFja3MgcmVjZWl2ZSBlYWNoIHNhbml0aXplZCBjaHVuayBhcyBpdCBhcnJpdmVzIOKAlCB1c2VmdWwgZm9yIHN0cmVhbWluZyBvdXRwdXQgdG8gdGhlIHRlcm1pbmFsLlxuICogUGFzc2luZyBhIGBzdGRlcnJgIGNhbGxiYWNrIChldmVuIGEgbm8tb3ApIHN1cHByZXNzZXMgdGhlIGRlZmF1bHQgcGFzcy10aHJvdWdoIHRvIGBwcm9jZXNzLnN0ZGVycmAgZm9yIHRoYXQgc3RyZWFtLlxuICpcbiAqIE9uIG5vbi16ZXJvIGV4aXQsIHJlamVjdHMgd2l0aCBhbiB7QGxpbmsgRXhlY0Vycm9yfSBjYXJyeWluZyBgLnN0ZGVycmAgLyBgLnN0ZG91dGAgYW5kIGEgYHRvU3RyaW5nKClgIHRoYXQgaW5jbHVkZXNcbiAqIHRoZSBjYXB0dXJlZCBib2R5IChzZWUge0BsaW5rIGF0dGFjaFByb2Nlc3NPdXRwdXR9KTsgYC5tZXNzYWdlYCBpdHNlbGYgc3RheXMgYXMgdGhlIGhlYWRsaW5lLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIHRoZSBleGVjdXRhYmxlIHRvIHNwYXduXG4gKiBAcGFyYW0gYXJncyBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBleGVjdXRhYmxlXG4gKiBAcGFyYW0gb3B0aW9ucyBzcGF3biBvcHRpb25zOyBgbm9Db2xvcjogdHJ1ZWAgc3RyaXBzIEFOU0kgZXNjYXBlcyBmcm9tIGNhcHR1cmVkIG91dHB1dCAoYXV0by1kZXRlY3RlZCBmcm9tIENMSSBmbGFnc1xuICogIC8gYEZPUkNFX0NPTE9SPTBgIHdoZW4gb21pdHRlZClcbiAqIEBwYXJhbSBzdGRvdXQgb3B0aW9uYWwgcGVyLWNodW5rIGNhbGxiYWNrIGZvciBzYW5pdGl6ZWQgc3Rkb3V0XG4gKiBAcGFyYW0gc3RkZXJyIG9wdGlvbmFsIHBlci1jaHVuayBjYWxsYmFjayBmb3Igc2FuaXRpemVkIHN0ZGVycjsgcGFzc2luZyBhIGNhbGxiYWNrIHN1cHByZXNzZXMgZGVmYXVsdCB0ZXJtaW5hbCBlY2hvXG4gKiBAcGFyYW0gc2VuZFRvU3RkZXJyIHdoZW4gZmFsc2UsIHN1cHByZXNzZXMgYm90aCB0aGUgc3RkZXJyIGNhbGxiYWNrIGludm9jYXRpb24gYW5kIHRoZSBkZWZhdWx0IHRlcm1pbmFsIGVjaG9cbiAqIEByZXR1cm5zIHRoZSBmdWxsIGNvbmNhdGVuYXRlZCBzdGRvdXQgYXMgYSBzdHJpbmcgb24gc3VjY2Vzc1xuICovXG5leHBvcnQgY29uc3QgZXhlYyA9IGFzeW5jIChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogU3Bhd25PcHRpb25zICYgeyBub0NvbG9yPzogYm9vbGVhbiB9LFxuICBzdGRvdXQ/OiAoY2h1bms6IHN0cmluZykgPT4gYW55LFxuICBzdGRlcnI/OiAoY2h1bms6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IGFueSxcbiAgc2VuZFRvU3RkZXJyID0gdHJ1ZSxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIC8vIGlmIG9wdGlvbnMubm9Db2xvciBpcyBub3Qgc2V0LCBjaGVja2luZyB0aGUgZmxhZ3MgJiBlbnZpcm9ubWVudCBpZiBpdCBzaG91bGQgYmUgc2V0XG4gIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvbGxlY3REZWJ1Z0luZm9ybWF0aW9uKCkgd2hpY2ggZG9lcyBub3QgaGF2ZSBrbm93bGVkZ2UgYWJvdXQgZmxhZ3NcbiAgaWYgKHR5cGVvZiBvcHRpb25zLm5vQ29sb3IgIT09IFwiYm9vbGVhblwiICYmIGhhc05vQ29sb3JGbGFnT3JFbnYoKSkge1xuICAgIG9wdGlvbnMubm9Db2xvciA9IHRydWU7XG4gIH1cblxuICAvLyBEcm9wIHNwYXduJ3MgYHNpZ25hbGAgb3B0aW9uOiB0aGUgY2hpbGQgYWxyZWFkeSBnZXRzIHRoZSBpbnRlcnJ1cHQgdmlhIHRoZSBwcm9jZXNzIGdyb3VwLCBhbmQgYSBzZWNvbmQgc2lnbmFsXG4gIC8vIGFib3J0cyB0ZXJyYWZvcm0ncyBncmFjZWZ1bCBzaHV0ZG93bi4gSnVzdCB3YWl0IGZvciBpdHMgb3duIFwiY2xvc2VcIi5cbiAgY29uc3QgeyBzaWduYWw6IF9zaWduYWwsIC4uLnNwYXduT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oY29tbWFuZCwgYXJncywgc3Bhd25PcHRpb25zKTtcbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IGVyciA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHN0ZG91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGlsZC5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRDaHVuayA9IG9wdGlvbnMubm9Db2xvclxuICAgICAgICAgID8gc3RyaXBBbnNpKGNodW5rLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgOiBjaHVuay50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBwcm9jZXNzTG9nZ2VyRGVidWcoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICBvdXQucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIHN0ZG91dChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQuc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcHJvY2Vzc0xvZ2dlckRlYnVnKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgb3V0LnB1c2goc2FuaXRpemVkQ2h1bmspO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGRlcnIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hpbGQuc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZENodW5rID0gb3B0aW9ucy5ub0NvbG9yXG4gICAgICAgICAgPyBzdHJpcEFuc2koY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICA6IGNodW5rLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIHByb2Nlc3NMb2dnZXJFcnJvcihzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIGlmIChzZW5kVG9TdGRlcnIpIHtcbiAgICAgICAgICBzdGRlcnIoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIGVyci5wdXNoKHNhbml0aXplZENodW5rKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZC5zdGRlcnI/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcHJvY2Vzc0xvZ2dlckVycm9yKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgaWYgKHNlbmRUb1N0ZGVycikge1xuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgfVxuICAgICAgICBlcnIucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY2hpbGQub25jZShcImVycm9yXCIsIChlcnI6IGFueSkgPT4ga28oZXJyKSk7XG4gICAgY2hpbGQub25jZShcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIGAke2NvbW1hbmR9ICR7YXJncy5qb2luKFwiIFwiKX0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgYXR0YWNoUHJvY2Vzc091dHB1dChlcnJvciwgZXJyLmpvaW4oXCJcIiksIG91dC5qb2luKFwiXCIpKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvayhvdXQuam9pbihcIlwiKSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURlZlcnNpb24ob3V0cHV0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJjZGsudGYuanNvblwiKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMob3V0cHV0RmlsZSkpIHtcbiAgICBjb25zdCBvdXRwdXRKU09OID0gZnMucmVhZEZpbGVTeW5jKG91dHB1dEZpbGUsIFwidXRmOFwiKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvdXRwdXRKU09OKTtcbiAgICByZXR1cm4gZGF0YVtcIi8vXCJdLm1ldGFkYXRhLnZlcnNpb247XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURk1hbmlmZXN0KCk6IFByb21pc2U8SU1hbmlmZXN0PiB7XG4gIGNvbnN0IHsgb3V0cHV0IH0gPSBjb25maWcucmVhZENvbmZpZ1N5bmMoKTtcbiAgY29uc3QganNvbiA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihvdXRwdXQsIE1hbmlmZXN0LmZpbGVOYW1lKSk7XG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24udG9TdHJpbmcoKSkgYXMgSU1hbmlmZXN0O1xufVxuXG4vKipcbiAqIERvd25jYXNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciB0aGUgc3RyaW5nIHRvIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25jYXNlRmlyc3Qoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gYCR7c3RyWzBdLnRvTG9jYWxlTG93ZXJDYXNlKCl9JHtzdHIuc2xpY2UoMSl9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICBwdWJsaWMgc3RhdHVzQ29kZT86IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7IC8vICdFcnJvcicgYnJlYWtzIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIG5ldy50YXJnZXQucHJvdG90eXBlKTsgLy8gcmVzdG9yZSBwcm90b3R5cGUgY2hhaW5cbiAgICAvLyBzZWU6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0yLTIuaHRtbCNzdXBwb3J0LWZvci1uZXd0YXJnZXRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRGaWxlKFxuICB1cmw6IHN0cmluZyxcbiAgdGFyZ2V0RmlsZW5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBpZiB0aGUgdHlwZSBpcyBpbmZlcnJlZCB0byBiZSBcImh0dHB8aHR0cHNcIiBjYWxsaW5nIC5nZXQoKSBpcyBub3QgcG9zc2libGVcbiAgLy8gYmVjYXVzZSB0aGUgb3B0aW9ucyBwYXJhbWV0ZXIgKHdoaWNoIHdlIGRvbid0IHVzZSBhbnl3YXkpIGZvciBnZXQgaXNcbiAgLy8gbm90IGNvbXBhdGlibGUgYmV0d2VlbiBodHRwIGFuZCBodHRwcyAtPiBzbyB3ZSB0cmVhdCBpdCBhcyBodHRwXG4gIGNvbnN0IGNsaWVudCA9ICh1cmwuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgPyBodHRwIDogaHR0cHMpIGFzIHR5cGVvZiBodHRwO1xuICBjb25zdCBmaWxlID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odGFyZ2V0RmlsZW5hbWUpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnQuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGtvKFxuICAgICAgICAgIG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGdldCAnJHt1cmx9JyAoJHtyZXNwb25zZS5zdGF0dXNDb2RlfSlgLFxuICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNwb25zZS5waXBlKGZpbGUpO1xuICAgIH0pO1xuXG4gICAgZmlsZS5vbihcImZpbmlzaFwiLCAoKSA9PiBvaygpKTtcblxuICAgIHJlcXVlc3Qub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgZnMudW5saW5rKHRhcmdldEZpbGVuYW1lLCAoKSA9PiBrbyhlcnIpKTtcbiAgICB9KTtcblxuICAgIGZpbGUub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICBmcy51bmxpbmsodGFyZ2V0RmlsZW5hbWUsICgpID0+IGtvKGVycikpO1xuICAgIH0pO1xuXG4gICAgcmVxdWVzdC5lbmQoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQXdhaXRzIGEgcHJvbWlzZSBhbmQgbWFrZXMgc3VyZSBpdCdzIGVycm9yIChpZiBhbnkpIGlzIG9ubHkgdGhyb3duIGFmdGVyIGFsbCBvdGhlciBwcm9taXNlcyBhcmUgc2V0dGxlZFxuICogaWYgdGhlIHByb21pc2UgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBvdGhlciBwcm9taXNlcyB3b24ndCBiZSBhd2FpdGVkXG4gKiBAcGFyYW0gcCBwcm9taXNlIHRvIGF3YWl0XG4gKiBAcGFyYW0gcHJvbWlzZXMgcHJvbWlzZXMgdG8gYXdhaXQgdG8gYmUgYWxsIHNldHRsZWQgaWYgcCBmYWlsZWQgYmVmb3JlIHRocm93aW5nIGVycm9yIHRoYXQgcCBmYWlsZWQgd2l0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICBwOiBQcm9taXNlPGFueT4sXG4gIHByb21pc2VzOiAoUHJvbWlzZTxhbnk+IHwgdW5kZWZpbmVkKVtdLFxuKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGlmIGFuIGVycm9yIGhhcHBlbmVkLCB3ZSBzdGlsbCBuZWVkIHRvIHdhaXQgZm9yIGFsbCBvdGhlciBwcm9taXNlcyB0aGF0XG4gICAgLy8gYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcyB0byBjb21wbGV0ZSB0byBhbGxvdyB0aGVtIHRvIHByb3Blcmx5IHdyYXAgdXBcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgLS1uby1jb2xvciBpcyBwYXNzZWQgYXMgQ0xJIGZsYWcgb3IgdGhlIGVudiB2YXIgRk9SQ0VfQ09MT1IgaXMgc2V0IHRvIFwiMFwiXG4gKiBVc2VkIGZvciBjYXNlcyB3aGVyZSB3ZSBjYW4ndCBwYXNzIGRvd24gdGhlIG5vQ29sb3IgZmxhZyAoZS5nLiB3aGVuIGNvbGxlY3RpbmcgZGVidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZW52aXJvbm1lbnQpXG4gKiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBgY2hhbGtgIGxpYiB3ZSB1c2UgZm9yIGNvbG9yaW5nIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTm9Db2xvckZsYWdPckVudigpOiBib29sZWFuIHtcbiAgcmV0dXJuIGhhc0ZsYWcoXCJuby1jb2xvclwiKSB8fCBwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiA9PT0gXCIwXCI7XG59XG5cbi8vIEZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvaGFzLWZsYWcvYmxvYi9tYWluL2luZGV4LmpzXG4vLyBhcyB1c2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFsay9jaGFsa1xuZnVuY3Rpb24gaGFzRmxhZyhmbGFnOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gZmxhZy5zdGFydHNXaXRoKFwiLVwiKSA/IFwiXCIgOiBmbGFnLmxlbmd0aCA9PT0gMSA/IFwiLVwiIDogXCItLVwiO1xuICBjb25zdCBwb3NpdGlvbiA9IHByb2Nlc3MuYXJndi5pbmRleE9mKHByZWZpeCArIGZsYWcpO1xuICBjb25zdCB0ZXJtaW5hdG9yUG9zaXRpb24gPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICByZXR1cm4gKFxuICAgIHBvc2l0aW9uICE9PSAtMSAmJlxuICAgICh0ZXJtaW5hdG9yUG9zaXRpb24gPT09IC0xIHx8IHBvc2l0aW9uIDwgdGVybWluYXRvclBvc2l0aW9uKVxuICApO1xufVxuIl19
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsNkNBQW9DO0FBQ3BDLDZDQUErQjtBQUMvQix1REFBK0M7QUFDL0MsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qix1Q0FBbUU7QUFDbkUsaUNBQTRDO0FBQzVDLGlEQUFtQztBQUNuQyw0REFBbUM7QUFJbkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFTLG1CQUFtQixDQUMxQixLQUFZLEVBQ1osVUFBa0IsRUFDbEIsVUFBa0I7SUFFakIsS0FBbUIsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ3hDLEtBQW1CLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNJLEtBQUssVUFBVSxLQUFLLENBQ3pCLE9BQWUsRUFDZixPQUFpQixFQUFFLEVBQ25CLFVBQWdELEVBQUU7SUFFbEQsT0FBTyxJQUFBLFlBQUksRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLE9BQU8sRUFDUCxDQUFDLEtBQWEsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1lBQ3BDLENBQUMsQ0FBQyxJQUFBLG9CQUFTLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxD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QU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQztBQUNoRSxDQUFDO0FBRkQsa0RBRUM7QUFFRCxvRUFBb0U7QUFDcEUsNENBQTRDO0FBQzVDLFNBQVMsT0FBTyxDQUFDLElBQVk7SUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsT0FBTyxDQUNMLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFDZixDQUFDLGtCQUFrQixLQUFLLENBQUMsQ0FBQyxJQUFJLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBTcGF3bk9wdGlvbnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tIFwiY3Jvc3Mtc3Bhd25cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgaHR0cHMsIGh0dHAgfSBmcm9tIFwiZm9sbG93LXJlZGlyZWN0c1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcm9jZXNzTG9nZ2VyRXJyb3IsIHByb2Nlc3NMb2dnZXJEZWJ1ZyB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcbmltcG9ydCB7IElNYW5pZmVzdCwgTWFuaWZlc3QgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSBcInN0cmlwLWFuc2lcIjtcblxudHlwZSBFeGVjRXJyb3IgPSBFcnJvciAmIHsgc3RkZXJyOiBzdHJpbmc7IHN0ZG91dDogc3RyaW5nIH07XG5cbi8qKlxuICogQXR0YWNoIGNhcHR1cmVkIHN0ZGVyci9zdGRvdXQgdG8gYSBwcm9jZXNzLWZhaWx1cmUgRXJyb3IuXG4gKlxuICogVGhlIGJvZHkgdGV4dCBpcyBleHBvc2VkIHR3byB3YXlzOlxuICogLSBgLnN0ZGVycmAgYW5kIGAuc3Rkb3V0YCBwcm9wZXJ0aWVzLCBmb3IgY2FsbGVycyB0aGF0IHJlbmRlciB0aGUgc3RyZWFtcyBzZXBhcmF0ZWx5IChlLmcuIHN5bnRoLXN0YWNrJ3MgY2hhbGtcbiAqICAgZm9ybWF0dGluZykuXG4gKiAtIEEgYHRvU3RyaW5nKClgIG92ZXJyaWRlIHRoYXQgYXBwZW5kcyB0aGUgYm9keSBhZnRlciB0aGUgaGVhZGxpbmUsIHNvIGNhbGxlcnMgdXNpbmcgYCR7ZX1gIGludGVycG9sYXRpb24gc3VyZmFjZSB0aGVcbiAqICAgdW5kZXJseWluZyB0b29sIG91dHB1dCB3aXRob3V0IGRvdWJsZS1wcmludGluZyBmb3IgdGhlIHByb3BlcnR5LXJlYWRpbmcgY2FsbGVycy5cbiAqXG4gKiBUaGUgRXJyb3IncyBgLm1lc3NhZ2VgIGlzIGxlZnQgdW50b3VjaGVkIGFzIHRoZSBoZWFkbGluZSBvbmx5LlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgRXJyb3IgdG8gZGVjb3JhdGUgKGl0cyBgLm1lc3NhZ2VgIGJlY29tZXMgdGhlIHRvU3RyaW5nIGhlYWRsaW5lKVxuICogQHBhcmFtIHN0ZGVyclRleHQgY2FwdHVyZWQgc3RkZXJyLCBtYXkgYmUgZW1wdHlcbiAqIEBwYXJhbSBzdGRvdXRUZXh0IGNhcHR1cmVkIHN0ZG91dCwgbWF5IGJlIGVtcHR5XG4gKi9cbmZ1bmN0aW9uIGF0dGFjaFByb2Nlc3NPdXRwdXQoXG4gIGVycm9yOiBFcnJvcixcbiAgc3RkZXJyVGV4dDogc3RyaW5nLFxuICBzdGRvdXRUZXh0OiBzdHJpbmcsXG4pOiBhc3NlcnRzIGVycm9yIGlzIEV4ZWNFcnJvciB7XG4gIChlcnJvciBhcyBFeGVjRXJyb3IpLnN0ZGVyciA9IHN0ZGVyclRleHQ7XG4gIChlcnJvciBhcyBFeGVjRXJyb3IpLnN0ZG91dCA9IHN0ZG91dFRleHQ7XG4gIGNvbnN0IGJvZHkgPSBbc3RkZXJyVGV4dCwgc3Rkb3V0VGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCJcXG5cIik7XG4gIGlmIChib2R5KSB7XG4gICAgY29uc3QgaGVhZGxpbmUgPSBlcnJvci5tZXNzYWdlO1xuICAgIGVycm9yLnRvU3RyaW5nID0gKCkgPT4gYEVycm9yOiAke2hlYWRsaW5lfVxcbiR7Ym9keX1gO1xuICB9XG59XG5cbi8qKlxuICogU3Bhd24gYSBjaGlsZCBwcm9jZXNzIGFuZCBtaXJyb3IgaXRzIHN0ZG91dCB0byB0aGUgcGFyZW50J3MgY29uc29sZS5cbiAqXG4gKiBUaGluIHdyYXBwZXIgb3ZlciB7QGxpbmsgZXhlY30gZm9yIGNhbGxlcnMgdGhhdCB3YW50IHN0ZG91dCBjaHVua3MgZWNob2VkIHZpYSBgY29uc29sZS5sb2dgIGFzIHRoZXkgYXJyaXZlLiBTdGRlcnIgaXNcbiAqIGNhcHR1cmVkIHNpbGVudGx5IGFuZCBzdXJmYWNlZCBvbiB0aGUgdGhyb3duIEVycm9yJ3MgYC5zdGRlcnJgIC8gYHRvU3RyaW5nKClgIGlmIHRoZSBwcm9jZXNzIGV4aXRzIG5vbi16ZXJvLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIHRoZSBleGVjdXRhYmxlIHRvIHNwYXduXG4gKiBAcGFyYW0gYXJncyBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBleGVjdXRhYmxlXG4gKiBAcGFyYW0gb3B0aW9ucyBzcGF3biBvcHRpb25zOyBgbm9Db2xvcjogdHJ1ZWAgc3RyaXBzIEFOU0kgZXNjYXBlcyBmcm9tIGNhcHR1cmVkIG91dHB1dFxuICogQHJldHVybnMgdGhlIGZ1bGwgY29uY2F0ZW5hdGVkIHN0ZG91dCBhcyBhIHN0cmluZyBvbiBzdWNjZXNzXG4gKiBAdGhyb3dzIGFuIEVycm9yIHdpdGggYC5zdGRlcnJgIGFuZCBgLnN0ZG91dGAgcHJvcGVydGllcyAoc2VlIHtAbGluayBhdHRhY2hQcm9jZXNzT3V0cHV0fSkgb24gbm9uLXplcm8gZXhpdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwoXG4gIHByb2dyYW06IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10gPSBbXSxcbiAgb3B0aW9uczogU3Bhd25PcHRpb25zICYgeyBub0NvbG9yPzogYm9vbGVhbiB9ID0ge30sXG4pIHtcbiAgcmV0dXJuIGV4ZWMoXG4gICAgcHJvZ3JhbSxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnMsXG4gICAgKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNhbml0aXplZENodW5rID0gb3B0aW9ucy5ub0NvbG9yXG4gICAgICAgID8gc3RyaXBBbnNpKGNodW5rLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgIGNvbnNvbGUubG9nKHNhbml0aXplZENodW5rKTtcbiAgICB9LFxuICAgICgpID0+IHtcbiAgICAgIC8vIE5vLW9wOiBwYXNzaW5nIGEgY2FsbGJhY2sgKHZzLiB1bmRlZmluZWQpIHN1cHByZXNzZXMgZXhlYygpJ3MgZGVmYXVsdFxuICAgICAgLy8gcGFzcy10aHJvdWdoIHRvIHByb2Nlc3Muc3RkZXJyOyBpbm5lciBleGVjKCkgc3RpbGwgY29sbGVjdHMgaXQgZm9yXG4gICAgICAvLyB0aGUgdGhyb3duIGVycm9yJ3MgLnN0ZGVyciBmaWVsZC5cbiAgICB9LFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRlbXBEaXIoXG4gIGRpcm5hbWU6IHN0cmluZyxcbiAgY2xvc3VyZTogKCkgPT4gUHJvbWlzZTx2b2lkPixcbikge1xuICBjb25zdCBwcmV2ZGlyID0gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgcGFyZW50ID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwiY2RrdGYuXCIpKTtcbiAgY29uc3Qgd29ya2RpciA9IHBhdGguam9pbihwYXJlbnQsIGRpcm5hbWUpO1xuICBhd2FpdCBmcy5ta2RpcnAod29ya2Rpcik7XG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5jaGRpcih3b3JrZGlyKTtcbiAgICBhd2FpdCBjbG9zdXJlKCk7XG4gIH0gZmluYWxseSB7XG4gICAgcHJvY2Vzcy5jaGRpcihwcmV2ZGlyKTtcbiAgICBhd2FpdCBmcy5yZW1vdmUocGFyZW50KTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWtkdGVtcChjbG9zdXJlOiAoZGlyOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgY29uc3Qgd29ya2RpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLlwiKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2xvc3VyZSh3b3JrZGlyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yZW1vdmUod29ya2Rpcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTcGF3biBhIGNoaWxkIHByb2Nlc3MgYW5kIHJlc29sdmUgd2l0aCBpdHMgc3Rkb3V0LCBvciByZWplY3Qgd2l0aCBhIGRlY29yYXRlZCBFcnJvciBvbiBub24temVybyBleGl0LlxuICpcbiAqIENhcHR1cmVkIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBhbHdheXMgdGVlJ2QgdG8gYHByb2Nlc3NMb2dnZXJEZWJ1Z2AgLyBgcHJvY2Vzc0xvZ2dlckVycm9yYC4gVGhlIG9wdGlvbmFsIGBzdGRvdXRgIGFuZFxuICogYHN0ZGVycmAgY2FsbGJhY2tzIHJlY2VpdmUgZWFjaCBzYW5pdGl6ZWQgY2h1bmsgYXMgaXQgYXJyaXZlcyDigJQgdXNlZnVsIGZvciBzdHJlYW1pbmcgb3V0cHV0IHRvIHRoZSB0ZXJtaW5hbC5cbiAqIFBhc3NpbmcgYSBgc3RkZXJyYCBjYWxsYmFjayAoZXZlbiBhIG5vLW9wKSBzdXBwcmVzc2VzIHRoZSBkZWZhdWx0IHBhc3MtdGhyb3VnaCB0byBgcHJvY2Vzcy5zdGRlcnJgIGZvciB0aGF0IHN0cmVhbS5cbiAqXG4gKiBPbiBub24temVybyBleGl0LCByZWplY3RzIHdpdGggYW4ge0BsaW5rIEV4ZWNFcnJvcn0gY2FycnlpbmcgYC5zdGRlcnJgIC8gYC5zdGRvdXRgIGFuZCBhIGB0b1N0cmluZygpYCB0aGF0IGluY2x1ZGVzXG4gKiB0aGUgY2FwdHVyZWQgYm9keSAoc2VlIHtAbGluayBhdHRhY2hQcm9jZXNzT3V0cHV0fSk7IGAubWVzc2FnZWAgaXRzZWxmIHN0YXlzIGFzIHRoZSBoZWFkbGluZS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCB0aGUgZXhlY3V0YWJsZSB0byBzcGF3blxuICogQHBhcmFtIGFyZ3MgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZXhlY3V0YWJsZVxuICogQHBhcmFtIG9wdGlvbnMgc3Bhd24gb3B0aW9uczsgYG5vQ29sb3I6IHRydWVgIHN0cmlwcyBBTlNJIGVzY2FwZXMgZnJvbSBjYXB0dXJlZCBvdXRwdXQgKGF1dG8tZGV0ZWN0ZWQgZnJvbSBDTEkgZmxhZ3NcbiAqICAvIGBGT1JDRV9DT0xPUj0wYCB3aGVuIG9taXR0ZWQpOyBgbG9nU3RkZXJyQXNEZWJ1ZzogdHJ1ZWAgdGVlcyBzdGRlcnIgdG8gYHByb2Nlc3NMb2dnZXJEZWJ1Z2AgaW5zdGVhZCwgZm9yIHJ1bnNcbiAqICB3aG9zZSBkaWFnbm9zdGljcyBhcmUgbm90IGZpbmFsIGFuZCB3b3VsZCBvbmx5IGFsYXJtIHRoZSByZWFkZXJcbiAqIEBwYXJhbSBzdGRvdXQgb3B0aW9uYWwgcGVyLWNodW5rIGNhbGxiYWNrIGZvciBzYW5pdGl6ZWQgc3Rkb3V0XG4gKiBAcGFyYW0gc3RkZXJyIG9wdGlvbmFsIHBlci1jaHVuayBjYWxsYmFjayBmb3Igc2FuaXRpemVkIHN0ZGVycjsgcGFzc2luZyBhIGNhbGxiYWNrIHN1cHByZXNzZXMgZGVmYXVsdCB0ZXJtaW5hbCBlY2hvXG4gKiBAcGFyYW0gc2VuZFRvU3RkZXJyIHdoZW4gZmFsc2UsIHN1cHByZXNzZXMgYm90aCB0aGUgc3RkZXJyIGNhbGxiYWNrIGludm9jYXRpb24gYW5kIHRoZSBkZWZhdWx0IHRlcm1pbmFsIGVjaG9cbiAqIEByZXR1cm5zIHRoZSBmdWxsIGNvbmNhdGVuYXRlZCBzdGRvdXQgYXMgYSBzdHJpbmcgb24gc3VjY2Vzc1xuICovXG5leHBvcnQgY29uc3QgZXhlYyA9IGFzeW5jIChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogU3Bhd25PcHRpb25zICYgeyBub0NvbG9yPzogYm9vbGVhbjsgbG9nU3RkZXJyQXNEZWJ1Zz86IGJvb2xlYW4gfSxcbiAgc3Rkb3V0PzogKGNodW5rOiBzdHJpbmcpID0+IGFueSxcbiAgc3RkZXJyPzogKGNodW5rOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiBhbnksXG4gIHNlbmRUb1N0ZGVyciA9IHRydWUsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAvLyBpZiBvcHRpb25zLm5vQ29sb3IgaXMgbm90IHNldCwgY2hlY2tpbmcgdGhlIGZsYWdzICYgZW52aXJvbm1lbnQgaWYgaXQgc2hvdWxkIGJlIHNldFxuICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb2xsZWN0RGVidWdJbmZvcm1hdGlvbigpIHdoaWNoIGRvZXMgbm90IGhhdmUga25vd2xlZGdlIGFib3V0IGZsYWdzXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5ub0NvbG9yICE9PSBcImJvb2xlYW5cIiAmJiBoYXNOb0NvbG9yRmxhZ09yRW52KCkpIHtcbiAgICBvcHRpb25zLm5vQ29sb3IgPSB0cnVlO1xuICB9XG5cbiAgLy8gRHJvcCBzcGF3bidzIGBzaWduYWxgIG9wdGlvbjogdGhlIGNoaWxkIGFscmVhZHkgZ2V0cyB0aGUgaW50ZXJydXB0IHZpYSB0aGUgcHJvY2VzcyBncm91cCwgYW5kIGEgc2Vjb25kIHNpZ25hbFxuICAvLyBhYm9ydHMgdGVycmFmb3JtJ3MgZ3JhY2VmdWwgc2h1dGRvd24uIEp1c3Qgd2FpdCBmb3IgaXRzIG93biBcImNsb3NlXCIuXG4gIGNvbnN0IHsgc2lnbmFsOiBfc2lnbmFsLCBsb2dTdGRlcnJBc0RlYnVnLCAuLi5zcGF3bk9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbG9nU3RkZXJyID0gbG9nU3RkZXJyQXNEZWJ1ZyA/IHByb2Nlc3NMb2dnZXJEZWJ1ZyA6IHByb2Nlc3NMb2dnZXJFcnJvcjtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oY29tbWFuZCwgYXJncywgc3Bhd25PcHRpb25zKTtcbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IGVyciA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHN0ZG91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGlsZC5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRDaHVuayA9IG9wdGlvbnMubm9Db2xvclxuICAgICAgICAgID8gc3RyaXBBbnNpKGNodW5rLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgOiBjaHVuay50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBwcm9jZXNzTG9nZ2VyRGVidWcoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICBvdXQucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIHN0ZG91dChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQuc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcHJvY2Vzc0xvZ2dlckRlYnVnKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgb3V0LnB1c2goc2FuaXRpemVkQ2h1bmspO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGRlcnIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hpbGQuc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZENodW5rID0gb3B0aW9ucy5ub0NvbG9yXG4gICAgICAgICAgPyBzdHJpcEFuc2koY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICA6IGNodW5rLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIGxvZ1N0ZGVycihzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIGlmIChzZW5kVG9TdGRlcnIpIHtcbiAgICAgICAgICBzdGRlcnIoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIGVyci5wdXNoKHNhbml0aXplZENodW5rKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZC5zdGRlcnI/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgbG9nU3RkZXJyKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgaWYgKHNlbmRUb1N0ZGVycikge1xuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgfVxuICAgICAgICBlcnIucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY2hpbGQub25jZShcImVycm9yXCIsIChlcnI6IGFueSkgPT4ga28oZXJyKSk7XG4gICAgY2hpbGQub25jZShcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIGAke2NvbW1hbmR9ICR7YXJncy5qb2luKFwiIFwiKX0gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgYXR0YWNoUHJvY2Vzc091dHB1dChlcnJvciwgZXJyLmpvaW4oXCJcIiksIG91dC5qb2luKFwiXCIpKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvayhvdXQuam9pbihcIlwiKSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURlZlcnNpb24ob3V0cHV0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJjZGsudGYuanNvblwiKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMob3V0cHV0RmlsZSkpIHtcbiAgICBjb25zdCBvdXRwdXRKU09OID0gZnMucmVhZEZpbGVTeW5jKG91dHB1dEZpbGUsIFwidXRmOFwiKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvdXRwdXRKU09OKTtcbiAgICByZXR1cm4gZGF0YVtcIi8vXCJdLm1ldGFkYXRhLnZlcnNpb247XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURk1hbmlmZXN0KCk6IFByb21pc2U8SU1hbmlmZXN0PiB7XG4gIGNvbnN0IHsgb3V0cHV0IH0gPSBjb25maWcucmVhZENvbmZpZ1N5bmMoKTtcbiAgY29uc3QganNvbiA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihvdXRwdXQsIE1hbmlmZXN0LmZpbGVOYW1lKSk7XG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24udG9TdHJpbmcoKSkgYXMgSU1hbmlmZXN0O1xufVxuXG4vKipcbiAqIERvd25jYXNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciB0aGUgc3RyaW5nIHRvIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25jYXNlRmlyc3Qoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gYCR7c3RyWzBdLnRvTG9jYWxlTG93ZXJDYXNlKCl9JHtzdHIuc2xpY2UoMSl9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICBwdWJsaWMgc3RhdHVzQ29kZT86IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7IC8vICdFcnJvcicgYnJlYWtzIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIG5ldy50YXJnZXQucHJvdG90eXBlKTsgLy8gcmVzdG9yZSBwcm90b3R5cGUgY2hhaW5cbiAgICAvLyBzZWU6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0yLTIuaHRtbCNzdXBwb3J0LWZvci1uZXd0YXJnZXRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRGaWxlKFxuICB1cmw6IHN0cmluZyxcbiAgdGFyZ2V0RmlsZW5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBpZiB0aGUgdHlwZSBpcyBpbmZlcnJlZCB0byBiZSBcImh0dHB8aHR0cHNcIiBjYWxsaW5nIC5nZXQoKSBpcyBub3QgcG9zc2libGVcbiAgLy8gYmVjYXVzZSB0aGUgb3B0aW9ucyBwYXJhbWV0ZXIgKHdoaWNoIHdlIGRvbid0IHVzZSBhbnl3YXkpIGZvciBnZXQgaXNcbiAgLy8gbm90IGNvbXBhdGlibGUgYmV0d2VlbiBodHRwIGFuZCBodHRwcyAtPiBzbyB3ZSB0cmVhdCBpdCBhcyBodHRwXG4gIGNvbnN0IGNsaWVudCA9ICh1cmwuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgPyBodHRwIDogaHR0cHMpIGFzIHR5cGVvZiBodHRwO1xuICBjb25zdCBmaWxlID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odGFyZ2V0RmlsZW5hbWUpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnQuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGtvKFxuICAgICAgICAgIG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGdldCAnJHt1cmx9JyAoJHtyZXNwb25zZS5zdGF0dXNDb2RlfSlgLFxuICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNwb25zZS5waXBlKGZpbGUpO1xuICAgIH0pO1xuXG4gICAgZmlsZS5vbihcImZpbmlzaFwiLCAoKSA9PiBvaygpKTtcblxuICAgIHJlcXVlc3Qub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgZnMudW5saW5rKHRhcmdldEZpbGVuYW1lLCAoKSA9PiBrbyhlcnIpKTtcbiAgICB9KTtcblxuICAgIGZpbGUub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICBmcy51bmxpbmsodGFyZ2V0RmlsZW5hbWUsICgpID0+IGtvKGVycikpO1xuICAgIH0pO1xuXG4gICAgcmVxdWVzdC5lbmQoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQXdhaXRzIGEgcHJvbWlzZSBhbmQgbWFrZXMgc3VyZSBpdCdzIGVycm9yIChpZiBhbnkpIGlzIG9ubHkgdGhyb3duIGFmdGVyIGFsbCBvdGhlciBwcm9taXNlcyBhcmUgc2V0dGxlZFxuICogaWYgdGhlIHByb21pc2UgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBvdGhlciBwcm9taXNlcyB3b24ndCBiZSBhd2FpdGVkXG4gKiBAcGFyYW0gcCBwcm9taXNlIHRvIGF3YWl0XG4gKiBAcGFyYW0gcHJvbWlzZXMgcHJvbWlzZXMgdG8gYXdhaXQgdG8gYmUgYWxsIHNldHRsZWQgaWYgcCBmYWlsZWQgYmVmb3JlIHRocm93aW5nIGVycm9yIHRoYXQgcCBmYWlsZWQgd2l0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICBwOiBQcm9taXNlPGFueT4sXG4gIHByb21pc2VzOiAoUHJvbWlzZTxhbnk+IHwgdW5kZWZpbmVkKVtdLFxuKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGlmIGFuIGVycm9yIGhhcHBlbmVkLCB3ZSBzdGlsbCBuZWVkIHRvIHdhaXQgZm9yIGFsbCBvdGhlciBwcm9taXNlcyB0aGF0XG4gICAgLy8gYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcyB0byBjb21wbGV0ZSB0byBhbGxvdyB0aGVtIHRvIHByb3Blcmx5IHdyYXAgdXBcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgLS1uby1jb2xvciBpcyBwYXNzZWQgYXMgQ0xJIGZsYWcgb3IgdGhlIGVudiB2YXIgRk9SQ0VfQ09MT1IgaXMgc2V0IHRvIFwiMFwiXG4gKiBVc2VkIGZvciBjYXNlcyB3aGVyZSB3ZSBjYW4ndCBwYXNzIGRvd24gdGhlIG5vQ29sb3IgZmxhZyAoZS5nLiB3aGVuIGNvbGxlY3RpbmcgZGVidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZW52aXJvbm1lbnQpXG4gKiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBgY2hhbGtgIGxpYiB3ZSB1c2UgZm9yIGNvbG9yaW5nIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTm9Db2xvckZsYWdPckVudigpOiBib29sZWFuIHtcbiAgcmV0dXJuIGhhc0ZsYWcoXCJuby1jb2xvclwiKSB8fCBwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiA9PT0gXCIwXCI7XG59XG5cbi8vIEZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvaGFzLWZsYWcvYmxvYi9tYWluL2luZGV4LmpzXG4vLyBhcyB1c2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFsay9jaGFsa1xuZnVuY3Rpb24gaGFzRmxhZyhmbGFnOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gZmxhZy5zdGFydHNXaXRoKFwiLVwiKSA/IFwiXCIgOiBmbGFnLmxlbmd0aCA9PT0gMSA/IFwiLVwiIDogXCItLVwiO1xuICBjb25zdCBwb3NpdGlvbiA9IHByb2Nlc3MuYXJndi5pbmRleE9mKHByZWZpeCArIGZsYWcpO1xuICBjb25zdCB0ZXJtaW5hdG9yUG9zaXRpb24gPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICByZXR1cm4gKFxuICAgIHBvc2l0aW9uICE9PSAtMSAmJlxuICAgICh0ZXJtaW5hdG9yUG9zaXRpb24gPT09IC0xIHx8IHBvc2l0aW9uIDwgdGVybWluYXRvclBvc2l0aW9uKVxuICApO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdktn/commons",
3
- "version": "0.25.0-pre.4",
3
+ "version": "0.25.0-pre.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -39,7 +39,7 @@
39
39
  "semver": "7.8.5",
40
40
  "strip-ansi": "6.0.1",
41
41
  "validator": "13.15.35",
42
- "cdktn": "0.25.0-pre.4"
42
+ "cdktn": "0.25.0-pre.6"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/cross-spawn": "6.0.6",