@mecanizou/telemetry-hub 1.3.9 → 1.3.10
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/CHANGELOG.md +7 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +5 -3
- package/dist/sst/middy/middleware.js +5 -34
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.3.10](https://github.com/mecanizou-eco/telemetry-hub/compare/v1.3.9...v1.3.10) (2026-01-22)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* remove unecessary fields ([58b0a3f](https://github.com/mecanizou-eco/telemetry-hub/commit/58b0a3f0eec21804eb0ff4beddae5b58eb38ec4e))
|
|
7
|
+
|
|
1
8
|
## [1.3.9](https://github.com/mecanizou-eco/telemetry-hub/compare/v1.3.8...v1.3.9) (2026-01-21)
|
|
2
9
|
|
|
3
10
|
|
package/dist/core/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { IStandardLogger, StandardLogData } from './logger-types';
|
|
|
3
3
|
export { StandardTracer } from './tracer';
|
|
4
4
|
export { IStandardTracer, StandardTraceData, StandardSpanResult, } from './tracer-types';
|
|
5
5
|
export { getEnvironmentStage } from './environment';
|
|
6
|
-
export { extractHttpAttributes } from './extraction';
|
|
6
|
+
export { extractHttpAttributes as sstExtractHttpAttributes, extractDefaultAttributes as sstExtractDefaultAttributes, extractLoggedUser as sstExtractLoggedUser, } from './extraction';
|
package/dist/core/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.sstExtractLoggedUser = exports.sstExtractDefaultAttributes = exports.sstExtractHttpAttributes = exports.getEnvironmentStage = exports.StandardTracer = exports.StandardLogger = void 0;
|
|
4
4
|
var logger_1 = require("./logger");
|
|
5
5
|
Object.defineProperty(exports, "StandardLogger", { enumerable: true, get: function () { return logger_1.StandardLogger; } });
|
|
6
6
|
var tracer_1 = require("./tracer");
|
|
@@ -8,5 +8,7 @@ Object.defineProperty(exports, "StandardTracer", { enumerable: true, get: functi
|
|
|
8
8
|
var environment_1 = require("./environment");
|
|
9
9
|
Object.defineProperty(exports, "getEnvironmentStage", { enumerable: true, get: function () { return environment_1.getEnvironmentStage; } });
|
|
10
10
|
var extraction_1 = require("./extraction");
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
|
|
11
|
+
Object.defineProperty(exports, "sstExtractHttpAttributes", { enumerable: true, get: function () { return extraction_1.extractHttpAttributes; } });
|
|
12
|
+
Object.defineProperty(exports, "sstExtractDefaultAttributes", { enumerable: true, get: function () { return extraction_1.extractDefaultAttributes; } });
|
|
13
|
+
Object.defineProperty(exports, "sstExtractLoggedUser", { enumerable: true, get: function () { return extraction_1.extractLoggedUser; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMEM7QUFBakMsd0dBQUEsY0FBYyxPQUFBO0FBRXZCLG1DQUEwQztBQUFqQyx3R0FBQSxjQUFjLE9BQUE7QUFPdkIsNkNBQW9EO0FBQTNDLGtIQUFBLG1CQUFtQixPQUFBO0FBQzVCLDJDQUlzQjtBQUhwQixzSEFBQSxxQkFBcUIsT0FBNEI7QUFDakQseUhBQUEsd0JBQXdCLE9BQStCO0FBQ3ZELGtIQUFBLGlCQUFpQixPQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFN0YW5kYXJkTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuZXhwb3J0IHsgSVN0YW5kYXJkTG9nZ2VyLCBTdGFuZGFyZExvZ0RhdGEgfSBmcm9tICcuL2xvZ2dlci10eXBlcyc7XG5leHBvcnQgeyBTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4vdHJhY2VyJztcbmV4cG9ydCB7XG4gIElTdGFuZGFyZFRyYWNlcixcbiAgU3RhbmRhcmRUcmFjZURhdGEsXG4gIFN0YW5kYXJkU3BhblJlc3VsdCxcbn0gZnJvbSAnLi90cmFjZXItdHlwZXMnO1xuXG5leHBvcnQgeyBnZXRFbnZpcm9ubWVudFN0YWdlIH0gZnJvbSAnLi9lbnZpcm9ubWVudCc7XG5leHBvcnQge1xuICBleHRyYWN0SHR0cEF0dHJpYnV0ZXMgYXMgc3N0RXh0cmFjdEh0dHBBdHRyaWJ1dGVzLFxuICBleHRyYWN0RGVmYXVsdEF0dHJpYnV0ZXMgYXMgc3N0RXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzLFxuICBleHRyYWN0TG9nZ2VkVXNlciBhcyBzc3RFeHRyYWN0TG9nZ2VkVXNlcixcbn0gZnJvbSAnLi9leHRyYWN0aW9uJztcbiJdfQ==
|
|
@@ -16,24 +16,15 @@ const telemetry_1 = require("../telemetry");
|
|
|
16
16
|
const extraction_1 = require("../../core/extraction");
|
|
17
17
|
const middyTelemetryMiddleware = (options) => ({
|
|
18
18
|
before: (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
var _a, _b, _c, _d;
|
|
20
19
|
try {
|
|
21
20
|
const startTime = perf_hooks_1.performance.now();
|
|
22
21
|
const attributes = (0, extraction_1.extractDefaultAttributes)(request);
|
|
23
22
|
const standardTracer = (0, telemetry_1.getStandardTracer)();
|
|
24
23
|
const spanResult = standardTracer.startSpan(Object.assign(Object.assign({}, attributes), { spanName: attributes.functionName, environment: attributes.stage, execution: {
|
|
25
|
-
function: {
|
|
26
|
-
name: attributes.functionName,
|
|
27
|
-
invocationId: attributes.invocationId,
|
|
28
|
-
},
|
|
29
24
|
awsRequestId: attributes.invocationId,
|
|
30
25
|
origin: attributes.origin,
|
|
31
26
|
routeKey: attributes.routeKey,
|
|
32
27
|
requestId: attributes.requestId,
|
|
33
|
-
loggedUser: {
|
|
34
|
-
email: (_a = attributes['user']) === null || _a === void 0 ? void 0 : _a['email'],
|
|
35
|
-
uid: (_b = attributes['user']) === null || _b === void 0 ? void 0 : _b['uid'],
|
|
36
|
-
},
|
|
37
28
|
} }));
|
|
38
29
|
const meter = api_1.metrics.getMeter(attributes.origin);
|
|
39
30
|
const executionTimeHistogram = meter.createHistogram('lambda_execution_duration', {
|
|
@@ -59,10 +50,6 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
59
50
|
origin: attributes.origin,
|
|
60
51
|
routeKey: attributes.routeKey,
|
|
61
52
|
requestId: attributes.requestId,
|
|
62
|
-
loggedUser: {
|
|
63
|
-
email: (_c = attributes['user']) === null || _c === void 0 ? void 0 : _c['email'],
|
|
64
|
-
uid: (_d = attributes['user']) === null || _d === void 0 ? void 0 : _d['uid'],
|
|
65
|
-
},
|
|
66
53
|
};
|
|
67
54
|
}
|
|
68
55
|
catch (error) {
|
|
@@ -70,7 +57,7 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
70
57
|
}
|
|
71
58
|
}),
|
|
72
59
|
after: (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
-
var _a, _b, _c, _d, _e, _f
|
|
60
|
+
var _a, _b, _c, _d, _e, _f;
|
|
74
61
|
try {
|
|
75
62
|
const otelData = request.context.otel;
|
|
76
63
|
if (!otelData)
|
|
@@ -102,17 +89,9 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
102
89
|
});
|
|
103
90
|
const standardLogger = (0, telemetry_1.getStandardLogger)(spanResult.span.attributes);
|
|
104
91
|
yield standardLogger.logInfo(Object.assign(Object.assign({ message: 'Request completed successfully' }, attributes), { execution: {
|
|
105
|
-
function: {
|
|
106
|
-
name: functionName,
|
|
107
|
-
invocationId: (_h = (_g = spanResult.span.attributes) === null || _g === void 0 ? void 0 : _g['function']) === null || _h === void 0 ? void 0 : _h['invocationId'],
|
|
108
|
-
},
|
|
109
92
|
origin,
|
|
110
93
|
routeKey: routeKey,
|
|
111
94
|
requestId: requestId,
|
|
112
|
-
loggedUser: {
|
|
113
|
-
uid: (_k = (_j = spanResult.span.attributes) === null || _j === void 0 ? void 0 : _j['logged_user']) === null || _k === void 0 ? void 0 : _k['uid'],
|
|
114
|
-
email: (_m = (_l = spanResult.span.attributes) === null || _l === void 0 ? void 0 : _l['logged_user']) === null || _m === void 0 ? void 0 : _m['email'],
|
|
115
|
-
},
|
|
116
95
|
}, performance: {
|
|
117
96
|
durationMs,
|
|
118
97
|
success: true,
|
|
@@ -125,7 +104,7 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
125
104
|
}
|
|
126
105
|
}),
|
|
127
106
|
onError: (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
107
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
129
108
|
try {
|
|
130
109
|
const otelData = request.context.otel;
|
|
131
110
|
if (!otelData)
|
|
@@ -163,25 +142,17 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
163
142
|
error: error || undefined,
|
|
164
143
|
environment,
|
|
165
144
|
execution: {
|
|
166
|
-
function:
|
|
167
|
-
name: functionName,
|
|
168
|
-
invocationId: (_f = (_e = spanResult.span.attributes) === null || _e === void 0 ? void 0 : _e['function']) === null || _f === void 0 ? void 0 : _f['invocationIid'],
|
|
169
|
-
},
|
|
170
|
-
awsRequestId: (_h = (_g = spanResult.span.attributes) === null || _g === void 0 ? void 0 : _g['function']) === null || _h === void 0 ? void 0 : _h['aws_request_id'],
|
|
145
|
+
awsRequestId: (_f = (_e = spanResult.span.attributes) === null || _e === void 0 ? void 0 : _e['function']) === null || _f === void 0 ? void 0 : _f['aws_request_id'],
|
|
171
146
|
origin,
|
|
172
147
|
routeKey: routeKey,
|
|
173
148
|
requestId: requestId,
|
|
174
|
-
loggedUser: {
|
|
175
|
-
uid: (_k = (_j = spanResult.span.attributes) === null || _j === void 0 ? void 0 : _j['logged_user']) === null || _k === void 0 ? void 0 : _k['uid'],
|
|
176
|
-
email: (_m = (_l = spanResult.span.attributes) === null || _l === void 0 ? void 0 : _l['logged_user']) === null || _m === void 0 ? void 0 : _m['email'],
|
|
177
|
-
},
|
|
178
149
|
},
|
|
179
150
|
performance: {
|
|
180
151
|
durationMs,
|
|
181
152
|
success: false,
|
|
182
153
|
},
|
|
183
154
|
context: {
|
|
184
|
-
errorType: (
|
|
155
|
+
errorType: (_g = error === null || error === void 0 ? void 0 : error.constructor) === null || _g === void 0 ? void 0 : _g.name,
|
|
185
156
|
},
|
|
186
157
|
});
|
|
187
158
|
spanResult.end();
|
|
@@ -193,4 +164,4 @@ const middyTelemetryMiddleware = (options) => ({
|
|
|
193
164
|
}),
|
|
194
165
|
});
|
|
195
166
|
exports.middyTelemetryMiddleware = middyTelemetryMiddleware;
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zc3QvbWlkZHkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSw0Q0FBd0Q7QUFDeEQsMkNBQXlDO0FBQ3pDLDRDQUFnRjtBQUNoRixzREFBaUU7QUFJMUQsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxPQUFnQyxFQUNYLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxDQUFPLE9BQU8sRUFBRSxFQUFFOztRQUN4QixJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsR0FBRyx3QkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRXBDLE1BQU0sVUFBVSxHQUFHLElBQUEscUNBQXdCLEVBQUMsT0FBTyxDQUFRLENBQUM7WUFHNUQsTUFBTSxjQUFjLEdBQUcsSUFBQSw2QkFBaUIsR0FBRSxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxTQUFTLGlDQUN0QyxVQUFVLEtBQ2IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUM3QixTQUFTLEVBQUU7b0JBQ1QsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWTt3QkFDN0IsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUFZO3FCQUN0QztvQkFDRCxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQVk7b0JBQ3JDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtvQkFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO29CQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7b0JBQy9CLFVBQVUsRUFBRTt3QkFDVixLQUFLLEVBQUUsTUFBQSxVQUFVLENBQUMsTUFBTSxDQUFDLDBDQUFHLE9BQU8sQ0FBQzt3QkFDcEMsR0FBRyxFQUFFLE1BQUEsVUFBVSxDQUFDLE1BQU0sQ0FBQywwQ0FBRyxL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SSxDQUFDLFVBQVUsMENBQUcsYUFBYSxDQUFDLDBDQUFHLEtBQUssQ0FBQzt3QkFDekQsS0FBSyxFQUFFLE1BQUEsTUFBQSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsMENBQUcsYUFBYSxDQUFDLDBDQUFHLE9BQU8sQ0FBQztxQkFDOUQ7aUJBQ0Y7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLFVBQVU7b0JBQ1YsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFNBQVMsRUFBRSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxXQUFXLDBDQUFFLElBQUk7aUJBQ3BDO2FBQ0YsQ0FBQyxDQUFDO1lBR0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBQSxzQkFBVSxHQUFFLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUM7QUEvT1UsUUFBQSx3QkFBd0IsNEJBK09sQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaWRkeSBmcm9tICdAbWlkZHkvY29yZSc7XG5pbXBvcnQgeyBtZXRyaWNzLCBWYWx1ZVR5cGUgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJztcbmltcG9ydCB7IGZvcmNlRmx1c2gsIGdldFN0YW5kYXJkTG9nZ2VyLCBnZXRTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBleHRyYWN0RGVmYXVsdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2V4dHJhY3Rpb24nO1xuXG5pbnRlcmZhY2UgTWlkZHlNaWRkbGV3YXJlT3B0aW9ucyB7fVxuXG5leHBvcnQgY29uc3QgbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlID0gKFxuICBvcHRpb25zPzogTWlkZHlNaWRkbGV3YXJlT3B0aW9uc1xuKTogbWlkZHkuTWlkZGxld2FyZU9iaiA9PiAoe1xuICBiZWZvcmU6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzKHJlcXVlc3QpIGFzIGFueTtcblxuICAgICAgLy8gVXNhciBTdGFuZGFyZFRyYWNlciBwYXJhIGNyaWFyIHNwYW4gY29tIGF0cmlidXRvcyBwYWRyb25pemFkb3NcbiAgICAgIGNvbnN0IHN0YW5kYXJkVHJhY2VyID0gZ2V0U3RhbmRhcmRUcmFjZXIoKTtcbiAgICAgIGNvbnN0IHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICBzcGFuTmFtZTogYXR0cmlidXRlcy5mdW5jdGlvbk5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiBhdHRyaWJ1dGVzLnN0YWdlLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBmdW5jdGlvbjoge1xuICAgICAgICAgICAgbmFtZTogYXR0cmlidXRlcy5mdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBpbnZvY2F0aW9uSWQ6IGF0dHJpYnV0ZXMuaW52b2NhdGlvbklkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXdzUmVxdWVzdElkOiBhdHRyaWJ1dGVzLmludm9jYXRpb25JZCxcbiAgICAgICAgICBvcmlnaW46IGF0dHJpYnV0ZXMub3JpZ2luLFxuICAgICAgICAgIHJvdXRlS2V5OiBhdHRyaWJ1dGVzLnJvdXRlS2V5LFxuICAgICAgICAgIHJlcXVlc3RJZDogYXR0cmlidXRlcy5yZXF1ZXN0SWQsXG4gICAgICAgICAgbG9nZ2VkVXNlcjoge1xuICAgICAgICAgICAgZW1haWw6IGF0dHJpYnV0ZXNbJ3VzZXInXT8uWydlbWFpbCddLFxuICAgICAgICAgICAgdWlkOiBhdHRyaWJ1dGVzWyd1c2VyJ10/LlsndWlkJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBtZXRlciA9IG1ldHJpY3MuZ2V0TWV0ZXIoYXR0cmlidXRlcy5vcmlnaW4pO1xuXG4gICAgICBjb25zdCBleGVjdXRpb25UaW1lSGlzdG9ncmFtID0gbWV0ZXIuY3JlYXRlSGlzdG9ncmFtKFxuICAgICAgICAnbGFtYmRhX2V4ZWN1dGlvbl9kdXJhdGlvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RlbXBvIHRvdGFsIGRlIGV4ZWN1w6fDo28gZG8gTGFtYmRhIGVtIG1zJyxcbiAgICAgICAgICB1bml0OiAnbXMnLFxuICAgICAgICAgIHZhbHVlVHlwZTogVmFsdWVUeXBlLkRPVUJMRSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndG90YWxfc3VjY2Vzc2Z1bCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBkZSBvcGVyYcOnw7VlcyBiZW0tc3VjZWRpZGFzJyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZmFpbHVyZUNvdW50ZXIgPSBtZXRlci5jcmVhdGVDb3VudGVyKCd0b3RhbF9mYWlsZWQnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgZGUgb3BlcmHDp8O1ZXMgY29tIGZhbGhhJyxcbiAgICAgIH0pO1xuXG4gICAgICAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbCA9IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgbWV0ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLFxuICAgICAgICBmYWlsdXJlQ291bnRlcixcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZTogYXR0cmlidXRlcy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IGF0dHJpYnV0ZXMuc3RhZ2UsXG4gICAgICAgIG9yaWdpbjogYXR0cmlidXRlcy5vcmlnaW4sXG4gICAgICAgIHJvdXRlS2V5OiBhdHRyaWJ1dGVzLnJvdXRlS2V5LFxuICAgICAgICByZXF1ZXN0SWQ6IGF0dHJpYnV0ZXMucmVxdWVzdElkLFxuICAgICAgICBsb2dnZWRVc2VyOiB7XG4gICAgICAgICAgZW1haWw6IGF0dHJpYnV0ZXNbJ3VzZXInXT8uWydlbWFpbCddLFxuICAgICAgICAgIHVpZDogYXR0cmlidXRlc1sndXNlciddPy5bJ3VpZCddLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlIGJlZm9yZSBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG5cbiAgYWZ0ZXI6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG90ZWxEYXRhID0gKHJlcXVlc3QuY29udGV4dCBhcyBhbnkpLm90ZWw7XG4gICAgICBpZiAoIW90ZWxEYXRhKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgc3VjY2Vzc0NvdW50ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN0YXJ0VGltZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgfSA9IG90ZWxEYXRhO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzKHJlcXVlc3QpIGFzIGFueTtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IGF0dHJpYnV0ZXMub3JpZ2luIHx8ICd1bmtub3duJztcblxuICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBzdWNlc3NvIHVzYW5kbyBTdGFuZGFyZFRyYWNlclxuICAgICAgc3BhblJlc3VsdC5zZXRTdWNjZXNzKHRydWUpO1xuXG4gICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbiddPy5bJ25hbWUnXTtcbiAgICAgIGNvbnN0IHJvdXRlS2V5ID0gc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnaHR0cCddPy5bJ3JvdXRlS2V5J107XG4gICAgICBjb25zdCByZXF1ZXN0SWQgPVxuICAgICAgICBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydleGVjdXRpb24nXT8uWydyZXF1ZXN0SWQnXTtcblxuICAgICAgLy8gTcOpdHJpY2FzXG4gICAgICBzdWNjZXNzQ291bnRlci5hZGQoMSwge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcbiAgICAgIC8vIExvZyBlc3RydXR1cmFkbyBkZSBzdWNlc3NvXG4gICAgICBjb25zdCBzdGFuZGFyZExvZ2dlciA9IGdldFN0YW5kYXJkTG9nZ2VyKHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzKTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyh7XG4gICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBmdW5jdGlvbjoge1xuICAgICAgICAgICAgbmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgaW52b2NhdGlvbklkOlxuICAgICAgICAgICAgICBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbiddPy5bJ2ludm9jYXRpb25JZCddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIHJvdXRlS2V5OiByb3V0ZUtleSxcbiAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICBsb2dnZWRVc2VyOiB7XG4gICAgICAgICAgICB1aWQ6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2xvZ2dlZF91c2VyJ10/LlsndWlkJ10sXG4gICAgICAgICAgICBlbWFpbDogc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnbG9nZ2VkX3VzZXInXT8uWydlbWFpbCddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEZpbmFsaXphciBzcGFuXG4gICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuICAgICAgYXdhaXQgZm9yY2VGbHVzaCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBtaWRkeVRlbGVtZXRyeU1pZGRsZXdhcmUgYWZ0ZXIgaG9vazonLCBlcnJvcik7XG4gICAgfVxuICB9LFxuXG4gIG9uRXJyb3I6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG90ZWxEYXRhID0gKHJlcXVlc3QuY29udGV4dCBhcyBhbnkpLm90ZWw7XG4gICAgICBpZiAoIW90ZWxEYXRhKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgZmFpbHVyZUNvdW50ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN0YXJ0VGltZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICBvcmlnaW4sXG4gICAgICB9ID0gb3RlbERhdGE7XG4gICAgICBjb25zdCBlcnJvciA9IHJlcXVlc3QuZXJyb3I7XG5cbiAgICAgIC8vIE1hcmNhciBzcGFuIGNvbW8gZXJybyB1c2FuZG8gU3RhbmRhcmRUcmFjZXJcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBzcGFuUmVzdWx0LnNldEVycm9yKGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID1cbiAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24nXVsnbmFtZSddIHx8ICd1bmtub3duJztcbiAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ3JlcXVlc3RJZCddIHx8ICd1bmtub3duJztcbiAgICAgIGNvbnN0IHJvdXRlS2V5ID1cbiAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnaHR0cCddWydyb3V0ZUtleSddIHx8ICd1bmtub3duJztcblxuICAgICAgLy8gTcOpdHJpY2FzXG4gICAgICBmYWlsdXJlQ291bnRlci5hZGQoMSwge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIGVycm9yX3R5cGU6IGVycm9yPy5jb25zdHJ1Y3Rvcj8ubmFtZSB8fCAnVW5rbm93bkVycm9yJyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElkLFxuICAgICAgICByb3V0ZUtleTogcm91dGVLZXksXG4gICAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBlbnZpcm9ubWVudCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0ucmVjb3JkKGR1cmF0aW9uTXMsIHtcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICBzdGF0dXM6ICdlcnJvcicsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgLy8gTG9nIGVzdHJ1dHVyYWRvIGRlIGVycm9cbiAgICAgIGNvbnN0IHN0YW5kYXJkTG9nZ2VyID0gZ2V0U3RhbmRhcmRMb2dnZXIoc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXMpO1xuXG4gICAgICBhd2FpdCBzdGFuZGFyZExvZ2dlci5sb2dFcnJvcih7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgZXJyb3I6IGVycm9yIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uOiB7XG4gICAgICAgICAgICBuYW1lOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBpbnZvY2F0aW9uSWQ6XG4gICAgICAgICAgICAgIHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uJ10/LlsnaW52b2NhdGlvbklpZCddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXdzUmVxdWVzdElkOlxuICAgICAgICAgICAgc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24nXT8uWydhd3NfcmVxdWVzdF9pZCddLFxuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICByb3V0ZUtleTogcm91dGVLZXksXG4gICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgbG9nZ2VkVXNlcjoge1xuICAgICAgICAgICAgdWlkOiBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydsb2dnZWRfdXNlciddPy5bJ3VpZCddLFxuICAgICAgICAgICAgZW1haWw6IHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2xvZ2dlZF91c2VyJ10/LlsnZW1haWwnXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJmb3JtYW5jZToge1xuICAgICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBlcnJvclR5cGU6IGVycm9yPy5jb25zdHJ1Y3Rvcj8ubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5hbGl6YXIgc3BhblxuICAgICAgc3BhblJlc3VsdC5lbmQoKTtcbiAgICAgIGF3YWl0IGZvcmNlRmx1c2goKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlIG9uRXJyb3IgaG9vazonLCBlcnJvcik7XG4gICAgfVxuICB9LFxufSk7XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zc3QvbWlkZHkvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSw0Q0FBd0Q7QUFDeEQsMkNBQXlDO0FBQ3pDLDRDQUFnRjtBQUNoRixzREFBaUU7QUFJMUQsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxPQUFnQyxFQUNYLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sRUFBRSxDQUFPLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxHQUFHLHdCQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFcEMsTUFBTSxVQUFVLEdBQUcsSUFBQSxxQ0FBd0IsRUFBQyxPQUFPLENBQVEsQ0FBQztZQUc1RCxNQUFNLGNBQWMsR0FBRyxJQUFBLDZCQUFpQixHQUFFLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLFNBQVMsaUNBQ3RDLFVBQVUsS0FDYixRQUFRLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFDakMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQzdCLFNBQVMsRUFBRTtvQkFDVCxZQUFZLEVBQUUsVUFBVSxDQUFDLFlBQVk7b0JBQ3JDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtvQkFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO29CQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7aUJBQ2hDLElBQ0QsQ0FBQztZQUVILE1BQU0sS0FBSyxHQUFHLGFBQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWxELE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FDbEQsMkJBQTJCLEVBQzNCO2dCQUNFLFdBQVcsRUFBRSx5Q0FBeUM7Z0JBQ3RELElBQUksRUFBRSxJQUFJO2dCQUNWLFNBQVMsRUFBRSxlQUFTLENBQUMs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QVEsRUFBRSxRQUFRO29CQUNsQixTQUFTLEVBQUUsU0FBUztpQkFDckI7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLFVBQVU7b0JBQ1YsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFNBQVMsRUFBRSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxXQUFXLDBDQUFFLElBQUk7aUJBQ3BDO2FBQ0YsQ0FBQyxDQUFDO1lBR0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBQSxzQkFBVSxHQUFFLENBQUM7UUFDckIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUM7QUFqTlUsUUFBQSx3QkFBd0IsNEJBaU5sQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaWRkeSBmcm9tICdAbWlkZHkvY29yZSc7XG5pbXBvcnQgeyBtZXRyaWNzLCBWYWx1ZVR5cGUgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJztcbmltcG9ydCB7IGZvcmNlRmx1c2gsIGdldFN0YW5kYXJkTG9nZ2VyLCBnZXRTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL3RlbGVtZXRyeSc7XG5pbXBvcnQgeyBleHRyYWN0RGVmYXVsdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2V4dHJhY3Rpb24nO1xuXG5pbnRlcmZhY2UgTWlkZHlNaWRkbGV3YXJlT3B0aW9ucyB7fVxuXG5leHBvcnQgY29uc3QgbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlID0gKFxuICBvcHRpb25zPzogTWlkZHlNaWRkbGV3YXJlT3B0aW9uc1xuKTogbWlkZHkuTWlkZGxld2FyZU9iaiA9PiAoe1xuICBiZWZvcmU6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzKHJlcXVlc3QpIGFzIGFueTtcblxuICAgICAgLy8gVXNhciBTdGFuZGFyZFRyYWNlciBwYXJhIGNyaWFyIHNwYW4gY29tIGF0cmlidXRvcyBwYWRyb25pemFkb3NcbiAgICAgIGNvbnN0IHN0YW5kYXJkVHJhY2VyID0gZ2V0U3RhbmRhcmRUcmFjZXIoKTtcbiAgICAgIGNvbnN0IHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICBzcGFuTmFtZTogYXR0cmlidXRlcy5mdW5jdGlvbk5hbWUsXG4gICAgICAgIGVudmlyb25tZW50OiBhdHRyaWJ1dGVzLnN0YWdlLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6IGF0dHJpYnV0ZXMuaW52b2NhdGlvbklkLFxuICAgICAgICAgIG9yaWdpbjogYXR0cmlidXRlcy5vcmlnaW4sXG4gICAgICAgICAgcm91dGVLZXk6IGF0dHJpYnV0ZXMucm91dGVLZXksXG4gICAgICAgICAgcmVxdWVzdElkOiBhdHRyaWJ1dGVzLnJlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBtZXRlciA9IG1ldHJpY3MuZ2V0TWV0ZXIoYXR0cmlidXRlcy5vcmlnaW4pO1xuXG4gICAgICBjb25zdCBleGVjdXRpb25UaW1lSGlzdG9ncmFtID0gbWV0ZXIuY3JlYXRlSGlzdG9ncmFtKFxuICAgICAgICAnbGFtYmRhX2V4ZWN1dGlvbl9kdXJhdGlvbicsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RlbXBvIHRvdGFsIGRlIGV4ZWN1w6fDo28gZG8gTGFtYmRhIGVtIG1zJyxcbiAgICAgICAgICB1bml0OiAnbXMnLFxuICAgICAgICAgIHZhbHVlVHlwZTogVmFsdWVUeXBlLkRPVUJMRSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudGVyID0gbWV0ZXIuY3JlYXRlQ291bnRlcigndG90YWxfc3VjY2Vzc2Z1bCcsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBkZSBvcGVyYcOnw7VlcyBiZW0tc3VjZWRpZGFzJyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZmFpbHVyZUNvdW50ZXIgPSBtZXRlci5jcmVhdGVDb3VudGVyKCd0b3RhbF9mYWlsZWQnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVG90YWwgZGUgb3BlcmHDp8O1ZXMgY29tIGZhbGhhJyxcbiAgICAgIH0pO1xuXG4gICAgICAocmVxdWVzdC5jb250ZXh0IGFzIGFueSkub3RlbCA9IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgbWV0ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN1Y2Nlc3NDb3VudGVyLFxuICAgICAgICBmYWlsdXJlQ291bnRlcixcbiAgICAgICAgc3RhcnRUaW1lLFxuICAgICAgICBzZXJ2aWNlTmFtZTogYXR0cmlidXRlcy5zZXJ2aWNlTmFtZSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IGF0dHJpYnV0ZXMuc3RhZ2UsXG4gICAgICAgIG9yaWdpbjogYXR0cmlidXRlcy5vcmlnaW4sXG4gICAgICAgIHJvdXRlS2V5OiBhdHRyaWJ1dGVzLnJvdXRlS2V5LFxuICAgICAgICByZXF1ZXN0SWQ6IGF0dHJpYnV0ZXMucmVxdWVzdElkLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlIGJlZm9yZSBob29rOicsIGVycm9yKTtcbiAgICB9XG4gIH0sXG5cbiAgYWZ0ZXI6IGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG90ZWxEYXRhID0gKHJlcXVlc3QuY29udGV4dCBhcyBhbnkpLm90ZWw7XG4gICAgICBpZiAoIW90ZWxEYXRhKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BhblJlc3VsdCxcbiAgICAgICAgc3VjY2Vzc0NvdW50ZXIsXG4gICAgICAgIGV4ZWN1dGlvblRpbWVIaXN0b2dyYW0sXG4gICAgICAgIHN0YXJ0VGltZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgfSA9IG90ZWxEYXRhO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZXh0cmFjdERlZmF1bHRBdHRyaWJ1dGVzKHJlcXVlc3QpIGFzIGFueTtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IGF0dHJpYnV0ZXMub3JpZ2luIHx8ICd1bmtub3duJztcblxuICAgICAgLy8gTWFyY2FyIHNwYW4gY29tbyBzdWNlc3NvIHVzYW5kbyBTdGFuZGFyZFRyYWNlclxuICAgICAgc3BhblJlc3VsdC5zZXRTdWNjZXNzKHRydWUpO1xuXG4gICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbiddPy5bJ25hbWUnXTtcbiAgICAgIGNvbnN0IHJvdXRlS2V5ID0gc3BhblJlc3VsdC5zcGFuLmF0dHJpYnV0ZXM/LlsnaHR0cCddPy5bJ3JvdXRlS2V5J107XG4gICAgICBjb25zdCByZXF1ZXN0SWQgPVxuICAgICAgICBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydleGVjdXRpb24nXT8uWydyZXF1ZXN0SWQnXTtcblxuICAgICAgLy8gTcOpdHJpY2FzXG4gICAgICBzdWNjZXNzQ291bnRlci5hZGQoMSwge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcbiAgICAgIC8vIExvZyBlc3RydXR1cmFkbyBkZSBzdWNlc3NvXG4gICAgICBjb25zdCBzdGFuZGFyZExvZ2dlciA9IGdldFN0YW5kYXJkTG9nZ2VyKHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzKTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nSW5mbyh7XG4gICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICAgIHJlcXVlc3RJZDogcmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgICBwZXJmb3JtYW5jZToge1xuICAgICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5hbGl6YXIgc3BhblxuICAgICAgc3BhblJlc3VsdC5lbmQoKTtcbiAgICAgIGF3YWl0IGZvcmNlRmx1c2goKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gbWlkZHlUZWxlbWV0cnlNaWRkbGV3YXJlIGFmdGVyIGhvb2s6JywgZXJyb3IpO1xuICAgIH1cbiAgfSxcblxuICBvbkVycm9yOiBhc3luYyAocmVxdWVzdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdGVsRGF0YSA9IChyZXF1ZXN0LmNvbnRleHQgYXMgYW55KS5vdGVsO1xuICAgICAgaWYgKCFvdGVsRGF0YSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwYW5SZXN1bHQsXG4gICAgICAgIGZhaWx1cmVDb3VudGVyLFxuICAgICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLFxuICAgICAgICBzdGFydFRpbWUsXG4gICAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgb3JpZ2luLFxuICAgICAgfSA9IG90ZWxEYXRhO1xuICAgICAgY29uc3QgZXJyb3IgPSByZXF1ZXN0LmVycm9yO1xuXG4gICAgICAvLyBNYXJjYXIgc3BhbiBjb21vIGVycm8gdXNhbmRvIFN0YW5kYXJkVHJhY2VyXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgc3BhblJlc3VsdC5zZXRFcnJvcihlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9XG4gICAgICAgIHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uJ11bJ25hbWUnXSB8fCAndW5rbm93bic7XG4gICAgICBjb25zdCByZXF1ZXN0SWQgPSBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydyZXF1ZXN0SWQnXSB8fCAndW5rbm93bic7XG4gICAgICBjb25zdCByb3V0ZUtleSA9XG4gICAgICAgIHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzPy5bJ2h0dHAnXVsncm91dGVLZXknXSB8fCAndW5rbm93bic7XG5cbiAgICAgIC8vIE3DqXRyaWNhc1xuICAgICAgZmFpbHVyZUNvdW50ZXIuYWRkKDEsIHtcbiAgICAgICAgb3JpZ2luLFxuICAgICAgICBlcnJvcl90eXBlOiBlcnJvcj8uY29uc3RydWN0b3I/Lm5hbWUgfHwgJ1Vua25vd25FcnJvcicsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgcm91dGVLZXk6IHJvdXRlS2V5LFxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZW52aXJvbm1lbnQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICBleGVjdXRpb25UaW1lSGlzdG9ncmFtLnJlY29yZChkdXJhdGlvbk1zLCB7XG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SWQsXG4gICAgICAgIHJvdXRlS2V5OiByb3V0ZUtleSxcbiAgICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudE5hbWU6IGVudmlyb25tZW50LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZyBlc3RydXR1cmFkbyBkZSBlcnJvXG4gICAgICBjb25zdCBzdGFuZGFyZExvZ2dlciA9IGdldFN0YW5kYXJkTG9nZ2VyKHNwYW5SZXN1bHQuc3Bhbi5hdHRyaWJ1dGVzKTtcblxuICAgICAgYXdhaXQgc3RhbmRhcmRMb2dnZXIubG9nRXJyb3Ioe1xuICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvciBvY2N1cnJlZCcsXG4gICAgICAgIGVycm9yOiBlcnJvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6XG4gICAgICAgICAgICBzcGFuUmVzdWx0LnNwYW4uYXR0cmlidXRlcz8uWydmdW5jdGlvbiddPy5bJ2F3c19yZXF1ZXN0X2lkJ10sXG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIHJvdXRlS2V5OiByb3V0ZUtleSxcbiAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgZXJyb3JUeXBlOiBlcnJvcj8uY29uc3RydWN0b3I/Lm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gRmluYWxpemFyIHNwYW5cbiAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG4gICAgICBhd2FpdCBmb3JjZUZsdXNoKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIG1pZGR5VGVsZW1ldHJ5TWlkZGxld2FyZSBvbkVycm9yIGhvb2s6JywgZXJyb3IpO1xuICAgIH1cbiAgfSxcbn0pO1xuIl19
|