cdk-cost-analyzer 0.1.25 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,35 +2,35 @@
|
|
|
2
2
|
"entries": {
|
|
3
3
|
"AmazonS3:US East (N. Virginia):storageClass:General Purpose|volumeType:Standard": {
|
|
4
4
|
"price": 0.023,
|
|
5
|
-
"timestamp":
|
|
5
|
+
"timestamp": 1770924316536
|
|
6
6
|
},
|
|
7
7
|
"AmazonDynamoDB:US East (N. Virginia):group:DDB-ReadUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
|
|
8
8
|
"price": 0.023,
|
|
9
|
-
"timestamp":
|
|
9
|
+
"timestamp": 1770924316542
|
|
10
10
|
},
|
|
11
11
|
"AmazonDynamoDB:US East (N. Virginia):group:DDB-WriteUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
|
|
12
12
|
"price": 0.023,
|
|
13
|
-
"timestamp":
|
|
13
|
+
"timestamp": 1770924316542
|
|
14
14
|
},
|
|
15
15
|
"AmazonEC2:US East (N. Virginia):capacitystatus:Used|instanceType:t3.micro|operatingSystem:Linux|preInstalledSw:NA|tenancy:Shared": {
|
|
16
16
|
"price": 0.023,
|
|
17
|
-
"timestamp":
|
|
17
|
+
"timestamp": 1770924316555
|
|
18
18
|
},
|
|
19
19
|
"AWSLambda:US East (N. Virginia):group:AWS-Lambda-Requests": {
|
|
20
20
|
"price": 0.023,
|
|
21
|
-
"timestamp":
|
|
21
|
+
"timestamp": 1770924316560
|
|
22
22
|
},
|
|
23
23
|
"AWSLambda:US East (N. Virginia):group:AWS-Lambda-Duration": {
|
|
24
24
|
"price": 0.023,
|
|
25
|
-
"timestamp":
|
|
25
|
+
"timestamp": 1770924316560
|
|
26
26
|
},
|
|
27
27
|
"AmazonS3:EU (Frankfurt):storageClass:General Purpose|volumeType:Standard": {
|
|
28
28
|
"price": 0.023,
|
|
29
|
-
"timestamp":
|
|
29
|
+
"timestamp": 1770924325158
|
|
30
30
|
},
|
|
31
31
|
"AmazonS3:invalid-region-123:storageClass:General Purpose|volumeType:Standard": {
|
|
32
32
|
"price": 0.023,
|
|
33
|
-
"timestamp":
|
|
33
|
+
"timestamp": 1770924325200
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}
|
package/dist/releasetag.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v0.1.
|
|
1
|
+
v0.1.27
|
|
@@ -117,12 +117,7 @@ class SynthesisOrchestrator {
|
|
|
117
117
|
let stdout = '';
|
|
118
118
|
let stderr = '';
|
|
119
119
|
let isResolved = false;
|
|
120
|
-
let killTimeout = null;
|
|
121
120
|
const cleanup = () => {
|
|
122
|
-
if (killTimeout) {
|
|
123
|
-
clearTimeout(killTimeout);
|
|
124
|
-
killTimeout = null;
|
|
125
|
-
}
|
|
126
121
|
// Remove all listeners to prevent memory leaks
|
|
127
122
|
proc.removeAllListeners();
|
|
128
123
|
proc.stdout?.removeAllListeners();
|
|
@@ -153,10 +148,13 @@ class SynthesisOrchestrator {
|
|
|
153
148
|
// First try graceful termination
|
|
154
149
|
proc.kill('SIGTERM');
|
|
155
150
|
// Force kill after 1 second if still running
|
|
156
|
-
|
|
151
|
+
setTimeout(() => {
|
|
157
152
|
forceKill();
|
|
158
153
|
}, 1000);
|
|
159
|
-
|
|
154
|
+
// Only remove event listeners, don't clear killTimeout
|
|
155
|
+
proc.removeAllListeners();
|
|
156
|
+
proc.stdout?.removeAllListeners();
|
|
157
|
+
proc.stderr?.removeAllListeners();
|
|
160
158
|
reject(new types_1.SynthesisError('CDK synthesis timed out after 15 seconds', stderr || stdout || 'No output captured'));
|
|
161
159
|
}
|
|
162
160
|
}, 15000); // Reduced to 15 second timeout
|
|
@@ -240,4 +238,4 @@ class SynthesisOrchestrator {
|
|
|
240
238
|
}
|
|
241
239
|
}
|
|
242
240
|
exports.SynthesisOrchestrator = SynthesisOrchestrator;
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ludGhlc2lzT3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bnRoZXNpcy9TeW50aGVzaXNPcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXNDO0FBQ3RDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsbUNBQTRFO0FBRTVFLE1BQWEscUJBQXFCO0lBQ2YsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBRWpEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUF5QjtRQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUM7WUFFekQsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDakUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUV4QyxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLGFBQWE7Z0JBQ2IsVUFBVTtnQkFDVixRQUFRO2FBQ1QsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFP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O29CQUM3QyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUU3QixtQ0FBbUM7b0JBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUk7eUJBQ25CLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7eUJBQzdCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7eUJBQzdCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUVELE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLDZCQUE2QixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDdEYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFuUUQsc0RBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBTeW50aGVzaXNPcHRpb25zLCBTeW50aGVzaXNSZXN1bHQsIFN5bnRoZXNpc0Vycm9yIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBTeW50aGVzaXNPcmNoZXN0cmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfT1VUUFVUX1BBVEggPSAnY2RrLm91dCc7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgQ0RLIHN5bnRoZXNpc1xuICAgKi9cbiAgYXN5bmMgc3ludGhlc2l6ZShvcHRpb25zOiBTeW50aGVzaXNPcHRpb25zKTogUHJvbWlzZTxTeW50aGVzaXNSZXN1bHQ+IHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBvcHRpb25zLm91dHB1dFBhdGggfHwgdGhpcy5ERUZBVUxUX09VVFBVVF9QQVRIO1xuICAgICAgY29uc3QgY29tbWFuZCA9IG9wdGlvbnMuY3VzdG9tQ29tbWFuZCB8fCAnbnB4IGNkayBzeW50aCc7XG5cbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVN5bnRoZXNpcyhjb21tYW5kLCBvcHRpb25zLmNka0FwcFBhdGgsIG9wdGlvbnMuY29udGV4dCwgb3V0cHV0UGF0aCk7XG5cbiAgICAgIGNvbnN0IGZ1bGxPdXRwdXRQYXRoID0gcGF0aC5qb2luKG9wdGlvbnMuY2RrQXBwUGF0aCwgb3V0cHV0UGF0aCk7XG4gICAgICBjb25zdCB7IHRlbXBsYXRlUGF0aHMsIHN0YWNrTmFtZXMgfSA9IGF3YWl0IHRoaXMuZmluZFRlbXBsYXRlcyhmdWxsT3V0cHV0UGF0aCk7XG5cbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgdGVtcGxhdGVQYXRocyxcbiAgICAgICAgc3RhY2tOYW1lcyxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFN5bnRoZXNpc0Vycm9yKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgdGVtcGxhdGVQYXRoczogW10sXG4gICAgICAgICAgc3RhY2tOYW1lczogW10sXG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIHRlbXBsYXRlUGF0aHM6IFtdLFxuICAgICAgICBzdGFja05hbWVzOiBbXSxcbiAgICAgICAgZXJyb3I6IGBTeW50aGVzaXMgZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgc3ludGhlc2lzIGNvbW1hbmRcbiAgICpcbiAgICogVXNlcyBzaGVsbDogZmFsc2UgZm9yIHNlY3VyaXR5IHRvIHByZXZlbnQgY29tbWFuZCBpbmplY3Rpb24gYXR0YWNrcy5cbiAgICogQXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgYW4gYXJyYXkgdG8gYXZvaWQgc2hlbGwgaW50ZXJwcmV0YXRpb24uXG4gICAqIFxuICAgKiBJbXBsZW1lbnRzIGEgMTUtc2Vjb25kIHRpbWVvdXQgdG8gcHJldmVudCBoYW5naW5nIHByb2Nlc3NlcyBpbiBDSTpcbiAgICogLSBTZW5kcyBTSUdURVJNIGZvciBncmFjZWZ1bCB0ZXJtaW5hdGlvblxuICAgKiAtIEZvbGxvd3MgdXAgd2l0aCBTSUdLSUxMIGFmdGVyIDEgc2Vjb25kIGlmIHByb2Nlc3MgZG9lc24ndCBleGl0XG4gICAqIC0gUHJldmVudHMgZHVwbGljYXRlIHJlc29sdXRpb24gdXNpbmcgaXNSZXNvbHZlZCBmbGFnXG4gICAqIC0gRW5zdXJlcyBhbGwgZXZlbnQgbGlzdGVuZXJzIGFyZSBjbGVhbmVkIHVwXG4gICAqIC0gVXNlcyBwcm9jZXNzLmtpbGwgYXMgZmFsbGJhY2sgZm9yIHN0dWJib3JuIHByb2Nlc3Nlc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlU3ludGhlc2lzKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBjZGtBcHBQYXRoOiBzdHJpbmcsXG4gICAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgb3V0cHV0UGF0aD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IFtjbWQsIC4uLmFyZ3NdID0gY29tbWFuZC5zcGxpdCgnICcpO1xuXG4gICAgICAvLyBBZGQgY29udGV4dCBhcmd1bWVudHNcbiAgICAgIGNvbnN0IGFsbEFyZ3MgPSBbLi4uYXJnc107XG4gICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb250ZXh0KSkge1xuICAgICAgICAgIGFsbEFyZ3MucHVzaCgnLWMnLCBgJHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIG91dHB1dCBwYXRoIGlmIHNwZWNpZmllZFxuICAgICAgaWYgKG91dHB1dFBhdGgpIHtcbiAgICAgICAgYWxsQXJncy5wdXNoKCctLW91dHB1dCcsIG91dHB1dFBhdGgpO1xuICAgICAgfVxuXG4gICAgICAvLyBVc2Ugc2hlbGw6IGZhbHNlIGZvciBzZWN1cml0eSBhbmQgcGFzcyBhcmd1bWVudHMgcHJvcGVybHlcbiAgICAgIGNvbnN0IHByb2MgPSBzcGF3bihjbWQsIGFsbEFyZ3MsIHtcbiAgICAgICAgY3dkOiBjZGtBcHBQYXRoLFxuICAgICAgICBzaGVsbDogZmFsc2UsXG4gICAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgICAgZGV0YWNoZWQ6IGZhbHNlLCAvLyBFbnN1cmUgcHJvY2VzcyBpcyBwYXJ0IG9mIHRoZSBzYW1lIHByb2Nlc3MgZ3JvdXBcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgICBsZXQgc3RkZXJyID0gJyc7XG4gICAgICBsZXQgaXNSZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgbGV0IGtpbGxUaW1lb3V0OiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuXG4gICAgICBjb25zdCBjbGVhbnVwID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoa2lsbFRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoa2lsbFRpbWVvdXQpO1xuICAgICAgICAgIGtpbGxUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZW1vdmUgYWxsIGxpc3RlbmVycyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuICAgICAgICBwcm9jLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgICBwcm9jLnN0ZG91dD8ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgIHByb2Muc3RkZXJyPy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZvcmNlS2lsbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUcnkgbXVsdGlwbGUga2lsbCBtZXRob2RzIGZvciBzdHViYm9ybiBwcm9jZXNzZXNcbiAgICAgICAgICBpZiAocHJvYy5waWQgJiYgIXByb2Mua2lsbGVkKSB7XG4gICAgICAgICAgICBwcm9jLmtpbGwoJ1NJR0tJTEwnKTtcbiAgICAgICAgICAgIC8vIEFsc28gdHJ5IHByb2Nlc3Mua2lsbCBhcyBmYWxsYmFja1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2MucGlkLCAnU0lHS0lMTCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoa2lsbEVycm9yKSB7XG4gICAgICAgICAgICAgIC8vIElnbm9yZSBraWxsIGVycm9ycyAtIHByb2Nlc3MgbWlnaHQgYWxyZWFkeSBiZSBkZWFkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgZHVyaW5nIGZvcmNlIGtpbGxcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gU2V0IHVwIHRpbWVvdXQgdG8gcHJldmVudCBoYW5naW5nIHByb2Nlc3Nlc1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWlzUmVzb2x2ZWQpIHtcbiAgICAgICAgICBpc1Jlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBGaXJzdCB0cnkgZ3JhY2VmdWwgdGVybWluYXRpb25cbiAgICAgICAgICBwcm9jLmtpbGwoJ1NJR1RFUk0nKTtcbiAgICAgICAgICBcbiAgICAgICAgICAvLyBGb3JjZSBraWxsIGFmdGVyIDEgc2Vjb25kIGlmIHN0aWxsIHJ1bm5pbmdcbiAgICAgICAgICBraWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9yY2VLaWxsKCk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgXG4gICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBTeW50aGVzaXNFcnJvcihcbiAgICAgICAgICAgICAgJ0NESyBzeW50aGVzaXMgdGltZWQgb3V0IGFmdGVyIDE1IHNlY29uZHMnLFxuICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LCAxNTAwMCk7IC8vIFJlZHVjZWQgdG8gMTUgc2Vjb25kIHRpbWVvdXRcblxuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBzdGRvdXQgKz0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIHByb2Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuXG4gICAgICBwcm9jLm9uKCdlcnJvcicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCFpc1Jlc29sdmVkKSB7XG4gICAgICAgICAgaXNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gZXhlY3V0ZSBzeW50aGVzaXMgY29tbWFuZDogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgIHN0ZGVyciB8fCAnTm8gZXJyb3Igb3V0cHV0IGNhcHR1cmVkJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHByb2Mub24oJ2Nsb3NlJywgKGNvZGU6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKCFpc1Jlc29sdmVkKSB7XG4gICAgICAgICAgaXNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgICAgYENESyBzeW50aGVzaXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7Y29kZX1gLFxuICAgICAgICAgICAgICAgIHN0ZGVyciB8fCBzdGRvdXQgfHwgJ05vIG91dHB1dCBjYXB0dXJlZCcsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkaXRpb25hbCBzYWZldHk6IGhhbmRsZSBwcm9jZXNzIGV4aXRcbiAgICAgIHByb2Mub24oJ2V4aXQnLCAoY29kZTogbnVtYmVyIHwgbnVsbCwgc2lnbmFsOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghaXNSZXNvbHZlZCkge1xuICAgICAgICAgIGlzUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgICAgYENESyBzeW50aGVzaXMgdGVybWluYXRlZCBieSBzaWduYWwgJHtzaWduYWx9YCxcbiAgICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgbmV3IFN5bnRoZXNpc0Vycm9yKFxuICAgICAgICAgICAgICAgIGBDREsgc3ludGhlc2lzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9YCxcbiAgICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhbGwgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGluIG91dHB1dCBkaXJlY3RvcnlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmluZFRlbXBsYXRlcyhcbiAgICBvdXRwdXRQYXRoOiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyB0ZW1wbGF0ZVBhdGhzOiBzdHJpbmdbXTsgc3RhY2tOYW1lczogc3RyaW5nW10gfT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIob3V0cHV0UGF0aCk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aHM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCBzdGFja05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgLy8gTWF0Y2ggQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZmlsZXMgKHN0YWNrLW5hbWUudGVtcGxhdGUuanNvbiBvciBzdGFjay1uYW1lLnRlbXBsYXRlLnlhbWwpXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmaWxlLmVuZHNXaXRoKCcudGVtcGxhdGUuanNvbicpIHx8XG4gICAgICAgICAgZmlsZS5lbmRzV2l0aCgnLnRlbXBsYXRlLnlhbWwnKSB8fFxuICAgICAgICAgIGZpbGUuZW5kc1dpdGgoJy50ZW1wbGF0ZS55bWwnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihvdXRwdXRQYXRoLCBmaWxlKTtcbiAgICAgICAgICB0ZW1wbGF0ZVBhdGhzLnB1c2goZnVsbFBhdGgpO1xuXG4gICAgICAgICAgLy8gRXh0cmFjdCBzdGFjayBuYW1lIGZyb20gZmlsZW5hbWVcbiAgICAgICAgICBjb25zdCBzdGFja05hbWUgPSBmaWxlXG4gICAgICAgICAgICAucmVwbGFjZSgnLnRlbXBsYXRlLmpzb24nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcudGVtcGxhdGUueWFtbCcsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJy50ZW1wbGF0ZS55bWwnLCAnJyk7XG4gICAgICAgICAgc3RhY2tOYW1lcy5wdXNoKHN0YWNrTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlUGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGZvdW5kIGluIG91dHB1dCBkaXJlY3RvcnknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgdGVtcGxhdGVQYXRocywgc3RhY2tOYW1lcyB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gZmluZCB0ZW1wbGF0ZXM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ludGhlc2lzT3JjaGVzdHJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bnRoZXNpcy9TeW50aGVzaXNPcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXNDO0FBQ3RDLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0IsbUNBQTRFO0FBRTVFLE1BQWEscUJBQXFCO0lBQ2YsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0lBRWpEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUF5QjtRQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUM7WUFFekQsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUV0RixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDakUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUV4QyxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLGFBQWE7Z0JBQ2IsVUFBVTtnQkFDVixRQUFRO2FBQ1QsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFP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QUMsUUFBUSxDQUFDLENBQUM7b0JBRTdCLG1DQUFtQztvQkFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSTt5QkFDbkIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQzt5QkFDN0IsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQzt5QkFDN0IsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztZQUMzRSxDQUFDO1lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkJBQTZCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUN0RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpRRCxzREFpUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFN5bnRoZXNpc09wdGlvbnMsIFN5bnRoZXNpc1Jlc3VsdCwgU3ludGhlc2lzRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFN5bnRoZXNpc09yY2hlc3RyYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9PVVRQVVRfUEFUSCA9ICdjZGsub3V0JztcblxuICAvKipcbiAgICogRXhlY3V0ZSBDREsgc3ludGhlc2lzXG4gICAqL1xuICBhc3luYyBzeW50aGVzaXplKG9wdGlvbnM6IFN5bnRoZXNpc09wdGlvbnMpOiBQcm9taXNlPFN5bnRoZXNpc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IG9wdGlvbnMub3V0cHV0UGF0aCB8fCB0aGlzLkRFRkFVTFRfT1VUUFVUX1BBVEg7XG4gICAgICBjb25zdCBjb21tYW5kID0gb3B0aW9ucy5jdXN0b21Db21tYW5kIHx8ICducHggY2RrIHN5bnRoJztcblxuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlU3ludGhlc2lzKGNvbW1hbmQsIG9wdGlvbnMuY2RrQXBwUGF0aCwgb3B0aW9ucy5jb250ZXh0LCBvdXRwdXRQYXRoKTtcblxuICAgICAgY29uc3QgZnVsbE91dHB1dFBhdGggPSBwYXRoLmpvaW4ob3B0aW9ucy5jZGtBcHBQYXRoLCBvdXRwdXRQYXRoKTtcbiAgICAgIGNvbnN0IHsgdGVtcGxhdGVQYXRocywgc3RhY2tOYW1lcyB9ID0gYXdhaXQgdGhpcy5maW5kVGVtcGxhdGVzKGZ1bGxPdXRwdXRQYXRoKTtcblxuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICB0ZW1wbGF0ZVBhdGhzLFxuICAgICAgICBzdGFja05hbWVzLFxuICAgICAgICBkdXJhdGlvbixcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcblxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU3ludGhlc2lzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICB0ZW1wbGF0ZVBhdGhzOiBbXSxcbiAgICAgICAgICBzdGFja05hbWVzOiBbXSxcbiAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlLFxuICAgICAgICAgIGR1cmF0aW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgdGVtcGxhdGVQYXRoczogW10sXG4gICAgICAgIHN0YWNrTmFtZXM6IFtdLFxuICAgICAgICBlcnJvcjogYFN5bnRoZXNpcyBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBzeW50aGVzaXMgY29tbWFuZFxuICAgKlxuICAgKiBVc2VzIHNoZWxsOiBmYWxzZSBmb3Igc2VjdXJpdHkgdG8gcHJldmVudCBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLlxuICAgKiBBcmd1bWVudHMgYXJlIHBhc3NlZCBhcyBhbiBhcnJheSB0byBhdm9pZCBzaGVsbCBpbnRlcnByZXRhdGlvbi5cbiAgICogXG4gICAqIEltcGxlbWVudHMgYSAxNS1zZWNvbmQgdGltZW91dCB0byBwcmV2ZW50IGhhbmdpbmcgcHJvY2Vzc2VzIGluIENJOlxuICAgKiAtIFNlbmRzIFNJR1RFUk0gZm9yIGdyYWNlZnVsIHRlcm1pbmF0aW9uXG4gICAqIC0gRm9sbG93cyB1cCB3aXRoIFNJR0tJTEwgYWZ0ZXIgMSBzZWNvbmQgaWYgcHJvY2VzcyBkb2Vzbid0IGV4aXRcbiAgICogLSBQcmV2ZW50cyBkdXBsaWNhdGUgcmVzb2x1dGlvbiB1c2luZyBpc1Jlc29sdmVkIGZsYWdcbiAgICogLSBFbnN1cmVzIGFsbCBldmVudCBsaXN0ZW5lcnMgYXJlIGNsZWFuZWQgdXBcbiAgICogLSBVc2VzIHByb2Nlc3Mua2lsbCBhcyBmYWxsYmFjayBmb3Igc3R1YmJvcm4gcHJvY2Vzc2VzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVTeW50aGVzaXMoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIGNka0FwcFBhdGg6IHN0cmluZyxcbiAgICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBvdXRwdXRQYXRoPzogc3RyaW5nLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgW2NtZCwgLi4uYXJnc10gPSBjb21tYW5kLnNwbGl0KCcgJyk7XG5cbiAgICAgIC8vIEFkZCBjb250ZXh0IGFyZ3VtZW50c1xuICAgICAgY29uc3QgYWxsQXJncyA9IFsuLi5hcmdzXTtcbiAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRleHQpKSB7XG4gICAgICAgICAgYWxsQXJncy5wdXNoKCctYycsIGAke2tleX09JHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGQgb3V0cHV0IHBhdGggaWYgc3BlY2lmaWVkXG4gICAgICBpZiAob3V0cHV0UGF0aCkge1xuICAgICAgICBhbGxBcmdzLnB1c2goJy0tb3V0cHV0Jywgb3V0cHV0UGF0aCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVzZSBzaGVsbDogZmFsc2UgZm9yIHNlY3VyaXR5IGFuZCBwYXNzIGFyZ3VtZW50cyBwcm9wZXJseVxuICAgICAgY29uc3QgcHJvYyA9IHNwYXduKGNtZCwgYWxsQXJncywge1xuICAgICAgICBjd2Q6IGNka0FwcFBhdGgsXG4gICAgICAgIHNoZWxsOiBmYWxzZSxcbiAgICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgICBkZXRhY2hlZDogZmFsc2UsIC8vIEVuc3VyZSBwcm9jZXNzIGlzIHBhcnQgb2YgdGhlIHNhbWUgcHJvY2VzcyBncm91cFxuICAgICAgfSk7XG5cbiAgICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICAgIGxldCBzdGRlcnIgPSAnJztcbiAgICAgIGxldCBpc1Jlc29sdmVkID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIFJlbW92ZSBhbGwgbGlzdGVuZXJzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgIHByb2MucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgIHByb2Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgcHJvYy5zdGRlcnI/LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgZm9yY2VLaWxsID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRyeSBtdWx0aXBsZSBraWxsIG1ldGhvZHMgZm9yIHN0dWJib3JuIHByb2Nlc3Nlc1xuICAgICAgICAgIGlmIChwcm9jLnBpZCAmJiAhcHJvYy5raWxsZWQpIHtcbiAgICAgICAgICAgIHByb2Mua2lsbCgnU0lHS0lMTCcpO1xuICAgICAgICAgICAgLy8gQWxzbyB0cnkgcHJvY2Vzcy5raWxsIGFzIGZhbGxiYWNrXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwocHJvYy5waWQsICdTSUdLSUxMJyk7XG4gICAgICAgICAgICB9IGNhdGNoIChraWxsRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gSWdub3JlIGtpbGwgZXJyb3JzIC0gcHJvY2VzcyBtaWdodCBhbHJlYWR5IGJlIGRlYWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBkdXJpbmcgZm9yY2Uga2lsbFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvLyBTZXQgdXAgdGltZW91dCB0byBwcmV2ZW50IGhhbmdpbmcgcHJvY2Vzc2VzXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNSZXNvbHZlZCkge1xuICAgICAgICAgIGlzUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIEZpcnN0IHRyeSBncmFjZWZ1bCB0ZXJtaW5hdGlvblxuICAgICAgICAgIHByb2Mua2lsbCgnU0lHVEVSTScpO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIEZvcmNlIGtpbGwgYWZ0ZXIgMSBzZWNvbmQgaWYgc3RpbGwgcnVubmluZ1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZm9yY2VLaWxsKCk7XG4gICAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgICAgICAvLyBPbmx5IHJlbW92ZSBldmVudCBsaXN0ZW5lcnMsIGRvbid0IGNsZWFyIGtpbGxUaW1lb3V0XG4gICAgICAgICAgcHJvYy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICBwcm9jLnN0ZG91dD8ucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgcHJvYy5zdGRlcnI/LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBTeW50aGVzaXNFcnJvcihcbiAgICAgICAgICAgICAgJ0NESyBzeW50aGVzaXMgdGltZWQgb3V0IGFmdGVyIDE1IHNlY29uZHMnLFxuICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LCAxNTAwMCk7IC8vIFJlZHVjZWQgdG8gMTUgc2Vjb25kIHRpbWVvdXRcblxuICAgICAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBzdGRvdXQgKz0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIHByb2Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuXG4gICAgICBwcm9jLm9uKCdlcnJvcicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCFpc1Jlc29sdmVkKSB7XG4gICAgICAgICAgaXNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gZXhlY3V0ZSBzeW50aGVzaXMgY29tbWFuZDogJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICAgICAgICAgIHN0ZGVyciB8fCAnTm8gZXJyb3Igb3V0cHV0IGNhcHR1cmVkJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHByb2Mub24oJ2Nsb3NlJywgKGNvZGU6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKCFpc1Jlc29sdmVkKSB7XG4gICAgICAgICAgaXNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgICAgYENESyBzeW50aGVzaXMgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7Y29kZX1gLFxuICAgICAgICAgICAgICAgIHN0ZGVyciB8fCBzdGRvdXQgfHwgJ05vIG91dHB1dCBjYXB0dXJlZCcsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkaXRpb25hbCBzYWZldHk6IGhhbmRsZSBwcm9jZXNzIGV4aXRcbiAgICAgIHByb2Mub24oJ2V4aXQnLCAoY29kZTogbnVtYmVyIHwgbnVsbCwgc2lnbmFsOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghaXNSZXNvbHZlZCkge1xuICAgICAgICAgIGlzUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgU3ludGhlc2lzRXJyb3IoXG4gICAgICAgICAgICAgICAgYENESyBzeW50aGVzaXMgdGVybWluYXRlZCBieSBzaWduYWwgJHtzaWduYWx9YCxcbiAgICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgbmV3IFN5bnRoZXNpc0Vycm9yKFxuICAgICAgICAgICAgICAgIGBDREsgc3ludGhlc2lzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9YCxcbiAgICAgICAgICAgICAgICBzdGRlcnIgfHwgc3Rkb3V0IHx8ICdObyBvdXRwdXQgY2FwdHVyZWQnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhbGwgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGluIG91dHB1dCBkaXJlY3RvcnlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmluZFRlbXBsYXRlcyhcbiAgICBvdXRwdXRQYXRoOiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyB0ZW1wbGF0ZVBhdGhzOiBzdHJpbmdbXTsgc3RhY2tOYW1lczogc3RyaW5nW10gfT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIob3V0cHV0UGF0aCk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aHM6IHN0cmluZ1tdID0gW107XG4gICAgICBjb25zdCBzdGFja05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgLy8gTWF0Y2ggQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZmlsZXMgKHN0YWNrLW5hbWUudGVtcGxhdGUuanNvbiBvciBzdGFjay1uYW1lLnRlbXBsYXRlLnlhbWwpXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmaWxlLmVuZHNXaXRoKCcudGVtcGxhdGUuanNvbicpIHx8XG4gICAgICAgICAgZmlsZS5lbmRzV2l0aCgnLnRlbXBsYXRlLnlhbWwnKSB8fFxuICAgICAgICAgIGZpbGUuZW5kc1dpdGgoJy50ZW1wbGF0ZS55bWwnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihvdXRwdXRQYXRoLCBmaWxlKTtcbiAgICAgICAgICB0ZW1wbGF0ZVBhdGhzLnB1c2goZnVsbFBhdGgpO1xuXG4gICAgICAgICAgLy8gRXh0cmFjdCBzdGFjayBuYW1lIGZyb20gZmlsZW5hbWVcbiAgICAgICAgICBjb25zdCBzdGFja05hbWUgPSBmaWxlXG4gICAgICAgICAgICAucmVwbGFjZSgnLnRlbXBsYXRlLmpzb24nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcudGVtcGxhdGUueWFtbCcsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJy50ZW1wbGF0ZS55bWwnLCAnJyk7XG4gICAgICAgICAgc3RhY2tOYW1lcy5wdXNoKHN0YWNrTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRlbXBsYXRlUGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGZvdW5kIGluIG91dHB1dCBkaXJlY3RvcnknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgdGVtcGxhdGVQYXRocywgc3RhY2tOYW1lcyB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gZmluZCB0ZW1wbGF0ZXM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|