serverless-spy 0.0.34 → 0.0.36
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/.jsii +236 -9
- package/API.md +161 -0
- package/common/publishSpyEvent.ts +4 -4
- package/dist/releasetag.txt +1 -1
- package/extension/interceptor.ts +28 -22
- package/functions/onConnect.ts +1 -1
- package/functions/onDisconnect.ts +1 -1
- package/functions/sqsSubscriptionAndDropAllMessages.ts +3 -0
- package/lib/common/publishSpyEvent.js +5 -5
- package/lib/common/publishSpyEvent.mjs +5 -5
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js +10476 -23580
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js.map +4 -4
- package/lib/listener/ServerlessSpyListenerParams.d.ts +1 -0
- package/lib/listener/ServerlessSpyListenerParams.js +1 -1
- package/lib/listener/ServerlessSpyListenerParams.mjs +1 -1
- package/lib/listener/WsListener.d.ts +4 -21
- package/lib/listener/WsListener.js +11 -3
- package/lib/listener/WsListener.mjs +11 -3
- package/lib/src/ServerlessSpy.d.ts +45 -14
- package/lib/src/ServerlessSpy.js +251 -108
- package/lib/src/ServerlessSpy.mjs +249 -106
- package/lib/src/common/envVariableNames.d.ts +21 -6
- package/lib/src/common/envVariableNames.js +22 -7
- package/lib/src/common/envVariableNames.mjs +22 -7
- package/listener/ServerlessSpyListenerParams.ts +1 -0
- package/listener/WsListener.ts +18 -6
- package/package.json +1 -1
|
@@ -10,16 +10,16 @@ const ddb = new client_dynamodb_1.DynamoDBClient({
|
|
|
10
10
|
});
|
|
11
11
|
const apigwManagementApi = new client_apigatewaymanagementapi_1.ApiGatewayManagementApi({
|
|
12
12
|
apiVersion: '2018-11-29',
|
|
13
|
-
endpoint: process.env[envVariableNames_1.envVariableNames.
|
|
13
|
+
endpoint: process.env[envVariableNames_1.envVariableNames.SSPY_WS_ENDPOINT],
|
|
14
14
|
});
|
|
15
15
|
let connections;
|
|
16
16
|
async function publishSpyEvent(event) {
|
|
17
17
|
console.log('EVENT', JSON.stringify(event));
|
|
18
|
-
const mapping = JSON.parse(process.env[envVariableNames_1.envVariableNames.
|
|
18
|
+
const mapping = JSON.parse(process.env[envVariableNames_1.envVariableNames.SSPY_INFRA_MAPPING]);
|
|
19
19
|
console.log('mapping', JSON.stringify(mapping));
|
|
20
20
|
let connectionData;
|
|
21
21
|
const scanParams = new client_dynamodb_1.ScanCommand({
|
|
22
|
-
TableName: process.env[envVariableNames_1.envVariableNames.
|
|
22
|
+
TableName: process.env[envVariableNames_1.envVariableNames.SSPY_WS_TABLE_NAME],
|
|
23
23
|
ProjectionExpression: 'connectionId',
|
|
24
24
|
});
|
|
25
25
|
connectionData = await ddb.send(scanParams);
|
|
@@ -187,7 +187,7 @@ async function postData(spyMessage) {
|
|
|
187
187
|
if (e.$metadata.httpStatusCode === 410) {
|
|
188
188
|
console.log(`Found stale connection, deleting ${connectionId}`);
|
|
189
189
|
const deleteParams = new client_dynamodb_1.DeleteItemCommand({
|
|
190
|
-
TableName: process.env[envVariableNames_1.envVariableNames.
|
|
190
|
+
TableName: process.env[envVariableNames_1.envVariableNames.SSPY_WS_TABLE_NAME],
|
|
191
191
|
Key: { connectionId },
|
|
192
192
|
});
|
|
193
193
|
await ddb.send(deleteParams);
|
|
@@ -208,4 +208,4 @@ function getSpyEventType(serviceKey) {
|
|
|
208
208
|
return serviceKey.substring(0, serviceKey.indexOf('#'));
|
|
209
209
|
}
|
|
210
210
|
exports.getSpyEventType = getSpyEventType;
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaFNweUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL3B1Ymxpc2hTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0RkFHaUQ7QUFDakQsOERBS2tDO0FBRWxDLDBEQUFvRDtBQVFwRCxxRUFBa0U7QUFVbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQ0FBYyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHdEQUF1QixDQUFDO0lBQ3JELFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFnQixDQUFDLFdBQVcsQ0FBRTtDQUNyRCxDQUFDLENBQUM7QUFFSCxJQUFJLFdBQXlELENBQUM7QUFFdkQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFVO0lBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUU1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQWdCLENBQUMsYUFBYSxDQUFFLENBQUMsQ0FBQztJQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFaEQsSUFBSSxjQUFjLENBQUM7SUFFbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBVyxDQUFDO1FBQ2pDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFnQixDQUFDLFVBQVUsQ0FBVztRQUM3RCxvQkFBb0IsRUFBRSxjQUFjO0tBQ3JDLENBQUMsQ0FBQztJQUVILGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMs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QyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBMUNELDRCQTBDQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxVQUFrQjtJQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3ZDO0lBRUQsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQU5ELDBDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBpR2F0ZXdheU1hbmFnZW1lbnRBcGksXG4gIFBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtYXBpZ2F0ZXdheW1hbmFnZW1lbnRhcGknO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRlVmFsdWUsXG4gIERlbGV0ZUl0ZW1Db21tYW5kLFxuICBEeW5hbW9EQkNsaWVudCxcbiAgU2NhbkNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1keW5hbW9kYic7XG5cbmltcG9ydCB7IHVubWFyc2hhbGwgfSBmcm9tICdAYXdzLXNkay91dGlsLWR5bmFtb2RiJztcbmltcG9ydCB7XG4gIER5bmFtb0RCU3RyZWFtRXZlbnQsXG4gIFMzRXZlbnQsXG4gIFNOU0V2ZW50LFxuICBFdmVudEJyaWRnZUV2ZW50LFxuICBTUVNFdmVudCxcbn0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBlbnZWYXJpYWJsZU5hbWVzIH0gZnJvbSAnLi4vc3JjL2NvbW1vbi9lbnZWYXJpYWJsZU5hbWVzJztcbmltcG9ydCB7IER5bmFtb0RCU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9EeW5hbW9EQlNweUV2ZW50JztcbmltcG9ydCB7IEV2ZW50QnJpZGdlUnVsZVNweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL0V2ZW50QnJpZGdlU3B5RXZlbnQnO1xuaW1wb3J0IHsgUzNTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL1MzU3B5RXZlbnQnO1xuaW1wb3J0IHsgU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9TbnNTdWJzY3JpcHRpb25TcHlFdmVudCc7XG5pbXBvcnQgeyBTbnNUb3BpY1NweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvU25zVG9waWNTcHlFdmVudCc7XG5pbXBvcnQgeyBTcHlNZXNzYWdlIH0gZnJvbSAnLi9zcHlFdmVudHMvU3B5TWVzc2FnZSc7XG5pbXBvcnQgeyBTcXNTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL1Nxc1NweUV2ZW50JztcblxuY29uc3QgZGRiID0gbmV3IER5bmFtb0RCQ2xpZW50KHtcbiAgcmVnaW9uOiBwcm9jZXNzLmVudi5BV1NfUkVHSU9OLFxufSk7XG5cbmNvbnN0IGFwaWd3TWFuYWdlbWVudEFwaSA9IG5ldyBBcGlHYXRld2F5TWFuYWdlbWVudEFwaSh7XG4gIGFwaVZlcnNpb246ICcyMDE4LTExLTI5JyxcbiAgZW5kcG9pbnQ6IHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZXMuV1NfRU5EUE9JTlRdISxcbn0pO1xuXG5sZXQgY29ubmVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEF0dHJpYnV0ZVZhbHVlPltdIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaFNweUV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgY29uc29sZS5sb2coJ0VWRU5UJywgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcblxuICBjb25zdCBtYXBwaW5nID0gSlNPTi5wYXJzZShwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVzLklORlJBX01BUFBJTkddISk7XG4gIGNvbnNvbGUubG9nKCdtYXBwaW5nJywgSlNPTi5zdHJpbmdpZnkobWFwcGluZykpO1xuXG4gIGxldCBjb25uZWN0aW9uRGF0YTtcblxuICBjb25zdCBzY2FuUGFyYW1zID0gbmV3IFNjYW5Db21tYW5kKHtcbiAgICBUYWJsZU5hbWU6IHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZXMuVEFCTEVfTkFNRV0gYXMgc3RyaW5nLFxuICAgIFByb2plY3Rpb25FeHByZXNzaW9uOiAnY29ubmVjdGlvbklkJyxcbiAgfSk7XG5cbiAgY29ubmVjdGlvbkRhdGEgPSBhd2FpdCBkZGIuc2VuZChzY2FuUGFyYW1zKTtcblxuICBjb25uZWN0aW9ucyA9IGNvbm5lY3Rpb25EYXRhLkl0ZW1zO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBjb25uZWN0aW9ucyBhdCAke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX1gLFxuICAgIEpTT04uc3RyaW5naWZ5KGNvbm5lY3Rpb25zKVxuICApO1xuXG4gIGNvbnN0IHBvc3REYXRhUHJvbWlzZXM6IFByb21pc2U8YW55PltdID0gW107XG5cbiAgaWYgKGV2ZW50Py5SZWNvcmRzICYmIGV2ZW50LlJlY29yZHNbMF0/LlNucykge1xuICAgIGNvbnNvbGUubG9nKCcqKiogU05TICoqKicpO1xuICAgIGNvbnN0IGV2ZW50U25zID0gZXZlbnQgYXMgU05TRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnRTbnMuUmVjb3Jkcykge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uQXJuID0gcmVjb3JkLkV2ZW50U3Vic2NyaXB0aW9uQXJuO1xuXG4gICAgICBsZXQgc2VydmljZUtleTogc3RyaW5nO1xuICAgICAgaWYgKG1hcHBpbmdbc3Vic2NyaXB0aW9uQXJuXSkge1xuICAgICAgICAvLyBzdWJzY3JpcHRpb24gZXZlbnQgdGhhdCBjb3VsZCBjb250YWluIGZpbHRlciBiYXNlZCBvbiBleGlzdGluZyBzdWJzY3JpcHRpb25cbiAgICAgICAgc2VydmljZUtleSA9IG1hcHBpbmdbc3Vic2NyaXB0aW9uQXJuXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNhdGNoIGFsbCBzdWJzY3JpcHRpb25cbiAgICAgICAgY29uc3QgdG9waWNBcm4gPSByZWNvcmQuU25zLlRvcGljQXJuO1xuICAgICAgICBzZXJ2aWNlS2V5ID0gbWFwcGluZ1t0b3BpY0Fybl07XG4gICAgICB9XG5cbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKHJlY29yZC5TbnMuTWVzc2FnZSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgbWVzc2FnZSA9IHJlY29yZC5TbnMuTWVzc2FnZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3B5RXZlbnRUeXBlID0gZ2V0U3B5RXZlbnRUeXBlKHNlcnZpY2VLZXkpIGFzXG4gICAgICAgIHwgJ0Z1bmN0aW9uU25zVG9waWMnXG4gICAgICAgIHwgJ0Z1bmN0aW9uU25zU3Vic2NyaXB0aW9uJztcblxuICAgICAgY29uc3QgZGF0YTogU25zVG9waWNTcHlFdmVudCB8IFNuc1N1YnNjcmlwdGlvblNweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHN1YmplY3Q6IHJlY29yZC5TbnMuU3ViamVjdCxcbiAgICAgICAgdGltZXN0YW1wOiByZWNvcmQuU25zLlRpbWVzdGFtcCxcbiAgICAgICAgdG9waWNBcm46IHJlY29yZC5TbnMuVG9waWNBcm4sXG4gICAgICAgIG1lc3NhZ2VJZDogcmVjb3JkLlNucy5NZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VBdHRyaWJ1dGVzOiByZWNvcmQuU25zLk1lc3NhZ2VBdHRyaWJ1dGVzLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzZXJ2aWNlS2V5LFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudD8uUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5ldmVudFNvdXJjZSA9PT0gJ2F3czpzcXMnKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBTUVMgKioqJyk7XG4gICAgY29uc3QgZXZlbnRTcXMgPSBldmVudCBhcyBTUVNFdmVudDtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudFNxcy5SZWNvcmRzKSB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25Bcm4gPSByZWNvcmQuZXZlbnRTb3VyY2VBUk47XG5cbiAgICAgIGNvbnN0IHNlcnZpY2VLZXkgPSBtYXBwaW5nW3N1YnNjcmlwdGlvbkFybl07XG4gICAgICBsZXQgYm9keTogc3RyaW5nO1xuXG4gICAgICB0cnkge1xuICAgICAgICBib2R5ID0gSlNPTi5wYXJzZShyZWNvcmQuYm9keSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgYm9keSA9IHJlY29yZC5ib2R5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhOiBTcXNTcHlFdmVudCA9IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlOiAnU3FzJyxcbiAgICAgICAgYm9keSxcbiAgICAgICAgbWVzc2FnZUF0dHJpYnV0ZXM6IHJlY29yZC5tZXNzYWdlQXR0cmlidXRlcyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc2VydmljZUtleSxcbiAgICAgIH07XG4gICAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXZlbnQ/LlJlY29yZHMgJiYgZXZlbnQuUmVjb3Jkc1swXT8uczMpIHtcbiAgICBjb25zb2xlLmxvZygnKioqIFMzICoqKicpO1xuICAgIGNvbnN0IGV2ZW50UzMgPSBldmVudCBhcyBTM0V2ZW50O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50UzMuUmVjb3Jkcykge1xuICAgICAgY29uc3QgYnVja2V0QXJuID0gcmVjb3JkLnMzLmJ1Y2tldC5hcm47XG5cbiAgICAgIGNvbnN0IGRhdGE6IFMzU3B5RXZlbnQgPSB7XG4gICAgICAgIHNweUV2ZW50VHlwZTogJ1MzJyxcbiAgICAgICAgZXZlbnROYW1lOiByZWNvcmQuZXZlbnROYW1lLFxuICAgICAgICBldmVudFRpbWU6IHJlY29yZC5ldmVudFRpbWUsXG4gICAgICAgIGJ1Y2tldDogcmVjb3JkLnMzLmJ1Y2tldC5uYW1lLFxuICAgICAgICBrZXk6IHJlY29yZC5zMy5vYmplY3Qua2V5LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzZXJ2aWNlS2V5OiBtYXBwaW5nW2J1Y2tldEFybl0sXG4gICAgICB9O1xuICAgICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV2ZW50LlJlY29yZHMgJiYgZXZlbnQuUmVjb3Jkc1swXT8uZHluYW1vZGIpIHtcbiAgICBjb25zb2xlLmxvZygnKioqIERZTkFNT0RCICoqKicpO1xuICAgIGNvbnN0IGV2ZW50RHluYW1vREIgPSBldmVudCBhcyBEeW5hbW9EQlN0cmVhbUV2ZW50O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50RHluYW1vREIuUmVjb3Jkcykge1xuICAgICAgbGV0IGFybiA9IHJlY29yZC5ldmVudFNvdXJjZUFSTiE7XG4gICAgICBhcm4gPSBhcm4uc3Vic3RyaW5nKDAsIGFybi5pbmRleE9mKCcvc3RyZWFtLycpKTtcblxuICAgICAgY29uc3QgZGF0YTogRHluYW1vREJTcHlFdmVudCA9IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlOiAnRHluYW1vREInLFxuICAgICAgICBldmVudE5hbWU6IHJlY29yZC5ldmVudE5hbWUsXG4gICAgICAgIG5ld0ltYWdlOiB1bm1hcnNoYWxsKHJlY29yZC5keW5hbW9kYj8uTmV3SW1hZ2UgYXMgYW55KSxcbiAgICAgICAga2V5czogdW5tYXJzaGFsbChyZWNvcmQuZHluYW1vZGI/LktleXMgYXMgYW55KSxcbiAgICAgICAgb2xkSW1hZ2U6IHJlY29yZC5keW5hbW9kYj8uT2xkSW1hZ2VcbiAgICAgICAgICA/IHVubWFyc2hhbGwocmVjb3JkLmR5bmFtb2RiPy5PbGRJbWFnZSBhcyBhbnkpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXk6IG1hcHBpbmdbYXJuXSxcbiAgICAgIH07XG4gICAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXG4gICAgZXZlbnQuZGV0YWlsICYmXG4gICAgZXZlbnRbJ2RldGFpbC10eXBlJ10gJiZcbiAgICBldmVudC52ZXJzaW9uICYmXG4gICAgZXZlbnQuc291cmNlXG4gICkge1xuICAgIGNvbnNvbGUubG9nKCcqKiogRXZlbnRCcmlkZ2UgKioqJyk7XG4gICAgY29uc3QgZXZlbnRFYiA9IGV2ZW50IGFzIEV2ZW50QnJpZGdlRXZlbnQ8YW55LCBhbnk+O1xuXG4gICAgY29uc3Qgc2VydmljZUtleSA9IG1hcHBpbmcuZXZlbnRCcmlkZ2U7IC8vIHRoZSBpcyBuZXcgbGFtYmRhIGZvciBlYWNoIHN1YnNjcmlwdGlvblxuXG4gICAgY29uc3Qgc3B5RXZlbnRUeXBlID0gZ2V0U3B5RXZlbnRUeXBlKHNlcnZpY2VLZXkpIGFzXG4gICAgICB8ICdFdmVudEJyaWRnZSdcbiAgICAgIHwgJ0V2ZW50QnJpZGdlUnVsZSc7XG5cbiAgICBjb25zdCBtZXNzYWdlID0gZXZlbnRFYi5kZXRhaWw7XG5cbiAgICBjb25zdCBkYXRhOiBFdmVudEJyaWRnZVNweUV2ZW50IHwgRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQgPSB7XG4gICAgICBzcHlFdmVudFR5cGUsXG4gICAgICBkZXRhaWw6IG1lc3NhZ2UsXG4gICAgICBkZXRhaWxUeXBlOiBldmVudEViWydkZXRhaWwtdHlwZSddLFxuICAgICAgc291cmNlOiBldmVudEViLnNvdXJjZSxcbiAgICAgIHRpbWU6IGV2ZW50RWIudGltZSxcbiAgICAgIGFjY291bnQ6IGV2ZW50RWIuYWNjb3VudCxcbiAgICB9O1xuXG4gICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgZGF0YSxcbiAgICAgIHNlcnZpY2VLZXksXG4gICAgfTtcbiAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnKioqIE9USEVSICoqKicpO1xuICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IGV2ZW50O1xuICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocG9zdERhdGFQcm9taXNlcyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3N0RGF0YShzcHlNZXNzYWdlOiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPikge1xuICAvLyBjb25zdCBwb3N0RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuYm9keSEpLmRhdGE7XG4gIGNvbnNvbGUubG9nKCdwb3N0RGF0YScsIEpTT04uc3RyaW5naWZ5KHNweU1lc3NhZ2UpKTtcblxuICBpZiAoIWNvbm5lY3Rpb25zKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcG9zdENhbGxzID0gY29ubmVjdGlvbnMubWFwKGFzeW5jICh7IGNvbm5lY3Rpb25JZCB9KSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNlbmRpbmcgbWVzc2FnZSB0bzogJHtjb25uZWN0aW9uSWQuU31gKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwb3N0VG9Db25uZWN0aW9uQ29tbWFuZCA9IG5ldyBQb3N0VG9Db25uZWN0aW9uQ29tbWFuZCh7XG4gICAgICAgIENvbm5lY3Rpb25JZDogY29ubmVjdGlvbklkLlMsXG4gICAgICAgIERhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBzZXJ2aWNlS2V5OiBzcHlNZXNzYWdlLnNlcnZpY2VLZXksXG4gICAgICAgICAgZGF0YTogc3B5TWVzc2FnZS5kYXRhLFxuICAgICAgICB9KSBhcyBhbnksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgYXBpZ3dNYW5hZ2VtZW50QXBpLnNlbmQocG9zdFRvQ29ubmVjdGlvbkNvbW1hbmQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxzIHNlbmRpbmcgbWVzc2FnZSB0bzogJHtjb25uZWN0aW9uSWQuU31gLCBlKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFN0YXR1cyBjb2RlOiAkeyhlIGFzIGFueSkuc3RhdHVzQ29kZX1gKTtcbiAgICAgIGlmICgoZSBhcyBhbnkpLiRtZXRhZGF0YS5odHRwU3RhdHVzQ29kZSA9PT0gNDEwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCBzdGFsZSBjb25uZWN0aW9uLCBkZWxldGluZyAke2Nvbm5lY3Rpb25JZH1gKTtcblxuICAgICAgICBjb25zdCBkZWxldGVQYXJhbXMgPSBuZXcgRGVsZXRlSXRlbUNvbW1hbmQoe1xuICAgICAgICAgIFRhYmxlTmFtZTogcHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5UQUJMRV9OQU1FXSxcbiAgICAgICAgICBLZXk6IHsgY29ubmVjdGlvbklkIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IGRkYi5zZW5kKGRlbGV0ZVBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocG9zdENhbGxzKTtcbiAgY29uc29sZS5sb2coJ1NlbmQgbWVzc2FnZSBmaW5pc2gnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNweUV2ZW50VHlwZShzZXJ2aWNlS2V5OiBzdHJpbmcpIHtcbiAgaWYgKCFzZXJ2aWNlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHNlcnZpY2VLZXknKTtcbiAgfVxuXG4gIHJldHVybiBzZXJ2aWNlS2V5LnN1YnN0cmluZygwLCBzZXJ2aWNlS2V5LmluZGV4T2YoJyMnKSk7XG59XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaFNweUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL3B1Ymxpc2hTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0RkFHaUQ7QUFDakQsOERBS2tDO0FBRWxDLDBEQUFvRDtBQVFwRCxxRUFBa0U7QUFVbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQ0FBYyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVU7Q0FDL0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHdEQUF1QixDQUFDO0lBQ3JELFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFnQixDQUFDLGdCQUFnQixDQUFFO0NBQzFELENBQUMsQ0FBQztBQUVILElBQUksV0FBeUQsQ0FBQztBQUV2RCxLQUFLLFVBQVUsZUFBZSxDQUFDLEtBQVU7SUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBZ0IsQ0FBQyxrQkFBa0IsQ0FBRSxDQUFDLENBQUM7SUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRWhELElBQUksY0FBYyxDQUFDO0lBRW5CLE1BQU0sVUFBVSxHQUFHLElBQUksNkJBQVcsQ0FBQztRQUNqQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBZ0IsQ0FBQyxrQkFBa0IsQ0FBVztRQUNyRSxvQkFBb0IsRUFBRSxjQUFjO0tBQ3JDLENBQUMsQ0FBQztJQUVILGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJ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T0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUExQ0QsNEJBMENDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLFVBQWtCO0lBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7S0FDdkM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBTkQsMENBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcGlHYXRld2F5TWFuYWdlbWVudEFwaSxcbiAgUG9zdFRvQ29ubmVjdGlvbkNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hcGlnYXRld2F5bWFuYWdlbWVudGFwaSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGVWYWx1ZSxcbiAgRGVsZXRlSXRlbUNvbW1hbmQsXG4gIER5bmFtb0RCQ2xpZW50LFxuICBTY2FuQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuaW1wb3J0IHsgdW5tYXJzaGFsbCB9IGZyb20gJ0Bhd3Mtc2RrL3V0aWwtZHluYW1vZGInO1xuaW1wb3J0IHtcbiAgRHluYW1vREJTdHJlYW1FdmVudCxcbiAgUzNFdmVudCxcbiAgU05TRXZlbnQsXG4gIEV2ZW50QnJpZGdlRXZlbnQsXG4gIFNRU0V2ZW50LFxufSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGVudlZhcmlhYmxlTmFtZXMgfSBmcm9tICcuLi9zcmMvY29tbW9uL2VudlZhcmlhYmxlTmFtZXMnO1xuaW1wb3J0IHsgRHluYW1vREJTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL0R5bmFtb0RCU3B5RXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9FdmVudEJyaWRnZVJ1bGVTcHlFdmVudCc7XG5pbXBvcnQgeyBFdmVudEJyaWRnZVNweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudCc7XG5pbXBvcnQgeyBTM1NweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvUzNTcHlFdmVudCc7XG5pbXBvcnQgeyBTbnNTdWJzY3JpcHRpb25TcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL1Nuc1N1YnNjcmlwdGlvblNweUV2ZW50JztcbmltcG9ydCB7IFNuc1RvcGljU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9TbnNUb3BpY1NweUV2ZW50JztcbmltcG9ydCB7IFNweU1lc3NhZ2UgfSBmcm9tICcuL3NweUV2ZW50cy9TcHlNZXNzYWdlJztcbmltcG9ydCB7IFNxc1NweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvU3FzU3B5RXZlbnQnO1xuXG5jb25zdCBkZGIgPSBuZXcgRHluYW1vREJDbGllbnQoe1xuICByZWdpb246IHByb2Nlc3MuZW52LkFXU19SRUdJT04sXG59KTtcblxuY29uc3QgYXBpZ3dNYW5hZ2VtZW50QXBpID0gbmV3IEFwaUdhdGV3YXlNYW5hZ2VtZW50QXBpKHtcbiAgYXBpVmVyc2lvbjogJzIwMTgtMTEtMjknLFxuICBlbmRwb2ludDogcHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5TU1BZX1dTX0VORFBPSU5UXSEsXG59KTtcblxubGV0IGNvbm5lY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBBdHRyaWJ1dGVWYWx1ZT5bXSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2hTcHlFdmVudChldmVudDogYW55KSB7XG4gIGNvbnNvbGUubG9nKCdFVkVOVCcsIEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG5cbiAgY29uc3QgbWFwcGluZyA9IEpTT04ucGFyc2UocHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5TU1BZX0lORlJBX01BUFBJTkddISk7XG4gIGNvbnNvbGUubG9nKCdtYXBwaW5nJywgSlNPTi5zdHJpbmdpZnkobWFwcGluZykpO1xuXG4gIGxldCBjb25uZWN0aW9uRGF0YTtcblxuICBjb25zdCBzY2FuUGFyYW1zID0gbmV3IFNjYW5Db21tYW5kKHtcbiAgICBUYWJsZU5hbWU6IHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZXMuU1NQWV9XU19UQUJMRV9OQU1FXSBhcyBzdHJpbmcsXG4gICAgUHJvamVjdGlvbkV4cHJlc3Npb246ICdjb25uZWN0aW9uSWQnLFxuICB9KTtcblxuICBjb25uZWN0aW9uRGF0YSA9IGF3YWl0IGRkYi5zZW5kKHNjYW5QYXJhbXMpO1xuXG4gIGNvbm5lY3Rpb25zID0gY29ubmVjdGlvbkRhdGEuSXRlbXM7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYGNvbm5lY3Rpb25zIGF0ICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWAsXG4gICAgSlNPTi5zdHJpbmdpZnkoY29ubmVjdGlvbnMpXG4gICk7XG5cbiAgY29uc3QgcG9zdERhdGFQcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblxuICBpZiAoZXZlbnQ/LlJlY29yZHMgJiYgZXZlbnQuUmVjb3Jkc1swXT8uU25zKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBTTlMgKioqJyk7XG4gICAgY29uc3QgZXZlbnRTbnMgPSBldmVudCBhcyBTTlNFdmVudDtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudFNucy5SZWNvcmRzKSB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25Bcm4gPSByZWNvcmQuRXZlbnRTdWJzY3JpcHRpb25Bcm47XG5cbiAgICAgIGxldCBzZXJ2aWNlS2V5OiBzdHJpbmc7XG4gICAgICBpZiAobWFwcGluZ1tzdWJzY3JpcHRpb25Bcm5dKSB7XG4gICAgICAgIC8vIHN1YnNjcmlwdGlvbiBldmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gZmlsdGVyIGJhc2VkIG9uIGV4aXN0aW5nIHN1YnNjcmlwdGlvblxuICAgICAgICBzZXJ2aWNlS2V5ID0gbWFwcGluZ1tzdWJzY3JpcHRpb25Bcm5dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2F0Y2ggYWxsIHN1YnNjcmlwdGlvblxuICAgICAgICBjb25zdCB0b3BpY0FybiA9IHJlY29yZC5TbnMuVG9waWNBcm47XG4gICAgICAgIHNlcnZpY2VLZXkgPSBtYXBwaW5nW3RvcGljQXJuXTtcbiAgICAgIH1cblxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UocmVjb3JkLlNucy5NZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXNzYWdlID0gcmVjb3JkLlNucy5NZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzcHlFdmVudFR5cGUgPSBnZXRTcHlFdmVudFR5cGUoc2VydmljZUtleSkgYXNcbiAgICAgICAgfCAnRnVuY3Rpb25TbnNUb3BpYydcbiAgICAgICAgfCAnRnVuY3Rpb25TbnNTdWJzY3JpcHRpb24nO1xuXG4gICAgICBjb25zdCBkYXRhOiBTbnNUb3BpY1NweUV2ZW50IHwgU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQgPSB7XG4gICAgICAgIHNweUV2ZW50VHlwZSxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgc3ViamVjdDogcmVjb3JkLlNucy5TdWJqZWN0LFxuICAgICAgICB0aW1lc3RhbXA6IHJlY29yZC5TbnMuVGltZXN0YW1wLFxuICAgICAgICB0b3BpY0FybjogcmVjb3JkLlNucy5Ub3BpY0FybixcbiAgICAgICAgbWVzc2FnZUlkOiByZWNvcmQuU25zLk1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZUF0dHJpYnV0ZXM6IHJlY29yZC5TbnMuTWVzc2FnZUF0dHJpYnV0ZXMsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXksXG4gICAgICB9O1xuICAgICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV2ZW50Py5SZWNvcmRzICYmIGV2ZW50LlJlY29yZHNbMF0/LmV2ZW50U291cmNlID09PSAnYXdzOnNxcycpIHtcbiAgICBjb25zb2xlLmxvZygnKioqIFNRUyAqKionKTtcbiAgICBjb25zdCBldmVudFNxcyA9IGV2ZW50IGFzIFNRU0V2ZW50O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50U3FzLlJlY29yZHMpIHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkFybiA9IHJlY29yZC5ldmVudFNvdXJjZUFSTjtcblxuICAgICAgY29uc3Qgc2VydmljZUtleSA9IG1hcHBpbmdbc3Vic2NyaXB0aW9uQXJuXTtcbiAgICAgIGxldCBib2R5OiBzdHJpbmc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKHJlY29yZC5ib2R5KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBib2R5ID0gcmVjb3JkLmJvZHk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGE6IFNxc1NweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGU6ICdTcXMnLFxuICAgICAgICBib2R5LFxuICAgICAgICBtZXNzYWdlQXR0cmlidXRlczogcmVjb3JkLm1lc3NhZ2VBdHRyaWJ1dGVzLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzZXJ2aWNlS2V5LFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudD8uUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5zMykge1xuICAgIGNvbnNvbGUubG9nKCcqKiogUzMgKioqJyk7XG4gICAgY29uc3QgZXZlbnRTMyA9IGV2ZW50IGFzIFMzRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnRTMy5SZWNvcmRzKSB7XG4gICAgICBjb25zdCBidWNrZXRBcm4gPSByZWNvcmQuczMuYnVja2V0LmFybjtcblxuICAgICAgY29uc3QgZGF0YTogUzNTcHlFdmVudCA9IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlOiAnUzMnLFxuICAgICAgICBldmVudE5hbWU6IHJlY29yZC5ldmVudE5hbWUsXG4gICAgICAgIGV2ZW50VGltZTogcmVjb3JkLmV2ZW50VGltZSxcbiAgICAgICAgYnVja2V0OiByZWNvcmQuczMuYnVja2V0Lm5hbWUsXG4gICAgICAgIGtleTogcmVjb3JkLnMzLm9iamVjdC5rZXksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXk6IG1hcHBpbmdbYnVja2V0QXJuXSxcbiAgICAgIH07XG4gICAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXZlbnQuUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5keW5hbW9kYikge1xuICAgIGNvbnNvbGUubG9nKCcqKiogRFlOQU1PREIgKioqJyk7XG4gICAgY29uc3QgZXZlbnREeW5hbW9EQiA9IGV2ZW50IGFzIER5bmFtb0RCU3RyZWFtRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnREeW5hbW9EQi5SZWNvcmRzKSB7XG4gICAgICBsZXQgYXJuID0gcmVjb3JkLmV2ZW50U291cmNlQVJOITtcbiAgICAgIGFybiA9IGFybi5zdWJzdHJpbmcoMCwgYXJuLmluZGV4T2YoJy9zdHJlYW0vJykpO1xuXG4gICAgICBjb25zdCBkYXRhOiBEeW5hbW9EQlNweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGU6ICdEeW5hbW9EQicsXG4gICAgICAgIGV2ZW50TmFtZTogcmVjb3JkLmV2ZW50TmFtZSxcbiAgICAgICAgbmV3SW1hZ2U6IHVubWFyc2hhbGwocmVjb3JkLmR5bmFtb2RiPy5OZXdJbWFnZSBhcyBhbnkpLFxuICAgICAgICBrZXlzOiB1bm1hcnNoYWxsKHJlY29yZC5keW5hbW9kYj8uS2V5cyBhcyBhbnkpLFxuICAgICAgICBvbGRJbWFnZTogcmVjb3JkLmR5bmFtb2RiPy5PbGRJbWFnZVxuICAgICAgICAgID8gdW5tYXJzaGFsbChyZWNvcmQuZHluYW1vZGI/Lk9sZEltYWdlIGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc2VydmljZUtleTogbWFwcGluZ1thcm5dLFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChcbiAgICBldmVudC5kZXRhaWwgJiZcbiAgICBldmVudFsnZGV0YWlsLXR5cGUnXSAmJlxuICAgIGV2ZW50LnZlcnNpb24gJiZcbiAgICBldmVudC5zb3VyY2VcbiAgKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBFdmVudEJyaWRnZSAqKionKTtcbiAgICBjb25zdCBldmVudEViID0gZXZlbnQgYXMgRXZlbnRCcmlkZ2VFdmVudDxhbnksIGFueT47XG5cbiAgICBjb25zdCBzZXJ2aWNlS2V5ID0gbWFwcGluZy5ldmVudEJyaWRnZTsgLy8gdGhlIGlzIG5ldyBsYW1iZGEgZm9yIGVhY2ggc3Vic2NyaXB0aW9uXG5cbiAgICBjb25zdCBzcHlFdmVudFR5cGUgPSBnZXRTcHlFdmVudFR5cGUoc2VydmljZUtleSkgYXNcbiAgICAgIHwgJ0V2ZW50QnJpZGdlJ1xuICAgICAgfCAnRXZlbnRCcmlkZ2VSdWxlJztcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBldmVudEViLmRldGFpbDtcblxuICAgIGNvbnN0IGRhdGE6IEV2ZW50QnJpZGdlU3B5RXZlbnQgfCBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudCA9IHtcbiAgICAgIHNweUV2ZW50VHlwZSxcbiAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgIGRldGFpbFR5cGU6IGV2ZW50RWJbJ2RldGFpbC10eXBlJ10sXG4gICAgICBzb3VyY2U6IGV2ZW50RWIuc291cmNlLFxuICAgICAgdGltZTogZXZlbnRFYi50aW1lLFxuICAgICAgYWNjb3VudDogZXZlbnRFYi5hY2NvdW50LFxuICAgIH07XG5cbiAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICBkYXRhLFxuICAgICAgc2VydmljZUtleSxcbiAgICB9O1xuICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCcqKiogT1RIRVIgKioqJyk7XG4gICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0gZXZlbnQ7XG4gICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3N0RGF0YVByb21pc2VzKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHNweU1lc3NhZ2U6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+KSB7XG4gIC8vIGNvbnN0IHBvc3REYXRhID0gSlNPTi5wYXJzZShldmVudC5ib2R5ISkuZGF0YTtcbiAgY29uc29sZS5sb2coJ3Bvc3REYXRhJywgSlNPTi5zdHJpbmdpZnkoc3B5TWVzc2FnZSkpO1xuXG4gIGlmICghY29ubmVjdGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwb3N0Q2FsbHMgPSBjb25uZWN0aW9ucy5tYXAoYXN5bmMgKHsgY29ubmVjdGlvbklkIH0pID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2VuZGluZyBtZXNzYWdlIHRvOiAke2Nvbm5lY3Rpb25JZC5TfWApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kID0gbmV3IFBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kKHtcbiAgICAgICAgQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uSWQuUyxcbiAgICAgICAgRGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHNlcnZpY2VLZXk6IHNweU1lc3NhZ2Uuc2VydmljZUtleSxcbiAgICAgICAgICBkYXRhOiBzcHlNZXNzYWdlLmRhdGEsXG4gICAgICAgIH0pIGFzIGFueSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBhcGlnd01hbmFnZW1lbnRBcGkuc2VuZChwb3N0VG9Db25uZWN0aW9uQ29tbWFuZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbHMgc2VuZGluZyBtZXNzYWdlIHRvOiAke2Nvbm5lY3Rpb25JZC5TfWAsIGUpO1xuICAgICAgY29uc29sZS5lcnJvcihgU3RhdHVzIGNvZGU6ICR7KGUgYXMgYW55KS5zdGF0dXNDb2RlfWApO1xuICAgICAgaWYgKChlIGFzIGFueSkuJG1ldGFkYXRhLmh0dHBTdGF0dXNDb2RlID09PSA0MTApIHtcbiAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHN0YWxlIGNvbm5lY3Rpb24sIGRlbGV0aW5nICR7Y29ubmVjdGlvbklkfWApO1xuXG4gICAgICAgIGNvbnN0IGRlbGV0ZVBhcmFtcyA9IG5ldyBEZWxldGVJdGVtQ29tbWFuZCh7XG4gICAgICAgICAgVGFibGVOYW1lOiBwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVzLlNTUFlfV1NfVEFCTEVfTkFNRV0sXG4gICAgICAgICAgS2V5OiB7IGNvbm5lY3Rpb25JZCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBkZGIuc2VuZChkZWxldGVQYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHBvc3RDYWxscyk7XG4gIGNvbnNvbGUubG9nKCdTZW5kIG1lc3NhZ2UgZmluaXNoJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcHlFdmVudFR5cGUoc2VydmljZUtleTogc3RyaW5nKSB7XG4gIGlmICghc2VydmljZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBzZXJ2aWNlS2V5Jyk7XG4gIH1cblxuICByZXR1cm4gc2VydmljZUtleS5zdWJzdHJpbmcoMCwgc2VydmljZUtleS5pbmRleE9mKCcjJykpO1xufVxuIl19
|
|
@@ -7,16 +7,16 @@ const ddb = new DynamoDBClient({
|
|
|
7
7
|
});
|
|
8
8
|
const apigwManagementApi = new ApiGatewayManagementApi({
|
|
9
9
|
apiVersion: '2018-11-29',
|
|
10
|
-
endpoint: process.env[envVariableNames.
|
|
10
|
+
endpoint: process.env[envVariableNames.SSPY_WS_ENDPOINT],
|
|
11
11
|
});
|
|
12
12
|
let connections;
|
|
13
13
|
export async function publishSpyEvent(event) {
|
|
14
14
|
console.log('EVENT', JSON.stringify(event));
|
|
15
|
-
const mapping = JSON.parse(process.env[envVariableNames.
|
|
15
|
+
const mapping = JSON.parse(process.env[envVariableNames.SSPY_INFRA_MAPPING]);
|
|
16
16
|
console.log('mapping', JSON.stringify(mapping));
|
|
17
17
|
let connectionData;
|
|
18
18
|
const scanParams = new ScanCommand({
|
|
19
|
-
TableName: process.env[envVariableNames.
|
|
19
|
+
TableName: process.env[envVariableNames.SSPY_WS_TABLE_NAME],
|
|
20
20
|
ProjectionExpression: 'connectionId',
|
|
21
21
|
});
|
|
22
22
|
connectionData = await ddb.send(scanParams);
|
|
@@ -183,7 +183,7 @@ export async function postData(spyMessage) {
|
|
|
183
183
|
if (e.$metadata.httpStatusCode === 410) {
|
|
184
184
|
console.log(`Found stale connection, deleting ${connectionId}`);
|
|
185
185
|
const deleteParams = new DeleteItemCommand({
|
|
186
|
-
TableName: process.env[envVariableNames.
|
|
186
|
+
TableName: process.env[envVariableNames.SSPY_WS_TABLE_NAME],
|
|
187
187
|
Key: { connectionId },
|
|
188
188
|
});
|
|
189
189
|
await ddb.send(deleteParams);
|
|
@@ -202,4 +202,4 @@ export function getSpyEventType(serviceKey) {
|
|
|
202
202
|
}
|
|
203
203
|
return serviceKey.substring(0, serviceKey.indexOf('#'));
|
|
204
204
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaFNweUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL3B1Ymxpc2hTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHVCQUF1QixHQUN4QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFdBQVcsR0FDWixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVFwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVVsRSxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQztJQUM3QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQztJQUNyRCxVQUFVLEVBQUUsWUFBWTtJQUN4QixRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUU7Q0FDckQsQ0FBQyxDQUFDO0FBRUgsSUFBSSxXQUF5RCxDQUFDO0FBRTlELE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUFDLEtBQVU7SUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUUsQ0FBQyxDQUFDO0lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVoRCxJQUFJLGNBQWMsQ0FBQztJQUVuQixN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QUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM5QjtpQkFBTTtnQkFDTCxNQUFNLENBQUMsQ0FBQzthQUNUO1NBQ0Y7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsVUFBa0I7SUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQUN2QztJQUVELE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcGlHYXRld2F5TWFuYWdlbWVudEFwaSxcbiAgUG9zdFRvQ29ubmVjdGlvbkNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hcGlnYXRld2F5bWFuYWdlbWVudGFwaSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGVWYWx1ZSxcbiAgRGVsZXRlSXRlbUNvbW1hbmQsXG4gIER5bmFtb0RCQ2xpZW50LFxuICBTY2FuQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuaW1wb3J0IHsgdW5tYXJzaGFsbCB9IGZyb20gJ0Bhd3Mtc2RrL3V0aWwtZHluYW1vZGInO1xuaW1wb3J0IHtcbiAgRHluYW1vREJTdHJlYW1FdmVudCxcbiAgUzNFdmVudCxcbiAgU05TRXZlbnQsXG4gIEV2ZW50QnJpZGdlRXZlbnQsXG4gIFNRU0V2ZW50LFxufSBmcm9tICdhd3MtbGFtYmRhJztcbmltcG9ydCB7IGVudlZhcmlhYmxlTmFtZXMgfSBmcm9tICcuLi9zcmMvY29tbW9uL2VudlZhcmlhYmxlTmFtZXMnO1xuaW1wb3J0IHsgRHluYW1vREJTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL0R5bmFtb0RCU3B5RXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9FdmVudEJyaWRnZVJ1bGVTcHlFdmVudCc7XG5pbXBvcnQgeyBFdmVudEJyaWRnZVNweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudCc7XG5pbXBvcnQgeyBTM1NweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvUzNTcHlFdmVudCc7XG5pbXBvcnQgeyBTbnNTdWJzY3JpcHRpb25TcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL1Nuc1N1YnNjcmlwdGlvblNweUV2ZW50JztcbmltcG9ydCB7IFNuc1RvcGljU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9TbnNUb3BpY1NweUV2ZW50JztcbmltcG9ydCB7IFNweU1lc3NhZ2UgfSBmcm9tICcuL3NweUV2ZW50cy9TcHlNZXNzYWdlJztcbmltcG9ydCB7IFNxc1NweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvU3FzU3B5RXZlbnQnO1xuXG5jb25zdCBkZGIgPSBuZXcgRHluYW1vREJDbGllbnQoe1xuICByZWdpb246IHByb2Nlc3MuZW52LkFXU19SRUdJT04sXG59KTtcblxuY29uc3QgYXBpZ3dNYW5hZ2VtZW50QXBpID0gbmV3IEFwaUdhdGV3YXlNYW5hZ2VtZW50QXBpKHtcbiAgYXBpVmVyc2lvbjogJzIwMTgtMTEtMjknLFxuICBlbmRwb2ludDogcHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5XU19FTkRQT0lOVF0hLFxufSk7XG5cbmxldCBjb25uZWN0aW9uczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlVmFsdWU+W10gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdWJsaXNoU3B5RXZlbnQoZXZlbnQ6IGFueSkge1xuICBjb25zb2xlLmxvZygnRVZFTlQnLCBKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIGNvbnN0IG1hcHBpbmcgPSBKU09OLnBhcnNlKHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZXMuSU5GUkFfTUFQUElOR10hKTtcbiAgY29uc29sZS5sb2coJ21hcHBpbmcnLCBKU09OLnN0cmluZ2lmeShtYXBwaW5nKSk7XG5cbiAgbGV0IGNvbm5lY3Rpb25EYXRhO1xuXG4gIGNvbnN0IHNjYW5QYXJhbXMgPSBuZXcgU2NhbkNvbW1hbmQoe1xuICAgIFRhYmxlTmFtZTogcHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5UQUJMRV9OQU1FXSBhcyBzdHJpbmcsXG4gICAgUHJvamVjdGlvbkV4cHJlc3Npb246ICdjb25uZWN0aW9uSWQnLFxuICB9KTtcblxuICBjb25uZWN0aW9uRGF0YSA9IGF3YWl0IGRkYi5zZW5kKHNjYW5QYXJhbXMpO1xuXG4gIGNvbm5lY3Rpb25zID0gY29ubmVjdGlvbkRhdGEuSXRlbXM7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYGNvbm5lY3Rpb25zIGF0ICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWAsXG4gICAgSlNPTi5zdHJpbmdpZnkoY29ubmVjdGlvbnMpXG4gICk7XG5cbiAgY29uc3QgcG9zdERhdGFQcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblxuICBpZiAoZXZlbnQ/LlJlY29yZHMgJiYgZXZlbnQuUmVjb3Jkc1swXT8uU25zKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBTTlMgKioqJyk7XG4gICAgY29uc3QgZXZlbnRTbnMgPSBldmVudCBhcyBTTlNFdmVudDtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudFNucy5SZWNvcmRzKSB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25Bcm4gPSByZWNvcmQuRXZlbnRTdWJzY3JpcHRpb25Bcm47XG5cbiAgICAgIGxldCBzZXJ2aWNlS2V5OiBzdHJpbmc7XG4gICAgICBpZiAobWFwcGluZ1tzdWJzY3JpcHRpb25Bcm5dKSB7XG4gICAgICAgIC8vIHN1YnNjcmlwdGlvbiBldmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gZmlsdGVyIGJhc2VkIG9uIGV4aXN0aW5nIHN1YnNjcmlwdGlvblxuICAgICAgICBzZXJ2aWNlS2V5ID0gbWFwcGluZ1tzdWJzY3JpcHRpb25Bcm5dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2F0Y2ggYWxsIHN1YnNjcmlwdGlvblxuICAgICAgICBjb25zdCB0b3BpY0FybiA9IHJlY29yZC5TbnMuVG9waWNBcm47XG4gICAgICAgIHNlcnZpY2VLZXkgPSBtYXBwaW5nW3RvcGljQXJuXTtcbiAgICAgIH1cblxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UocmVjb3JkLlNucy5NZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtZXNzYWdlID0gcmVjb3JkLlNucy5NZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzcHlFdmVudFR5cGUgPSBnZXRTcHlFdmVudFR5cGUoc2VydmljZUtleSkgYXNcbiAgICAgICAgfCAnRnVuY3Rpb25TbnNUb3BpYydcbiAgICAgICAgfCAnRnVuY3Rpb25TbnNTdWJzY3JpcHRpb24nO1xuXG4gICAgICBjb25zdCBkYXRhOiBTbnNUb3BpY1NweUV2ZW50IHwgU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQgPSB7XG4gICAgICAgIHNweUV2ZW50VHlwZSxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgc3ViamVjdDogcmVjb3JkLlNucy5TdWJqZWN0LFxuICAgICAgICB0aW1lc3RhbXA6IHJlY29yZC5TbnMuVGltZXN0YW1wLFxuICAgICAgICB0b3BpY0FybjogcmVjb3JkLlNucy5Ub3BpY0FybixcbiAgICAgICAgbWVzc2FnZUlkOiByZWNvcmQuU25zLk1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZUF0dHJpYnV0ZXM6IHJlY29yZC5TbnMuTWVzc2FnZUF0dHJpYnV0ZXMsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXksXG4gICAgICB9O1xuICAgICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV2ZW50Py5SZWNvcmRzICYmIGV2ZW50LlJlY29yZHNbMF0/LmV2ZW50U291cmNlID09PSAnYXdzOnNxcycpIHtcbiAgICBjb25zb2xlLmxvZygnKioqIFNRUyAqKionKTtcbiAgICBjb25zdCBldmVudFNxcyA9IGV2ZW50IGFzIFNRU0V2ZW50O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50U3FzLlJlY29yZHMpIHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkFybiA9IHJlY29yZC5ldmVudFNvdXJjZUFSTjtcblxuICAgICAgY29uc3Qgc2VydmljZUtleSA9IG1hcHBpbmdbc3Vic2NyaXB0aW9uQXJuXTtcbiAgICAgIGxldCBib2R5OiBzdHJpbmc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKHJlY29yZC5ib2R5KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBib2R5ID0gcmVjb3JkLmJvZHk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGE6IFNxc1NweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGU6ICdTcXMnLFxuICAgICAgICBib2R5LFxuICAgICAgICBtZXNzYWdlQXR0cmlidXRlczogcmVjb3JkLm1lc3NhZ2VBdHRyaWJ1dGVzLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzZXJ2aWNlS2V5LFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudD8uUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5zMykge1xuICAgIGNvbnNvbGUubG9nKCcqKiogUzMgKioqJyk7XG4gICAgY29uc3QgZXZlbnRTMyA9IGV2ZW50IGFzIFMzRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnRTMy5SZWNvcmRzKSB7XG4gICAgICBjb25zdCBidWNrZXRBcm4gPSByZWNvcmQuczMuYnVja2V0LmFybjtcblxuICAgICAgY29uc3QgZGF0YTogUzNTcHlFdmVudCA9IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlOiAnUzMnLFxuICAgICAgICBldmVudE5hbWU6IHJlY29yZC5ldmVudE5hbWUsXG4gICAgICAgIGV2ZW50VGltZTogcmVjb3JkLmV2ZW50VGltZSxcbiAgICAgICAgYnVja2V0OiByZWNvcmQuczMuYnVja2V0Lm5hbWUsXG4gICAgICAgIGtleTogcmVjb3JkLnMzLm9iamVjdC5rZXksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXk6IG1hcHBpbmdbYnVja2V0QXJuXSxcbiAgICAgIH07XG4gICAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXZlbnQuUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5keW5hbW9kYikge1xuICAgIGNvbnNvbGUubG9nKCcqKiogRFlOQU1PREIgKioqJyk7XG4gICAgY29uc3QgZXZlbnREeW5hbW9EQiA9IGV2ZW50IGFzIER5bmFtb0RCU3RyZWFtRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnREeW5hbW9EQi5SZWNvcmRzKSB7XG4gICAgICBsZXQgYXJuID0gcmVjb3JkLmV2ZW50U291cmNlQVJOITtcbiAgICAgIGFybiA9IGFybi5zdWJzdHJpbmcoMCwgYXJuLmluZGV4T2YoJy9zdHJlYW0vJykpO1xuXG4gICAgICBjb25zdCBkYXRhOiBEeW5hbW9EQlNweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGU6ICdEeW5hbW9EQicsXG4gICAgICAgIGV2ZW50TmFtZTogcmVjb3JkLmV2ZW50TmFtZSxcbiAgICAgICAgbmV3SW1hZ2U6IHVubWFyc2hhbGwocmVjb3JkLmR5bmFtb2RiPy5OZXdJbWFnZSBhcyBhbnkpLFxuICAgICAgICBrZXlzOiB1bm1hcnNoYWxsKHJlY29yZC5keW5hbW9kYj8uS2V5cyBhcyBhbnkpLFxuICAgICAgICBvbGRJbWFnZTogcmVjb3JkLmR5bmFtb2RiPy5PbGRJbWFnZVxuICAgICAgICAgID8gdW5tYXJzaGFsbChyZWNvcmQuZHluYW1vZGI/Lk9sZEltYWdlIGFzIGFueSlcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc2VydmljZUtleTogbWFwcGluZ1thcm5dLFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChcbiAgICBldmVudC5kZXRhaWwgJiZcbiAgICBldmVudFsnZGV0YWlsLXR5cGUnXSAmJlxuICAgIGV2ZW50LnZlcnNpb24gJiZcbiAgICBldmVudC5zb3VyY2VcbiAgKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBFdmVudEJyaWRnZSAqKionKTtcbiAgICBjb25zdCBldmVudEViID0gZXZlbnQgYXMgRXZlbnRCcmlkZ2VFdmVudDxhbnksIGFueT47XG5cbiAgICBjb25zdCBzZXJ2aWNlS2V5ID0gbWFwcGluZy5ldmVudEJyaWRnZTsgLy8gdGhlIGlzIG5ldyBsYW1iZGEgZm9yIGVhY2ggc3Vic2NyaXB0aW9uXG5cbiAgICBjb25zdCBzcHlFdmVudFR5cGUgPSBnZXRTcHlFdmVudFR5cGUoc2VydmljZUtleSkgYXNcbiAgICAgIHwgJ0V2ZW50QnJpZGdlJ1xuICAgICAgfCAnRXZlbnRCcmlkZ2VSdWxlJztcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBldmVudEViLmRldGFpbDtcblxuICAgIGNvbnN0IGRhdGE6IEV2ZW50QnJpZGdlU3B5RXZlbnQgfCBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudCA9IHtcbiAgICAgIHNweUV2ZW50VHlwZSxcbiAgICAgIGRldGFpbDogbWVzc2FnZSxcbiAgICAgIGRldGFpbFR5cGU6IGV2ZW50RWJbJ2RldGFpbC10eXBlJ10sXG4gICAgICBzb3VyY2U6IGV2ZW50RWIuc291cmNlLFxuICAgICAgdGltZTogZXZlbnRFYi50aW1lLFxuICAgICAgYWNjb3VudDogZXZlbnRFYi5hY2NvdW50LFxuICAgIH07XG5cbiAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICBkYXRhLFxuICAgICAgc2VydmljZUtleSxcbiAgICB9O1xuICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCcqKiogT1RIRVIgKioqJyk7XG4gICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0gZXZlbnQ7XG4gICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3N0RGF0YVByb21pc2VzKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHNweU1lc3NhZ2U6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+KSB7XG4gIC8vIGNvbnN0IHBvc3REYXRhID0gSlNPTi5wYXJzZShldmVudC5ib2R5ISkuZGF0YTtcbiAgY29uc29sZS5sb2coJ3Bvc3REYXRhJywgSlNPTi5zdHJpbmdpZnkoc3B5TWVzc2FnZSkpO1xuXG4gIGlmICghY29ubmVjdGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwb3N0Q2FsbHMgPSBjb25uZWN0aW9ucy5tYXAoYXN5bmMgKHsgY29ubmVjdGlvbklkIH0pID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2VuZGluZyBtZXNzYWdlIHRvOiAke2Nvbm5lY3Rpb25JZC5TfWApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kID0gbmV3IFBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kKHtcbiAgICAgICAgQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uSWQuUyxcbiAgICAgICAgRGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIHNlcnZpY2VLZXk6IHNweU1lc3NhZ2Uuc2VydmljZUtleSxcbiAgICAgICAgICBkYXRhOiBzcHlNZXNzYWdlLmRhdGEsXG4gICAgICAgIH0pIGFzIGFueSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBhcGlnd01hbmFnZW1lbnRBcGkuc2VuZChwb3N0VG9Db25uZWN0aW9uQ29tbWFuZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgRmFpbHMgc2VuZGluZyBtZXNzYWdlIHRvOiAke2Nvbm5lY3Rpb25JZC5TfWAsIGUpO1xuICAgICAgY29uc29sZS5lcnJvcihgU3RhdHVzIGNvZGU6ICR7KGUgYXMgYW55KS5zdGF0dXNDb2RlfWApO1xuICAgICAgaWYgKChlIGFzIGFueSkuJG1ldGFkYXRhLmh0dHBTdGF0dXNDb2RlID09PSA0MTApIHtcbiAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHN0YWxlIGNvbm5lY3Rpb24sIGRlbGV0aW5nICR7Y29ubmVjdGlvbklkfWApO1xuXG4gICAgICAgIGNvbnN0IGRlbGV0ZVBhcmFtcyA9IG5ldyBEZWxldGVJdGVtQ29tbWFuZCh7XG4gICAgICAgICAgVGFibGVOYW1lOiBwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVzLlRBQkxFX05BTUVdLFxuICAgICAgICAgIEtleTogeyBjb25uZWN0aW9uSWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXdhaXQgZGRiLnNlbmQoZGVsZXRlUGFyYW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3N0Q2FsbHMpO1xuICBjb25zb2xlLmxvZygnU2VuZCBtZXNzYWdlIGZpbmlzaCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3B5RXZlbnRUeXBlKHNlcnZpY2VLZXk6IHN0cmluZykge1xuICBpZiAoIXNlcnZpY2VLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgc2VydmljZUtleScpO1xuICB9XG5cbiAgcmV0dXJuIHNlcnZpY2VLZXkuc3Vic3RyaW5nKDAsIHNlcnZpY2VLZXkuaW5kZXhPZignIycpKTtcbn1cbiJdfQ==
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaFNweUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL3B1Ymxpc2hTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHVCQUF1QixHQUN4QixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFdBQVcsR0FDWixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVFwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVVsRSxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQztJQUM3QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQztJQUNyRCxVQUFVLEVBQUUsWUFBWTtJQUN4QixRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBRTtDQUMxRCxDQUFDLENBQUM7QUFFSCxJQUFJLFdBQXlELENBQUM7QUFFOUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsS0FBVTtJQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFFLENBQUMsQ0FBQztJQUM5RSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFaEQsSUFBSSxjQUFjLENBQUM7SUFF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LENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxDQUFDO2FBQ1Q7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUFrQjtJQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3ZDO0lBRUQsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwaUdhdGV3YXlNYW5hZ2VtZW50QXBpLFxuICBQb3N0VG9Db25uZWN0aW9uQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWFwaWdhdGV3YXltYW5hZ2VtZW50YXBpJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZVZhbHVlLFxuICBEZWxldGVJdGVtQ29tbWFuZCxcbiAgRHluYW1vREJDbGllbnQsXG4gIFNjYW5Db21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuXG5pbXBvcnQgeyB1bm1hcnNoYWxsIH0gZnJvbSAnQGF3cy1zZGsvdXRpbC1keW5hbW9kYic7XG5pbXBvcnQge1xuICBEeW5hbW9EQlN0cmVhbUV2ZW50LFxuICBTM0V2ZW50LFxuICBTTlNFdmVudCxcbiAgRXZlbnRCcmlkZ2VFdmVudCxcbiAgU1FTRXZlbnQsXG59IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgZW52VmFyaWFibGVOYW1lcyB9IGZyb20gJy4uL3NyYy9jb21tb24vZW52VmFyaWFibGVOYW1lcyc7XG5pbXBvcnQgeyBEeW5hbW9EQlNweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvRHluYW1vREJTcHlFdmVudCc7XG5pbXBvcnQgeyBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL0V2ZW50QnJpZGdlUnVsZVNweUV2ZW50JztcbmltcG9ydCB7IEV2ZW50QnJpZGdlU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9FdmVudEJyaWRnZVNweUV2ZW50JztcbmltcG9ydCB7IFMzU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9TM1NweUV2ZW50JztcbmltcG9ydCB7IFNuc1N1YnNjcmlwdGlvblNweUV2ZW50IH0gZnJvbSAnLi9zcHlFdmVudHMvU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQnO1xuaW1wb3J0IHsgU25zVG9waWNTcHlFdmVudCB9IGZyb20gJy4vc3B5RXZlbnRzL1Nuc1RvcGljU3B5RXZlbnQnO1xuaW1wb3J0IHsgU3B5TWVzc2FnZSB9IGZyb20gJy4vc3B5RXZlbnRzL1NweU1lc3NhZ2UnO1xuaW1wb3J0IHsgU3FzU3B5RXZlbnQgfSBmcm9tICcuL3NweUV2ZW50cy9TcXNTcHlFdmVudCc7XG5cbmNvbnN0IGRkYiA9IG5ldyBEeW5hbW9EQkNsaWVudCh7XG4gIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTixcbn0pO1xuXG5jb25zdCBhcGlnd01hbmFnZW1lbnRBcGkgPSBuZXcgQXBpR2F0ZXdheU1hbmFnZW1lbnRBcGkoe1xuICBhcGlWZXJzaW9uOiAnMjAxOC0xMS0yOScsXG4gIGVuZHBvaW50OiBwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVzLlNTUFlfV1NfRU5EUE9JTlRdISxcbn0pO1xuXG5sZXQgY29ubmVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEF0dHJpYnV0ZVZhbHVlPltdIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaFNweUV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgY29uc29sZS5sb2coJ0VWRU5UJywgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcblxuICBjb25zdCBtYXBwaW5nID0gSlNPTi5wYXJzZShwcm9jZXNzLmVudltlbnZWYXJpYWJsZU5hbWVzLlNTUFlfSU5GUkFfTUFQUElOR10hKTtcbiAgY29uc29sZS5sb2coJ21hcHBpbmcnLCBKU09OLnN0cmluZ2lmeShtYXBwaW5nKSk7XG5cbiAgbGV0IGNvbm5lY3Rpb25EYXRhO1xuXG4gIGNvbnN0IHNjYW5QYXJhbXMgPSBuZXcgU2NhbkNvbW1hbmQoe1xuICAgIFRhYmxlTmFtZTogcHJvY2Vzcy5lbnZbZW52VmFyaWFibGVOYW1lcy5TU1BZX1dTX1RBQkxFX05BTUVdIGFzIHN0cmluZyxcbiAgICBQcm9qZWN0aW9uRXhwcmVzc2lvbjogJ2Nvbm5lY3Rpb25JZCcsXG4gIH0pO1xuXG4gIGNvbm5lY3Rpb25EYXRhID0gYXdhaXQgZGRiLnNlbmQoc2NhblBhcmFtcyk7XG5cbiAgY29ubmVjdGlvbnMgPSBjb25uZWN0aW9uRGF0YS5JdGVtcztcblxuICBjb25zb2xlLmxvZyhcbiAgICBgY29ubmVjdGlvbnMgYXQgJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCxcbiAgICBKU09OLnN0cmluZ2lmeShjb25uZWN0aW9ucylcbiAgKTtcblxuICBjb25zdCBwb3N0RGF0YVByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuXG4gIGlmIChldmVudD8uUmVjb3JkcyAmJiBldmVudC5SZWNvcmRzWzBdPy5TbnMpIHtcbiAgICBjb25zb2xlLmxvZygnKioqIFNOUyAqKionKTtcbiAgICBjb25zdCBldmVudFNucyA9IGV2ZW50IGFzIFNOU0V2ZW50O1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIGV2ZW50U25zLlJlY29yZHMpIHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbkFybiA9IHJlY29yZC5FdmVudFN1YnNjcmlwdGlvbkFybjtcblxuICAgICAgbGV0IHNlcnZpY2VLZXk6IHN0cmluZztcbiAgICAgIGlmIChtYXBwaW5nW3N1YnNjcmlwdGlvbkFybl0pIHtcbiAgICAgICAgLy8gc3Vic2NyaXB0aW9uIGV2ZW50IHRoYXQgY291bGQgY29udGFpbiBmaWx0ZXIgYmFzZWQgb24gZXhpc3Rpbmcgc3Vic2NyaXB0aW9uXG4gICAgICAgIHNlcnZpY2VLZXkgPSBtYXBwaW5nW3N1YnNjcmlwdGlvbkFybl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjYXRjaCBhbGwgc3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHRvcGljQXJuID0gcmVjb3JkLlNucy5Ub3BpY0FybjtcbiAgICAgICAgc2VydmljZUtleSA9IG1hcHBpbmdbdG9waWNBcm5dO1xuICAgICAgfVxuXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgICB0cnkge1xuICAgICAgICBtZXNzYWdlID0gSlNPTi5wYXJzZShyZWNvcmQuU25zLk1lc3NhZ2UpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG1lc3NhZ2UgPSByZWNvcmQuU25zLk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNweUV2ZW50VHlwZSA9IGdldFNweUV2ZW50VHlwZShzZXJ2aWNlS2V5KSBhc1xuICAgICAgICB8ICdGdW5jdGlvblNuc1RvcGljJ1xuICAgICAgICB8ICdGdW5jdGlvblNuc1N1YnNjcmlwdGlvbic7XG5cbiAgICAgIGNvbnN0IGRhdGE6IFNuc1RvcGljU3B5RXZlbnQgfCBTbnNTdWJzY3JpcHRpb25TcHlFdmVudCA9IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBzdWJqZWN0OiByZWNvcmQuU25zLlN1YmplY3QsXG4gICAgICAgIHRpbWVzdGFtcDogcmVjb3JkLlNucy5UaW1lc3RhbXAsXG4gICAgICAgIHRvcGljQXJuOiByZWNvcmQuU25zLlRvcGljQXJuLFxuICAgICAgICBtZXNzYWdlSWQ6IHJlY29yZC5TbnMuTWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlQXR0cmlidXRlczogcmVjb3JkLlNucy5NZXNzYWdlQXR0cmlidXRlcyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc2VydmljZUtleSxcbiAgICAgIH07XG4gICAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXZlbnQ/LlJlY29yZHMgJiYgZXZlbnQuUmVjb3Jkc1swXT8uZXZlbnRTb3VyY2UgPT09ICdhd3M6c3FzJykge1xuICAgIGNvbnNvbGUubG9nKCcqKiogU1FTICoqKicpO1xuICAgIGNvbnN0IGV2ZW50U3FzID0gZXZlbnQgYXMgU1FTRXZlbnQ7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgZXZlbnRTcXMuUmVjb3Jkcykge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uQXJuID0gcmVjb3JkLmV2ZW50U291cmNlQVJOO1xuXG4gICAgICBjb25zdCBzZXJ2aWNlS2V5ID0gbWFwcGluZ1tzdWJzY3JpcHRpb25Bcm5dO1xuICAgICAgbGV0IGJvZHk6IHN0cmluZztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYm9keSA9IEpTT04ucGFyc2UocmVjb3JkLmJvZHkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGJvZHkgPSByZWNvcmQuYm9keTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YTogU3FzU3B5RXZlbnQgPSB7XG4gICAgICAgIHNweUV2ZW50VHlwZTogJ1NxcycsXG4gICAgICAgIGJvZHksXG4gICAgICAgIG1lc3NhZ2VBdHRyaWJ1dGVzOiByZWNvcmQubWVzc2FnZUF0dHJpYnV0ZXMsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIHNlcnZpY2VLZXksXG4gICAgICB9O1xuICAgICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGV2ZW50Py5SZWNvcmRzICYmIGV2ZW50LlJlY29yZHNbMF0/LnMzKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBTMyAqKionKTtcbiAgICBjb25zdCBldmVudFMzID0gZXZlbnQgYXMgUzNFdmVudDtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudFMzLlJlY29yZHMpIHtcbiAgICAgIGNvbnN0IGJ1Y2tldEFybiA9IHJlY29yZC5zMy5idWNrZXQuYXJuO1xuXG4gICAgICBjb25zdCBkYXRhOiBTM1NweUV2ZW50ID0ge1xuICAgICAgICBzcHlFdmVudFR5cGU6ICdTMycsXG4gICAgICAgIGV2ZW50TmFtZTogcmVjb3JkLmV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRUaW1lOiByZWNvcmQuZXZlbnRUaW1lLFxuICAgICAgICBidWNrZXQ6IHJlY29yZC5zMy5idWNrZXQubmFtZSxcbiAgICAgICAga2V5OiByZWNvcmQuczMub2JqZWN0LmtleSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgc2VydmljZUtleTogbWFwcGluZ1tidWNrZXRBcm5dLFxuICAgICAgfTtcbiAgICAgIHBvc3REYXRhUHJvbWlzZXMucHVzaChwb3N0RGF0YShmbHVlbnRFdmVudCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudC5SZWNvcmRzICYmIGV2ZW50LlJlY29yZHNbMF0/LmR5bmFtb2RiKSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBEWU5BTU9EQiAqKionKTtcbiAgICBjb25zdCBldmVudER5bmFtb0RCID0gZXZlbnQgYXMgRHluYW1vREJTdHJlYW1FdmVudDtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiBldmVudER5bmFtb0RCLlJlY29yZHMpIHtcbiAgICAgIGxldCBhcm4gPSByZWNvcmQuZXZlbnRTb3VyY2VBUk4hO1xuICAgICAgYXJuID0gYXJuLnN1YnN0cmluZygwLCBhcm4uaW5kZXhPZignL3N0cmVhbS8nKSk7XG5cbiAgICAgIGNvbnN0IGRhdGE6IER5bmFtb0RCU3B5RXZlbnQgPSB7XG4gICAgICAgIHNweUV2ZW50VHlwZTogJ0R5bmFtb0RCJyxcbiAgICAgICAgZXZlbnROYW1lOiByZWNvcmQuZXZlbnROYW1lLFxuICAgICAgICBuZXdJbWFnZTogdW5tYXJzaGFsbChyZWNvcmQuZHluYW1vZGI/Lk5ld0ltYWdlIGFzIGFueSksXG4gICAgICAgIGtleXM6IHVubWFyc2hhbGwocmVjb3JkLmR5bmFtb2RiPy5LZXlzIGFzIGFueSksXG4gICAgICAgIG9sZEltYWdlOiByZWNvcmQuZHluYW1vZGI/Lk9sZEltYWdlXG4gICAgICAgICAgPyB1bm1hcnNoYWxsKHJlY29yZC5keW5hbW9kYj8uT2xkSW1hZ2UgYXMgYW55KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmx1ZW50RXZlbnQ6IE9taXQ8U3B5TWVzc2FnZSwgJ3RpbWVzdGFtcCc+ID0ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBzZXJ2aWNlS2V5OiBtYXBwaW5nW2Fybl0sXG4gICAgICB9O1xuICAgICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIGV2ZW50LmRldGFpbCAmJlxuICAgIGV2ZW50WydkZXRhaWwtdHlwZSddICYmXG4gICAgZXZlbnQudmVyc2lvbiAmJlxuICAgIGV2ZW50LnNvdXJjZVxuICApIHtcbiAgICBjb25zb2xlLmxvZygnKioqIEV2ZW50QnJpZGdlICoqKicpO1xuICAgIGNvbnN0IGV2ZW50RWIgPSBldmVudCBhcyBFdmVudEJyaWRnZUV2ZW50PGFueSwgYW55PjtcblxuICAgIGNvbnN0IHNlcnZpY2VLZXkgPSBtYXBwaW5nLmV2ZW50QnJpZGdlOyAvLyB0aGUgaXMgbmV3IGxhbWJkYSBmb3IgZWFjaCBzdWJzY3JpcHRpb25cblxuICAgIGNvbnN0IHNweUV2ZW50VHlwZSA9IGdldFNweUV2ZW50VHlwZShzZXJ2aWNlS2V5KSBhc1xuICAgICAgfCAnRXZlbnRCcmlkZ2UnXG4gICAgICB8ICdFdmVudEJyaWRnZVJ1bGUnO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IGV2ZW50RWIuZGV0YWlsO1xuXG4gICAgY29uc3QgZGF0YTogRXZlbnRCcmlkZ2VTcHlFdmVudCB8IEV2ZW50QnJpZGdlUnVsZVNweUV2ZW50ID0ge1xuICAgICAgc3B5RXZlbnRUeXBlLFxuICAgICAgZGV0YWlsOiBtZXNzYWdlLFxuICAgICAgZGV0YWlsVHlwZTogZXZlbnRFYlsnZGV0YWlsLXR5cGUnXSxcbiAgICAgIHNvdXJjZTogZXZlbnRFYi5zb3VyY2UsXG4gICAgICB0aW1lOiBldmVudEViLnRpbWUsXG4gICAgICBhY2NvdW50OiBldmVudEViLmFjY291bnQsXG4gICAgfTtcblxuICAgIGNvbnN0IGZsdWVudEV2ZW50OiBPbWl0PFNweU1lc3NhZ2UsICd0aW1lc3RhbXAnPiA9IHtcbiAgICAgIGRhdGEsXG4gICAgICBzZXJ2aWNlS2V5LFxuICAgIH07XG4gICAgcG9zdERhdGFQcm9taXNlcy5wdXNoKHBvc3REYXRhKGZsdWVudEV2ZW50KSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJyoqKiBPVEhFUiAqKionKTtcbiAgICBjb25zdCBmbHVlbnRFdmVudDogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4gPSBldmVudDtcbiAgICBwb3N0RGF0YVByb21pc2VzLnB1c2gocG9zdERhdGEoZmx1ZW50RXZlbnQpKTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKHBvc3REYXRhUHJvbWlzZXMpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9zdERhdGEoc3B5TWVzc2FnZTogT21pdDxTcHlNZXNzYWdlLCAndGltZXN0YW1wJz4pIHtcbiAgLy8gY29uc3QgcG9zdERhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmJvZHkhKS5kYXRhO1xuICBjb25zb2xlLmxvZygncG9zdERhdGEnLCBKU09OLnN0cmluZ2lmeShzcHlNZXNzYWdlKSk7XG5cbiAgaWYgKCFjb25uZWN0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBvc3RDYWxscyA9IGNvbm5lY3Rpb25zLm1hcChhc3luYyAoeyBjb25uZWN0aW9uSWQgfSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTZW5kaW5nIG1lc3NhZ2UgdG86ICR7Y29ubmVjdGlvbklkLlN9YCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcG9zdFRvQ29ubmVjdGlvbkNvbW1hbmQgPSBuZXcgUG9zdFRvQ29ubmVjdGlvbkNvbW1hbmQoe1xuICAgICAgICBDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb25JZC5TLFxuICAgICAgICBEYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgc2VydmljZUtleTogc3B5TWVzc2FnZS5zZXJ2aWNlS2V5LFxuICAgICAgICAgIGRhdGE6IHNweU1lc3NhZ2UuZGF0YSxcbiAgICAgICAgfSkgYXMgYW55LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IGFwaWd3TWFuYWdlbWVudEFwaS5zZW5kKHBvc3RUb0Nvbm5lY3Rpb25Db21tYW5kKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlscyBzZW5kaW5nIG1lc3NhZ2UgdG86ICR7Y29ubmVjdGlvbklkLlN9YCwgZSk7XG4gICAgICBjb25zb2xlLmVycm9yKGBTdGF0dXMgY29kZTogJHsoZSBhcyBhbnkpLnN0YXR1c0NvZGV9YCk7XG4gICAgICBpZiAoKGUgYXMgYW55KS4kbWV0YWRhdGEuaHR0cFN0YXR1c0NvZGUgPT09IDQxMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgc3RhbGUgY29ubmVjdGlvbiwgZGVsZXRpbmcgJHtjb25uZWN0aW9uSWR9YCk7XG5cbiAgICAgICAgY29uc3QgZGVsZXRlUGFyYW1zID0gbmV3IERlbGV0ZUl0ZW1Db21tYW5kKHtcbiAgICAgICAgICBUYWJsZU5hbWU6IHByb2Nlc3MuZW52W2VudlZhcmlhYmxlTmFtZXMuU1NQWV9XU19UQUJMRV9OQU1FXSxcbiAgICAgICAgICBLZXk6IHsgY29ubmVjdGlvbklkIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IGRkYi5zZW5kKGRlbGV0ZVBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocG9zdENhbGxzKTtcbiAgY29uc29sZS5sb2coJ1NlbmQgbWVzc2FnZSBmaW5pc2gnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNweUV2ZW50VHlwZShzZXJ2aWNlS2V5OiBzdHJpbmcpIHtcbiAgaWYgKCFzZXJ2aWNlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHNlcnZpY2VLZXknKTtcbiAgfVxuXG4gIHJldHVybiBzZXJ2aWNlS2V5LnN1YnN0cmluZygwLCBzZXJ2aWNlS2V5LmluZGV4T2YoJyMnKSk7XG59XG4iXX0=
|