@nlabs/reaktor 0.6.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/actions/conversations.d.ts +5 -5
- package/lib/actions/conversations.js +34 -24
- package/lib/actions/email.js +2 -3
- package/lib/actions/files.js +4 -15
- package/lib/actions/images.d.ts +1 -1
- package/lib/actions/images.js +20 -21
- package/lib/actions/messages.js +5 -6
- package/lib/actions/payments.js +5 -6
- package/lib/actions/posts.d.ts +4 -2
- package/lib/actions/posts.js +50 -7
- package/lib/actions/reactions.d.ts +1 -1
- package/lib/actions/reactions.js +13 -13
- package/lib/actions/tags.d.ts +6 -1
- package/lib/actions/tags.js +3 -3
- package/lib/actions/users.d.ts +1 -1
- package/lib/actions/users.js +13 -14
- package/lib/actions/websockets.js +3 -3
- package/lib/lambdas/actions/websockets.js +4 -15
- package/lib/lambdas/authorizer.js +5 -16
- package/lib/lambdas/connection.js +2 -13
- package/lib/lambdas/utils/websocket.js +2 -1
- package/lib/types/conversations.d.ts +5 -0
- package/lib/types/conversations.js +1 -1
- package/lib/types/users.d.ts +1 -1
- package/lib/types/users.js +1 -1
- package/lib/utils/arangodb.js +2 -2
- package/package.json +12 -12
package/lib/actions/users.js
CHANGED
|
@@ -51,7 +51,6 @@ __export(users_exports, {
|
|
|
51
51
|
module.exports = __toCommonJS(users_exports);
|
|
52
52
|
var import_utils = require("@nlabs/utils");
|
|
53
53
|
var import_arangojs = require("arangojs");
|
|
54
|
-
var import_isEmpty = __toESM(require("lodash/isEmpty"));
|
|
55
54
|
var import_luxon = require("luxon");
|
|
56
55
|
var import_stripe = __toESM(require("stripe"));
|
|
57
56
|
var import_config = require("../config");
|
|
@@ -111,7 +110,7 @@ const addUser = async (context, args) => {
|
|
|
111
110
|
const formatUsername = (0, import_utils.parseUsername)(username);
|
|
112
111
|
const formatEmail = (0, import_utils.parseEmail)(email);
|
|
113
112
|
const formatPhone = (0, import_utils.parsePhone)(phone);
|
|
114
|
-
if (
|
|
113
|
+
if (!formatUsername || !password || !formatPhone && !formatEmail) {
|
|
115
114
|
return (0, import_utils2.logException)({
|
|
116
115
|
action,
|
|
117
116
|
args: { username },
|
|
@@ -120,10 +119,10 @@ const addUser = async (context, args) => {
|
|
|
120
119
|
}, context);
|
|
121
120
|
}
|
|
122
121
|
const filters = [`u.username == "${formatUsername}"`];
|
|
123
|
-
if (
|
|
122
|
+
if (formatEmail) {
|
|
124
123
|
filters.push(`u.email == "${formatEmail}"`);
|
|
125
124
|
}
|
|
126
|
-
if (
|
|
125
|
+
if (formatPhone) {
|
|
127
126
|
filters.push(`u.phone == ${formatPhone}`);
|
|
128
127
|
}
|
|
129
128
|
const checkQuery = `FOR u IN users
|
|
@@ -292,11 +291,11 @@ const deactivateUser = (context, userId) => {
|
|
|
292
291
|
const getDisplayName = (user = {}) => {
|
|
293
292
|
const { first, last, name = "", username = "" } = user;
|
|
294
293
|
const fullname = [first, last].join(" ").trim();
|
|
295
|
-
if (
|
|
294
|
+
if (name) {
|
|
296
295
|
return name;
|
|
297
296
|
} else if (fullname !== "") {
|
|
298
297
|
return fullname;
|
|
299
|
-
} else if (
|
|
298
|
+
} else if (username) {
|
|
300
299
|
return username;
|
|
301
300
|
}
|
|
302
301
|
return "Unknown";
|
|
@@ -339,7 +338,7 @@ const getUsers = (context, options) => {
|
|
|
339
338
|
const { limit, username } = parseUserOptions(options);
|
|
340
339
|
const { objects: selectObjects, queries: selectQueries } = getUserOptional(fields);
|
|
341
340
|
const filterBy = ["u.userAccess > 0"];
|
|
342
|
-
if (
|
|
341
|
+
if (username) {
|
|
343
342
|
filterBy.push(`CONTAINS(u.username, "${(0, import_utils.parseUsername)(username)}")`);
|
|
344
343
|
}
|
|
345
344
|
const aqlQuery = `FOR u IN users
|
|
@@ -363,10 +362,10 @@ const getUsersByReactions = (context, { reactions = [], username }, options) =>
|
|
|
363
362
|
const formatSessionId = `users/${sessionId}`;
|
|
364
363
|
const formatUsername = (0, import_utils.parseUsername)(username);
|
|
365
364
|
const filterBy = [`POSITION(${JSON.stringify(formatReactions)}, LOWER(r.name))`];
|
|
366
|
-
if (
|
|
365
|
+
if (username) {
|
|
367
366
|
filterBy.push(`CONTAINS(u.username, "${formatUsername}")`);
|
|
368
367
|
}
|
|
369
|
-
const aqlQuery = `FOR u, r IN OUTBOUND "${formatSessionId}"
|
|
368
|
+
const aqlQuery = `FOR u, r IN OUTBOUND "${formatSessionId}" hasReaction
|
|
370
369
|
OPTIONS {vertexCollections: "users"}
|
|
371
370
|
${selectQueries.join("\n")}
|
|
372
371
|
${filterBy.length ? `FILTER ${filterBy.join(" && ")}` : ""}
|
|
@@ -383,7 +382,7 @@ const getUsersByTags = (context, { tags, username }, options) => {
|
|
|
383
382
|
const action = "getUsersByTags";
|
|
384
383
|
const { database, fields, session: { userId: sessionId } } = context;
|
|
385
384
|
const formatTags = tags.reduce((list, tagName) => {
|
|
386
|
-
if (
|
|
385
|
+
if (tagName) {
|
|
387
386
|
list.push((0, import_utils.parseChar)(tagName, 32).toLowerCase());
|
|
388
387
|
}
|
|
389
388
|
return list;
|
|
@@ -392,7 +391,7 @@ const getUsersByTags = (context, { tags, username }, options) => {
|
|
|
392
391
|
const { objects: selectObjects, queries: selectQueries } = getUserOptional(fields);
|
|
393
392
|
const formatUsername = (0, import_utils.parseUsername)(username);
|
|
394
393
|
const filterBy = [`u._key != "${sessionId}"`];
|
|
395
|
-
if (
|
|
394
|
+
if (username) {
|
|
396
395
|
filterBy.push(`CONTAINS(u.username, "${formatUsername}")`);
|
|
397
396
|
}
|
|
398
397
|
const aqlQuery = `FOR t IN tags
|
|
@@ -416,7 +415,7 @@ const getUsersByLatest = (context, { username }, options) => {
|
|
|
416
415
|
const { limit } = parseUserOptions(options);
|
|
417
416
|
const filter = ["u._id != session._id"];
|
|
418
417
|
const { objects: selectObjects, queries: selectQueries } = getUserOptional(fields);
|
|
419
|
-
if (
|
|
418
|
+
if (username) {
|
|
420
419
|
filter.push(`CONTAINS(u.username, "${(0, import_utils.parseUsername)(username)}")`);
|
|
421
420
|
}
|
|
422
421
|
const aqlQuery = `FOR u IN users
|
|
@@ -452,7 +451,7 @@ const signIn = async (context, args) => {
|
|
|
452
451
|
const formatPassword = (0, import_utils.parsePassword)(password);
|
|
453
452
|
const formatExpires = (0, import_utils.parseNum)(expires) || 15;
|
|
454
453
|
const { database } = context;
|
|
455
|
-
if (
|
|
454
|
+
if (!formatUsername || !formatPassword) {
|
|
456
455
|
return (0, import_utils2.logException)({
|
|
457
456
|
action,
|
|
458
457
|
args: { username },
|
|
@@ -558,4 +557,4 @@ const getActiveUserCount = (context) => {
|
|
|
558
557
|
signOut,
|
|
559
558
|
updateUser
|
|
560
559
|
});
|
|
561
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvdXNlcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBjcmVhdGVIYXNoLFxuICBjcmVhdGVQYXNzd29yZCxcbiAgcGFyc2VDaGFyLFxuICBwYXJzZUVtYWlsLFxuICBwYXJzZUlkLFxuICBwYXJzZU51bSxcbiAgcGFyc2VQYXNzd29yZCxcbiAgcGFyc2VQaG9uZSxcbiAgcGFyc2VVc2VybmFtZVxufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgU3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoJztcbmltcG9ydCB7VXNlcn0gZnJvbSAnLi4vdHlwZXMvdXNlcnMnO1xuaW1wb3J0IHtFcnJvclR5cGVzLCBnZXRMaW1pdCwgbG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZX0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtnZXRTZXNzaW9uLCBTZXNzaW9uRXJyb3IsIFNlc3Npb25Ub2tlbiwgc2V0U2Vzc2lvbn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvbic7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICd1c2Vycyc7XG5jb25zdCBhcGlWZXJzaW9uOiBhbnkgPSAnMjAyMC0wMy0wMic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck9wdGlvbnMge1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFVzZXJBY2Nlc3Mge1xuICBERUFDVElWQVRFRCA9IDAsXG4gIEFDVElWRSA9IDEsXG4gIFBSRU1JVU0gPSAyLFxuICBDT05URU5UX0FETUlOID0gMyxcbiAgQURNSU4gPSA0XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUb2tlbiA9IChcbiAgdXNlcklkOiBzdHJpbmcsXG4gIHVzZXJuYW1lOiBzdHJpbmcsXG4gIHVzZXJBY2Nlc3M6IG51bWJlcixcbiAgZXhwaXJlczogbnVtYmVyID0gMTVcbik6IFNlc3Npb25Ub2tlbiA9PiB7XG4gIGNvbnN0IG5vdzogRGF0ZVRpbWUgPSBEYXRlVGltZS5sb2NhbCgpO1xuICBjb25zdCBzZXNzaW9uRXhwaXJlczogRGF0ZVRpbWUgPSBub3cucGx1cyh7bWludXRlczogZXhwaXJlc30pO1xuICBjb25zdCBpYXQ6IG51bWJlciA9IE1hdGguZmxvb3Iobm93LnRvU2Vjb25kcygpKTtcbiAgY29uc3QgZXhwOiBudW1iZXIgPSBNYXRoLmZsb29yKHNlc3Npb25FeHBpcmVzLnRvU2Vjb25kcygpKTtcblxuICBjb25zdCB0b2tlbiA9IHNldFNlc3Npb24oe1xuICAgIGV4cCxcbiAgICBpYXQsXG4gICAgdXNlcm5hbWUsXG4gICAgdXNlckFjY2VzcyxcbiAgICB1c2VySWRcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBleHBpcmVzOiBzZXNzaW9uRXhwaXJlcy50b01pbGxpcygpLFxuICAgIGlzc3VlZDogbm93LnRvTWlsbGlzKCksXG4gICAgdG9rZW5cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyT3B0aW9uYWwgPSAoZmllbGRzOiBzdHJpbmdbXSA9IFtdKSA9PlxuICBmaWVsZHMucmVkdWNlKChzZWxlY3RzOiBhbnksIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ3VzZXJzJywgJ3UnLCBmaWVsZCwgc2VsZWN0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdHM7XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVXNlck9wdGlvbnMgPSAob3B0aW9uczogVXNlck9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXQ6IGdldExpbWl0KGZyb20sIHRvKVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXIgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJnczogYW55KTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJ9ID0gYXJncztcbiAgY29uc3Qge2VtYWlsLCBwYXNzd29yZCwgcGhvbmUsIHVzZXJuYW1lfSA9IHVzZXI7XG4gIGNvbnN0IHNhbHQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYCR7dXNlcm5hbWV9JHtwYXNzd29yZH1gLCBudWxsKTtcbiAgY29uc3QgZW5jcnlwdGVkUGFzc3dvcmQgPSBjcmVhdGVQYXNzd29yZChwYXNzd29yZCwgc2FsdCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZm9ybWF0RW1haWw6IHN0cmluZyA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZTogc3RyaW5nID0gcGFyc2VQaG9uZShwaG9uZSk7XG5cbiAgaWYoaXNFbXB0eShmb3JtYXRVc2VybmFtZSkgfHwgaXNFbXB0eShwYXNzd29yZCkgfHwgKCFpc0VtcHR5KGZvcm1hdFBob25lKSAmJiAhaXNFbXB0eShmb3JtYXRFbWFpbCkpKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzOiB7dXNlcm5hbWV9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UU1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyczogc3RyaW5nW10gPSBbYHUudXNlcm5hbWUgPT0gXCIke2Zvcm1hdFVzZXJuYW1lfVwiYF07XG5cbiAgaWYoIWlzRW1wdHkoZm9ybWF0RW1haWwpKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1LmVtYWlsID09IFwiJHtmb3JtYXRFbWFpbH1cImApO1xuICB9XG5cbiAgaWYoIWlzRW1wdHkoZm9ybWF0UGhvbmUpKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1LnBob25lID09ICR7Zm9ybWF0UGhvbmV9YCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyB8fCAnKX1cbiAgICBSRVRVUk4gdWA7XG4gIGNvbnN0IGV4aXN0aW5nVXNlcnMgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShjaGVja1F1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgIC50aGVuKCgpID0+IG51bGwpXG4gICAgKTtcblxuICBpZihleGlzdGluZ1VzZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfVVNFUk5BTUVcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHZlcmlmaWVkRW1haWxDb2RlOiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMDAwMCArIChNYXRoLnJhbmRvbSgpICogOTAwMDAwKSk7XG4gIGNvbnN0IHZlcmlmaWVkUGhvbmVDb2RlOiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMDAwMCArIChNYXRoLnJhbmRvbSgpICogOTAwMDAwKSk7XG5cbiAgLy8gQWRkIG5ldyB1c2VyIHByb3BlcnRpZXNcbiAgY29uc3QgaW5zZXJ0OiBVc2VyID0ge1xuICAgIF9rZXk6IGNyZWF0ZUhhc2godXNlcm5hbWUsIG51bGwpLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIGVtYWlsOiBmb3JtYXRFbWFpbCxcbiAgICBtb2RpZmllZDogRGF0ZS5ub3coKSxcbiAgICBwYXNzd29yZDogZW5jcnlwdGVkUGFzc3dvcmQsXG4gICAgcGhvbmU6IGZvcm1hdFBob25lLFxuICAgIHNhbHQsXG4gICAgdXNlcm5hbWU6IGZvcm1hdFVzZXJuYW1lLFxuICAgIHVzZXJBY2Nlc3M6IDEsXG4gICAgdmVyaWZpZWRFbWFpbDogZmFsc2UsXG4gICAgdmVyaWZpZWRFbWFpbENvZGUsXG4gICAgdmVyaWZpZWRQaG9uZTogZmFsc2UsXG4gICAgdmVyaWZpZWRQaG9uZUNvZGVcbiAgfTtcblxuICAvLyBBZGQgbmV3IHVzZXIgaW4gQXJhbmdvREJcbiAgY29uc3QgaW5zZXJ0UXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdXNlcnMgUkVUVVJOIE5FV2A7XG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSB8fCB7fSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzOiB7dXNlcm5hbWV9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICAgLnRoZW4oKCkgPT4gbnVsbClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVVzZXIgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcjogVXNlcik6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIHRhZ3MgPSBbXSwgdXNlcklkLCAuLi51cGRhdGVkfSA9IHVzZXI7XG4gIGxldCB1c2VyRG9jSWQ6IHN0cmluZztcblxuICBpZihfaWQgfHwgaWQpIHtcbiAgICB1c2VyRG9jSWQgPSBfaWQgfHwgaWQ7XG4gIH0gZWxzZSBpZihfa2V5IHx8IHVzZXJJZCkge1xuICAgIHVzZXJEb2NJZCA9IGB1c2Vycy8ke19rZXkgfHwgdXNlcklkfWA7XG4gIH1cblxuICBjb25zdCB1c2VyUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCB1ID0gRE9DVU1FTlQoJHt1c2VyRG9jSWR9KVxuICAgIFVQREFURSB1IFdJVEggJHt1cGRhdGVkfSBJTiB1c2Vyc1xuICAgIFJFVFVSTiBORVdgO1xuXG4gIGNvbnN0IHVwZGF0ZWRVc2VyID0gYXdhaXQgZGF0YWJhc2UucXVlcnkodXNlclF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xuXG4gIGNvbnN0IHRhZ0NvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbignaXNUYWdnZWQnKTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwodGFncy5tYXAoKHtpZDogdGFnRG9jSWQsIG5hbWV9KSA9PiB7XG4gICAgY29uc3QgZWRnZSA9IHtcbiAgICAgIF9mcm9tOiB0YWdEb2NJZCxcbiAgICAgIF9rZXk6IGNyZWF0ZUhhc2goYGlzVGFnZ2VkLSR7dGFnRG9jSWR9LSR7dXNlckRvY0lkfWApLFxuICAgICAgX3RvOiB1c2VyRG9jSWQsXG4gICAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICAgIG5hbWVcbiAgICB9O1xuICAgIGNvbnN0IHRhZ1F1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaXQgSU4gaXNUYWdnZWRcbiAgICAgIEZJTFRFUiBpdC5fZnJvbSA9PSAke3RhZ0RvY0lkfSAmJiBpdC5fdG8gPT0gJHt1c2VyRG9jSWR9ICYmIGl0Lm5hbWUgPT0gJHtuYW1lfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIGl0YDtcblxuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeSh0YWdRdWVyeSlcbiAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLnRoZW4oKHRhZ0VkZ2UpID0+IHtcbiAgICAgICAgaWYoISF0YWdFZGdlKSB7XG4gICAgICAgICAgcmV0dXJuIHRhZ0VkZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gIH0pKTtcblxuICByZXR1cm4gdXBkYXRlZFVzZXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29uZmlybUNvZGUgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJncyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdjb25maXJtRW1haWwnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2NvZGUsIHR5cGV9ID0gYXJncztcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHUgPSBET0NVTUVOVCgke3VzZXJEb2NJZH0pIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkgfHwge30pXG4gICAgICAudGhlbigoe3ZlcmlmaWVkRW1haWxDb2RlLCB2ZXJpZmllZFBob25lQ29kZX06IFVzZXIpID0+IHtcbiAgICAgICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gdmVyaWZpZWRFbWFpbENvZGU7XG4gICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IHZlcmlmaWVkUGhvbmVDb2RlO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgYXJnczoge2NvZGUsIHR5cGUsIHVzZXJJZDogc2Vzc2lvbklkfSxcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgICk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZCwgdXNlckFjY2Vzczogc2Vzc2lvbkFjY2Vzc319ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJJZH0gPSBhcmdzO1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gc2Vzc2lvbkFjY2VzcyA+IDI7XG5cbiAgaWYoIWlzQWRtaW4gJiYgKHNlc3Npb25JZCAhPT0gdXNlcklkKSkge1xuICAgIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1Ll9rZXkgPT0gJHt1c2VySWR9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSB1IElOIHVzZXJzXG4gICAgUkVUVVJOIE9MRGA7XG5cbiAgLy8gU3RyaXBlXG4gIGNvbnN0IHN0cmlwZUNsaWVudCA9IG5ldyBTdHJpcGUoQ29uZmlnLmdldCgnc3RyaXBlLnRva2VuJyksIHthcGlWZXJzaW9uLCB0eXBlc2NyaXB0OiB0cnVlfSk7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyOiBVc2VyID0ge30pID0+IHN0cmlwZUNsaWVudC5jdXN0b21lcnMuZGVsKHVzZXIuc3RyaXBlQ3VzdG9tZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHN0cmlwZUNsaWVudC5hY2NvdW50cy5kZWwodXNlci5zdHJpcGVBY2NvdW50SWQpKVxuICAgICAgLnRoZW4oKCkgPT4gdXNlcikpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYWN0aXZhdGVVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkLCB1c2VyQWNjZXNzOiBzZXNzaW9uQWNjZXNzfX0gPSBjb250ZXh0O1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gc2Vzc2lvbkFjY2VzcyA+IDI7XG5cbiAgaWYoIWlzQWRtaW4gJiYgKHNlc3Npb25JZCAhPT0gdXNlcklkKSkge1xuICAgIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZDogVXNlciA9IHtcbiAgICB1c2VyQWNjZXNzOiAwXG4gIH07XG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHt1c2VySWR9IFdJVEggJHt1cGRhdGVkfSBJTiB1c2VycyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlzcGxheU5hbWUgPSAodXNlcjogVXNlciA9IHt9KTogc3RyaW5nID0+IHtcbiAgY29uc3Qge2ZpcnN0LCBsYXN0LCBuYW1lID0gJycsIHVzZXJuYW1lID0gJyd9ID0gdXNlcjtcbiAgY29uc3QgZnVsbG5hbWU6IHN0cmluZyA9IChbZmlyc3QsIGxhc3RdKS5qb2luKCcgJykudHJpbSgpO1xuXG4gIGlmKCFpc0VtcHR5KG5hbWUpKSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH0gZWxzZSBpZihmdWxsbmFtZSAhPT0gJycpIHtcbiAgICByZXR1cm4gZnVsbG5hbWU7XG4gIH0gZWxzZSBpZighaXNFbXB0eSh1c2VybmFtZSkpIHtcbiAgICByZXR1cm4gdXNlcm5hbWU7XG4gIH1cblxuICByZXR1cm4gJ1Vua25vd24nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlc3Npb25Vc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0U2Vzc2lvblVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIGZpZWxkcywgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkLCB1c2VybmFtZX19ID0gY29udGV4dDtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0VXNlck9wdGlvbmFsKGZpZWxkcyk7XG5cbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBMRVQgdSA9IERPQ1VNRU5UKFwidXNlcnMvJHtzZXNzaW9uSWR9XCIpXG4gICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyID0ge30pID0+IHVzZXIpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZSwgdXNlcklkOiBzZXNzaW9uSWR9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlciA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcmdzOiBhbnkpOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlcic7XG4gIGNvbnN0IHt1c2VySWR9ID0gYXJncztcbiAgY29uc3Qge2RhdGFiYXNlLCBmaWVsZHN9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBMRVQgdSA9IERPQ1VNRU5UKFwidXNlcnMvJHtmb3JtYXRVc2VySWR9XCIpXG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIEZJTFRFUiB1LnVzZXJBY2Nlc3MgPiAwXG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyID0ge30pID0+IHVzZXIpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3MsXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpXG4gICAgICAudGhlbigoKSA9PiB7IH0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VycyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBvcHRpb25zPzogVXNlck9wdGlvbnMpOiBQcm9taXNlPFVzZXJbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRVc2VyTGlzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgdXNlcm5hbWV9ID0gcGFyc2VVc2VyT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0VXNlck9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsndS51c2VyQWNjZXNzID4gMCddO1xuXG4gIGlmKCFpc0VtcHR5KHVzZXJuYW1lKSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgU09SVCB1LnVzZXJuYW1lXG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlSZWFjdGlvbnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtyZWFjdGlvbnMgPSBbXSwgdXNlcm5hbWV9OiBhbnksXG4gIG9wdGlvbnM/OiBVc2VyT3B0aW9uc1xuKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlcnNCeVJlYWN0aW9ucyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uczogc3RyaW5nW10gPSAgcmVhY3Rpb25zLm1hcCgocmVhY3Rpb25OYW1lOiBzdHJpbmcpID0+IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW2BQT1NJVElPTigke0pTT04uc3RyaW5naWZ5KGZvcm1hdFJlYWN0aW9ucyl9LCBMT1dFUihyLm5hbWUpKWBdO1xuXG4gIGlmKCFpc0VtcHR5KHVzZXJuYW1lKSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtmb3JtYXRVc2VybmFtZX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdSwgciBJTiBPVVRCT1VORCBcIiR7Zm9ybWF0U2Vzc2lvbklkfVwiIGhhc1JlYWN0aW9uc1xuICAgIE9QVElPTlMge3ZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7ZmlsdGVyQnkubGVuZ3RoID8gYEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1gIDogJyd9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgY29uc29sZS5sb2coe2FxbFF1ZXJ5fSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2Vyc0J5VGFncyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge3RhZ3MsIHVzZXJuYW1lfTogYW55LFxuICBvcHRpb25zPzogVXNlck9wdGlvbnNcbik6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFVzZXJzQnlUYWdzJztcbiAgY29uc3Qge2RhdGFiYXNlLCBmaWVsZHMsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0VGFnczogc3RyaW5nW10gPSAgdGFncy5yZWR1Y2UoKGxpc3Q6IHN0cmluZ1tdLCB0YWdOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZighaXNFbXB0eSh0YWdOYW1lKSkge1xuICAgICAgbGlzdC5wdXNoKHBhcnNlQ2hhcih0YWdOYW1lLCAzMikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH0sIFtdKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW2B1Ll9rZXkgIT0gXCIke3Nlc3Npb25JZH1cImBdO1xuXG4gIGlmKCFpc0VtcHR5KHVzZXJuYW1lKSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtmb3JtYXRVc2VybmFtZX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdCBJTiB0YWdzXG4gICAgRklMVEVSIFBPU0lUSU9OKCR7SlNPTi5zdHJpbmdpZnkoZm9ybWF0VGFncyl9LCBMT1dFUih0Lm5hbWUpKVxuICAgIEZPUiB1LCBpdCBJTiBPVVRCT1VORCB0IGlzVGFnZ2VkXG4gICAgT1BUSU9OUyB7YmZzOiB0cnVlLCB1bmlxdWVWZXJ0aWNlczogXCJnbG9iYWxcIiwgdmVydGV4Q29sbGVjdGlvbnM6IFwidXNlcnNcIn1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgJHtmaWx0ZXJCeS5sZW5ndGggPyBgRklMVEVSICR7ZmlsdGVyQnkuam9pbignICYmICcpfWAgOiAnJ31cbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICBjb25zb2xlLmxvZygnZ2V0VXNlcnNCeVRhZ3MnLCBhcWxRdWVyeSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2Vyc0J5TGF0ZXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHt1c2VybmFtZX0sIG9wdGlvbnM/OiBVc2VyT3B0aW9ucyk6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFVzZXJzQnlMYXRlc3QnO1xuICBjb25zdCB7ZGF0YWJhc2UsIGZpZWxkcywgc2Vzc2lvbjoge3VzZXJJZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IGZpbHRlciA9IFsndS5faWQgIT0gc2Vzc2lvbi5faWQnXTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0VXNlck9wdGlvbmFsKGZpZWxkcyk7XG5cbiAgaWYoIWlzRW1wdHkodXNlcm5hbWUpKSB7XG4gICAgZmlsdGVyLnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIExFVCBzZXNzaW9uID0gRE9DVU1FTlQoXCJ1c2Vycy8ke3VzZXJJZH1cIilcbiAgICBGSUxURVIgJHtmaWx0ZXIuam9pbignICYmICcpfVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBMRVQgZGlzdGFuY2UgPSBESVNUQU5DRSh1LmxhdGl0dWRlIHx8IDAsIHUubG9uZ2l0dWRlIHx8IDAsIHNlc3Npb24ubGF0aXR1ZGUgfHwgMCwgc2Vzc2lvbi5sb25naXR1ZGUgfHwgMClcbiAgICAke2xpbWl0LmFxbH1cbiAgICBTT1JUIGRpc3RhbmNlIEFTQywgdS5hZGRlZCBERVNDXG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hTZXNzaW9uID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIHtleHBpcmVzLCB0b2tlbn0pOiBQcm9taXNlPFNlc3Npb25Ub2tlbiB8IFNlc3Npb25FcnJvcj4gPT4ge1xuICBjb25zdCB7ZXJyb3J9ID0gZ2V0U2Vzc2lvbih0b2tlbik7XG5cbiAgaWYoZXJyb3IpIHtcbiAgICByZXR1cm4ge2Vycm9yczogW2Vycm9yXX07XG4gIH1cblxuICBjb25zdCB7ZXhwLCB1c2VySWQsIHVzZXJuYW1lLCB1c2VyQWNjZXNzfSA9IGdldFNlc3Npb24odG9rZW4pO1xuICBjb25zdCBub3c6IG51bWJlciA9IE1hdGguY2VpbChEYXRlVGltZS5sb2NhbCgpLnRvU2Vjb25kcygpKTtcblxuICBpZihleHAgPiBub3cpIHtcbiAgICByZXR1cm4gY3JlYXRlVG9rZW4odXNlcklkLCB1c2VybmFtZSwgdXNlckFjY2VzcywgZXhwaXJlcyk7XG4gIH1cblxuICByZXR1cm4ge2Vycm9yczogWydzZXNzaW9uX2V4cGlyZWQnXX07XG59O1xuXG5leHBvcnQgY29uc3Qgc2lnbkluID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFyZ3MpOiBQcm9taXNlPFNlc3Npb25Ub2tlbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdzaWduSW4nO1xuICBjb25zdCB7ZXhwaXJlcywgcGFzc3dvcmQsIHVzZXJuYW1lfSA9IGFyZ3M7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZm9ybWF0UGFzc3dvcmQ6IHN0cmluZyA9IHBhcnNlUGFzc3dvcmQocGFzc3dvcmQpO1xuICBjb25zdCBmb3JtYXRFeHBpcmVzOiBudW1iZXIgPSBwYXJzZU51bShleHBpcmVzKSB8fCAxNTtcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG5cbiAgaWYoaXNFbXB0eShmb3JtYXRVc2VybmFtZSkgfHwgaXNFbXB0eShmb3JtYXRQYXNzd29yZCkpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZX0sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1LnVzZXJuYW1lID09ICR7Zm9ybWF0VXNlcm5hbWV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiB1YDtcbiAgY29uc3QgY2hlY2tVc2VyOiBVc2VyID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoY2hlY2tRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZTogZm9ybWF0VXNlcm5hbWV9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICAgLnRoZW4oKCkgPT4gbnVsbClcbiAgICApO1xuXG4gIGlmKCFjaGVja1VzZXIpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZX0sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVVUSEVOVElDQVRJT05cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHtfa2V5OiB1c2VySWQsIHNhbHQsIHVzZXJBY2Nlc3N9ID0gY2hlY2tVc2VyO1xuICBjb25zdCBhdXRoUGFzc3dvcmQ6IHN0cmluZyA9IGNyZWF0ZVBhc3N3b3JkKGZvcm1hdFBhc3N3b3JkLCBzYWx0KTtcblxuICBpZihjaGVja1VzZXIucGFzc3dvcmQgIT09IGF1dGhQYXNzd29yZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BVVRIRU5USUNBVElPTlxuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKHVzZXJJZCwgdXNlcm5hbWUsIHVzZXJBY2Nlc3MsIGZvcm1hdEV4cGlyZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25PdXQgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJncyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdzaWduT3V0JztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWQsIHVzZXJuYW1lfX0gPSBjb250ZXh0O1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICBsYXN0T25saW5lOiBEYXRlLm5vdygpLFxuICAgIHNlc3Npb25JZDogbnVsbFxuICB9O1xuICBjb25zdCBzZXNzaW9uUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCB1ID0gRE9DVU1FTlQoJHt1c2VyRG9jSWR9KVxuICAgIFVQREFURSB1IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgZGF0YWJhc2UucXVlcnkoc2Vzc2lvblF1ZXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBhcmdzOiB7dXNlcm5hbWUsIHVzZXJJZDogc2Vzc2lvbklkfSxcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgICk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY3RpdmVVc2VyQ291bnQgPSAoY29udGV4dDogQXBpQ29udGV4dCkgPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRBY3RpdmVVc2VyQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgY291bnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGRvY3MgPSAoXG4gICAgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgdS5hY3RpdmUgPT0gdHJ1ZVxuICAgIFJFVFVSTiB1XG4gIClcbiAgUkVUVVJOIExFTkdUSChkb2NzKWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGNvdW50UXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpXG4gICAgICAudGhlbigoKSA9PiAwKVxuICAgICk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBVU87QUFDUCxzQkFBa0I7QUFJbEIscUJBQW9CO0FBQ3BCLG1CQUF1QjtBQUN2QixvQkFBbUI7QUFFbkIsb0JBQXFCO0FBR3JCLElBQUFBLGdCQUFzRjtBQUN0RixxQkFBaUU7QUFFakUsTUFBTSxnQkFBd0I7QUFDOUIsTUFBTSxhQUFrQjtBQVFqQixJQUFLLGFBQUwsa0JBQUtDLGdCQUFMO0FBQ0wsRUFBQUEsd0JBQUEsaUJBQWMsS0FBZDtBQUNBLEVBQUFBLHdCQUFBLFlBQVMsS0FBVDtBQUNBLEVBQUFBLHdCQUFBLGFBQVUsS0FBVjtBQUNBLEVBQUFBLHdCQUFBLG1CQUFnQixLQUFoQjtBQUNBLEVBQUFBLHdCQUFBLFdBQVEsS0FBUjtBQUxVLFNBQUFBO0FBQUEsR0FBQTtBQVFMLE1BQU0sY0FBYyxDQUN6QixRQUNBLFVBQ0EsWUFDQSxV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TUFBTSxFQUFDLFVBQVUsUUFBUSxVQUFTO0FBQUEsUUFDbEMsVUFBVTtBQUFBLFFBQ1YsT0FBTyx5QkFBVztBQUFBLE1BQ3BCLEdBQUcsT0FBTyxPQUFPO0FBQUEsSUFDakI7QUFBQSxFQUNKLFNBQVEsT0FBTztBQUNiLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUO0FBRU8sTUFBTSxxQkFBcUIsQ0FBQyxZQUF3QjtBQUN6RCxRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFDbkIsUUFBTSxhQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPN0IsU0FBTyxTQUFTLE1BQU0sVUFBVSxFQUM3QixLQUFLLENBQUMsV0FBVyxPQUFPLEtBQUssQ0FBQyxFQUM5QjtBQUFBLElBQU0sQ0FBQyxjQUFVLHdCQUFTO0FBQUEsTUFDekI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8seUJBQVc7QUFBQSxJQUNwQixHQUFHLE9BQU8sT0FBTyxFQUNkLEtBQUssTUFBTSxDQUFDO0FBQUEsRUFDZjtBQUNKOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfdXRpbHMiLCAiVXNlckFjY2VzcyIsICJpc0VtcHR5IiwgIlN0cmlwZSJdCn0K
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvdXNlcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBjcmVhdGVIYXNoLFxuICBjcmVhdGVQYXNzd29yZCxcbiAgcGFyc2VDaGFyLFxuICBwYXJzZUVtYWlsLFxuICBwYXJzZUlkLFxuICBwYXJzZU51bSxcbiAgcGFyc2VQYXNzd29yZCxcbiAgcGFyc2VQaG9uZSxcbiAgcGFyc2VVc2VybmFtZVxufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgU3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoJztcbmltcG9ydCB7VXNlcn0gZnJvbSAnLi4vdHlwZXMvdXNlcnMnO1xuaW1wb3J0IHtFcnJvclR5cGVzLCBnZXRMaW1pdCwgbG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZX0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtnZXRTZXNzaW9uLCBTZXNzaW9uRXJyb3IsIFNlc3Npb25Ub2tlbiwgc2V0U2Vzc2lvbn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvbic7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICd1c2Vycyc7XG5jb25zdCBhcGlWZXJzaW9uOiBhbnkgPSAnMjAyMC0wMy0wMic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck9wdGlvbnMge1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFVzZXJBY2Nlc3Mge1xuICBERUFDVElWQVRFRCA9IDAsXG4gIEFDVElWRSA9IDEsXG4gIFBSRU1JVU0gPSAyLFxuICBDT05URU5UX0FETUlOID0gMyxcbiAgQURNSU4gPSA0XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUb2tlbiA9IChcbiAgdXNlcklkOiBzdHJpbmcsXG4gIHVzZXJuYW1lOiBzdHJpbmcsXG4gIHVzZXJBY2Nlc3M6IG51bWJlcixcbiAgZXhwaXJlczogbnVtYmVyID0gMTVcbik6IFNlc3Npb25Ub2tlbiA9PiB7XG4gIGNvbnN0IG5vdzogRGF0ZVRpbWUgPSBEYXRlVGltZS5sb2NhbCgpO1xuICBjb25zdCBzZXNzaW9uRXhwaXJlczogRGF0ZVRpbWUgPSBub3cucGx1cyh7bWludXRlczogZXhwaXJlc30pO1xuICBjb25zdCBpYXQ6IG51bWJlciA9IE1hdGguZmxvb3Iobm93LnRvU2Vjb25kcygpKTtcbiAgY29uc3QgZXhwOiBudW1iZXIgPSBNYXRoLmZsb29yKHNlc3Npb25FeHBpcmVzLnRvU2Vjb25kcygpKTtcblxuICBjb25zdCB0b2tlbiA9IHNldFNlc3Npb24oe1xuICAgIGV4cCxcbiAgICBpYXQsXG4gICAgdXNlcm5hbWUsXG4gICAgdXNlckFjY2VzcyxcbiAgICB1c2VySWRcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBleHBpcmVzOiBzZXNzaW9uRXhwaXJlcy50b01pbGxpcygpLFxuICAgIGlzc3VlZDogbm93LnRvTWlsbGlzKCksXG4gICAgdG9rZW5cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyT3B0aW9uYWwgPSAoZmllbGRzOiBzdHJpbmdbXSA9IFtdKSA9PlxuICBmaWVsZHMucmVkdWNlKChzZWxlY3RzOiBhbnksIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ3VzZXJzJywgJ3UnLCBmaWVsZCwgc2VsZWN0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdHM7XG4gIH0sIHtvYmplY3RzOiBbXSwgcXVlcmllczogW119KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVXNlck9wdGlvbnMgPSAob3B0aW9uczogVXNlck9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXQ6IGdldExpbWl0KGZyb20sIHRvKVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXIgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJnczogYW55KTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJ9ID0gYXJncztcbiAgY29uc3Qge2VtYWlsLCBwYXNzd29yZCwgcGhvbmUsIHVzZXJuYW1lfSA9IHVzZXI7XG4gIGNvbnN0IHNhbHQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYCR7dXNlcm5hbWV9JHtwYXNzd29yZH1gLCBudWxsKTtcbiAgY29uc3QgZW5jcnlwdGVkUGFzc3dvcmQgPSBjcmVhdGVQYXNzd29yZChwYXNzd29yZCwgc2FsdCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZm9ybWF0RW1haWw6IHN0cmluZyA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZTogc3RyaW5nID0gcGFyc2VQaG9uZShwaG9uZSk7XG5cbiAgaWYoIWZvcm1hdFVzZXJuYW1lIHx8ICFwYXNzd29yZCB8fCAoIWZvcm1hdFBob25lICYmICFmb3JtYXRFbWFpbCkpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZX0sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtgdS51c2VybmFtZSA9PSBcIiR7Zm9ybWF0VXNlcm5hbWV9XCJgXTtcblxuICBpZihmb3JtYXRFbWFpbCkge1xuICAgIGZpbHRlcnMucHVzaChgdS5lbWFpbCA9PSBcIiR7Zm9ybWF0RW1haWx9XCJgKTtcbiAgfVxuXG4gIGlmKGZvcm1hdFBob25lKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1LnBob25lID09ICR7Zm9ybWF0UGhvbmV9YCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyB8fCAnKX1cbiAgICBSRVRVUk4gdWA7XG4gIGNvbnN0IGV4aXN0aW5nVXNlcnMgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShjaGVja1F1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgIC50aGVuKCgpID0+IG51bGwpXG4gICAgKTtcblxuICBpZihleGlzdGluZ1VzZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfVVNFUk5BTUVcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHZlcmlmaWVkRW1haWxDb2RlOiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMDAwMCArIChNYXRoLnJhbmRvbSgpICogOTAwMDAwKSk7XG4gIGNvbnN0IHZlcmlmaWVkUGhvbmVDb2RlOiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMDAwMCArIChNYXRoLnJhbmRvbSgpICogOTAwMDAwKSk7XG5cbiAgLy8gQWRkIG5ldyB1c2VyIHByb3BlcnRpZXNcbiAgY29uc3QgaW5zZXJ0OiBVc2VyID0ge1xuICAgIF9rZXk6IGNyZWF0ZUhhc2godXNlcm5hbWUsIG51bGwpLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIGVtYWlsOiBmb3JtYXRFbWFpbCxcbiAgICBtb2RpZmllZDogRGF0ZS5ub3coKSxcbiAgICBwYXNzd29yZDogZW5jcnlwdGVkUGFzc3dvcmQsXG4gICAgcGhvbmU6IGZvcm1hdFBob25lLFxuICAgIHNhbHQsXG4gICAgdXNlcm5hbWU6IGZvcm1hdFVzZXJuYW1lLFxuICAgIHVzZXJBY2Nlc3M6IDEsXG4gICAgdmVyaWZpZWRFbWFpbDogZmFsc2UsXG4gICAgdmVyaWZpZWRFbWFpbENvZGUsXG4gICAgdmVyaWZpZWRQaG9uZTogZmFsc2UsXG4gICAgdmVyaWZpZWRQaG9uZUNvZGVcbiAgfTtcblxuICAvLyBBZGQgbmV3IHVzZXIgaW4gQXJhbmdvREJcbiAgY29uc3QgaW5zZXJ0UXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdXNlcnMgUkVUVVJOIE5FV2A7XG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSB8fCB7fSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzOiB7dXNlcm5hbWV9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICAgLnRoZW4oKCkgPT4gbnVsbClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVVzZXIgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcjogVXNlcik6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIHRhZ3MgPSBbXSwgdXNlcklkLCAuLi51cGRhdGVkfSA9IHVzZXI7XG4gIGxldCB1c2VyRG9jSWQ6IHN0cmluZztcblxuICBpZihfaWQgfHwgaWQpIHtcbiAgICB1c2VyRG9jSWQgPSBfaWQgfHwgaWQ7XG4gIH0gZWxzZSBpZihfa2V5IHx8IHVzZXJJZCkge1xuICAgIHVzZXJEb2NJZCA9IGB1c2Vycy8ke19rZXkgfHwgdXNlcklkfWA7XG4gIH1cblxuICBjb25zdCB1c2VyUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCB1ID0gRE9DVU1FTlQoJHt1c2VyRG9jSWR9KVxuICAgIFVQREFURSB1IFdJVEggJHt1cGRhdGVkfSBJTiB1c2Vyc1xuICAgIFJFVFVSTiBORVdgO1xuXG4gIGNvbnN0IHVwZGF0ZWRVc2VyID0gYXdhaXQgZGF0YWJhc2UucXVlcnkodXNlclF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xuXG4gIGNvbnN0IHRhZ0NvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbignaXNUYWdnZWQnKTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwodGFncy5tYXAoKHtpZDogdGFnRG9jSWQsIG5hbWV9KSA9PiB7XG4gICAgY29uc3QgZWRnZSA9IHtcbiAgICAgIF9mcm9tOiB0YWdEb2NJZCxcbiAgICAgIF9rZXk6IGNyZWF0ZUhhc2goYGlzVGFnZ2VkLSR7dGFnRG9jSWR9LSR7dXNlckRvY0lkfWApLFxuICAgICAgX3RvOiB1c2VyRG9jSWQsXG4gICAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICAgIG5hbWVcbiAgICB9O1xuICAgIGNvbnN0IHRhZ1F1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaXQgSU4gaXNUYWdnZWRcbiAgICAgIEZJTFRFUiBpdC5fZnJvbSA9PSAke3RhZ0RvY0lkfSAmJiBpdC5fdG8gPT0gJHt1c2VyRG9jSWR9ICYmIGl0Lm5hbWUgPT0gJHtuYW1lfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIGl0YDtcblxuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeSh0YWdRdWVyeSlcbiAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLnRoZW4oKHRhZ0VkZ2UpID0+IHtcbiAgICAgICAgaWYoISF0YWdFZGdlKSB7XG4gICAgICAgICAgcmV0dXJuIHRhZ0VkZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gIH0pKTtcblxuICByZXR1cm4gdXBkYXRlZFVzZXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29uZmlybUNvZGUgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJncyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdjb25maXJtRW1haWwnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2NvZGUsIHR5cGV9ID0gYXJncztcbiAgY29uc3QgdXNlckRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHUgPSBET0NVTUVOVCgke3VzZXJEb2NJZH0pIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkgfHwge30pXG4gICAgICAudGhlbigoe3ZlcmlmaWVkRW1haWxDb2RlLCB2ZXJpZmllZFBob25lQ29kZX06IFVzZXIpID0+IHtcbiAgICAgICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gdmVyaWZpZWRFbWFpbENvZGU7XG4gICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IHZlcmlmaWVkUGhvbmVDb2RlO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgYXJnczoge2NvZGUsIHR5cGUsIHVzZXJJZDogc2Vzc2lvbklkfSxcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgICk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZCwgdXNlckFjY2Vzczogc2Vzc2lvbkFjY2Vzc319ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJJZH0gPSBhcmdzO1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gc2Vzc2lvbkFjY2VzcyA+IDI7XG5cbiAgaWYoIWlzQWRtaW4gJiYgKHNlc3Npb25JZCAhPT0gdXNlcklkKSkge1xuICAgIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1Ll9rZXkgPT0gJHt1c2VySWR9XG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSB1IElOIHVzZXJzXG4gICAgUkVUVVJOIE9MRGA7XG5cbiAgLy8gU3RyaXBlXG4gIGNvbnN0IHN0cmlwZUNsaWVudCA9IG5ldyBTdHJpcGUoQ29uZmlnLmdldCgnc3RyaXBlLnRva2VuJyksIHthcGlWZXJzaW9uLCB0eXBlc2NyaXB0OiB0cnVlfSk7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyOiBVc2VyID0ge30pID0+IHN0cmlwZUNsaWVudC5jdXN0b21lcnMuZGVsKHVzZXIuc3RyaXBlQ3VzdG9tZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHN0cmlwZUNsaWVudC5hY2NvdW50cy5kZWwodXNlci5zdHJpcGVBY2NvdW50SWQpKVxuICAgICAgLnRoZW4oKCkgPT4gdXNlcikpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYWN0aXZhdGVVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkLCB1c2VyQWNjZXNzOiBzZXNzaW9uQWNjZXNzfX0gPSBjb250ZXh0O1xuICBjb25zdCBpc0FkbWluOiBib29sZWFuID0gc2Vzc2lvbkFjY2VzcyA+IDI7XG5cbiAgaWYoIWlzQWRtaW4gJiYgKHNlc3Npb25JZCAhPT0gdXNlcklkKSkge1xuICAgIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZDogVXNlciA9IHtcbiAgICB1c2VyQWNjZXNzOiAwXG4gIH07XG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHt1c2VySWR9IFdJVEggJHt1cGRhdGVkfSBJTiB1c2VycyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlzcGxheU5hbWUgPSAodXNlcjogVXNlciA9IHt9KTogc3RyaW5nID0+IHtcbiAgY29uc3Qge2ZpcnN0LCBsYXN0LCBuYW1lID0gJycsIHVzZXJuYW1lID0gJyd9ID0gdXNlcjtcbiAgY29uc3QgZnVsbG5hbWU6IHN0cmluZyA9IChbZmlyc3QsIGxhc3RdKS5qb2luKCcgJykudHJpbSgpO1xuXG4gIGlmKG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZTtcbiAgfSBlbHNlIGlmKGZ1bGxuYW1lICE9PSAnJykge1xuICAgIHJldHVybiBmdWxsbmFtZTtcbiAgfSBlbHNlIGlmKHVzZXJuYW1lKSB7XG4gICAgcmV0dXJuIHVzZXJuYW1lO1xuICB9XG5cbiAgcmV0dXJuICdVbmtub3duJztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZXNzaW9uVXNlciA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFNlc3Npb25Vc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlLCBmaWVsZHMsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZCwgdXNlcm5hbWV9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgTEVUIHUgPSBET0NVTUVOVChcInVzZXJzLyR7c2Vzc2lvbklkfVwiKVxuICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gIFJFVFVSTiBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigodXNlciA9IHt9KSA9PiB1c2VyKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzOiB7dXNlcm5hbWUsIHVzZXJJZDogc2Vzc2lvbklkfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgYXJnczogYW55KTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFVzZXInO1xuICBjb25zdCB7dXNlcklkfSA9IGFyZ3M7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcblxuICAvLyBHZXQgZGF0YSBmcm9tIGRhdGFiYXNlXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgTEVUIHUgPSBET0NVTUVOVChcInVzZXJzLyR7Zm9ybWF0VXNlcklkfVwiKVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBGSUxURVIgdS51c2VyQWNjZXNzID4gMFxuICAgIFJFVFVSTiBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigodXNlciA9IHt9KSA9PiB1c2VyKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBhcmdzLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICAgLnRoZW4oKCkgPT4geyB9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlcnMgPSAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IFVzZXJPcHRpb25zKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlckxpc3QnO1xuICBjb25zdCB7ZGF0YWJhc2UsIGZpZWxkc30gPSBjb250ZXh0O1xuICBjb25zdCB7bGltaXQsIHVzZXJuYW1lfSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuICBjb25zdCBmaWx0ZXJCeTogc3RyaW5nW10gPSBbJ3UudXNlckFjY2VzcyA+IDAnXTtcblxuICBpZih1c2VybmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgU09SVCB1LnVzZXJuYW1lXG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlSZWFjdGlvbnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtyZWFjdGlvbnMgPSBbXSwgdXNlcm5hbWV9OiBhbnksXG4gIG9wdGlvbnM/OiBVc2VyT3B0aW9uc1xuKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlcnNCeVJlYWN0aW9ucyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uczogc3RyaW5nW10gPSAgcmVhY3Rpb25zLm1hcCgocmVhY3Rpb25OYW1lOiBzdHJpbmcpID0+IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW2BQT1NJVElPTigke0pTT04uc3RyaW5naWZ5KGZvcm1hdFJlYWN0aW9ucyl9LCBMT1dFUihyLm5hbWUpKWBdO1xuXG4gIGlmKHVzZXJuYW1lKSB7XG4gICAgZmlsdGVyQnkucHVzaChgQ09OVEFJTlModS51c2VybmFtZSwgXCIke2Zvcm1hdFVzZXJuYW1lfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiB1LCByIElOIE9VVEJPVU5EIFwiJHtmb3JtYXRTZXNzaW9uSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJ1c2Vyc1wifVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICAke2ZpbHRlckJ5Lmxlbmd0aCA/IGBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9YCA6ICcnfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFJFVFVSTiBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIGNvbnNvbGUubG9nKHthcWxRdWVyeX0pO1xuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IFtdKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlcnNCeVRhZ3MgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHt0YWdzLCB1c2VybmFtZX06IGFueSxcbiAgb3B0aW9ucz86IFVzZXJPcHRpb25zXG4pOiBQcm9taXNlPFVzZXJbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRVc2Vyc0J5VGFncyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFRhZ3M6IHN0cmluZ1tdID0gIHRhZ3MucmVkdWNlKChsaXN0OiBzdHJpbmdbXSwgdGFnTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgaWYodGFnTmFtZSkge1xuICAgICAgbGlzdC5wdXNoKHBhcnNlQ2hhcih0YWdOYW1lLCAzMikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH0sIFtdKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlVXNlck9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW2B1Ll9rZXkgIT0gXCIke3Nlc3Npb25JZH1cImBdO1xuXG4gIGlmKHVzZXJuYW1lKSB7XG4gICAgZmlsdGVyQnkucHVzaChgQ09OVEFJTlModS51c2VybmFtZSwgXCIke2Zvcm1hdFVzZXJuYW1lfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiB0IElOIHRhZ3NcbiAgICBGSUxURVIgUE9TSVRJT04oJHtKU09OLnN0cmluZ2lmeShmb3JtYXRUYWdzKX0sIExPV0VSKHQubmFtZSkpXG4gICAgRk9SIHUsIGl0IElOIE9VVEJPVU5EIHQgaXNUYWdnZWRcbiAgICBPUFRJT05TIHtiZnM6IHRydWUsIHVuaXF1ZVZlcnRpY2VzOiBcImdsb2JhbFwiLCB2ZXJ0ZXhDb2xsZWN0aW9uczogXCJ1c2Vyc1wifVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICAke2ZpbHRlckJ5Lmxlbmd0aCA/IGBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9YCA6ICcnfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIGNvbnNvbGUubG9nKCdnZXRVc2Vyc0J5VGFncycsIGFxbFF1ZXJ5KTtcbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlMYXRlc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwge3VzZXJuYW1lfSwgb3B0aW9ucz86IFVzZXJPcHRpb25zKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0VXNlcnNCeUxhdGVzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VVc2VyT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZmlsdGVyID0gWyd1Ll9pZCAhPSBzZXNzaW9uLl9pZCddO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcblxuICBpZih1c2VybmFtZSkge1xuICAgIGZpbHRlci5wdXNoKGBDT05UQUlOUyh1LnVzZXJuYW1lLCBcIiR7cGFyc2VVc2VybmFtZSh1c2VybmFtZSl9XCIpYCk7XG4gIH1cblxuICAvLyBHZXQgZGF0YSBmcm9tIGRhdGFiYXNlXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBMRVQgc2Vzc2lvbiA9IERPQ1VNRU5UKFwidXNlcnMvJHt1c2VySWR9XCIpXG4gICAgRklMVEVSICR7ZmlsdGVyLmpvaW4oJyAmJiAnKX1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgTEVUIGRpc3RhbmNlID0gRElTVEFOQ0UodS5sYXRpdHVkZSB8fCAwLCB1LmxvbmdpdHVkZSB8fCAwLCBzZXNzaW9uLmxhdGl0dWRlIHx8IDAsIHNlc3Npb24ubG9uZ2l0dWRlIHx8IDApXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgU09SVCBkaXN0YW5jZSBBU0MsIHUuYWRkZWQgREVTQ1xuICAgIFJFVFVSTiBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoU2Vzc2lvbiA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCB7ZXhwaXJlcywgdG9rZW59KTogUHJvbWlzZTxTZXNzaW9uVG9rZW4gfCBTZXNzaW9uRXJyb3I+ID0+IHtcbiAgY29uc3Qge2Vycm9yfSA9IGdldFNlc3Npb24odG9rZW4pO1xuXG4gIGlmKGVycm9yKSB7XG4gICAgcmV0dXJuIHtlcnJvcnM6IFtlcnJvcl19O1xuICB9XG5cbiAgY29uc3Qge2V4cCwgdXNlcklkLCB1c2VybmFtZSwgdXNlckFjY2Vzc30gPSBnZXRTZXNzaW9uKHRva2VuKTtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBNYXRoLmNlaWwoRGF0ZVRpbWUubG9jYWwoKS50b1NlY29uZHMoKSk7XG5cbiAgaWYoZXhwID4gbm93KSB7XG4gICAgcmV0dXJuIGNyZWF0ZVRva2VuKHVzZXJJZCwgdXNlcm5hbWUsIHVzZXJBY2Nlc3MsIGV4cGlyZXMpO1xuICB9XG5cbiAgcmV0dXJuIHtlcnJvcnM6IFsnc2Vzc2lvbl9leHBpcmVkJ119O1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25JbiA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBhcmdzKTogUHJvbWlzZTxTZXNzaW9uVG9rZW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnc2lnbkluJztcbiAgY29uc3Qge2V4cGlyZXMsIHBhc3N3b3JkLCB1c2VybmFtZX0gPSBhcmdzO1xuICBjb25zdCBmb3JtYXRVc2VybmFtZTogc3RyaW5nID0gcGFyc2VVc2VybmFtZSh1c2VybmFtZSk7XG4gIGNvbnN0IGZvcm1hdFBhc3N3b3JkOiBzdHJpbmcgPSBwYXJzZVBhc3N3b3JkKHBhc3N3b3JkKTtcbiAgY29uc3QgZm9ybWF0RXhwaXJlczogbnVtYmVyID0gcGFyc2VOdW0oZXhwaXJlcykgfHwgMTU7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIGlmKCFmb3JtYXRVc2VybmFtZSB8fCAhZm9ybWF0UGFzc3dvcmQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZX0sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1LnVzZXJuYW1lID09ICR7Zm9ybWF0VXNlcm5hbWV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiB1YDtcbiAgY29uc3QgY2hlY2tVc2VyOiBVc2VyID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoY2hlY2tRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZTogZm9ybWF0VXNlcm5hbWV9LFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICAgLnRoZW4oKCkgPT4gbnVsbClcbiAgICApO1xuXG4gIGlmKCFjaGVja1VzZXIpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGFyZ3M6IHt1c2VybmFtZX0sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVVUSEVOVElDQVRJT05cbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHtfa2V5OiB1c2VySWQsIHNhbHQsIHVzZXJBY2Nlc3N9ID0gY2hlY2tVc2VyO1xuICBjb25zdCBhdXRoUGFzc3dvcmQ6IHN0cmluZyA9IGNyZWF0ZVBhc3N3b3JkKGZvcm1hdFBhc3N3b3JkLCBzYWx0KTtcblxuICBpZihjaGVja1VzZXIucGFzc3dvcmQgIT09IGF1dGhQYXNzd29yZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgYXJnczoge3VzZXJuYW1lfSxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BVVRIRU5USUNBVElPTlxuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKHVzZXJJZCwgdXNlcm5hbWUsIHVzZXJBY2Nlc3MsIGZvcm1hdEV4cGlyZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpZ25PdXQgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJncyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdzaWduT3V0JztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWQsIHVzZXJuYW1lfX0gPSBjb250ZXh0O1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICBsYXN0T25saW5lOiBEYXRlLm5vdygpLFxuICAgIHNlc3Npb25JZDogbnVsbFxuICB9O1xuICBjb25zdCBzZXNzaW9uUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCB1ID0gRE9DVU1FTlQoJHt1c2VyRG9jSWR9KVxuICAgIFVQREFURSB1IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgZGF0YWJhc2UucXVlcnkoc2Vzc2lvblF1ZXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBhcmdzOiB7dXNlcm5hbWUsIHVzZXJJZDogc2Vzc2lvbklkfSxcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dClcbiAgICAgICk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY3RpdmVVc2VyQ291bnQgPSAoY29udGV4dDogQXBpQ29udGV4dCkgPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRBY3RpdmVVc2VyQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgY291bnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGRvY3MgPSAoXG4gICAgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgdS5hY3RpdmUgPT0gdHJ1ZVxuICAgIFJFVFVSTiB1XG4gIClcbiAgUkVUVVJOIExFTkdUSChkb2NzKWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGNvdW50UXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpXG4gICAgICAudGhlbigoKSA9PiAwKVxuICAgICk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBVU87QUFDUCxzQkFBa0I7QUFJbEIsbUJBQXVCO0FBQ3ZCLG9CQUFtQjtBQUVuQixvQkFBcUI7QUFHckIsSUFBQUEsZ0JBQXNGO0FBQ3RGLHFCQUFpRTtBQUVqRSxNQUFNLGdCQUF3QjtBQUM5QixNQUFNLGFBQWtCO0FBUWpCLElBQUssYUFBTCxrQkFBS0MsZ0JBQUw7QUFDTCxFQUFBQSx3QkFBQSxpQkFBYyxLQUFkO0FBQ0EsRUFBQUEsd0JBQUEsWUFBUyxLQUFUO0FBQ0EsRUFBQUEsd0JBQUEsYUFBVSxLQUFWO0FBQ0EsRUFBQUEsd0JBQUEsbUJBQWdCLEtBQWhCO0FBQ0EsRUFBQUEsd0JBQUEsV0FBUSxLQUFSO0FBTFUsU0FBQUE7QUFBQSxHQUFBO0FBUUwsTUFBTSxjQUFjLENBQ3pCLFFBQ0EsVUFDQSxZQUNBLFVBQWtCLE9BQ0Q7QUFDakIsUUFBTSxNQUFnQixzQkFBUyxNQUFNO0FBQ3JDLFFBQU0saUJBQTJCLElBQUksS0FBSyxFQUFDLFNBQVMsUUFBTyxDQUFDO0FBQzVELFFBQU0sTUFBYyxLQUFLLE1BQU0sSUFBSSxVQUFVLENBQUM7QUFDOUMsUUFBTSxNQUFjLEtBQUssTUFBTSxlQUFlLFVBQVUsQ0FBQztBQUV6RCxRQUFNLFlBQVEsMkJBQVc7QUFB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
|
|
@@ -109,11 +109,11 @@ const getConnectionByConvo = (context, convoId) => {
|
|
|
109
109
|
const sessionDocId = `users/${(0, import_utils.parseId)(sessionId)}`;
|
|
110
110
|
const convoDocId = `conversations/${(0, import_utils.parseId)(convoId)}`;
|
|
111
111
|
const db = database;
|
|
112
|
-
const aqlQry = import_arangojs.aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId}
|
|
112
|
+
const aqlQry = import_arangojs.aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
|
|
113
113
|
FILTER c._id == ${convoDocId}
|
|
114
114
|
LIMIT 1
|
|
115
115
|
LET u = (
|
|
116
|
-
FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId}
|
|
116
|
+
FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId} hasConversation
|
|
117
117
|
FOR n IN connections
|
|
118
118
|
FILTER inUser.sub == n.sub
|
|
119
119
|
RETURN n.connectionId
|
|
@@ -143,4 +143,4 @@ const removeConnection = (connectionId) => {
|
|
|
143
143
|
getConnectionByUser,
|
|
144
144
|
removeConnection
|
|
145
145
|
});
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvd2Vic29ja2V0cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnO1xuXG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBjb2duaXRvID0gbmV3IEFXUy5Db2duaXRvSWRlbnRpdHlTZXJ2aWNlUHJvdmlkZXIoe1xuICBhcGlWZXJzaW9uOiAnMjAxNi0wNC0xOCcsXG4gIHJlZ2lvbjogJ3VzLWVhc3QtMSdcbn0pO1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IGFzeW5jIChjb25uZWN0aW9uSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IGZvcm1hdENvbm5JZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoY29ubmVjdGlvbklkLCAzMik7XG4gIGNvbnN0IGZvcm1hdFRva2VuOiBzdHJpbmcgPSBwYXJzZVN0cmluZyh0b2tlbik7XG5cbiAgLy8gR2V0IHVzZXIgaWQgZnJvbSB0b2tlblxuICB0cnkge1xuICAgIGNvbnN0IHtVc2VyQXR0cmlidXRlczogY29nbml0b0F0dHJpYnV0ZXN9ID0gYXdhaXQgY29nbml0by5nZXRVc2VyKHtBY2Nlc3NUb2tlbjogZm9ybWF0VG9rZW59KS5wcm9taXNlKCk7XG5cbiAgICAvLyB1c2VybmFtZSA9IGNvZ25pdG9Vc2VybmFtZTtcbiAgICBjb25zdCB1c2VyQXR0cmlidXRlczogYW55ID0gY29nbml0b0F0dHJpYnV0ZXMucmVkdWNlKCh1c2VyT2JqLCBhdHRyaWJ1dGVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtOYW1lOiBrZXksIFZhbHVlOiB2YWx1ZX0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICBpZihrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBmb3JtYXRLZXk6IHN0cmluZyA9IGtleS5yZXBsYWNlKCdjdXN0b206JywgJycpO1xuICAgICAgICB1c2VyT2JqW2Zvcm1hdEtleV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVzZXJPYmo7XG4gICAgfSwge30pO1xuXG4gICAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIocHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UpO1xuICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgIGNvbm5lY3Rpb25JZDogZm9ybWF0Q29ubklkLFxuICAgICAgbW9kaWZpZWQ6IERhdGUubm93KClcbiAgICB9O1xuICAgIGNvbnN0IGluc2VydCA9IHtcbiAgICAgIC4uLnVwZGF0ZSxcbiAgICAgIF9rZXk6IGNyZWF0ZUhhc2goYGNvbm5lY3Rpb24tJHtmb3JtYXRDb25uSWR9YCksXG4gICAgICBzdWI6IHVzZXJBdHRyaWJ1dGVzLnN1YlxuICAgIH07XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge3N1YjogJHtpbnNlcnQuc3VifX1cbiAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgIElOIGNvbm5lY3Rpb25zIFJFVFVSTiBORVdgO1xuXG4gICAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmF1dGhvcml6ZWQgQ29udGV4dCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5VXNlciA9ICh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBjLnVzZXJJZCA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGNgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5SWQgPSAoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBmb3JtYXRDb25uSWQ6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGNvbm5lY3Rpb25JZCwgMzIpO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBjLmNvbm5lY3Rpb25JZCA9PSAke2Zvcm1hdENvbm5JZH1cbiAgICBMRVQgdXNlciA9IEZJUlNUKFxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiB1LnN1YiA9PSBjLnN1YlxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHU7XG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXI6dXNlcn1gO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5Q29udm8gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvd2Vic29ja2V0cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnO1xuXG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBjb2duaXRvID0gbmV3IEFXUy5Db2duaXRvSWRlbnRpdHlTZXJ2aWNlUHJvdmlkZXIoe1xuICBhcGlWZXJzaW9uOiAnMjAxNi0wNC0xOCcsXG4gIHJlZ2lvbjogJ3VzLWVhc3QtMSdcbn0pO1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IGFzeW5jIChjb25uZWN0aW9uSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IGZvcm1hdENvbm5JZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoY29ubmVjdGlvbklkLCAzMik7XG4gIGNvbnN0IGZvcm1hdFRva2VuOiBzdHJpbmcgPSBwYXJzZVN0cmluZyh0b2tlbik7XG5cbiAgLy8gR2V0IHVzZXIgaWQgZnJvbSB0b2tlblxuICB0cnkge1xuICAgIGNvbnN0IHtVc2VyQXR0cmlidXRlczogY29nbml0b0F0dHJpYnV0ZXN9ID0gYXdhaXQgY29nbml0by5nZXRVc2VyKHtBY2Nlc3NUb2tlbjogZm9ybWF0VG9rZW59KS5wcm9taXNlKCk7XG5cbiAgICAvLyB1c2VybmFtZSA9IGNvZ25pdG9Vc2VybmFtZTtcbiAgICBjb25zdCB1c2VyQXR0cmlidXRlczogYW55ID0gY29nbml0b0F0dHJpYnV0ZXMucmVkdWNlKCh1c2VyT2JqLCBhdHRyaWJ1dGVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtOYW1lOiBrZXksIFZhbHVlOiB2YWx1ZX0gPSBhdHRyaWJ1dGVzO1xuXG4gICAgICBpZihrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBmb3JtYXRLZXk6IHN0cmluZyA9IGtleS5yZXBsYWNlKCdjdXN0b206JywgJycpO1xuICAgICAgICB1c2VyT2JqW2Zvcm1hdEtleV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVzZXJPYmo7XG4gICAgfSwge30pO1xuXG4gICAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIocHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UpO1xuICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgIGNvbm5lY3Rpb25JZDogZm9ybWF0Q29ubklkLFxuICAgICAgbW9kaWZpZWQ6IERhdGUubm93KClcbiAgICB9O1xuICAgIGNvbnN0IGluc2VydCA9IHtcbiAgICAgIC4uLnVwZGF0ZSxcbiAgICAgIF9rZXk6IGNyZWF0ZUhhc2goYGNvbm5lY3Rpb24tJHtmb3JtYXRDb25uSWR9YCksXG4gICAgICBzdWI6IHVzZXJBdHRyaWJ1dGVzLnN1YlxuICAgIH07XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge3N1YjogJHtpbnNlcnQuc3VifX1cbiAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgIElOIGNvbm5lY3Rpb25zIFJFVFVSTiBORVdgO1xuXG4gICAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmF1dGhvcml6ZWQgQ29udGV4dCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5VXNlciA9ICh1c2VySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBjLnVzZXJJZCA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGNgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5SWQgPSAoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBmb3JtYXRDb25uSWQ6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGNvbm5lY3Rpb25JZCwgMzIpO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBjLmNvbm5lY3Rpb25JZCA9PSAke2Zvcm1hdENvbm5JZH1cbiAgICBMRVQgdXNlciA9IEZJUlNUKFxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiB1LnN1YiA9PSBjLnN1YlxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHU7XG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXI6dXNlcn1gO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5Q29udm8gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGNvbnZvRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7cGFyc2VJZChjb252b0lkKX1gO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSBkYXRhYmFzZTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICBGSUxURVIgYy5faWQgPT0gJHtjb252b0RvY0lkfVxuICBMSU1JVCAxXG4gIExFVCB1ID0gKFxuICAgIEZPUiBpblVzZXIsIGluRWRnZSBJTiAxLi4xIElOQk9VTkQgJHtjb252b0RvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgICBGT1IgbiBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBpblVzZXIuc3ViID09IG4uc3ViXG4gICAgUkVUVVJOIG4uY29ubmVjdGlvbklkXG4gIClcbiAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVDb25uZWN0aW9uID0gKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlJztcbiAgY29uc3QgZm9ybWF0Q29ubklkOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhjb25uZWN0aW9uSWQsIDMyKTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIocHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICAgIEZJTFRFUiBjLmNvbm5lY3Rpb25JZCA9PSAke2Zvcm1hdENvbm5JZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSBjIElOIGNvbm5lY3Rpb25zXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBK0M7QUFDL0Msc0JBQTRCO0FBRzVCLHFCQUFnQjtBQUdoQixJQUFBQSxnQkFBb0I7QUFFcEIsTUFBTSxVQUFVLElBQUksZUFBQUMsUUFBSSwrQkFBK0I7QUFBQSxFQUNyRCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQ1YsQ0FBQztBQUVNLE1BQU0sZ0JBQWdCLE9BQU8sY0FBc0IsVUFBZ0M7QUFFeEYsUUFBTSxtQkFBdUIsMEJBQVksY0FBYyxFQUFFO0FBQ3pELFFBQU0sa0JBQXNCLDBCQUFZLEtBQUs7QUFHN0MsTUFBSTtBQUNGLFVBQU0sRUFBQyxnQkFBZ0Isa0JBQWlCLElBQUksTUFBTSxRQUFRLFFBQVEsRUFBQyxhQUFhLFlBQVcsQ0FBQyxFQUFFLFFBQVE7QUFHdEcsVUFBTSxpQkFBc0Isa0JBQWtCLE9BQU8sQ0FBQyxTQUFTLGVBQW9CO0FBQ2pGLFlBQU0sRUFBQyxNQUFNLEtBQUssT0FBTyxNQUFLLElBQUk7QUFFbEMsVUFBRyxRQUFRLFFBQVc7QUFDcEIsY0FBTSxZQUFvQixJQUFJLFFBQVEsV0FBVyxFQUFFO0FBQ25ELGdCQUFRLFNBQVMsSUFBSTtBQUFBLE1BQ3ZCO0FBRUEsYUFBTztBQUFBLElBQ1QsR0FBRyxDQUFDLENBQUM7QUFFTCxVQUFNLFNBQWUscUJBQU0sUUFBUSxJQUFJLGlCQUFpQjtBQUN4RCxVQUFNLFNBQVM7QUFBQSxNQUNiLGNBQWM7QUFBQSxNQUNkLFVBQVUsS0FBSyxJQUFJO0FBQUEsSUFDckI7QUFDQSxVQUFNLFNBQVM7QUFBQSxNQUNiLEdBQUc7QUFBQSxNQUNILFVBQU0seUJBQVcsY0FBYyxZQUFZLEVBQUU7QUFBQSxNQUM3QyxLQUFLLGVBQWU7QUFBQSxJQUN0QjtBQUNBLFVBQU0sU0FBbUIsbUNBQW1CLE9BQU8sR0FBRztBQUFBLGVBQzNDLE1BQU07QUFBQSxlQUNOLE1BQU07QUFBQTtBQUdqQixXQUFPLEdBQUcsTUFBTSxNQUFNLEVBQ25CLEtBQUssQ0FBQyxXQUFXLE9BQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixZQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDTCxTQUFRLE9BQU87QUFDYixVQUFNLElBQUksTUFBTSxzQkFBc0I7QUFBQSxFQUN4QztBQUNGO0FBRU8sTUFBTSxzQkFBc0IsQ0FBQyxXQUFpQztBQUNuRSxRQUFNLG1CQUF1QixzQkFBUSxNQUFNO0FBQzNDLFFBQU0sU0FBZSxxQkFBTSxRQUFRLElBQUksaUJBQWlCO0FBQ3hELFFBQU0sU0FBUztBQUFBLHlCQUNRLFlBQVk7QUFBQTtBQUFBO0FBSW5DLFNBQU8sR0FBRyxNQUFNLE1BQU0sRUFDbkIsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMsRUFDOUIsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQSxFQUNSLENBQUM7QUFDTDtBQUVPLE1BQU0sb0JBQW9CLENBQUMsaUJBQXVDO0FBQ3ZFLFFBQU0sbUJBQXVCLDBCQUFZLGNBQWMsRUFBRTtBQUN6RCxRQUFNLFNBQWUscUJBQU0sUUFBUSxJQUFJLGlCQUFpQjtBQUN4RCxRQUFNLFNBQVM7QUFBQSwrQkFDYyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVV6QyxTQUFPLEdBQUcsTUFBTSxNQUFNLEVBQ25CLEtBQUssQ0FBQyxXQUFXLE9BQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixVQUFNO0FBQUEsRUFDUixDQUFDO0FBQ0w7QUFFTyxNQUFNLHVCQUF1QixDQUFDLFNBQXFCLFlBQWtDO0FBQzFGLFFBQU0sRUFBQyxVQUFVLFNBQVMsRUFBQyxRQUFRLFVBQVMsRUFBQyxJQUFJO0FBQ2pELFFBQU0sZUFBdUIsYUFBUyxzQkFBUSxTQUFTLENBQUM7QUFDeEQsUUFBTSxhQUFxQixxQkFBaUIsc0JBQVEsT0FBTyxDQUFDO0FBQzVELFFBQU0sS0FBZTtBQUNyQixRQUFNLFNBQVMsZ0RBQWdDLFlBQVk7QUFBQSxvQkFDekMsVUFBVTtBQUFBO0FBQUE7QUFBQSx5Q0FHVyxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9qRCxTQUFPLEdBQUcsTUFBTSxNQUFNLEVBQ25CLEtBQUssQ0FBQyxXQUFXLE9BQU8sSUFBSSxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixVQUFNO0FBQUEsRUFDUixDQUFDO0FBQ0w7QUFFTyxNQUFNLG1CQUFtQixDQUFDLGlCQUF1QztBQUV0RSxRQUFNLG1CQUF1QiwwQkFBWSxjQUFjLEVBQUU7QUFDekQsUUFBTSxTQUFlLHFCQUFNLFFBQVEsSUFBSSxpQkFBaUI7QUFDeEQsUUFBTSxTQUFTO0FBQUEsaUNBQ2dCLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFLM0MsU0FBTyxHQUFHLE1BQU0sTUFBTSxFQUNuQixLQUFLLENBQUMsV0FBd0IsT0FBTyxLQUFLLENBQUMsRUFDM0MsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQSxFQUNSLENBQUM7QUFDTDsiLAogICJuYW1lcyI6IFsiaW1wb3J0X3V0aWxzIiwgIkFXUyJdCn0K
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,14 +14,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var websockets_exports = {};
|
|
29
19
|
__export(websockets_exports, {
|
|
@@ -36,14 +26,13 @@ __export(websockets_exports, {
|
|
|
36
26
|
module.exports = __toCommonJS(websockets_exports);
|
|
37
27
|
var import_utils = require("@nlabs/utils");
|
|
38
28
|
var import_arangojs = require("arangojs");
|
|
39
|
-
var import_isEmpty = __toESM(require("lodash/isEmpty"));
|
|
40
29
|
var import_arangodb = require("../../utils/arangodb");
|
|
41
30
|
var import_session = require("../../utils/session");
|
|
42
31
|
const { ARANGODB_DATABASE: database } = process.env;
|
|
43
32
|
const addConnection = async (connectionId, token) => {
|
|
44
33
|
const formatConnId = (0, import_utils.parseString)(connectionId, 32);
|
|
45
34
|
const { userId } = (0, import_session.getSession)(token);
|
|
46
|
-
if (
|
|
35
|
+
if (!userId) {
|
|
47
36
|
return {};
|
|
48
37
|
}
|
|
49
38
|
try {
|
|
@@ -102,11 +91,11 @@ const getConnectionByConvo = (context, convoId) => {
|
|
|
102
91
|
const sessionDocId = `users/${(0, import_utils.parseId)(sessionId)}`;
|
|
103
92
|
const convoDocId = `conversations/${(0, import_utils.parseId)(convoId)}`;
|
|
104
93
|
const db = (0, import_arangodb.useDb)(database);
|
|
105
|
-
const aqlQry = import_arangojs.aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId}
|
|
94
|
+
const aqlQry = import_arangojs.aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
|
|
106
95
|
FILTER c._id == ${convoDocId}
|
|
107
96
|
LIMIT 1
|
|
108
97
|
LET u = (
|
|
109
|
-
FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId}
|
|
98
|
+
FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId} hasConversation
|
|
110
99
|
FOR n IN connections
|
|
111
100
|
FILTER inUser.userId == n.userId
|
|
112
101
|
RETURN n.connectionId
|
|
@@ -136,4 +125,4 @@ const removeConnection = (connectionId) => {
|
|
|
136
125
|
getConnectionByUserId,
|
|
137
126
|
removeConnection
|
|
138
127
|
});
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYWN0aW9ucy93ZWJzb2NrZXRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5cbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi8uLi91dGlscy9hcmFuZ29kYic7XG5pbXBvcnQge2dldFNlc3Npb259IGZyb20gJy4uLy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5jb25zdCB7QVJBTkdPREJfREFUQUJBU0U6IGRhdGFiYXNlfSA9IHByb2Nlc3MuZW52O1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IGFzeW5jIChjb25uZWN0aW9uSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IGZvcm1hdENvbm5JZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoY29ubmVjdGlvbklkLCAzMik7XG5cbiAgLy8gVmVyaWZpZXMgdG9rZW5cbiAgY29uc3Qge3VzZXJJZH0gPSBnZXRTZXNzaW9uKHRva2VuKTtcblxuICBpZighdXNlcklkKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgY29ubmVjdGlvbklkOiBmb3JtYXRDb25uSWQsXG4gICAgICBtb2RpZmllZDogRGF0ZS5ub3coKVxuICAgIH07XG4gICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgLi4udXBkYXRlLFxuICAgICAgX2tleTogY3JlYXRlSGFzaChgY29ubmVjdGlvbi0ke2Zvcm1hdENvbm5JZH1gKSxcbiAgICAgIHVzZXJJZFxuICAgIH07XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge3VzZXJJZDogJHtpbnNlcnQudXNlcklkfX1cbiAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgIElOIGNvbm5lY3Rpb25zIFJFVFVSTiBORVdgO1xuXG4gICAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coJ3BhcnNlQ29udGV4dDo6ZXJyb3InLCBlcnJvcik7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmF1dGhvcml6ZWQgQ29udGV4dCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5VXNlcklkID0gKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBjIElOIGNvbm5lY3Rpb25zXG4gICAgRklMVEVSIGMudXNlcklkID09ICR7Zm9ybWF0VXNlcklkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gY2A7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlJZCA9IChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IGZvcm1hdENvbm5JZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoY29ubmVjdGlvbklkLCAzMik7XG4gIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBjIElOIGNvbm5lY3Rpb25zXG4gICAgRklMVEVSIGMuY29ubmVjdGlvbklkID09ICR7Zm9ybWF0Q29ubklkfVxuICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgRklMVEVSIHUudXNlcklkID09IGMudXNlcklkXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gdTtcbiAgICApXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcjp1c2VyfWA7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlDb252byA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCB7c2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBjb252b0RvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke3BhcnNlSWQoY29udm9JZCl9YDtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCAke3Nlc3Npb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gIEZJTFRFUiBjLl9pZCA9PSAke2NvbnZvRG9jSWR9XG4gIExJTUlUIDFcbiAgTEVUIHUgPSAoXG4gICAgRk9SIGluVXNlciwgaW5FZGdlIElOIDEuLjEgSU5CT1VORCAke2NvbnZvRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICAgIEZPUiBuIElOIGNvbm5lY3Rpb25zXG4gICAgRklMVEVSIGluVXNlci51c2VySWQgPT0gbi51c2VySWRcbiAgICBSRVRVUk4gbi5jb25uZWN0aW9uSWRcbiAgKVxuICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNvbm5lY3Rpb24gPSAoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICAvLyBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGUnO1xuICBjb25zdCBmb3JtYXRDb25uSWQ6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGNvbm5lY3Rpb25JZCwgMzIpO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYyBJTiBjb25uZWN0aW9uc1xuICAgICAgRklMVEVSIGMuY29ubmVjdGlvbklkID09ICR7Zm9ybWF0Q29ubklkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIGMgSU4gY29ubmVjdGlvbnNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBQStDO0FBQy9DLHNCQUE0QjtBQUs1QixzQkFBb0I7QUFDcEIscUJBQXlCO0FBRXpCLE1BQU0sRUFBQyxtQkFBbUIsU0FBUSxJQUFJLFFBQVE7QUFFdkMsTUFBTSxnQkFBZ0IsT0FBTyxjQUFzQixVQUFnQztBQUV4RixRQUFNLG1CQUF1QiwwQkFBWSxjQUFjLEVBQUU7QUFHekQsUUFBTSxFQUFDLE9BQU0sUUFBSSwyQkFBVyxLQUFLO0FBRWpDLE1BQUcsQ0FBQyxRQUFRO0FBQ1YsV0FBTyxDQUFDO0FBQUEsRUFDVjtBQUVBLE1BQUk7QUFDRixVQUFNLFNBQWUsdUJBQU0sUUFBUTtBQUNuQyxVQUFNLFNBQVM7QUFBQSxNQUNiLGNBQWM7QUFBQSxNQUNkLFVBQVUsS0FBSyxJQUFJO0FBQUEsSUFDckI7QUFDQSxVQUFNLFNBQVM7QUFBQSxNQUNiLEdBQUc7QUFBQSxNQUNILFVBQU0seUJBQVcsY0FBYyxZQUFZLEVBQUU7QUFBQSxNQUM3QztBQUFBLElBQ0Y7QUFDQSxVQUFNLFNBQW1CLHNDQUFzQixPQUFPLE1BQU07QUFBQSxlQUNqRCxNQUFNO0FBQUEsZUFDTixNQUFNO0FBQUE7QUFHakIsV0FBTyxHQUFHLE1BQU0sTUFBTSxFQUNuQixLQUFLLENBQUMsV0FBVyxPQUFPLEtBQUssQ0FBQyxFQUM5QixNQUFNLENBQUMsVUFBaUI7QUFDdkIsWUFBTTtBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0wsU0FBUSxPQUFPO0FBQ2IsWUFBUSxJQUFJLHVCQUF1QixLQUFLO0FBQ3hDLFVBQU0sSUFBSSxNQUFNLHNCQUFzQjtBQUFBLEVBQ3hDO0FBQ0Y7QUFFTyxNQUFNLHdCQUF3QixDQUFDLFdBQWlDO0FBQ3JFLFFBQU0sbUJBQXVCLHNCQUFRLE1BQU07QUFDM0MsUUFBTSxTQUFlLHVCQUFNLFFBQVE7QUFDbkMsUUFBTSxTQUFTO0FBQUEseUJBQ1EsWUFBWTtBQUFBO0FBQUE7QUFJbkMsU0FBTyxHQUFHLE1BQU0sTUFBTSxFQUNuQixLQUFLLENBQUMsV0FBVyxPQUFPLEtBQUssQ0FBQyxFQUM5QixNQUFNLENBQUMsVUFBaUI7QUFDdkIsVUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNMO0FBRU8sTUFBTSxvQkFBb0IsQ0FBQyxpQkFBdUM7QUFDdkUsUUFBTSxtQkFBdUIsMEJBQVksY0FBYyxFQUFFO0FBQ3pELFFBQU0sU0FBZSx1QkFBTSxRQUFRO0FBQ25DLFFBQU0sU0FBUztBQUFBLCtCQUNjLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVXpDLFNBQU8sR0FBRyxNQUFNLE1BQU0sRUFDbkIsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMsRUFDOUIsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQSxFQUNSLENBQUM7QUFDTDtBQUVPLE1BQU0sdUJBQXVCLENBQUMsU0FBcUIsWUFBa0M7QUFDMUYsUUFBTSxFQUFDLFNBQVMsRUFBQyxRQUFRLFVBQVMsRUFBQyxJQUFJO0FBQ3ZDLFFBQU0sZUFBdUIsYUFBUyxzQkFBUSxTQUFTLENBQUM7QUFDeEQsUUFBTSxhQUFxQixxQkFBaUIsc0JBQVEsT0FBTyxDQUFDO0FBQzVELFFBQU0sU0FBZSx1QkFBTSxRQUFRO0FBQ25DLFFBQU0sU0FBUyxnREFBZ0MsWUFBWTtBQUFBLG9CQUN6QyxVQUFVO0FBQUE7QUFBQTtBQUFBLHlDQUdXLFVBQVU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT2pELFNBQU8sR0FBRyxNQUFNLE1BQU0sRUFDbkIsS0FBSyxDQUFDLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFDN0IsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQSxFQUNSLENBQUM7QUFDTDtBQUVPLE1BQU0sbUJBQW1CLENBQUMsaUJBQXVDO0FBRXRFLFFBQU0sbUJBQXVCLDBCQUFZLGNBQWMsRUFBRTtBQUN6RCxRQUFNLFNBQWUsdUJBQU0sUUFBUTtBQUNuQyxRQUFNLFNBQVM7QUFBQSxpQ0FDZ0IsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUszQyxTQUFPLEdBQUcsTUFBTSxNQUFNLEVBQ25CLEtBQUssQ0FBQyxXQUF3QixPQUFPLEtBQUssQ0FBQyxFQUMzQyxNQUFNLENBQUMsVUFBaUI7QUFDdkIsVUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNMOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,14 +14,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var authorizer_exports = {};
|
|
29
19
|
__export(authorizer_exports, {
|
|
@@ -32,7 +22,6 @@ __export(authorizer_exports, {
|
|
|
32
22
|
generatePolicyDocument: () => generatePolicyDocument
|
|
33
23
|
});
|
|
34
24
|
module.exports = __toCommonJS(authorizer_exports);
|
|
35
|
-
var import_isEmpty = __toESM(require("lodash/isEmpty"));
|
|
36
25
|
var import__ = require("..");
|
|
37
26
|
const generatePolicyDocument = (effect, methodArn) => {
|
|
38
27
|
if (!effect || !methodArn) {
|
|
@@ -59,15 +48,15 @@ const generateAuthResponse = (principalId, effect, methodArn) => {
|
|
|
59
48
|
};
|
|
60
49
|
const authorizer = (event, context, callback) => {
|
|
61
50
|
const { authorizationToken = "", methodArn } = event;
|
|
62
|
-
const token = authorizationToken.replace(
|
|
63
|
-
if (
|
|
51
|
+
const token = authorizationToken.replace(/bearer/i, "").trim();
|
|
52
|
+
if (!token || !methodArn) {
|
|
64
53
|
return callback(null, "Unauthorized");
|
|
65
54
|
}
|
|
66
55
|
const session = (0, import__.getSession)(token);
|
|
67
|
-
if (session
|
|
56
|
+
if (session?.id) {
|
|
68
57
|
return callback(null, generateAuthResponse(session.id, "Allow", methodArn));
|
|
69
58
|
}
|
|
70
|
-
return callback(null, generateAuthResponse(session
|
|
59
|
+
return callback(null, generateAuthResponse(session?.id, "Deny", methodArn));
|
|
71
60
|
};
|
|
72
61
|
// Annotate the CommonJS export names for ESM import in node:
|
|
73
62
|
0 && (module.exports = {
|
|
@@ -75,4 +64,4 @@ const authorizer = (event, context, callback) => {
|
|
|
75
64
|
generateAuthResponse,
|
|
76
65
|
generatePolicyDocument
|
|
77
66
|
});
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xhbWJkYXMvYXV0aG9yaXplci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0U2Vzc2lvbn0gZnJvbSAnLi4nO1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVQb2xpY3lEb2N1bWVudCA9IChlZmZlY3QsIG1ldGhvZEFybikgPT4ge1xuICBpZighZWZmZWN0IHx8ICFtZXRob2RBcm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBvbGljeURvY3VtZW50ID0ge1xuICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgIHtcbiAgICAgICAgQWN0aW9uOiAnZXhlY3V0ZS1hcGk6SW52b2tlJyxcbiAgICAgICAgRWZmZWN0OiBlZmZlY3QsXG4gICAgICAgIFJlc291cmNlOiBtZXRob2RBcm5cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHBvbGljeURvY3VtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQXV0aFJlc3BvbnNlID0gKHByaW5jaXBhbElkLCBlZmZlY3QsIG1ldGhvZEFybikgPT4ge1xuICBjb25zdCBwb2xpY3lEb2N1bWVudCA9IGdlbmVyYXRlUG9saWN5RG9jdW1lbnQoZWZmZWN0LCBtZXRob2RBcm4pO1xuXG4gIHJldHVybiB7XG4gICAgcHJpbmNpcGFsSWQsXG4gICAgcG9saWN5RG9jdW1lbnRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhdXRob3JpemVyID0gKGV2ZW50LCBjb250ZXh0LCBjYWxsYmFjaykgPT4ge1xuICBjb25zdCB7YXV0aG9yaXphdGlvblRva2VuID0gJycsIG1ldGhvZEFybn0gPSBldmVudDtcbiAgY29uc3QgdG9rZW4gPSBhdXRob3JpemF0aW9uVG9rZW4ucmVwbGFjZSgvYmVhcmVyL2ksICcnKS50cmltKCk7XG5cbiAgaWYoIXRva2VuIHx8ICFtZXRob2RBcm4pIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgJ1VuYXV0aG9yaXplZCcpO1xuICB9XG5cbiAgLy8gVmVyaWZ5IHRva2VuXG4gIGNvbnN0IHNlc3Npb24gPSBnZXRTZXNzaW9uKHRva2VuKTtcblxuICBpZihzZXNzaW9uPy5pZCkge1xuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBnZW5lcmF0ZUF1dGhSZXNwb25zZShzZXNzaW9uLmlkLCAnQWxsb3cnLCBtZXRob2RBcm4pKTtcbiAgfVxuXG4gIHJldHVybiBjYWxsYmFjayhudWxsLCBnZW5lcmF0ZUF1dGhSZXNwb25zZShzZXNzaW9uPy5pZCwgJ0RlbnknLCBtZXRob2RBcm4pKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsZUFBeUI7QUFFbEIsTUFBTSx5QkFBeUIsQ0FBQyxRQUFRLGNBQWM7QUFDM0QsTUFBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxpQkFBaUI7QUFBQSxJQUNyQixTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsTUFDVDtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsVUFBVTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQUVPLE1BQU0sdUJBQXVCLENBQUMsYUFBYSxRQUFRLGNBQWM7QUFDdEUsUUFBTSxpQkFBaUIsdUJBQXVCLFFBQVEsU0FBUztBQUUvRCxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFFTyxNQUFNLGFBQWEsQ0FBQyxPQUFPLFNBQVMsYUFBYTtBQUN0RCxRQUFNLEVBQUMscUJBQXFCLElBQUksVUFBUyxJQUFJO0FBQzdDLFFBQU0sUUFBUSxtQkFBbUIsUUFBUSxXQUFXLEVBQUUsRUFBRSxLQUFLO0FBRTdELE1BQUcsQ0FBQyxTQUFTLENBQUMsV0FBVztBQUN2QixXQUFPLFNBQVMsTUFBTSxjQUFjO0FBQUEsRUFDdEM7QUFHQSxRQUFNLGNBQVUscUJBQVcsS0FBSztBQUVoQyxNQUFHLFNBQVMsSUFBSTtBQUNkLFdBQU8sU0FBUyxNQUFNLHFCQUFxQixRQUFRLElBQUksU0FBUyxTQUFTLENBQUM7QUFBQSxFQUM1RTtBQUVBLFNBQU8sU0FBUyxNQUFNLHFCQUFxQixTQUFTLElBQUksUUFBUSxTQUFTLENBQUM7QUFDNUU7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,14 +14,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var connection_exports = {};
|
|
29
19
|
__export(connection_exports, {
|
|
@@ -32,7 +22,6 @@ __export(connection_exports, {
|
|
|
32
22
|
messageHandler: () => messageHandler
|
|
33
23
|
});
|
|
34
24
|
module.exports = __toCommonJS(connection_exports);
|
|
35
|
-
var import_isEmpty = __toESM(require("lodash/isEmpty"));
|
|
36
25
|
var import__ = require("..");
|
|
37
26
|
var import_websockets = require("./actions/websockets");
|
|
38
27
|
var import_message = require("./utils/message");
|
|
@@ -83,7 +72,7 @@ const messageHandler = async (event) => {
|
|
|
83
72
|
const connection2 = await (0, import_websockets.getConnectionByUserId)(userId2);
|
|
84
73
|
if (connection2) {
|
|
85
74
|
const { connectionId: connectionId2 } = connection2;
|
|
86
|
-
if (
|
|
75
|
+
if (connectionId2) {
|
|
87
76
|
import_websocket2.wsClient.send(connectionId2, {
|
|
88
77
|
action: "reaktorMessage",
|
|
89
78
|
data: formatContent
|
|
@@ -99,4 +88,4 @@ const messageHandler = async (event) => {
|
|
|
99
88
|
defaultHandler,
|
|
100
89
|
messageHandler
|
|
101
90
|
});
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xhbWJkYXMvY29ubmVjdGlvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0Q29udmVyc2F0aW9uLCB1c2VEYn0gZnJvbSAnLi4nO1xuaW1wb3J0IHtXZWJzb2NrZXRNZXNzYWdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvd2Vic29ja2V0JztcbmltcG9ydCB7YWRkQ29ubmVjdGlvbiwgZ2V0Q29ubmVjdGlvbkJ5SWQsIGdldENvbm5lY3Rpb25CeVVzZXJJZCwgcmVtb3ZlQ29ubmVjdGlvbn0gZnJvbSAnLi9hY3Rpb25zL3dlYnNvY2tldHMnO1xuaW1wb3J0IHtwYXJzZU1lc3NhZ2V9IGZyb20gJy4vdXRpbHMvbWVzc2FnZSc7XG5pbXBvcnQge3dzQ2xpZW50fSBmcm9tICcuL3V0aWxzL3dlYnNvY2tldCc7XG5cbmNvbnN0IHN1Y2Nlc3NTdGF0dXMgPSB7c3RhdHVzQ29kZTogMjAwfTtcbmNvbnN0IGVycm9yU3RhdHVzID0ge3N0YXR1c0NvZGU6IDUwMH07XG5jb25zdCB7QVJBTkdPREJfREFUQUJBU0U6IGRhdGFiYXNlTmFtZX0gPSBwcm9jZXNzLmVudjtcbmNvbnN0IGdldEJhc2ljQ29udGV4dCA9ICh1c2VySWQ6IHN0cmluZykgPT4gKHtkYXRhYmFzZTogdXNlRGIoZGF0YWJhc2VOYW1lKSwgc2Vzc2lvbjoge3VzZXJJZH19KTtcblxuZXhwb3J0IGNvbnN0IGNvbm5lY3RIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIC8vIFdlIGRvIHRoaXMgc28gZmlyc3QgY29ubmVjdCBFVkVSIHNldHMgdXAgc29tZSBuZWVkZWQgY29uZmlnIHN0YXRlIGluIGRiXG4gIC8vIHRoaXMgZ29lcyBhd2F5IGFmdGVyIENsb3VkRm9ybWF0aW9uIHN1cHBvcnQgaXMgYWRkZWQgZm9yIHdlYiBzb2NrZXRzXG4gIHdzQ2xpZW50LnNldHVwQ2xpZW50KGV2ZW50KTtcbiAgY29uc3Qge3F1ZXJ5U3RyaW5nUGFyYW1ldGVycyA9IHt9LCByZXF1ZXN0Q29udGV4dH0gPSBldmVudDtcbiAgY29uc3Qge2Nvbm5lY3Rpb25JZCwgZXZlbnRUeXBlfSA9IHJlcXVlc3RDb250ZXh0O1xuICBjb25zdCB7dG9rZW59ID0gcXVlcnlTdHJpbmdQYXJhbWV0ZXJzO1xuXG4gIHRyeSB7XG4gICAgaWYoZXZlbnRUeXBlID09PSAnQ09OTkVDVCcpIHtcbiAgICAgIGF3YWl0IGFkZENvbm5lY3Rpb24oY29ubmVjdGlvbklkLCB0b2tlbik7XG4gICAgICByZXR1cm4gc3VjY2Vzc1N0YXR1cztcbiAgICB9IGVsc2UgaWYoZXZlbnRUeXBlID09PSAnRElTQ09OTkVDVCcpIHtcbiAgICAgIGF3YWl0IHJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbklkKTtcbiAgICAgIHJldHVybiBzdWNjZXNzU3RhdHVzO1xuICAgIH1cblxuICAgIHJldHVybiB7Li4uZXJyb3JTdGF0dXMsIG1lc3NhZ2U6ICdVbmtub3duIHR5cGUnfTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiB7Li4uZXJyb3JTdGF0dXMsIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2V9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEhhbmRsZXIgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgYXdhaXQgd3NDbGllbnQuc2VuZChldmVudCwge1xuICAgIGV2ZW50OiAnZXJyb3InLFxuICAgIG1lc3NhZ2U6ICdpbnZhbGlkIGFjdGlvbiB0eXBlJ1xuICB9KTtcblxuICByZXR1cm4gc3VjY2Vzc1N0YXR1cztcbn07XG5cbmV4cG9ydCBjb25zdCBtZXNzYWdlSGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCB7Ym9keSwgcmVxdWVzdENvbnRleHR9ID0gZXZlbnQ7XG4gIGNvbnN0IHtjb25uZWN0aW9uSWR9ID0gcmVxdWVzdENvbnRleHQ7XG4gIGNvbnN0IG1lc3NhZ2U6IFdlYnNvY2tldE1lc3NhZ2VUeXBlID0gSlNPTi5wYXJzZShib2R5KS5kYXRhO1xuICBjb25zdCB7Y29udmVyc2F0aW9uSWQsIGNvbnRlbnR9ID0gbWVzc2FnZTtcbiAgY29uc3QgZm9ybWF0Q29udGVudDogc3RyaW5nID0gcGFyc2VNZXNzYWdlKGNvbnRlbnQpO1xuXG4gIC8vIEdldCBjdXJyZW50IHVzZXIgYnkgY29ubmVjdGlvblxuICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbkJ5SWQoY29ubmVjdGlvbklkKTtcbiAgY29uc3Qge3VzZXJ9ID0gY29ubmVjdGlvbjtcbiAgY29uc3Qge19rZXk6IHVzZXJJZH0gPSB1c2VyO1xuICBjb25zdCBhdXRoQ29udGV4dCA9IGdldEJhc2ljQ29udGV4dCh1c2VySWQpO1xuICBjb25zdCBjb252ZXJzYXRpb24gPSBhd2FpdCBnZXRDb252ZXJzYXRpb24oYXV0aENvbnRleHQsIGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3Qge3VzZXJzID0gW119ID0gY29udmVyc2F0aW9uO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKHVzZXJzLm1hcChhc3luYyAodXNlcikgPT4ge1xuICAgIGNvbnN0IHt1c2VySWR9ID0gdXNlcjtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbkJ5VXNlcklkKHVzZXJJZCk7XG5cbiAgICBpZihjb25uZWN0aW9uKSB7XG4gICAgICBjb25zdCB7Y29ubmVjdGlvbklkfSA9IGNvbm5lY3Rpb247XG5cbiAgICAgIGlmKGNvbm5lY3Rpb25JZCkge1xuICAgICAgICB3c0NsaWVudC5zZW5kKGNvbm5lY3Rpb25JZCwge1xuICAgICAgICAgIGFjdGlvbjogJ3JlYWt0b3JNZXNzYWdlJyxcbiAgICAgICAgICBkYXRhOiBmb3JtYXRDb250ZW50XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiBzdWNjZXNzU3RhdHVzO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxlQUFxQztBQUVyQyx3QkFBd0Y7QUFDeEYscUJBQTJCO0FBQzNCLElBQUFBLG9CQUF1QjtBQUV2QixNQUFNLGdCQUFnQixFQUFDLFlBQVksSUFBRztBQUN0QyxNQUFNLGNBQWMsRUFBQyxZQUFZLElBQUc7QUFDcEMsTUFBTSxFQUFDLG1CQUFtQixhQUFZLElBQUksUUFBUTtBQUNsRCxNQUFNLGtCQUFrQixDQUFDLFlBQW9CLEVBQUMsY0FBVSxnQkFBTSxZQUFZLEdBQUcsU0FBUyxFQUFDLE9BQU0sRUFBQztBQUV2RixNQUFNLGlCQUFpQixPQUFPLFVBQVU7QUFHN0MsNkJBQVMsWUFBWSxLQUFLO0FBQzFCLFFBQU0sRUFBQyx3QkFBd0IsQ0FBQyxHQUFHLGVBQWMsSUFBSTtBQUNyRCxRQUFNLEVBQUMsY0FBYyxVQUFTLElBQUk7QUFDbEMsUUFBTSxFQUFDLE1BQUssSUFBSTtBQUVoQixNQUFJO0FBQ0YsUUFBRyxjQUFjLFdBQVc7QUFDMUIsZ0JBQU0saUNBQWMsY0FBYyxLQUFLO0FBQ3ZDLGFBQU87QUFBQSxJQUNULFdBQVUsY0FBYyxjQUFjO0FBQ3BDLGdCQUFNLG9DQUFpQixZQUFZO0FBQ25DLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxFQUFDLEdBQUcsYUFBYSxTQUFTLGVBQWM7QUFBQSxFQUNqRCxTQUFRLE9BQU87QUFDYixXQUFPLEVBQUMsR0FBRyxhQUFhLFNBQVMsTUFBTSxRQUFPO0FBQUEsRUFDaEQ7QUFDRjtBQUVPLE1BQU0saUJBQWlCLE9BQU8sVUFBVTtBQUM3QyxRQUFNLDJCQUFTLEtBQUssT0FBTztBQUFBLElBQ3pCLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxFQUNYLENBQUM7QUFFRCxTQUFPO0FBQ1Q7QUFFTyxNQUFNLGlCQUFpQixPQUFPLFVBQVU7QUFDN0MsUUFBTSxFQUFDLE1BQU0sZUFBYyxJQUFJO0FBQy9CLFFBQU0sRUFBQyxhQUFZLElBQUk7QUFDdkIsUUFBTSxVQUFnQyxLQUFLLE1BQU0sSUFBSSxFQUFFO0FBQ3ZELFFBQU0sRUFBQyxnQkFBZ0IsUUFBTyxJQUFJO0FBQ2xDLFFBQU0sb0JBQXdCLDZCQUFhLE9BQU87QUFHbEQsUUFBTSxhQUFhLFVBQU0scUNBQWtCLFlBQVk7QUFDdkQsUUFBTSxFQUFDLEtBQUksSUFBSTtBQUNmLFFBQU0sRUFBQyxNQUFNLE9BQU0sSUFBSTtBQUN2QixRQUFNLGNBQWMsZ0JBQWdCLE1BQU07QUFDMUMsUUFBTSxlQUFlLFVBQU0sMEJBQWdCLGFBQWEsY0FBYztBQUN0RSxRQUFNLEVBQUMsUUFBUSxDQUFDLEVBQUMsSUFBSTtBQUVyQixRQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksT0FBT0MsVUFBUztBQUMxQyxVQUFNLEVBQUMsUUFBQUMsUUFBTSxJQUFJRDtBQUNqQixVQUFNRSxjQUFhLFVBQU0seUNBQXNCRCxPQUFNO0FBRXJELFFBQUdDLGFBQVk7QUFDYixZQUFNLEVBQUMsY0FBQUMsY0FBWSxJQUFJRDtBQUV2QixVQUFHQyxlQUFjO0FBQ2YsbUNBQVMsS0FBS0EsZUFBYztBQUFBLFVBQzFCLFFBQVE7QUFBQSxVQUNSLE1BQU07QUFBQSxRQUNSLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBRUYsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfd2Vic29ja2V0IiwgInVzZXIiLCAidXNlcklkIiwgImNvbm5lY3Rpb24iLCAiY29ubmVjdGlvbklkIl0KfQo=
|