You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/test/session/unit/selectors/conversations_test.js

315 lines
29 KiB
JavaScript

var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var import_chai = require("chai");
var import_conversation = require("../../../../models/conversation");
var import_conversations2 = require("../../../../state/selectors/conversations");
describe("state/selectors/conversations", () => {
describe("#getSortedConversationsList", () => {
it("sorts conversations based on timestamp then by intl-friendly title", () => {
const i18n = /* @__PURE__ */ __name((key) => key, "i18n");
const data = {
id1: {
id: "id1",
activeAt: 0,
name: "No timestamp",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
hasNickname: false,
isPublic: false,
subscriberCount: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
expireTimer: 0,
isPinned: false
},
id2: {
id: "id2",
activeAt: 20,
name: "B",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
hasNickname: false,
isPublic: false,
subscriberCount: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
expireTimer: 0,
isPinned: false
},
id3: {
id: "id3",
activeAt: 20,
name: "C",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
hasNickname: false,
isPublic: false,
subscriberCount: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
expireTimer: 0,
isPinned: false
},
id4: {
id: "id4",
activeAt: 20,
name: "\xC1",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
hasNickname: false,
isPublic: false,
subscriberCount: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
expireTimer: 0,
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: false
},
id5: {
id: "id5",
activeAt: 30,
name: "First!",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
hasNickname: false,
isPublic: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: false
}
};
const comparator = (0, import_conversations2._getConversationComparator)(i18n);
const conversations = (0, import_conversations2._getSortedConversations)(data, comparator);
import_chai.assert.strictEqual(conversations[0].name, "First!");
import_chai.assert.strictEqual(conversations[1].name, "\xC1");
import_chai.assert.strictEqual(conversations[2].name, "B");
import_chai.assert.strictEqual(conversations[3].name, "C");
});
});
describe("#getSortedConversationsWithPinned", () => {
it("sorts conversations based on pin, timestamp then by intl-friendly title", () => {
const i18n = /* @__PURE__ */ __name((key) => key, "i18n");
const data = {
id1: {
id: "id1",
activeAt: 0,
name: "No timestamp",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: false,
hasNickname: false,
isPublic: false
},
id2: {
id: "id2",
activeAt: 20,
name: "B",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: false,
hasNickname: false,
isPublic: false
},
id3: {
id: "id3",
activeAt: 20,
name: "C",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: true,
hasNickname: false,
isPublic: false
},
id4: {
id: "id4",
activeAt: 20,
name: "\xC1",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: true,
hasNickname: false,
isPublic: false
},
id5: {
id: "id5",
activeAt: 30,
name: "First!",
type: import_conversation.ConversationTypeEnum.PRIVATE,
isMe: false,
unreadCount: 1,
mentionedUs: false,
isSelected: false,
isTyping: false,
isBlocked: false,
isKickedFromGroup: false,
left: false,
subscriberCount: 0,
expireTimer: 0,
currentNotificationSetting: "all",
weAreAdmin: false,
isGroup: false,
isPrivate: false,
avatarPath: "",
groupAdmins: [],
lastMessage: void 0,
members: [],
profileName: "df",
isPinned: false,
hasNickname: false,
isPublic: false
}
};
const comparator = (0, import_conversations2._getConversationComparator)(i18n);
const conversations = (0, import_conversations2._getSortedConversations)(data, comparator);
import_chai.assert.strictEqual(conversations[0].name, "\xC1");
import_chai.assert.strictEqual(conversations[1].name, "C");
import_chai.assert.strictEqual(conversations[2].name, "First!");
import_chai.assert.strictEqual(conversations[3].name, "B");
});
});
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vdHMvdGVzdC9zZXNzaW9uL3VuaXQvc2VsZWN0b3JzL2NvbnZlcnNhdGlvbnNfdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jb252ZXJzYXRpb24nO1xuXG5pbXBvcnQgeyBDb252ZXJzYXRpb25Mb29rdXBUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGUvZHVja3MvY29udmVyc2F0aW9ucyc7XG5pbXBvcnQge1xuICBfZ2V0Q29udmVyc2F0aW9uQ29tcGFyYXRvcixcbiAgX2dldFNvcnRlZENvbnZlcnNhdGlvbnMsXG59IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRlL3NlbGVjdG9ycy9jb252ZXJzYXRpb25zJztcblxuZGVzY3JpYmUoJ3N0YXRlL3NlbGVjdG9ycy9jb252ZXJzYXRpb25zJywgKCkgPT4ge1xuICBkZXNjcmliZSgnI2dldFNvcnRlZENvbnZlcnNhdGlvbnNMaXN0JywgKCkgPT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWZ1bmMtYm9keS1sZW5ndGhcbiAgICBpdCgnc29ydHMgY29udmVyc2F0aW9ucyBiYXNlZCBvbiB0aW1lc3RhbXAgdGhlbiBieSBpbnRsLWZyaWVuZGx5IHRpdGxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaTE4biA9IChrZXk6IHN0cmluZykgPT4ga2V5O1xuICAgICAgY29uc3QgZGF0YTogQ29udmVyc2F0aW9uTG9va3VwVHlwZSA9IHtcbiAgICAgICAgaWQxOiB7XG4gICAgICAgICAgaWQ6ICdpZDEnLFxuICAgICAgICAgIGFjdGl2ZUF0OiAwLFxuICAgICAgICAgIG5hbWU6ICdObyB0aW1lc3RhbXAnLFxuICAgICAgICAgIHR5cGU6IENvbnZlcnNhdGlvblR5cGVFbnVtLlBSSVZBVEUsXG4gICAgICAgICAgaXNNZTogZmFsc2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6IDEsXG4gICAgICAgICAgbWVudGlvbmVkVXM6IGZhbHNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzVHlwaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc0Jsb2NrZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzS2lja2VkRnJvbUdyb3VwOiBmYWxzZSxcbiAgICAgICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICAgIHN1YnNjcmliZXJDb3VudDogMCxcbiAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9uU2V0dGluZzogJ2FsbCcsXG4gICAgICAgICAgd2VBcmVBZG1pbjogZmFsc2UsXG4gICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgaXNQcml2YXRlOiBmYWxzZSxcblxuICAgICAgICAgIGF2YXRhclBhdGg6ICcnLFxuICAgICAgICAgIGdyb3VwQWRtaW5zOiBbXSxcbiAgICAgICAgICBsYXN0TWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgIHByb2ZpbGVOYW1lOiAnZGYnLFxuICAgICAgICAgIGV4cGlyZVRpbWVyOiAwLFxuICAgICAgICAgIGlzUGlubmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgaWQyOiB7XG4gICAgICAgICAgaWQ6ICdpZDInLFxuICAgICAgICAgIGFjdGl2ZUF0OiAyMCxcbiAgICAgICAgICBuYW1lOiAnQicsXG4gICAgICAgICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZUVudW0uUFJJVkFURSxcbiAgICAgICAgICBpc01lOiBmYWxzZSxcbiAgICAgICAgICB1bnJlYWRDb3VudDogMSxcbiAgICAgICAgICBtZW50aW9uZWRVczogZmFsc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgaXNUeXBpbmc6IGZhbHNlLFxuICAgICAgICAgIGlzQmxvY2tlZDogZmFsc2UsXG4gICAgICAgICAgaXNLaWNrZWRGcm9tR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGxlZnQ6IGZhbHNlLFxuICAgICAgICAgIGhhc05pY2tuYW1lOiBmYWxzZSxcbiAgICAgICAgICBpc1B1YmxpYzogZmFsc2UsXG4gICAgICAgICAgc3Vic2NyaWJlckNvdW50OiAwLFxuICAgICAgICAgIGN1cnJlbnROb3RpZmljYXRpb25TZXR0aW5nOiAnYWxsJyxcbiAgICAgICAgICB3ZUFyZUFkbWluOiBmYWxzZSxcbiAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICBpc1ByaXZhdGU6IGZhbHNlLFxuXG4gICAgICAgICAgYXZhdGFyUGF0aDogJycsXG4gICAgICAgICAgZ3JvdXBBZG1pbnM6IFtdLFxuICAgICAgICAgIGxhc3RNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgbWVtYmVyczogW10sXG4gICAgICAgICAgcHJvZmlsZU5hbWU6ICdkZicsXG4gICAgICAgICAgZXhwaXJlVGltZXI6IDAsXG4gICAgICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpZDM6IHtcbiAgICAgICAgICBpZDogJ2lkMycsXG4gICAgICAgICAgYWN0aXZlQXQ6IDIwLFxuICAgICAgICAgIG5hbWU6ICdDJyxcbiAgICAgICAgICB0eXBlOiBDb252ZXJzYXRpb25UeXBlRW51bS5QUklWQVRFLFxuICAgICAgICAgIGlzTWU6IGZhbHNlLFxuICAgICAgICAgIHVucmVhZENvdW50OiAxLFxuICAgICAgICAgIG1lbnRpb25lZFVzOiBmYWxzZSxcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICBpc1R5cGluZzogZmFsc2UsXG4gICAgICAgICAgaXNCbG9ja2VkOiBmYWxzZSxcbiAgICAgICAgICBpc0tpY2tlZEZyb21Hcm91cDogZmFsc2UsXG4gICAgICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAgICAgaGFzTmlja25hbWU6IGZhbHNlLFxuICAgICAgICAgIGlzUHVibGljOiBmYWxzZSxcbiAgICAgICAgICBzdWJzY3JpYmVyQ291bnQ6IDAsXG4gICAgICAgICAgY3VycmVudE5vdGlmaWNhdGlvblNldHRpbmc6ICdhbGwnLFxuICAgICAgICAgIHdlQXJlQWRtaW46IGZhbHNlLFxuICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGlzUHJpdmF0ZTogZmFsc2UsXG5cbiAgICAgICAgICBhdmF0YXJQYXRoOiAnJyxcbiAgICAgICAgICBncm91cEFkbWluczogW10sXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZW1iZXJzOiBbXSxcbiAgICAgICAgICBwcm9maWxlTmFtZTogJ2RmJyxcbiAgICAgICAgICBleHBpcmVUaW1lcjogMCxcbiAgICAgICAgICBpc1Bpbm5lZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGlkNDoge1xuICAgICAgICAgIGlkOiAnaWQ0JyxcbiAgICAgICAgICBhY3RpdmVBdDogMjAsXG4gICAgICAgICAgbmFtZTogJ1x1MDBDMScsXG4gICAgICAgICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZUVudW0uUFJJVkFURSxcbiAgICAgICAgICBpc01lOiBmYWxzZSxcbiAgICAgICAgICB1bnJlYWRDb3VudDogMSxcbiAgICAgICAgICBtZW50aW9uZWRVczogZmFsc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgaXNUeXBpbmc6IGZhbHNlLFxuICAgICAgICAgIGlzQmxvY2tlZDogZmFsc2UsXG4gICAgICAgICAgaXNLaWNrZWRGcm9tR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGxlZnQ6IGZhbHNlLFxuICAgICAgICAgIGhhc05pY2tuYW1lOiBmYWxzZSxcbiAgICAgICAgICBpc1B1YmxpYzogZmFsc2UsXG4gICAgICAgICAgc3Vic2NyaWJlckNvdW50OiAwLFxuICAgICAgICAgIGN1cnJlbnROb3RpZmljYXRpb25TZXR0aW5nOiAnYWxsJyxcbiAgICAgICAgICB3ZUFyZUFkbWluOiBmYWxzZSxcbiAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICBpc1ByaXZhdGU6IGZhbHNlLFxuXG4gICAgICAgICAgYXZhdGFyUGF0aDogJycsXG4gICAgICAgICAgZ3JvdXBBZG1pbnM6IFtdLFxuICAgICAgICAgIGV4cGlyZVRpbWVyOiAwLFxuICAgICAgICAgIGxhc3RNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgbWVtYmVyczogW10sXG4gICAgICAgICAgcHJvZmlsZU5hbWU6ICdkZicsXG4gICAgICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpZDU6IHtcbiAgICAgICAgICBpZDogJ2lkNScsXG4gICAgICAgICAgYWN0aXZlQXQ6IDMwLFxuICAgICAgICAgIG5hbWU6ICdGaXJzdCEnLFxuICAgICAgICAgIHR5cGU6IENvbnZlcnNhdGlvblR5cGVFbnVtLlBSSVZBVEUsXG4gICAgICAgICAgaXNNZTogZmFsc2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6IDEsXG4gICAgICAgICAgbWVudGlvbmVkVXM6IGZhbHNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzVHlwaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc0Jsb2NrZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzS2lja2VkRnJvbUdyb3VwOiBmYWxzZSxcbiAgICAgICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICAgIHN1YnNjcmliZXJDb3VudDogMCxcbiAgICAgICAgICBleHBpcmVUaW1lcjogMCxcbiAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9uU2V0dGluZzogJ2FsbCcsXG4gICAgICAgICAgd2VBcmVBZG1pbjogZmFsc2UsXG4gICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgaXNQcml2YXRlOiBmYWxzZSxcblxuICAgICAgICAgIGF2YXRhclBhdGg6ICcnLFxuICAgICAgICAgIGdyb3VwQWRtaW5zOiBbXSxcbiAgICAgICAgICBsYXN0TWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgIHByb2ZpbGVOYW1lOiAnZGYnLFxuICAgICAgICAgIGlzUGlubmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb21wYXJhdG9yID0gX2dldENvbnZlcnNhdGlvbkNvbXBhcmF0b3IoaTE4bik7XG4gICAgICBjb25zdCBjb252ZXJzYXRpb25zID0gX2dldFNvcnRlZENvbnZlcnNhdGlvbnMoZGF0YSwgY29tcGFyYXRvcik7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb252ZXJzYXRpb25zWzBdLm5hbWUsICdGaXJzdCEnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb252ZXJzYXRpb25zWzFdLm5hbWUsICdcdTAwQzEnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb252ZXJzYXRpb25zWzJdLm5hbWUsICdCJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29udmVyc2F0aW9uc1szXS5uYW1lLCAnQycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI2dldFNvcnRlZENvbnZlcnNhdGlvbnNXaXRoUGlubmVkJywgKCkgPT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWZ1bmMtYm9keS1sZW5ndGhcbiAgICBpdCgnc29ydHMgY29udmVyc2F0aW9ucyBiYXNlZCBvbiBwaW4sIHRpbWVzdGFtcCB0aGVuIGJ5IGludGwtZnJpZW5kbHkgdGl0bGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpMThuID0gKGtleTogc3RyaW5nKSA9PiBrZXk7XG4gICAgICBjb25zdCBkYXRhOiBDb252ZXJzYXRpb25Mb29rdXBUeXBlID0ge1xuICAgICAgICBpZDE6IHtcbiAgICAgICAgICBpZDogJ2lkMScsXG4gICAgICAgICAgYWN0aXZlQXQ6IDAsXG4gICAgICAgICAgbmFtZTogJ05vIHRpbWVzdGFtcCcsXG5cbiAgICAgICAgICB0eXBlOiBDb252ZXJzYXRpb25UeXBlRW51bS5QUklWQVRFLFxuICAgICAgICAgIGlzTWU6IGZhbHNlLFxuICAgICAgICAgIHVucmVhZENvdW50OiAxLFxuICAgICAgICAgIG1lbnRpb25lZFVzOiBmYWxzZSxcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICBpc1R5cGluZzogZmFsc2UsXG4gICAgICAgICAgaXNCbG9ja2VkOiBmYWxzZSxcbiAgICAgICAgICBpc0tpY2tlZEZyb21Hcm91cDogZmFsc2UsXG4gICAgICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAgICAgc3Vic2NyaWJlckNvdW50OiAwLFxuICAgICAgICAgIGV4cGlyZVRpbWVyOiAwLFxuICAgICAgICAgIGN1cnJlbnROb3RpZmljYXRpb25TZXR0aW5nOiAnYWxsJyxcbiAgICAgICAgICB3ZUFyZUFkbWluOiBmYWxzZSxcbiAgICAgICAgICBpc0dyb3VwOiBmYWxzZSxcbiAgICAgICAgICBpc1ByaXZhdGU6IGZhbHNlLFxuXG4gICAgICAgICAgYXZhdGFyUGF0aDogJycsXG4gICAgICAgICAgZ3JvdXBBZG1pbnM6IFtdLFxuICAgICAgICAgIGxhc3RNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgbWVtYmVyczogW10sXG4gICAgICAgICAgcHJvZmlsZU5hbWU6ICdkZicsXG4gICAgICAgICAgaXNQaW5uZWQ6IGZhbHNlLFxuICAgICAgICAgIGhhc05pY2tuYW1lOiBmYWxzZSxcbiAgICAgICAgICBpc1B1YmxpYzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGlkMjoge1xuICAgICAgICAgIGlkOiAnaWQyJyxcbiAgICAgICAgICBhY3RpdmVBdDogMjAsXG4gICAgICAgICAgbmFtZTogJ0InLFxuXG4gICAgICAgICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZUVudW0uUFJJVkFURSxcbiAgICAgICAgICBpc01lOiBmYWxzZSxcbiAgICAgICAgICB1bnJlYWRDb3VudDogMSxcbiAgICAgICAgICBtZW50aW9uZWRVczogZmFsc2UsXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgaXNUeXBpbmc6IGZhbHNlLFxuICAgICAgICAgIGlzQmxvY2tlZDogZmFsc2UsXG4gICAgICAgICAgaXNLaWNrZWRGcm9tR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGxlZnQ6IGZhbHNlLFxuICAgICAgICAgIHN1YnNjcmliZXJDb3VudDogMCxcbiAgICAgICAgICBleHBpcmVUaW1lcjogMCxcbiAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9uU2V0dGluZzogJ2FsbCcsXG4gICAgICAgICAgd2VBcmVBZG1pbjogZmFsc2UsXG4gICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgaXNQcml2YXRlOiBmYWxzZSxcblxuICAgICAgICAgIGF2YXRhclBhdGg6ICcnLFxuICAgICAgICAgIGdyb3VwQWRtaW5zOiBbXSxcbiAgICAgICAgICBsYXN0TWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgIHByb2ZpbGVOYW1lOiAnZGYnLFxuICAgICAgICAgIGlzUGlubmVkOiBmYWxzZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpZDM6IHtcbiAgICAgICAgICBpZDogJ2lkMycsXG4gICAgICAgICAgYWN0aXZlQXQ6IDIwLFxuICAgICAgICAgIG5hbWU6ICdDJyxcblxuICAgICAgICAgIHR5cGU6IENvbnZlcnNhdGlvblR5cGVFbnVtLlBSSVZBVEUsXG4gICAgICAgICAgaXNNZTogZmFsc2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6IDEsXG4gICAgICAgICAgbWVudGlvbmVkVXM6IGZhbHNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzVHlwaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc0Jsb2NrZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzS2lja2VkRnJvbUdyb3VwOiBmYWxzZSxcbiAgICAgICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgICAgICBzdWJzY3JpYmVyQ291bnQ6IDAsXG4gICAgICAgICAgZXhwaXJlVGltZXI6IDAsXG4gICAgICAgICAgY3VycmVudE5vdGlmaWNhdGlvblNldHRpbmc6ICdhbGwnLFxuICAgICAgICAgIHdlQXJlQWRtaW46IGZhbHNlLFxuICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGlzUHJpdmF0ZTogZmFsc2UsXG5cbiAgICAgICAgICBhdmF0YXJQYXRoOiAnJyxcbiAgICAgICAgICBncm91cEFkbWluczogW10sXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZW1iZXJzOiBbXSxcbiAgICAgICAgICBwcm9maWxlTmFtZTogJ2RmJyxcbiAgICAgICAgICBpc1Bpbm5lZDogdHJ1ZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpZDQ6IHtcbiAgICAgICAgICBpZDogJ2lkNCcsXG4gICAgICAgICAgYWN0aXZlQXQ6IDIwLFxuICAgICAgICAgIG5hbWU6ICdcdTAwQzEnLFxuICAgICAgICAgIHR5cGU6IENvbnZlcnNhdGlvblR5cGVFbnVtLlBSSVZBVEUsXG4gICAgICAgICAgaXNNZTogZmFsc2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6IDEsXG4gICAgICAgICAgbWVudGlvbmVkVXM6IGZhbHNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzVHlwaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc0Jsb2NrZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzS2lja2VkRnJvbUdyb3VwOiBmYWxzZSxcbiAgICAgICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgICAgICBzdWJzY3JpYmVyQ291bnQ6IDAsXG4gICAgICAgICAgZXhwaXJlVGltZXI6IDAsXG4gICAgICAgICAgY3VycmVudE5vdGlmaWNhdGlvblNldHRpbmc6ICdhbGwnLFxuICAgICAgICAgIHdlQXJlQWRtaW46IGZhbHNlLFxuICAgICAgICAgIGlzR3JvdXA6IGZhbHNlLFxuICAgICAgICAgIGlzUHJpdmF0ZTogZmFsc2UsXG5cbiAgICAgICAgICBhdmF0YXJQYXRoOiAnJyxcbiAgICAgICAgICBncm91cEFkbWluczogW10sXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZW1iZXJzOiBbXSxcbiAgICAgICAgICBwcm9maWxlTmFtZTogJ2RmJyxcbiAgICAgICAgICBpc1Bpbm5lZDogdHJ1ZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpZDU6IHtcbiAgICAgICAgICBpZDogJ2lkNScsXG4gICAgICAgICAgYWN0aXZlQXQ6IDMwLFxuICAgICAgICAgIG5hbWU6ICdGaXJzdCEnLFxuICAgICAgICAgIHR5cGU6IENvbnZlcnNhdGlvblR5cGVFbnVtLlBSSVZBVEUsXG4gICAgICAgICAgaXNNZTogZmFsc2UsXG4gICAgICAgICAgdW5yZWFkQ291bnQ6IDEsXG4gICAgICAgICAgbWVudGlvbmVkVXM6IGZhbHNlLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzVHlwaW5nOiBmYWxzZSxcbiAgICAgICAgICBpc0Jsb2NrZWQ6IGZhbHNlLFxuICAgICAgICAgIGlzS2lja2VkRnJvbUdyb3VwOiBmYWxzZSxcbiAgICAgICAgICBsZWZ0OiBmYWxzZSxcblxuICAgICAgICAgIHN1YnNjcmliZXJDb3VudDogMCxcbiAgICAgICAgICBleHBpcmVUaW1lcjogMCxcbiAgICAgICAgICBjdXJyZW50Tm90aWZpY2F0aW9uU2V0dGluZzogJ2FsbCcsXG4gICAgICAgICAgd2VBcmVBZG1pbjogZmFsc2UsXG4gICAgICAgICAgaXNHcm91cDogZmFsc2UsXG4gICAgICAgICAgaXNQcml2YXRlOiBmYWxzZSxcblxuICAgICAgICAgIGF2YXRhclBhdGg6ICcnLFxuICAgICAgICAgIGdyb3VwQWRtaW5zOiBbXSxcbiAgICAgICAgICBsYXN0TWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgIG1lbWJlcnM6IFtdLFxuICAgICAgICAgIHByb2ZpbGVOYW1lOiAnZGYnLFxuICAgICAgICAgIGlzUGlubmVkOiBmYWxzZSxcbiAgICAgICAgICBoYXNOaWNrbmFtZTogZmFsc2UsXG4gICAgICAgICAgaXNQdWJsaWM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBfZ2V0Q29udmVyc2F0aW9uQ29tcGFyYXRvcihpMThuKTtcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbnMgPSBfZ2V0U29ydGVkQ29udmVyc2F0aW9ucyhkYXRhLCBjb21wYXJhdG9yKTtcblxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnZlcnNhdGlvbnNbMF0ubmFtZSwgJ1x1MDBDMScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGNvbnZlcnNhdGlvbnNbMV0ubmFtZSwgJ0MnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb252ZXJzYXRpb25zWzJdLm5hbWUsICdGaXJzdCEnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChjb252ZXJzYXRpb25zWzNdLm5hbWUsICdCJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOztBQUFBLGtCQUF1QjtBQUN2Qiww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