stream-chat-angular 1.4.1 → 2.2.0
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/assets/i18n/en.d.ts +2 -0
- package/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +626 -78
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/i18n/en.js +3 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel-header/channel-header.component.js +12 -3
- package/esm2015/lib/channel-preview/channel-preview.component.js +9 -5
- package/esm2015/lib/channel.service.js +46 -7
- package/esm2015/lib/chat-client.service.js +16 -1
- package/esm2015/lib/injection-tokens.js +3 -0
- package/esm2015/lib/message/highlight-mentions.pipe.js +23 -0
- package/esm2015/lib/message/message.component.js +5 -2
- package/esm2015/lib/message-actions-box/message-actions-box.component.js +2 -2
- package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +155 -0
- package/esm2015/lib/message-input/message-input-config.service.js +3 -1
- package/esm2015/lib/message-input/message-input.component.js +81 -27
- package/esm2015/lib/message-input/textarea/textarea.component.js +42 -0
- package/esm2015/lib/message-input/textarea.directive.js +69 -0
- package/esm2015/lib/message-input/textarea.interface.js +2 -0
- package/esm2015/lib/message-list/message-list.component.js +3 -2
- package/esm2015/lib/message-preview.js +3 -2
- package/esm2015/lib/message-reactions/message-reactions.component.js +12 -13
- package/esm2015/lib/notification-list/notification-list.component.js +1 -1
- package/esm2015/lib/notification.service.js +1 -1
- package/esm2015/lib/stream-autocomplete-textarea.module.js +33 -0
- package/esm2015/lib/stream-avatar.module.js +19 -0
- package/esm2015/lib/stream-chat.module.js +15 -12
- package/esm2015/lib/stream-textarea.module.js +31 -0
- package/esm2015/lib/transliteration.service.js +16 -0
- package/esm2015/lib/types.js +1 -1
- package/esm2015/public-api.js +14 -1
- package/fesm2015/stream-chat-angular.js +555 -78
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel-header/channel-header.component.d.ts +1 -0
- package/lib/channel-preview/channel-preview.component.d.ts +1 -0
- package/lib/channel.service.d.ts +4 -2
- package/lib/chat-client.service.d.ts +1 -0
- package/lib/injection-tokens.d.ts +3 -0
- package/lib/message/highlight-mentions.pipe.d.ts +8 -0
- package/lib/message/message.component.d.ts +2 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +47 -0
- package/lib/message-input/message-input-config.service.d.ts +5 -0
- package/lib/message-input/message-input.component.d.ts +25 -7
- package/lib/message-input/textarea/textarea.component.d.ts +16 -0
- package/lib/message-input/textarea.directive.d.ts +21 -0
- package/lib/message-input/textarea.interface.d.ts +12 -0
- package/lib/message-list/message-list.component.d.ts +1 -0
- package/lib/message-preview.d.ts +1 -1
- package/lib/message-reactions/message-reactions.component.d.ts +1 -1
- package/lib/notification-list/notification-list.component.d.ts +3 -3
- package/lib/notification.service.d.ts +2 -2
- package/lib/stream-autocomplete-textarea.module.d.ts +11 -0
- package/lib/stream-avatar.module.d.ts +9 -0
- package/lib/stream-chat.module.d.ts +21 -20
- package/lib/stream-textarea.module.d.ts +9 -0
- package/lib/transliteration.service.d.ts +7 -0
- package/lib/types.d.ts +7 -1
- package/package.json +3 -2
- package/public-api.d.ts +13 -0
- package/src/assets/i18n/en.ts +4 -0
- package/src/assets/version.ts +1 -1
|
@@ -77,6 +77,8 @@ export const en = {
|
|
|
77
77
|
failed: 'failed',
|
|
78
78
|
retry: 'retry',
|
|
79
79
|
test: 'success',
|
|
80
|
+
'Sending links is not allowed in this conversation': 'Sending links is not allowed in this conversation',
|
|
81
|
+
"You can't send messages in this channel": "You can't send messages in this channel",
|
|
80
82
|
},
|
|
81
83
|
};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9hc3NldHMvaTE4bi9lbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUc7SUFDaEIsVUFBVSxFQUFFO1FBQ1YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsY0FBYyxFQUFFLGNBQWM7UUFDOUIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLEtBQUssRUFBRSxPQUFPO1FBQ2Qsb0JBQW9CLEVBQUUsb0JBQW9CO1FBQzFDLG1CQUFtQixFQUFFLG1CQUFtQjtRQUN4Qyx5Q0FBeUMsRUFDdkMseUNBQXlDO1FBQzNDLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLGNBQWMsRUFBRSxjQUFjO1FBQzlCLDZCQUE2QixFQUFFLDZCQUE2QjtRQUM1RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7UUFDbEMsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLG1CQUFtQixFQUFFLG1CQUFtQjtRQUN4QywwREFBMEQsRUFDeEQsMERBQTBEO1FBQzVELHdCQUF3QixFQUFFLHdCQUF3QjtRQUNsRCx5QkFBeUIsRUFBRSx5QkFBeUI7UUFDcEQsdUJBQXVCLEVBQUUsdUJBQXVCO1FBQ2hELDRCQUE0QixFQUFFLDRCQUE0QjtRQUMxRCwyQkFBMkIsRUFBRSwyQkFBMkI7UUFDeEQsc0JBQXNCLEVBQUUsc0JBQXNCO1FBQzlDLHVCQUF1QixFQUFFLHVCQUF1QjtRQUNoRCwyQkFBMkIsRUFBRSwyQkFBMkI7UUFDeEQsZ0JBQWdCLEVBQUUsZ0JBQWdCO1FBQ2xDLDJCQUEyQixFQUFFLDJCQUEyQjtRQUN4RCxJQUFJLEVBQUUsTUFBTTtRQUNaLGdCQUFnQixFQUFFLGdCQUFnQjtRQUNsQywrQkFBK0IsRUFBRSwrQkFBK0I7UUFDaEUsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLHVDQUF1QyxFQUNyQyx1Q0FBdUM7UUFDekMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1FBQ2xDLElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLEtBQUs7UUFDVixlQUFlLEVBQUUsZUFBZTtRQUNoQyxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1FBQ2xDLHFCQUFxQixFQUFFLHFCQUFxQjtRQUM1QyxtQkFBbUIsRUFBRSxtQkFBbUI7UUFDeEMsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLGlCQUFpQixFQUFFLGlCQUFpQjtRQUNwQyxHQUFHLEVBQUUsS0FBSztRQUNWLFdBQVcsRUFBRSxXQUFXO1FBQ3hCLEtBQUssRUFBRSxPQUFPO1FBQ2Qsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLGNBQWMsRUFBRSxjQUFjO1FBQzlCLElBQUksRUFBRSxNQUFNO1FBQ1osNkJBQTZCLEVBQUUsNkJBQTZCO1FBQzVELFlBQVksRUFBRSxZQUFZO1FBQzFCLGNBQWMsRUFBRSxjQUFjO1FBQzlCLHVCQUF1QixFQUFFLHVCQUF1QjtRQUNoRCw2QkFBNkIsRUFBRSw2QkFBNkI7UUFDNUQsTUFBTSxFQUFFLFFBQVE7UUFDaEIsbUJBQW1CLEVBQUUsbUJBQW1CO1FBQ3hDLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEtBQUssRUFBRSxPQUFPO1FBQ2QsMENBQTBDLEVBQ3hDLDBDQUEwQztRQUM1QyxnQ0FBZ0MsRUFBRSxnQ0FBZ0M7UUFDbEUsNENBQTRDLEVBQzFDLDRDQUE0QztRQUM5QyxJQUFJLEVBQUUsTUFBTTtRQUNaLHFDQUFxQyxFQUNuQyxxQ0FBcUM7UUFDdkMsb0RBQW9ELEVBQ2xELG9EQUFvRDtRQUN0RCwrQ0FBK0MsRUFDN0MsK0NBQStDO1FBQ2pELHNDQUFzQyxFQUNwQyxzQ0FBc0M7UUFDeEMsdUJBQXVCLEVBQUUsdUJBQXVCO1FBQ2hELDJCQUEyQixFQUFFLDJCQUEyQjtRQUN4RCwwQkFBMEIsRUFBRSwwQkFBMEI7UUFDdEQsMkJBQTJCLEVBQUUsMkJBQTJCO1FBQ3hELDZCQUE2QixFQUFFLDZCQUE2QjtRQUM1RCwyQkFBMkIsRUFBRSwyQkFBMkI7UUFDeEQsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxXQUFXLEVBQUUsV0FBVztRQUN4QixNQUFNLEVBQUUsUUFBUTtRQUNoQixLQUFLLEVBQUUsT0FBTztRQUNkLElBQUksRUFBRSxTQUFTO1FBQ2YsbURBQW1ELEVBQ2pELG1EQUFtRDtRQUNyRCx5Q0FBeUMsRUFDdkMseUNBQXlDO0tBQzVDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbiA9IHtcbiAgc3RyZWFtQ2hhdDoge1xuICAgICcxIHJlcGx5JzogJzEgcmVwbHknLFxuICAgICdBdHRhY2ggZmlsZXMnOiAnQXR0YWNoIGZpbGVzJyxcbiAgICBDYW5jZWw6ICdDYW5jZWwnLFxuICAgICdDaGFubmVsIE1pc3NpbmcnOiAnQ2hhbm5lbCBNaXNzaW5nJyxcbiAgICBDbG9zZTogJ0Nsb3NlJyxcbiAgICAnQ2xvc2UgZW1vamkgcGlja2VyJzogJ0Nsb3NlIGVtb2ppIHBpY2tlcicsXG4gICAgJ0NvbW1hbmRzIG1hdGNoaW5nJzogJ0NvbW1hbmRzIG1hdGNoaW5nJyxcbiAgICAnQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJzpcbiAgICAgICdDb25uZWN0aW9uIGZhaWx1cmUsIHJlY29ubmVjdGluZyBub3cuLi4nLFxuICAgIERlbGV0ZTogJ0RlbGV0ZScsXG4gICAgRGVsaXZlcmVkOiAnRGVsaXZlcmVkJyxcbiAgICAnRWRpdCBNZXNzYWdlJzogJ0VkaXQgTWVzc2FnZScsXG4gICAgJ0VkaXQgbWVzc2FnZSByZXF1ZXN0IGZhaWxlZCc6ICdFZGl0IG1lc3NhZ2UgcmVxdWVzdCBmYWlsZWQnLFxuICAgICdFbW9qaSBtYXRjaGluZyc6ICdFbW9qaSBtYXRjaGluZycsXG4gICAgJ0VtcHR5IG1lc3NhZ2UuLi4nOiAnRW1wdHkgbWVzc2FnZS4uLicsXG4gICAgJ0Vycm9yIGFkZGluZyBmbGFnJzogJ0Vycm9yIGFkZGluZyBmbGFnJyxcbiAgICAnRXJyb3IgY29ubmVjdGluZyB0byBjaGF0LCByZWZyZXNoIHRoZSBwYWdlIHRvIHRyeSBhZ2Fpbi4nOlxuICAgICAgJ0Vycm9yIGNvbm5lY3RpbmcgdG8gY2hhdCwgcmVmcmVzaCB0aGUgcGFnZSB0byB0cnkgYWdhaW4uJyxcbiAgICAnRXJyb3IgZGVsZXRpbmcgbWVzc2FnZSc6ICdFcnJvciBkZWxldGluZyBtZXNzYWdlJyxcbiAgICAnRXJyb3IgbXV0aW5nIGEgdXNlciAuLi4nOiAnRXJyb3IgbXV0aW5nIGEgdXNlciAuLi4nLFxuICAgICdFcnJvciBwaW5uaW5nIG1lc3NhZ2UnOiAnRXJyb3IgcGlubmluZyBtZXNzYWdlJyxcbiAgICAnRXJyb3IgcmVtb3ZpbmcgbWVzc2FnZSBwaW4nOiAnRXJyb3IgcmVtb3ZpbmcgbWVzc2FnZSBwaW4nLFxuICAgICdFcnJvciB1bm11dGluZyBhIHVzZXIgLi4uJzogJ0Vycm9yIHVubXV0aW5nIGEgdXNlciAuLi4nLFxuICAgICdFcnJvciB1cGxvYWRpbmcgZmlsZSc6ICdFcnJvciB1cGxvYWRpbmcgZmlsZScsXG4gICAgJ0Vycm9yIHVwbG9hZGluZyBpbWFnZSc6ICdFcnJvciB1cGxvYWRpbmcgaW1hZ2UnLFxuICAgICdFcnJvciBkZWxldGluZyBhdHRhY2htZW50JzogJ0Vycm9yIGRlbGV0aW5nIGF0dGFjaG1lbnQnLFxuICAgICdFcnJvciDCtyBVbnNlbnQnOiAnRXJyb3IgwrcgVW5zZW50JyxcbiAgICAnRXJyb3I6IHt7IGVycm9yTWVzc2FnZSB9fSc6ICdFcnJvcjoge3sgZXJyb3JNZXNzYWdlIH19JyxcbiAgICBGbGFnOiAnRmxhZycsXG4gICAgJ01lc3NhZ2UgRmFpbGVkJzogJ01lc3NhZ2UgRmFpbGVkJyxcbiAgICAnTWVzc2FnZSBGYWlsZWQgwrcgVW5hdXRob3JpemVkJzogJ01lc3NhZ2UgRmFpbGVkIMK3IFVuYXV0aG9yaXplZCcsXG4gICAgJ01lc3NhZ2UgZGVsZXRlZCc6ICdNZXNzYWdlIGRlbGV0ZWQnLFxuICAgICdNZXNzYWdlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmbGFnZ2VkJzpcbiAgICAgICdNZXNzYWdlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmbGFnZ2VkJyxcbiAgICAnTWVzc2FnZSBwaW5uZWQnOiAnTWVzc2FnZSBwaW5uZWQnLFxuICAgIE11dGU6ICdNdXRlJyxcbiAgICBOZXc6ICdOZXcnLFxuICAgICdOZXcgTWVzc2FnZXMhJzogJ05ldyBNZXNzYWdlcyEnLFxuICAgICdObyByZXN1bHRzIGZvdW5kJzogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICdOb3RoaW5nIHlldC4uLic6ICdOb3RoaW5nIHlldC4uLicsXG4gICAgJ09ubHkgdmlzaWJsZSB0byB5b3UnOiAnT25seSB2aXNpYmxlIHRvIHlvdScsXG4gICAgJ09wZW4gZW1vamkgcGlja2VyJzogJ09wZW4gZW1vamkgcGlja2VyJyxcbiAgICAnUGVvcGxlIG1hdGNoaW5nJzogJ1Blb3BsZSBtYXRjaGluZycsXG4gICAgJ1BpY2sgeW91ciBlbW9qaSc6ICdQaWNrIHlvdXIgZW1vamknLFxuICAgIFBpbjogJ1BpbicsXG4gICAgJ1Bpbm5lZCBieSc6ICdQaW5uZWQgYnknLFxuICAgIFJlcGx5OiAnUmVwbHknLFxuICAgICdSZXBseSB0byBNZXNzYWdlJzogJ1JlcGx5IHRvIE1lc3NhZ2UnLFxuICAgIFNlYXJjaDogJ1NlYXJjaCcsXG4gICAgJ1NlYXJjaGluZy4uLic6ICdTZWFyY2hpbmcuLi4nLFxuICAgIFNlbmQ6ICdTZW5kJyxcbiAgICAnU2VuZCBtZXNzYWdlIHJlcXVlc3QgZmFpbGVkJzogJ1NlbmQgbWVzc2FnZSByZXF1ZXN0IGZhaWxlZCcsXG4gICAgJ1NlbmRpbmcuLi4nOiAnU2VuZGluZy4uLicsXG4gICAgJ1Nsb3cgTW9kZSBPTic6ICdTbG93IE1vZGUgT04nLFxuICAgICdTdGFydCBvZiBhIG5ldyB0aHJlYWQnOiAnU3RhcnQgb2YgYSBuZXcgdGhyZWFkJyxcbiAgICAnVGhpcyBtZXNzYWdlIHdhcyBkZWxldGVkLi4uJzogJ1RoaXMgbWVzc2FnZSB3YXMgZGVsZXRlZC4uLicsXG4gICAgVGhyZWFkOiAnVGhyZWFkJyxcbiAgICAnVHlwZSB5b3VyIG1lc3NhZ2UnOiAnVHlwZSB5b3VyIG1lc3NhZ2UnLFxuICAgIFVubXV0ZTogJ1VubXV0ZScsXG4gICAgVW5waW46ICdVbnBpbicsXG4gICAgJ1dhaXQgdW50aWwgYWxsIGF0dGFjaG1lbnRzIGhhdmUgdXBsb2FkZWQnOlxuICAgICAgJ1dhaXQgdW50aWwgYWxsIGF0dGFjaG1lbnRzIGhhdmUgdXBsb2FkZWQnLFxuICAgICdZb3UgaGF2ZSBubyBjaGFubmVscyBjdXJyZW50bHknOiAnWW91IGhhdmUgbm8gY2hhbm5lbHMgY3VycmVudGx5JyxcbiAgICBcIllvdSd2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlc1wiOlxuICAgICAgXCJZb3UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXNcIixcbiAgICBsaXZlOiAnbGl2ZScsXG4gICAgJ3RoaXMgY29udGVudCBjb3VsZCBub3QgYmUgZGlzcGxheWVkJzpcbiAgICAgICd0aGlzIGNvbnRlbnQgY291bGQgbm90IGJlIGRpc3BsYXllZCcsXG4gICAgJ3t7IGNvbW1hU2VwYXJhdGVkVXNlcnMgfX0gYW5kIHt7IG1vcmVDb3VudCB9fSBtb3JlJzpcbiAgICAgICd7eyBjb21tYVNlcGFyYXRlZFVzZXJzIH19IGFuZCB7eyBtb3JlQ291bnQgfX0gbW9yZScsXG4gICAgJ3t7IGNvbW1hU2VwYXJhdGVkVXNlcnMgfX0sIGFuZCB7eyBsYXN0VXNlciB9fSc6XG4gICAgICAne3sgY29tbWFTZXBhcmF0ZWRVc2VycyB9fSwgYW5kIHt7IGxhc3RVc2VyIH19JyxcbiAgICAne3sgZmlyc3RVc2VyIH19IGFuZCB7eyBzZWNvbmRVc2VyIH19JzpcbiAgICAgICd7eyBmaXJzdFVzZXIgfX0gYW5kIHt7IHNlY29uZFVzZXIgfX0nLFxuICAgICd7eyBpbWFnZUNvdW50IH19IG1vcmUnOiAne3sgaW1hZ2VDb3VudCB9fSBtb3JlJyxcbiAgICAne3sgbWVtYmVyQ291bnQgfX0gbWVtYmVycyc6ICd7eyBtZW1iZXJDb3VudCB9fSBtZW1iZXJzJyxcbiAgICAne3sgcmVwbHlDb3VudCB9fSByZXBsaWVzJzogJ3t7IHJlcGx5Q291bnQgfX0gcmVwbGllcycsXG4gICAgJ3t7IHVzZXIgfX0gaGFzIGJlZW4gbXV0ZWQnOiAne3sgdXNlciB9fSBoYXMgYmVlbiBtdXRlZCcsXG4gICAgJ3t7IHVzZXIgfX0gaGFzIGJlZW4gdW5tdXRlZCc6ICd7eyB1c2VyIH19IGhhcyBiZWVuIHVubXV0ZWQnLFxuICAgICd7eyB3YXRjaGVyQ291bnQgfX0gb25saW5lJzogJ3t7IHdhdGNoZXJDb3VudCB9fSBvbmxpbmUnLFxuICAgICfwn4+ZIEF0dGFjaG1lbnQuLi4nOiAn8J+PmSBBdHRhY2htZW50Li4uJyxcbiAgICAnQ29ubmVjdGlvbiBlcnJvcic6ICdDb25uZWN0aW9uIGVycm9yJyxcbiAgICAnTG9hZCBtb3JlJzogJ0xvYWQgbW9yZScsXG4gICAgZmFpbGVkOiAnZmFpbGVkJyxcbiAgICByZXRyeTogJ3JldHJ5JyxcbiAgICB0ZXN0OiAnc3VjY2VzcycsXG4gICAgJ1NlbmRpbmcgbGlua3MgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb252ZXJzYXRpb24nOlxuICAgICAgJ1NlbmRpbmcgbGlua3MgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb252ZXJzYXRpb24nLFxuICAgIFwiWW91IGNhbid0IHNlbmQgbWVzc2FnZXMgaW4gdGhpcyBjaGFubmVsXCI6XG4gICAgICBcIllvdSBjYW4ndCBzZW5kIG1lc3NhZ2VzIGluIHRoaXMgY2hhbm5lbFwiLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const version = '2.2.0';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICcyLjIuMCc7XG4iXX0=
|
|
@@ -8,7 +8,16 @@ export class ChannelHeaderComponent {
|
|
|
8
8
|
constructor(channelService, channelListToggleService) {
|
|
9
9
|
this.channelService = channelService;
|
|
10
10
|
this.channelListToggleService = channelListToggleService;
|
|
11
|
-
this.channelService.activeChannel$.subscribe((c) =>
|
|
11
|
+
this.channelService.activeChannel$.subscribe((c) => {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
this.activeChannel = c;
|
|
14
|
+
const capabilities = (_b = (_a = this.activeChannel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.own_capabilities;
|
|
15
|
+
if (!capabilities) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.canReceiveConnectEvents =
|
|
19
|
+
capabilities.indexOf('connect-events') !== -1;
|
|
20
|
+
});
|
|
12
21
|
}
|
|
13
22
|
toggleMenu(event) {
|
|
14
23
|
event.stopPropagation();
|
|
@@ -24,7 +33,7 @@ export class ChannelHeaderComponent {
|
|
|
24
33
|
}
|
|
25
34
|
}
|
|
26
35
|
ChannelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChannelListToggleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <span class=\"str-chat__header-hamburger--line\"></span>\n <span class=\"str-chat__header-hamburger--line\"></span>\n <span class=\"str-chat__header-hamburger--line\"></span>\n </div>\n <stream-avatar\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ activeChannel?.data?.name }}\"\n ></stream-avatar>\n <div class=\"str-chat__header-livestream-left\">\n <p class=\"str-chat__header-livestream-left--title\">\n {{ activeChannel?.data?.name }}\n </p>\n <p class=\"str-chat__header-livestream-left--members\">\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{'streamChat.{{ watcherCount }} online'
|
|
36
|
+
ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <span class=\"str-chat__header-hamburger--line\"></span>\n <span class=\"str-chat__header-hamburger--line\"></span>\n <span class=\"str-chat__header-hamburger--line\"></span>\n </div>\n <stream-avatar\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ activeChannel?.data?.name }}\"\n ></stream-avatar>\n <div class=\"str-chat__header-livestream-left\">\n <p data-testid=\"name\" class=\"str-chat__header-livestream-left--title\">\n {{ activeChannel?.data?.name }}\n </p>\n <p data-testid=\"info\" class=\"str-chat__header-livestream-left--members\">\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </div>\n</div>\n", components: [{ type: i3.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], pipes: { "translate": i4.TranslatePipe } });
|
|
28
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, decorators: [{
|
|
29
38
|
type: Component,
|
|
30
39
|
args: [{
|
|
@@ -33,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
33
42
|
styles: [],
|
|
34
43
|
}]
|
|
35
44
|
}], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChannelListToggleService }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVMUMsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUNVLGNBQThCLEVBQzlCLHdCQUFrRDtRQURsRCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUUxRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7WUFDdkIsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUksMENBQ3pDLGdCQUE0QixDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyx1QkFBdUI7Z0JBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWTtRQUNyQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjs7UUFDbEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxJQUFJLDBDQUFFLFlBQVksS0FBSSxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7O1FBQ25CLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsS0FBSywwQ0FBRSxhQUFhLEtBQUksQ0FBQyxFQUFFLENBQUM7SUFDekUsQ0FBQzs7bUhBL0JVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDZEQ1ZuQywwK0JBeUJBOzJGRGZhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxMaXN0VG9nZ2xlU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QtdG9nZ2xlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgYWN0aXZlQ2hhbm5lbDogQ2hhbm5lbCB8IHVuZGVmaW5lZDtcbiAgY2FuUmVjZWl2ZUNvbm5lY3RFdmVudHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFubmVsTGlzdFRvZ2dsZVNlcnZpY2U6IENoYW5uZWxMaXN0VG9nZ2xlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVDaGFubmVsID0gYztcbiAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YVxuICAgICAgICA/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICBpZiAoIWNhcGFiaWxpdGllcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNhblJlY2VpdmVDb25uZWN0RXZlbnRzID1cbiAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ2Nvbm5lY3QtZXZlbnRzJykgIT09IC0xO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlTWVudShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNoYW5uZWxMaXN0VG9nZ2xlU2VydmljZS50b2dnbGUoKTtcbiAgfVxuXG4gIGdldCBtZW1iZXJDb3VudFBhcmFtKCkge1xuICAgIHJldHVybiB7IG1lbWJlckNvdW50OiB0aGlzLmFjdGl2ZUNoYW5uZWw/LmRhdGE/Lm1lbWJlcl9jb3VudCB8fCAwIH07XG4gIH1cblxuICBnZXQgd2F0Y2hlckNvdW50UGFyYW0oKSB7XG4gICAgcmV0dXJuIHsgd2F0Y2hlckNvdW50OiB0aGlzLmFjdGl2ZUNoYW5uZWw/LnN0YXRlPy53YXRjaGVyX2NvdW50IHx8IDAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50KVwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZU1lbnUoJGV2ZW50KVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItaGFtYnVyZ2VyLS1saW5lXCI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1oYW1idXJnZXItLWxpbmVcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWhhbWJ1cmdlci0tbGluZVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxzdHJlYW0tYXZhdGFyXG4gICAgaW1hZ2VVcmw9XCJ7eyBhY3RpdmVDaGFubmVsPy5kYXRhPy5pbWFnZSB9fVwiXG4gICAgbmFtZT1cInt7IGFjdGl2ZUNoYW5uZWw/LmRhdGE/Lm5hbWUgfX1cIlxuICA+PC9zdHJlYW0tYXZhdGFyPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1saXZlc3RyZWFtLWxlZnRcIj5cbiAgICA8cCBkYXRhLXRlc3RpZD1cIm5hbWVcIiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbS1sZWZ0LS10aXRsZVwiPlxuICAgICAge3sgYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubmFtZSB9fVxuICAgIDwvcD5cbiAgICA8cCBkYXRhLXRlc3RpZD1cImluZm9cIiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbS1sZWZ0LS1tZW1iZXJzXCI+XG4gICAgICB7eydzdHJlYW1DaGF0Lnt7IG1lbWJlckNvdW50IH19IG1lbWJlcnMnIHwgdHJhbnNsYXRlOm1lbWJlckNvdW50UGFyYW19fVxuICAgICAge3tjYW5SZWNlaXZlQ29ubmVjdEV2ZW50cyA/ICgnc3RyZWFtQ2hhdC57eyB3YXRjaGVyQ291bnQgfX0gb25saW5lJyB8XG4gICAgICB0cmFuc2xhdGU6d2F0Y2hlckNvdW50UGFyYW0pIDogJyd9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -10,20 +10,24 @@ export class ChannelPreviewComponent {
|
|
|
10
10
|
this.isUnread = false;
|
|
11
11
|
this.latestMessage = 'Nothing yet...';
|
|
12
12
|
this.subscriptions = [];
|
|
13
|
+
this.canSendReadEvents = true;
|
|
13
14
|
}
|
|
14
15
|
ngOnInit() {
|
|
15
|
-
var _a, _b;
|
|
16
|
+
var _a, _b, _c, _d;
|
|
16
17
|
this.subscriptions.push(this.channelService.activeChannel$.subscribe((activeChannel) => { var _a; return (this.isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.id) === ((_a = this.channel) === null || _a === void 0 ? void 0 : _a.id)); }));
|
|
17
18
|
const messages = (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.messages;
|
|
18
19
|
if (messages && messages.length > 0) {
|
|
19
20
|
this.setLatestMessage(messages[messages.length - 1]);
|
|
20
21
|
}
|
|
21
|
-
this.isUnread = !!this.channel.countUnread();
|
|
22
|
+
this.isUnread = !!this.channel.countUnread() && this.canSendReadEvents;
|
|
23
|
+
const capabilities = ((_d = (_c = this.channel) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.own_capabilities) || [];
|
|
24
|
+
this.canSendReadEvents = capabilities.indexOf('read-events') !== -1;
|
|
22
25
|
this.subscriptions.push(this.channel.on('message.new', this.handleMessageEvent.bind(this)));
|
|
23
26
|
this.subscriptions.push(this.channel.on('message.updated', this.handleMessageEvent.bind(this)));
|
|
24
27
|
this.subscriptions.push(this.channel.on('message.deleted', this.handleMessageEvent.bind(this)));
|
|
25
28
|
this.subscriptions.push(this.channel.on('channel.truncated', this.handleMessageEvent.bind(this)));
|
|
26
|
-
this.subscriptions.push(this.channel.on('message.read', () => (this.isUnread =
|
|
29
|
+
this.subscriptions.push(this.channel.on('message.read', () => (this.isUnread =
|
|
30
|
+
!!this.channel.countUnread() && this.canSendReadEvents)));
|
|
27
31
|
}
|
|
28
32
|
ngOnDestroy() {
|
|
29
33
|
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
@@ -54,7 +58,7 @@ export class ChannelPreviewComponent {
|
|
|
54
58
|
return;
|
|
55
59
|
}
|
|
56
60
|
this.setLatestMessage(event.message);
|
|
57
|
-
this.isUnread = !!this.channel.countUnread();
|
|
61
|
+
this.isUnread = !!this.channel.countUnread() && this.canSendReadEvents;
|
|
58
62
|
}
|
|
59
63
|
setLatestMessage(message) {
|
|
60
64
|
if (message === null || message === void 0 ? void 0 : message.deleted_at) {
|
|
@@ -80,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
80
84
|
}], ctorParameters: function () { return [{ type: i1.ChannelService }]; }, propDecorators: { channel: [{
|
|
81
85
|
type: Input
|
|
82
86
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFlcEUsTUFBTSxPQUFPLHVCQUF1QjtJQU9sQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFMbEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQVcsZ0JBQWdCLENBQUM7UUFDakMsa0JBQWEsR0FBbUQsRUFBRSxDQUFDO0lBRXRCLENBQUM7SUFFdEQsUUFBUTs7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUMxQyxDQUFDLGFBQWEsRUFBRSxFQUFFLFdBQ2hCLE9BQUEsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUEsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEVBQUUsT0FBSyxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLEVBQUUsQ0FBQSxDQUFDLENBQUEsRUFBQSxDQUMzRCxDQUNGLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsS0FBSywwQ0FBRSxRQUFRLENBQUM7UUFDL0MsSUFBSSxRQUFRLElBQUksUUFB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Q0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFpRDtRQUN4RSxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxVQUFVLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQztTQUNuRDthQUFNLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDbkM7YUFBTSxJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsS0FBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLDZCQUE2QixDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs7b0hBckZVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDhGQ2ZwQyx1M0JBMEJBOzJGRFhhLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxNQUFNLEVBQUUsRUFBRTtpQkFDWDtxR0FFVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDaGFubmVsLFxuICBFdmVudCxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBNZXNzYWdlUmVzcG9uc2UsXG59IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWNoYW5uZWwtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY2hhbm5lbDogQ2hhbm5lbCB8IHVuZGVmaW5lZDtcbiAgaXNBY3RpdmUgPSBmYWxzZTtcbiAgaXNVbnJlYWQgPSBmYWxzZTtcbiAgbGF0ZXN0TWVzc2FnZTogc3RyaW5nID0gJ05vdGhpbmcgeWV0Li4uJztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiAoU3Vic2NyaXB0aW9uIHwgeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9KVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZShcbiAgICAgICAgKGFjdGl2ZUNoYW5uZWwpID0+XG4gICAgICAgICAgKHRoaXMuaXNBY3RpdmUgPSBhY3RpdmVDaGFubmVsPy5pZCA9PT0gdGhpcy5jaGFubmVsPy5pZClcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5jaGFubmVsPy5zdGF0ZT8ubWVzc2FnZXM7XG4gICAgaWYgKG1lc3NhZ2VzICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2V0TGF0ZXN0TWVzc2FnZShtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXSk7XG4gICAgfVxuICAgIHRoaXMuaXNVbnJlYWQgPSAhIXRoaXMuY2hhbm5lbCEuY291bnRVbnJlYWQoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbCEub24oJ21lc3NhZ2UubmV3JywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS51cGRhdGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS5kZWxldGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignY2hhbm5lbC50cnVuY2F0ZWQnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKFxuICAgICAgICAnbWVzc2FnZS5yZWFkJyxcbiAgICAgICAgKCkgPT4gKHRoaXMuaXNVbnJlYWQgPSAhIXRoaXMuY2hhbm5lbCEuY291bnRVbnJlYWQoKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXQgYXZhdGFySW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbD8uZGF0YT8uaW1hZ2U7XG4gIH1cblxuICBnZXQgYXZhdGFyTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmNoYW5uZWw/LmRhdGE/Lm5hbWU7XG4gIH1cblxuICBzZXRBc0FjdGl2ZUNoYW5uZWwoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNldEFzQWN0aXZlQ2hhbm5lbCh0aGlzLmNoYW5uZWwhKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmNoYW5uZWw/LnN0YXRlLm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ05vdGhpbmcgeWV0Li4uJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIWV2ZW50Lm1lc3NhZ2UgfHxcbiAgICAgIHRoaXMuY2hhbm5lbD8uc3RhdGUubWVzc2FnZXNbdGhpcy5jaGFubmVsPy5zdGF0ZS5tZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgICAgICAuaWQgIT09IGV2ZW50Lm1lc3NhZ2UuaWRcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRMYXRlc3RNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UpO1xuICAgIHRoaXMuaXNVbnJlYWQgPSAhIXRoaXMuY2hhbm5lbC5jb3VudFVucmVhZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXRlc3RNZXNzYWdlKG1lc3NhZ2U/OiBGb3JtYXRNZXNzYWdlUmVzcG9uc2UgfCBNZXNzYWdlUmVzcG9uc2UpIHtcbiAgICBpZiAobWVzc2FnZT8uZGVsZXRlZF9hdCkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ3N0cmVhbUNoYXQuTWVzc2FnZSBkZWxldGVkJztcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LnRleHQpIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2UudGV4dDtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIG1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgPSAnc3RyZWFtQ2hhdC7wn4+ZIEF0dGFjaG1lbnQuLi4nO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICBbY2xhc3Muc3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLXVucmVhZF09XCJpc1VucmVhZFwiXG4gIChjbGljayk9XCJzZXRBc0FjdGl2ZUNoYW5uZWwoKVwiXG4gIGRhdGEtdGVzdGlkPVwiY2hhbm5lbC1wcmV2aWV3LWNvbnRhaW5lclwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbGVmdFwiPlxuICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICBpbWFnZVVybD1cInt7IGF2YXRhckltYWdlIH19XCJcbiAgICAgIG5hbWU9XCJ7eyBhdmF0YXJOYW1lIH19XCJcbiAgICAgIFtzaXplXT1cIjQwXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbmFtZVwiPlxuICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJjaGFubmVsLXByZXZpZXctdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImxhdGVzdC1tZXNzYWdlXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLWxhc3QtbWVzc2FnZVwiXG4gICAgPlxuICAgICAge3sgbGF0ZXN0TWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYnV0dG9uPlxuIl19
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFlcEUsTUFBTSxPQUFPLHVCQUF1QjtJQVFsQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFObEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQVcsZ0JBQWdCLENBQUM7UUFDakMsa0JBQWEsR0FBbUQsRUFBRSxDQUFDO1FBQ25FLHNCQUFpQixHQUFHLElBQUksQ0FBQztJQUVvQixDQUFDO0lBRXRELFFBQVE7O1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FDMUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUNoQixPQUFBLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxFQUFFLE9BQUssTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxFQUFFLENBQUEsQ0FBQyxDQUFBLEVBQUEsQ0FDM0QsQ0FDRixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLEtBQUssMENBQUUsUUFBUSxD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IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENoYW5uZWwsXG4gIEV2ZW50LFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIE1lc3NhZ2VSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5uZWwtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjaGFubmVsOiBDaGFubmVsIHwgdW5kZWZpbmVkO1xuICBpc0FjdGl2ZSA9IGZhbHNlO1xuICBpc1VucmVhZCA9IGZhbHNlO1xuICBsYXRlc3RNZXNzYWdlOiBzdHJpbmcgPSAnTm90aGluZyB5ZXQuLi4nO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IChTdWJzY3JpcHRpb24gfCB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH0pW10gPSBbXTtcbiAgcHJpdmF0ZSBjYW5TZW5kUmVhZEV2ZW50cyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZShcbiAgICAgICAgKGFjdGl2ZUNoYW5uZWwpID0+XG4gICAgICAgICAgKHRoaXMuaXNBY3RpdmUgPSBhY3RpdmVDaGFubmVsPy5pZCA9PT0gdGhpcy5jaGFubmVsPy5pZClcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5jaGFubmVsPy5zdGF0ZT8ubWVzc2FnZXM7XG4gICAgaWYgKG1lc3NhZ2VzICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2V0TGF0ZXN0TWVzc2FnZShtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXSk7XG4gICAgfVxuICAgIHRoaXMuaXNVbnJlYWQgPSAhIXRoaXMuY2hhbm5lbCEuY291bnRVbnJlYWQoKSAmJiB0aGlzLmNhblNlbmRSZWFkRXZlbnRzO1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9XG4gICAgICAodGhpcy5jaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdKSB8fCBbXTtcbiAgICB0aGlzLmNhblNlbmRSZWFkRXZlbnRzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3JlYWQtZXZlbnRzJykgIT09IC0xO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS5uZXcnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKCdtZXNzYWdlLnVwZGF0ZWQnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKCdtZXNzYWdlLmRlbGV0ZWQnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKCdjaGFubmVsLnRydW5jYXRlZCcsIHRoaXMuaGFuZGxlTWVzc2FnZUV2ZW50LmJpbmQodGhpcykpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbCEub24oXG4gICAgICAgICdtZXNzYWdlLnJlYWQnLFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICh0aGlzLmlzVW5yZWFkID1cbiAgICAgICAgICAgICEhdGhpcy5jaGFubmVsIS5jb3VudFVucmVhZCgpICYmIHRoaXMuY2FuU2VuZFJlYWRFdmVudHMpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgZ2V0IGF2YXRhckltYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNoYW5uZWw/LmRhdGE/LmltYWdlO1xuICB9XG5cbiAgZ2V0IGF2YXRhck5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbD8uZGF0YT8ubmFtZTtcbiAgfVxuXG4gIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICB9XG5cbiAgc2V0QXNBY3RpdmVDaGFubmVsKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5zZXRBc0FjdGl2ZUNoYW5uZWwodGhpcy5jaGFubmVsISk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1lc3NhZ2VFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5jaGFubmVsPy5zdGF0ZS5tZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9ICdOb3RoaW5nIHlldC4uLic7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFldmVudC5tZXNzYWdlIHx8XG4gICAgICB0aGlzLmNoYW5uZWw/LnN0YXRlLm1lc3NhZ2VzW3RoaXMuY2hhbm5lbD8uc3RhdGUubWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICAgICAgLmlkICE9PSBldmVudC5tZXNzYWdlLmlkXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0TGF0ZXN0TWVzc2FnZShldmVudC5tZXNzYWdlKTtcbiAgICB0aGlzLmlzVW5yZWFkID0gISF0aGlzLmNoYW5uZWwuY291bnRVbnJlYWQoKSAmJiB0aGlzLmNhblNlbmRSZWFkRXZlbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXRlc3RNZXNzYWdlKG1lc3NhZ2U/OiBGb3JtYXRNZXNzYWdlUmVzcG9uc2UgfCBNZXNzYWdlUmVzcG9uc2UpIHtcbiAgICBpZiAobWVzc2FnZT8uZGVsZXRlZF9hdCkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ3N0cmVhbUNoYXQuTWVzc2FnZSBkZWxldGVkJztcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LnRleHQpIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2UudGV4dDtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIG1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgPSAnc3RyZWFtQ2hhdC7wn4+ZIEF0dGFjaG1lbnQuLi4nO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICBbY2xhc3Muc3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLXVucmVhZF09XCJpc1VucmVhZFwiXG4gIChjbGljayk9XCJzZXRBc0FjdGl2ZUNoYW5uZWwoKVwiXG4gIGRhdGEtdGVzdGlkPVwiY2hhbm5lbC1wcmV2aWV3LWNvbnRhaW5lclwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbGVmdFwiPlxuICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICBpbWFnZVVybD1cInt7IGF2YXRhckltYWdlIH19XCJcbiAgICAgIG5hbWU9XCJ7eyBhdmF0YXJOYW1lIH19XCJcbiAgICAgIFtzaXplXT1cIjQwXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbmFtZVwiPlxuICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJjaGFubmVsLXByZXZpZXctdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImxhdGVzdC1tZXNzYWdlXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLWxhc3QtbWVzc2FnZVwiXG4gICAgPlxuICAgICAge3sgbGF0ZXN0TWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -50,7 +50,9 @@ export class ChannelService {
|
|
|
50
50
|
channel.state.messages.forEach((m) => {
|
|
51
51
|
m.readBy = getReadBy(m, channel);
|
|
52
52
|
});
|
|
53
|
-
|
|
53
|
+
if (this.canSendReadEvents) {
|
|
54
|
+
void channel.markRead();
|
|
55
|
+
}
|
|
54
56
|
this.activeChannelMessagesSubject.next([...channel.state.messages]);
|
|
55
57
|
}
|
|
56
58
|
loadMoreMessages() {
|
|
@@ -108,9 +110,9 @@ export class ChannelService {
|
|
|
108
110
|
.getValue()) === null || _a === void 0 ? void 0 : _a.deleteReaction(messageId, reactionType));
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
|
-
sendMessage(text, attachments = []) {
|
|
113
|
+
sendMessage(text, attachments = [], mentionedUsers = []) {
|
|
112
114
|
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
-
const preview = createMessagePreview(this.chatClientService.chatClient.user, text, attachments);
|
|
115
|
+
const preview = createMessagePreview(this.chatClientService.chatClient.user, text, attachments, mentionedUsers);
|
|
114
116
|
const channel = this.activeChannelSubject.getValue();
|
|
115
117
|
preview.readBy = [];
|
|
116
118
|
channel.state.addMessageSorted(preview, true);
|
|
@@ -167,7 +169,32 @@ export class ChannelService {
|
|
|
167
169
|
: channel.deleteFile(attachmentUpload.url));
|
|
168
170
|
});
|
|
169
171
|
}
|
|
172
|
+
autocompleteMembers(searchTerm) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
const activeChannel = this.activeChannelSubject.getValue();
|
|
175
|
+
if (!activeChannel) {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
if (Object.keys(activeChannel.state.members).length <= 100) {
|
|
179
|
+
return Object.values(activeChannel.state.members).filter((m) => { var _a; return ((_a = m.user) === null || _a === void 0 ? void 0 : _a.id) !== this.chatClientService.chatClient.userID; });
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
if (!searchTerm) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
const result = yield activeChannel.queryMembers({
|
|
186
|
+
$or: [
|
|
187
|
+
{ id: { $autocomplete: searchTerm } },
|
|
188
|
+
{ name: { $autocomplete: searchTerm } },
|
|
189
|
+
],
|
|
190
|
+
id: { $ne: this.chatClientService.chatClient.userID },
|
|
191
|
+
});
|
|
192
|
+
return Object.values(result.members);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
170
196
|
sendMessageRequest(preview) {
|
|
197
|
+
var _a;
|
|
171
198
|
return __awaiter(this, void 0, void 0, function* () {
|
|
172
199
|
const channel = this.activeChannelSubject.getValue();
|
|
173
200
|
this.activeChannelMessagesSubject.next([...channel.state.messages]);
|
|
@@ -175,6 +202,7 @@ export class ChannelService {
|
|
|
175
202
|
yield channel.sendMessage({
|
|
176
203
|
text: preview.text,
|
|
177
204
|
attachments: preview.attachments,
|
|
205
|
+
mentioned_users: (_a = preview.mentioned_users) === null || _a === void 0 ? void 0 : _a.map((u) => u.id),
|
|
178
206
|
id: preview.id,
|
|
179
207
|
});
|
|
180
208
|
}
|
|
@@ -263,9 +291,11 @@ export class ChannelService {
|
|
|
263
291
|
this.activeChannelSubscriptions.push(channel.on('message.new', () => {
|
|
264
292
|
this.ngZone.run(() => {
|
|
265
293
|
this.activeChannelMessagesSubject.next([...channel.state.messages]);
|
|
266
|
-
this.activeChannel
|
|
267
|
-
.
|
|
268
|
-
|
|
294
|
+
this.activeChannel$.pipe(first()).subscribe((c) => {
|
|
295
|
+
if (this.canSendReadEvents) {
|
|
296
|
+
void (c === null || c === void 0 ? void 0 : c.markRead());
|
|
297
|
+
}
|
|
298
|
+
});
|
|
269
299
|
});
|
|
270
300
|
}));
|
|
271
301
|
this.activeChannelSubscriptions.push(channel.on('message.updated', (event) => this.messageUpdated(event)));
|
|
@@ -464,6 +494,15 @@ export class ChannelService {
|
|
|
464
494
|
get channels() {
|
|
465
495
|
return this.channelsSubject.getValue() || [];
|
|
466
496
|
}
|
|
497
|
+
get canSendReadEvents() {
|
|
498
|
+
var _a;
|
|
499
|
+
const channel = this.activeChannelSubject.getValue();
|
|
500
|
+
if (!channel) {
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
const capabilites = (_a = channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
504
|
+
return capabilites.indexOf('read-events') !== -1;
|
|
505
|
+
}
|
|
467
506
|
}
|
|
468
507
|
ChannelService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelService, deps: [{ token: i1.ChatClientService }, { token: i0.ApplicationRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
469
508
|
ChannelService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelService, providedIn: 'root' });
|
|
@@ -473,4 +512,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
473
512
|
providedIn: 'root',
|
|
474
513
|
}]
|
|
475
514
|
}], ctorParameters: function () { return [{ type: i1.ChatClientService }, { type: i0.ApplicationRef }, { type: i0.NgZone }]; } });
|
|
476
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFrQixVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWE1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNdEMsTUFBTSxPQUFPLGNBQWM7SUE0RXpCLFlBQ1UsaUJBQW9DLEVBQ3BDLE1BQXNCLEVBQ3RCLE1BQWM7UUFGZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUExQmhCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQzNDLFNBQVMsQ0FDVixDQUFDO1FBQ00seUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQ2hELFNBQVMsQ0FDVixDQUFDO1FBQ00saUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBRXhELEVBQUUsQ0FBQyxDQUFDO1FBQ0UsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsK0JBQTBCLEdBQWtDLEVBQUUsQ0FBQztRQUsvRCxzQkFBaUIsR0FBRyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFFTSxzQkFBaUIsR0FBRyxDQUFDLFFBQXlCLEVB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QUFFLENBQUMsQ0FBQzthQUM1QztTQUNGO0lBQ0gsQ0FBQztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUM7OzJHQXRuQlUsY0FBYzsrR0FBZCxjQUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsT3B0aW9ucyxcbiAgQ2hhbm5lbFNvcnQsXG4gIEV2ZW50LFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIE1lc3NhZ2VSZXNwb25zZSxcbiAgVXBkYXRlZE1lc3NhZ2UsXG59IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlLCBOb3RpZmljYXRpb24gfSBmcm9tICcuL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVByZXZpZXcgfSBmcm9tICcuL21lc3NhZ2UtcHJldmlldyc7XG5pbXBvcnQgeyBNZXNzYWdlUmVhY3Rpb25UeXBlIH0gZnJvbSAnLi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0UmVhZEJ5IH0gZnJvbSAnLi9yZWFkLWJ5JztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWQsIFN0cmVhbU1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxTZXJ2aWNlIHtcbiAgaGFzTW9yZUNoYW5uZWxzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgY2hhbm5lbHMkOiBPYnNlcnZhYmxlPENoYW5uZWxbXSB8IHVuZGVmaW5lZD47XG4gIGFjdGl2ZUNoYW5uZWwkOiBPYnNlcnZhYmxlPENoYW5uZWwgfCB1bmRlZmluZWQ+O1xuICBhY3RpdmVDaGFubmVsTWVzc2FnZXMkOiBPYnNlcnZhYmxlPFN0cmVhbU1lc3NhZ2VbXT47XG4gIGN1c3RvbU5ld01lc3NhZ2VOb3RpZmljYXRpb25IYW5kbGVyPzogKFxuICAgIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIGN1c3RvbUFkZGVkVG9DaGFubmVsTm90aWZpY2F0aW9uSGFuZGxlcj86IChcbiAgICBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbixcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWRcbiAgKSA9PiB2b2lkO1xuICBjdXN0b21SZW1vdmVkRnJvbUNoYW5uZWxOb3RpZmljYXRpb25IYW5kbGVyPzogKFxuICAgIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIGN1c3RvbUNoYW5uZWxEZWxldGVkSGFuZGxlcj86IChcbiAgICBldmVudDogRXZlbnQsXG4gICAgY2hhbm5lbDogQ2hhbm5lbCxcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWQsXG4gICAgbWVzc2FnZUxpc3RTZXR0ZXI6IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tQ2hhbm5lbFVwZGF0ZWRIYW5kbGVyPzogKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBjaGFubmVsOiBDaGFubmVsLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZCxcbiAgICBtZXNzYWdlTGlzdFNldHRlcjogKG1lc3NhZ2VzOiBTdHJlYW1NZXNzYWdlW10pID0+IHZvaWRcbiAgKSA9PiB2b2lkO1xuICBjdXN0b21DaGFubmVsVHJ1bmNhdGVkSGFuZGxlcj86IChcbiAgICBldmVudDogRXZlbnQsXG4gICAgY2hhbm5lbDogQ2hhbm5lbCxcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWQsXG4gICAgbWVzc2FnZUxpc3RTZXR0ZXI6IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tQ2hhbm5lbEhpZGRlbkhhbmRsZXI/OiAoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGNoYW5uZWw6IENoYW5uZWwsXG4gICAgY2hhbm5lbExpc3RTZXR0ZXI6IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB2b2lkLFxuICAgIG1lc3NhZ2VMaXN0U2V0dGVyOiAobWVzc2FnZXM6IFN0cmVhbU1lc3NhZ2VbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIGN1c3RvbUNoYW5uZWxWaXNpYmxlSGFuZGxlcj86IChcbiAgICBldmVudDogRXZlbnQsXG4gICAgY2hhbm5lbDogQ2hhbm5lbCxcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWQsXG4gICAgbWVzc2FnZUxpc3RTZXR0ZXI6IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tTmV3TWVzc2FnZUhhbmRsZXI/OiAoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGNoYW5uZWw6IENoYW5uZWwsXG4gICAgY2hhbm5lbExpc3RTZXR0ZXI6IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB2b2lkLFxuICAgIG1lc3NhZ2VMaXN0U2V0dGVyOiAobWVzc2FnZXM6IFN0cmVhbU1lc3NhZ2VbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIHByaXZhdGUgY2hhbm5lbHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFubmVsW10gfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwcml2YXRlIGFjdGl2ZUNoYW5uZWxTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFubmVsIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHJpdmF0ZSBhY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICAoU3RyZWFtTWVzc2FnZSB8IE1lc3NhZ2VSZXNwb25zZSB8IEZvcm1hdE1lc3NhZ2VSZXNwb25zZSlbXVxuICA+KFtdKTtcbiAgcHJpdmF0ZSBoYXNNb3JlQ2hhbm5lbHNTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gIHByaXZhdGUgYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnM6IHsgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQgfVtdID0gW107XG4gIHByaXZhdGUgZmlsdGVyczogQ2hhbm5lbEZpbHRlcnMgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc29ydDogQ2hhbm5lbFNvcnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3B0aW9uczogQ2hhbm5lbE9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjaGFubmVsTGlzdFNldHRlciA9IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB7XG4gICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChjaGFubmVscyk7XG4gIH07XG5cbiAgcHJpdmF0ZSBtZXNzYWdlTGlzdFNldHRlciA9IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0Lm5leHQobWVzc2FnZXMpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuY2hhbm5lbHMkID0gdGhpcy5jaGFubmVsc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsJCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXMkID0gdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0LnBpcGUoXG4gICAgICBtYXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgICAgICByZXR1cm4gbWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc1N0cmVhbU1lc3NhZ2UobWVzc2FnZSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNGb3JtYXRNZXNzYWdlUmVzcG9uc2UobWVzc2FnZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0Zvcm1hdE1lc3NhZ2VSZXNwb25zZShtZXNzYWdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgcmVhZEJ5OiBnZXRSZWFkQnkobWVzc2FnZSwgY2hhbm5lbCkgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0TWVzc2FnZSA9IHRoaXMuZm9ybWF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmZvcm1hdE1lc3NhZ2UsXG4gICAgICAgICAgICAgIHJlYWRCeTogZ2V0UmVhZEJ5KGZvcm1hdE1lc3NhZ2UsIGNoYW5uZWwpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaGFzTW9yZUNoYW5uZWxzJCA9IHRoaXMuaGFzTW9yZUNoYW5uZWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldEFzQWN0aXZlQ2hhbm5lbChjaGFubmVsOiBDaGFubmVsKSB7XG4gICAgY29uc3QgcHJldkFjdGl2ZUNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgdGhpcy5zdG9wV2F0Y2hGb3JBY3RpdmVDaGFubmVsRXZlbnRzKHByZXZBY3RpdmVDaGFubmVsKTtcbiAgICB0aGlzLndhdGNoRm9yQWN0aXZlQ2hhbm5lbEV2ZW50cyhjaGFubmVsKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0Lm5leHQoY2hhbm5lbCk7XG4gICAgY2hhbm5lbC5zdGF0ZS5tZXNzYWdlcy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBtLnJlYWRCeSA9IGdldFJlYWRCeShtLCBjaGFubmVsKTtcbiAgICB9KTtcbiAgICB2b2lkIGNoYW5uZWwubWFya1JlYWQoKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbLi4uY2hhbm5lbC5zdGF0ZS5tZXNzYWdlc10pO1xuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmVNZXNzYWdlcygpIHtcbiAgICBjb25zdCBhY3RpdmVDaG5hbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBsYXN0TWVzc2FnZUlkID0gdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0LmdldFZhbHVlKClbMF0/LmlkO1xuICAgIGF3YWl0IGFjdGl2ZUNobmFubmVsPy5xdWVyeSh7XG4gICAgICBtZXNzYWdlczogeyBsaW1pdDogMjUsIGlkX2x0OiBsYXN0TWVzc2FnZUlkIH0sXG4gICAgICBtZW1iZXJzOiB7IGxpbWl0OiAwIH0sXG4gICAgICB3YXRjaGVyczogeyBsaW1pdDogMCB9LFxuICAgIH0pO1xuICAgIGlmIChcbiAgICAgIGFjdGl2ZUNobmFubmVsPy5kYXRhPy5pZCA9PT1cbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKT8uZGF0YT8uaWRcbiAgICApIHtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFtcbiAgICAgICAgLi4uYWN0aXZlQ2huYW5uZWwhLnN0YXRlLm1lc3NhZ2VzLFxuICAgICAgXSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdChcbiAgICBmaWx0ZXJzOiBDaGFubmVsRmlsdGVycyxcbiAgICBzb3J0PzogQ2hhbm5lbFNvcnQsXG4gICAgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zXG4gICkge1xuICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7XG4gICAgICBvZmZzZXQ6IDAsXG4gICAgICBsaW1pdDogMjUsXG4gICAgICBzdGF0ZTogdHJ1ZSxcbiAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgd2F0Y2g6IHRydWUsXG4gICAgICBtZXNzYWdlX2xpbWl0OiAyNSxcbiAgICB9O1xuICAgIHRoaXMuc29ydCA9IHNvcnQgfHwgeyBsYXN0X21lc3NhZ2VfYXQ6IC0xLCB1cGRhdGVkX2F0OiAtMSB9O1xuICAgIGF3YWl0IHRoaXMucXVlcnlDaGFubmVscygpO1xuICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2Uubm90aWZpY2F0aW9uJC5zdWJzY3JpYmUoXG4gICAgICAobm90aWZpY2F0aW9uKSA9PiB2b2lkIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmVDaGFubmVscygpIHtcbiAgICB0aGlzLm9wdGlvbnMhLm9mZnNldCA9IHRoaXMuY2hhbm5lbHMubGVuZ3RoITtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5Q2hhbm5lbHMoKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCByZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICBhd2FpdCB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCk/LnNlbmRSZWFjdGlvbihtZXNzYWdlSWQsIHtcbiAgICAgIHR5cGU6IHJlYWN0aW9uVHlwZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVJlYWN0aW9uKG1lc3NhZ2VJZDogc3RyaW5nLCByZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICBhd2FpdCB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0XG4gICAgICAuZ2V0VmFsdWUoKVxuICAgICAgPy5kZWxldGVSZWFjdGlvbihtZXNzYWdlSWQsIHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBhc3luYyBzZW5kTWVzc2FnZSh0ZXh0OiBzdHJpbmcsIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50W10gPSBbXSkge1xuICAgIGNvbnN0IHByZXZpZXcgPSBjcmVhdGVNZXNzYWdlUHJldmlldyhcbiAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyISxcbiAgICAgIHRleHQsXG4gICAgICBhdHRhY2htZW50c1xuICAgICk7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgcHJldmlldy5yZWFkQnkgPSBbXTtcbiAgICBjaGFubmVsLnN0YXRlLmFkZE1lc3NhZ2VTb3J0ZWQocHJldmlldywgdHJ1ZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kTWVzc2FnZVJlcXVlc3QocHJldmlldyk7XG4gIH1cblxuICBhc3luYyByZXNlbmRNZXNzYWdlKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpITtcbiAgICBjaGFubmVsLnN0YXRlLmFkZE1lc3NhZ2VTb3J0ZWQoXG4gICAgICB7XG4gICAgICAgIC4uLihtZXNzYWdlIGFzIGFueSBhcyBNZXNzYWdlUmVzcG9uc2UpLFxuICAgICAgICBlcnJvclN0YXR1c0NvZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgc3RhdHVzOiAnc2VuZGluZycsXG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5zZW5kTWVzc2FnZVJlcXVlc3QobWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVNZXNzYWdlKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXBkYXRlTWVzc2FnZShcbiAgICAgIG1lc3NhZ2UgYXMgVXBkYXRlZE1lc3NhZ2VcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWVzc2FnZShtZXNzYWdlOiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LmRlbGV0ZU1lc3NhZ2UobWVzc2FnZS5pZCk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRBdHRhY2htZW50cyhcbiAgICB1cGxvYWRzOiBBdHRhY2htZW50VXBsb2FkW11cbiAgKTogUHJvbWlzZTxBdHRhY2htZW50VXBsb2FkW10+IHtcbiAgICBjb25zdCByZXN1bHQ6IEF0dGFjaG1lbnRVcGxvYWRbXSA9IFtdO1xuICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgIGNvbnN0IHVwbG9hZFJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICB1cGxvYWRzLm1hcCgodXBsb2FkKSA9PlxuICAgICAgICB1cGxvYWQudHlwZSA9PT0gJ2ltYWdlJ1xuICAgICAgICAgID8gY2hhbm5lbC5zZW5kSW1hZ2UodXBsb2FkLmZpbGUpXG4gICAgICAgICAgOiBjaGFubmVsLnNlbmRGaWxlKHVwbG9hZC5maWxlKVxuICAgICAgKVxuICAgICk7XG4gICAgdXBsb2FkUmVzdWx0cy5mb3JFYWNoKCh1cGxvYWRSZXN1bHQsIGkpID0+IHtcbiAgICAgIGNvbnN0IGZpbGUgPSB1cGxvYWRzW2ldLmZpbGU7XG4gICAgICBjb25zdCB0eXBlID0gdXBsb2Fkc1tpXS50eXBlO1xuICAgICAgaWYgKHVwbG9hZFJlc3VsdC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBmaWxlLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgc3RhdGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICB1cmw6IHVwbG9hZFJlc3VsdC52YWx1ZS5maWxlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZmlsZSwgdHlwZSwgc3RhdGU6ICdlcnJvcicgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50VXBsb2FkOiBBdHRhY2htZW50VXBsb2FkKSB7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgYXdhaXQgKGF0dGFjaG1lbnRVcGxvYWQudHlwZSA9PT0gJ2ltYWdlJ1xuICAgICAgPyBjaGFubmVsLmRlbGV0ZUltYWdlKGF0dGFjaG1lbnRVcGxvYWQudXJsISlcbiAgICAgIDogY2hhbm5lbC5kZWxldGVGaWxlKGF0dGFjaG1lbnRVcGxvYWQudXJsISkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWVzc2FnZVJlcXVlc3QocHJldmlldzogTWVzc2FnZVJlc3BvbnNlIHwgU3RyZWFtTWVzc2FnZSkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFsuLi5jaGFubmVsLnN0YXRlLm1lc3NhZ2VzXSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNoYW5uZWwuc2VuZE1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiBwcmV2aWV3LnRleHQsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBwcmV2aWV3LmF0dGFjaG1lbnRzLFxuICAgICAgICBpZDogcHJldmlldy5pZCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBzdHJpbmdFcnJvciA9IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgIGNvbnN0IHBhcnNlZEVycm9yOiB7IHN0YXR1cz86IG51bWJlciB9ID0gc3RyaW5nRXJyb3JcbiAgICAgICAgPyAoSlNPTi5wYXJzZShzdHJpbmdFcnJvcikgYXMgeyBzdGF0dXM/OiBudW1iZXIgfSlcbiAgICAgICAgOiB7fTtcblxuICAgICAgY2hhbm5lbC5zdGF0ZS5hZGRNZXNzYWdlU29ydGVkKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uKHByZXZpZXcgYXMgTWVzc2FnZVJlc3BvbnNlKSxcbiAgICAgICAgICBlcnJvclN0YXR1c0NvZGU6IHBhcnNlZEVycm9yLnN0YXR1cyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgc3RhdHVzOiAnZmFpbGVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFsuLi5jaGFubmVsLnN0YXRlLm1lc3NhZ2VzXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi5ldmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ25vdGlmaWNhdGlvbi5tZXNzYWdlX25ldyc6IHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tTmV3TWVzc2FnZU5vdGlmaWNhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbU5ld01lc3NhZ2VOb3RpZmljYXRpb25IYW5kbGVyKFxuICAgICAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlclxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVOZXdNZXNzYWdlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdub3RpZmljYXRpb24uYWRkZWRfdG9fY2hhbm5lbCc6IHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQWRkZWRUb0NoYW5uZWxOb3RpZmljYXRpb25IYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21BZGRlZFRvQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZGVkVG9DaGFubmVsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdub3RpZmljYXRpb24ucmVtb3ZlZF9mcm9tX2NoYW5uZWwnOiB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZW1vdmVkRnJvbUNoYW5uZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgY2hhbm5lbElkVG9CZVJlbW92ZWQgPSBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbCEuY2lkO1xuICAgICAgdGhpcy5yZW1vdmVGcm9tQ2hhbm5lbExpc3QoY2hhbm5lbElkVG9CZVJlbW92ZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVOZXdNZXNzYWdlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKSB7XG4gICAgYXdhaXQgdGhpcy5hZGRDaGFubmVsRnJvbU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVBZGRlZFRvQ2hhbm5lbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikge1xuICAgIGF3YWl0IHRoaXMuYWRkQ2hhbm5lbEZyb21Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkQ2hhbm5lbEZyb21Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LmNoYW5uZWwoXG4gICAgICBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbD8udHlwZSEsXG4gICAgICBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbD8uaWRcbiAgICApO1xuICAgIGF3YWl0IGNoYW5uZWwud2F0Y2goKTtcbiAgICB0aGlzLndhdGNoRm9yQ2hhbm5lbEV2ZW50cyhjaGFubmVsKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIC4uLih0aGlzLmNoYW5uZWxzU3ViamVjdC5nZXRWYWx1ZSgpIHx8IFtdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGcm9tQ2hhbm5lbExpc3QoY2lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjaGFubmVscyA9IHRoaXMuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiBjLmNpZCAhPT0gY2lkKTtcbiAgICBpZiAoY2hhbm5lbHMubGVuZ3RoIDwgdGhpcy5jaGFubmVscy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgICAgaWYgKHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSEuY2lkID09PSBjaWQpIHtcbiAgICAgICAgdGhpcy5zZXRBc0FjdGl2ZUNoYW5uZWwoY2hhbm5lbHNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hGb3JBY3RpdmVDaGFubmVsRXZlbnRzKGNoYW5uZWw6IENoYW5uZWwpIHtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdtZXNzYWdlLm5ldycsICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbLi4uY2hhbm5lbC5zdGF0ZS5tZXNzYWdlc10pO1xuICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbCRcbiAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB2b2lkIGM/Lm1hcmtSZWFkKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdtZXNzYWdlLnVwZGF0ZWQnLCAoZXZlbnQpID0+IHRoaXMubWVzc2FnZVVwZGF0ZWQoZXZlbnQpKVxuICAgICk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgY2hhbm5lbC5vbignbWVzc2FnZS5kZWxldGVkJywgKGV2ZW50KSA9PiB0aGlzLm1lc3NhZ2VVcGRhdGVkKGV2ZW50KSlcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGNoYW5uZWwub24oJ3JlYWN0aW9uLm5ldycsIChlKSA9PiB0aGlzLm1lc3NhZ2VSZWFjdGlvbkV2ZW50UmVjZWl2ZWQoZSkpXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdyZWFjdGlvbi5kZWxldGVkJywgKGUpID0+XG4gICAgICAgIHRoaXMubWVzc2FnZVJlYWN0aW9uRXZlbnRSZWNlaXZlZChlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgY2hhbm5lbC5vbigncmVhY3Rpb24udXBkYXRlZCcsIChlKSA9PlxuICAgICAgICB0aGlzLm1lc3NhZ2VSZWFjdGlvbkV2ZW50UmVjZWl2ZWQoZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGNoYW5uZWwub24oJ21lc3NhZ2UucmVhZCcsIChlKSA9PiB7XG4gICAgICAgIGxldCBsYXRlc3RNZXNzYWdlITogU3RyZWFtTWVzc2FnZTtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXMkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChtZXNzYWdlcykgPT4ge1xuICAgICAgICAgIGxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghbGF0ZXN0TWVzc2FnZSB8fCAhZS51c2VyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxhdGVzdE1lc3NhZ2UucmVhZEJ5ID0gZ2V0UmVhZEJ5KGxhdGVzdE1lc3NhZ2UsIGNoYW5uZWwpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFxuICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5nZXRWYWx1ZSgpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1lc3NhZ2VVcGRhdGVkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgbWVzc2FnZUluZGV4ID0gbWVzc2FnZXMuZmluZEluZGV4KFxuICAgICAgICAobSkgPT4gbS5pZCA9PT0gZXZlbnQubWVzc2FnZT8uaWRcbiAgICAgICk7XG4gICAgICBpZiAobWVzc2FnZUluZGV4ICE9PSAtMSAmJiBldmVudC5tZXNzYWdlKSB7XG4gICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VJbmRleF0gPSBldmVudC5tZXNzYWdlO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbLi4ubWVzc2FnZXNdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWVzc2FnZVJlYWN0aW9uRXZlbnRSZWNlaXZlZChlOiBFdmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBsZXQgbWVzc2FnZXMhOiBTdHJlYW1NZXNzYWdlW107XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlcyRcbiAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgLnN1YnNjcmliZSgobSkgPT4gKG1lc3NhZ2VzID0gbSkpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IGU/Lm1lc3NhZ2U/LmlkKTtcbiAgICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBtZXNzYWdlLnJlYWN0aW9uX2NvdW50cyA9IHsgLi4uZS5tZXNzYWdlPy5yZWFjdGlvbl9jb3VudHMgfTtcbiAgICAgIG1lc3NhZ2UucmVhY3Rpb25fc2NvcmVzID0geyAuLi5lLm1lc3NhZ2U/LnJlYWN0aW9uX3Njb3JlcyB9O1xuICAgICAgbWVzc2FnZS5sYXRlc3RfcmVhY3Rpb25zID0gWy4uLihlLm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW10pXTtcbiAgICAgIG1lc3NhZ2Uub3duX3JlYWN0aW9ucyA9IFsuLi4oZS5tZXNzYWdlPy5vd25fcmVhY3Rpb25zIHx8IFtdKV07XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbLi4ubWVzc2FnZXNdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TWVzc2FnZShtZXNzYWdlOiBNZXNzYWdlUmVzcG9uc2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIC8vIHBhcnNlIHRoZSBkYXRlLi5cbiAgICAgIHBpbm5lZF9hdDogbWVzc2FnZS5waW5uZWRfYXQgPyBuZXcgRGF0ZShtZXNzYWdlLnBpbm5lZF9hdCkgOiBudWxsLFxuICAgICAgY3JlYXRlZF9hdDogbWVzc2FnZS5jcmVhdGVkX2F0XG4gICAgICAgID8gbmV3IERhdGUobWVzc2FnZS5jcmVhdGVkX2F0KVxuICAgICAgICA6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVkX2F0OiBtZXNzYWdlLnVwZGF0ZWRfYXRcbiAgICAgICAgPyBuZXcgRGF0ZShtZXNzYWdlLnVwZGF0ZWRfYXQpXG4gICAgICAgIDogbmV3IERhdGUoKSxcbiAgICAgIHN0YXR1czogbWVzc2FnZS5zdGF0dXMgfHwgJ3JlY2VpdmVkJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0cmVhbU1lc3NhZ2UoXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IEZvcm1hdE1lc3NhZ2VSZXNwb25zZSB8IE1lc3NhZ2VSZXNwb25zZVxuICApOiBtZXNzYWdlIGlzIFN0cmVhbU1lc3NhZ2Uge1xuICAgIHJldHVybiAhIW1lc3NhZ2UucmVhZEJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Zvcm1hdE1lc3NhZ2VSZXNwb25zZShcbiAgICBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgRm9ybWF0TWVzc2FnZVJlc3BvbnNlIHwgTWVzc2FnZVJlc3BvbnNlXG4gICk6IG1lc3NhZ2UgaXMgRm9ybWF0TWVzc2FnZVJlc3BvbnNlIHtcbiAgICByZXR1cm4gbWVzc2FnZS5jcmVhdGVkX2F0IGluc3RhbmNlb2YgRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFdhdGNoRm9yQWN0aXZlQ2hhbm5lbEV2ZW50cyhjaGFubmVsOiBDaGFubmVsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFjaGFubmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHF1ZXJ5Q2hhbm5lbHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoYW5uZWxzID0gYXdhaXQgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LnF1ZXJ5Q2hhbm5lbHMoXG4gICAgICAgIHRoaXMuZmlsdGVycyEsXG4gICAgICAgIHRoaXMuc29ydCxcbiAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICApO1xuICAgICAgY2hhbm5lbHMuZm9yRWFjaCgoYykgPT4gdGhpcy53YXRjaEZvckNoYW5uZWxFdmVudHMoYykpO1xuICAgICAgY29uc3QgcHJldkNoYW5uZWxzID0gdGhpcy5jaGFubmVsc1N1YmplY3QuZ2V0VmFsdWUoKSB8fCBbXTtcbiAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoWy4uLnByZXZDaGFubmVscywgLi4uY2hhbm5lbHNdKTtcbiAgICAgIGlmIChjaGFubmVscy5sZW5ndGggPiAwICYmICF0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgICAgdGhpcy5zZXRBc0FjdGl2ZUNoYW5uZWwoY2hhbm5lbHNbMF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5oYXNNb3JlQ2hhbm5lbHNTdWJqZWN0Lm5leHQoY2hhbm5lbHMubGVuZ3RoID49IHRoaXMub3B0aW9ucyEubGltaXQhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hGb3JDaGFubmVsRXZlbnRzKGNoYW5uZWw6IENoYW5uZWwpIHtcbiAgICBjaGFubmVsLm9uKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICBjYXNlICdtZXNzYWdlLm5ldyc6IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21OZXdNZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21OZXdNZXNzYWdlSGFuZGxlcihcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3RTZXR0ZXIsXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RTZXR0ZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTmV3TWVzc2FnZShldmVudCwgY2hhbm5lbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2NoYW5uZWwuaGlkZGVuJzoge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYW5uZWxIaWRkZW5IYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYW5uZWxIaWRkZW5IYW5kbGVyKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlcixcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlTGlzdFNldHRlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFubmVsSGlkZGVuKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2NoYW5uZWwuZGVsZXRlZCc6IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21DaGFubmVsRGVsZXRlZEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ2hhbm5lbERlbGV0ZWRIYW5kbGVyKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlcixcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlTGlzdFNldHRlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFubmVsRGVsZXRlZChldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdjaGFubmVsLnZpc2libGUnOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhbm5lbFZpc2libGVIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYW5uZWxWaXNpYmxlSGFuZGxlcihcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3RTZXR0ZXIsXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RTZXR0ZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbm5lbFZpc2libGUoZXZlbnQsIGNoYW5uZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnY2hhbm5lbC51cGRhdGVkJzoge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYW5uZWxVcGRhdGVkSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21DaGFubmVsVXBkYXRlZEhhbmRsZXIoXG4gICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyLFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0U2V0dGVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5uZWxVcGRhdGUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnY2hhbm5lbC50cnVuY2F0ZWQnOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhbm5lbFRydW5jYXRlZEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ2hhbm5lbFRydW5jYXRlZEhhbmRsZXIoXG4gICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyLFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0U2V0dGVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5uZWxUcnVuY2F0ZShldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFwcFJlZi50aWNrKCksIDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOZXdNZXNzYWdlKF86IEV2ZW50LCBjaGFubmVsOiBDaGFubmVsKSB7XG4gICAgY29uc3QgY2hhbm5lbEluZGV4ID0gdGhpcy5jaGFubmVscy5maW5kSW5kZXgoKGMpID0+IGMuY2lkID09PSBjaGFubmVsLmNpZCk7XG4gICAgdGhpcy5jaGFubmVscy5zcGxpY2UoY2hhbm5lbEluZGV4LCAxKTtcbiAgICB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KFtjaGFubmVsLCAuLi50aGlzLmNoYW5uZWxzXSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5uZWxIaWRkZW4oZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tQ2hhbm5lbExpc3QoZXZlbnQuY2hhbm5lbCEuY2lkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbm5lbERlbGV0ZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tQ2hhbm5lbExpc3QoZXZlbnQuY2hhbm5lbCEuY2lkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbm5lbFZpc2libGUoZXZlbnQ6IEV2ZW50LCBjaGFubmVsOiBDaGFubmVsKSB7XG4gICAgaWYgKCF0aGlzLmNoYW5uZWxzLmZpbmQoKGMpID0+IGMuY2lkID09PSBldmVudC5jaWQpKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT5cbiAgICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbLi4udGhpcy5jaGFubmVscywgY2hhbm5lbF0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbm5lbFVwZGF0ZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBjaGFubmVsSW5kZXggPSB0aGlzLmNoYW5uZWxzLmZpbmRJbmRleChcbiAgICAgIChjKSA9PiBjLmNpZCA9PT0gZXZlbnQuY2hhbm5lbCEuY2lkXG4gICAgKTtcbiAgICBpZiAoY2hhbm5lbEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5jaGFubmVsc1tjaGFubmVsSW5kZXhdLmRhdGEgPSBldmVudC5jaGFubmVsO1xuICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbLi4udGhpcy5jaGFubmVsc10pO1xuICAgICAgaWYgKGV2ZW50LmNoYW5uZWw/LmNpZCA9PT0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpPy5jaWQpIHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgICAgIGNoYW5uZWwuZGF0YSA9IGV2ZW50LmNoYW5uZWw7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QubmV4dChjaGFubmVsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5uZWxUcnVuY2F0ZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBjaGFubmVsSW5kZXggPSB0aGlzLmNoYW5uZWxzLmZpbmRJbmRleChcbiAgICAgIChjKSA9PiBjLmNpZCA9PT0gZXZlbnQuY2hhbm5lbCEuY2lkXG4gICAgKTtcbiAgICBpZiAoY2hhbm5lbEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5jaGFubmVsc1tjaGFubmVsSW5kZXhdLnN0YXRlLm1lc3NhZ2VzID0gW107XG4gICAgICB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KFsuLi50aGlzLmNoYW5uZWxzXSk7XG4gICAgICBpZiAoZXZlbnQuY2hhbm5lbD8uY2lkID09PSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCk/LmNpZCkge1xuICAgICAgICBjb25zdCBjaGFubmVsID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpITtcbiAgICAgICAgY2hhbm5lbC5zdGF0ZS5tZXNzYWdlcyA9IFtdO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0Lm5leHQoY2hhbm5lbCk7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBjaGFubmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVsc1N1YmplY3QuZ2V0VmFsdWUoKSB8fCBbXTtcbiAgfVxufVxuIl19
|
|
515
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFrQixVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNdEMsTUFBTSxPQUFPLGNBQWM7SUE0RXpCLFlBQ1UsaUJBQW9DLEVBQ3BDLE1BQXNCLEVBQ3RCLE1BQWM7UUFGZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUExQmhCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQzNDLFNBQVMsQ0FDVixDQUFDO1FBQ00seUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQ2hELFNBQVMsQ0FDVixDQUFDO1FBQ00saUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBRXhELEVBQUUsQ0FBQyxDQUFDO1FBQ0UsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsK0JBQTBCLEdBQWtDLEVBQUUsQ0FBQztRQUsvRCxzQkFBaUIsR0FBRyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFFTSxzQkFBaUIsR0FBRyxDQUFDLFFBQXlCLEVB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O2dCQUN0RCxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDNUM7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBWSxpQkFBaUI7O1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sV0FBVyxHQUFHLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsZ0JBQTRCLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7OzJHQWpxQlUsY0FBYzsrR0FBZCxjQUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEF0dGFjaG1lbnQsXG4gIENoYW5uZWwsXG4gIENoYW5uZWxGaWx0ZXJzLFxuICBDaGFubmVsT3B0aW9ucyxcbiAgQ2hhbm5lbFNvcnQsXG4gIEV2ZW50LFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIE1lc3NhZ2VSZXNwb25zZSxcbiAgVXBkYXRlZE1lc3NhZ2UsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UsIE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlUHJldmlldyB9IGZyb20gJy4vbWVzc2FnZS1wcmV2aWV3JztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvblR5cGUgfSBmcm9tICcuL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRSZWFkQnkgfSBmcm9tICcuL3JlYWQtYnknO1xuaW1wb3J0IHsgQXR0YWNobWVudFVwbG9hZCwgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbm5lbFNlcnZpY2Uge1xuICBoYXNNb3JlQ2hhbm5lbHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjaGFubmVscyQ6IE9ic2VydmFibGU8Q2hhbm5lbFtdIHwgdW5kZWZpbmVkPjtcbiAgYWN0aXZlQ2hhbm5lbCQ6IE9ic2VydmFibGU8Q2hhbm5lbCB8IHVuZGVmaW5lZD47XG4gIGFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQ6IE9ic2VydmFibGU8U3RyZWFtTWVzc2FnZVtdPjtcbiAgY3VzdG9tTmV3TWVzc2FnZU5vdGlmaWNhdGlvbkhhbmRsZXI/OiAoXG4gICAgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24sXG4gICAgY2hhbm5lbExpc3RTZXR0ZXI6IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tQWRkZWRUb0NoYW5uZWxOb3RpZmljYXRpb25IYW5kbGVyPzogKFxuICAgIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIGN1c3RvbVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXI/OiAoXG4gICAgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24sXG4gICAgY2hhbm5lbExpc3RTZXR0ZXI6IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tQ2hhbm5lbERlbGV0ZWRIYW5kbGVyPzogKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBjaGFubmVsOiBDaGFubmVsLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZCxcbiAgICBtZXNzYWdlTGlzdFNldHRlcjogKG1lc3NhZ2VzOiBTdHJlYW1NZXNzYWdlW10pID0+IHZvaWRcbiAgKSA9PiB2b2lkO1xuICBjdXN0b21DaGFubmVsVXBkYXRlZEhhbmRsZXI/OiAoXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIGNoYW5uZWw6IENoYW5uZWwsXG4gICAgY2hhbm5lbExpc3RTZXR0ZXI6IChjaGFubmVsczogQ2hhbm5lbFtdKSA9PiB2b2lkLFxuICAgIG1lc3NhZ2VMaXN0U2V0dGVyOiAobWVzc2FnZXM6IFN0cmVhbU1lc3NhZ2VbXSkgPT4gdm9pZFxuICApID0+IHZvaWQ7XG4gIGN1c3RvbUNoYW5uZWxUcnVuY2F0ZWRIYW5kbGVyPzogKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBjaGFubmVsOiBDaGFubmVsLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZCxcbiAgICBtZXNzYWdlTGlzdFNldHRlcjogKG1lc3NhZ2VzOiBTdHJlYW1NZXNzYWdlW10pID0+IHZvaWRcbiAgKSA9PiB2b2lkO1xuICBjdXN0b21DaGFubmVsSGlkZGVuSGFuZGxlcj86IChcbiAgICBldmVudDogRXZlbnQsXG4gICAgY2hhbm5lbDogQ2hhbm5lbCxcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWQsXG4gICAgbWVzc2FnZUxpc3RTZXR0ZXI6IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgY3VzdG9tQ2hhbm5lbFZpc2libGVIYW5kbGVyPzogKFxuICAgIGV2ZW50OiBFdmVudCxcbiAgICBjaGFubmVsOiBDaGFubmVsLFxuICAgIGNoYW5uZWxMaXN0U2V0dGVyOiAoY2hhbm5lbHM6IENoYW5uZWxbXSkgPT4gdm9pZCxcbiAgICBtZXNzYWdlTGlzdFNldHRlcjogKG1lc3NhZ2VzOiBTdHJlYW1NZXNzYWdlW10pID0+IHZvaWRcbiAgKSA9PiB2b2lkO1xuICBjdXN0b21OZXdNZXNzYWdlSGFuZGxlcj86IChcbiAgICBldmVudDogRXZlbnQsXG4gICAgY2hhbm5lbDogQ2hhbm5lbCxcbiAgICBjaGFubmVsTGlzdFNldHRlcjogKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHZvaWQsXG4gICAgbWVzc2FnZUxpc3RTZXR0ZXI6IChtZXNzYWdlczogU3RyZWFtTWVzc2FnZVtdKSA9PiB2b2lkXG4gICkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBjaGFubmVsc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYW5uZWxbXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgYWN0aXZlQ2hhbm5lbFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYW5uZWwgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBwcml2YXRlIGFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIChTdHJlYW1NZXNzYWdlIHwgTWVzc2FnZVJlc3BvbnNlIHwgRm9ybWF0TWVzc2FnZVJlc3BvbnNlKVtdXG4gID4oW10pO1xuICBwcml2YXRlIGhhc01vcmVDaGFubmVsc1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgcHJpdmF0ZSBhY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9uczogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9W10gPSBbXTtcbiAgcHJpdmF0ZSBmaWx0ZXJzOiBDaGFubmVsRmlsdGVycyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzb3J0OiBDaGFubmVsU29ydCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvcHRpb25zOiBDaGFubmVsT3B0aW9ucyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGNoYW5uZWxMaXN0U2V0dGVyID0gKGNoYW5uZWxzOiBDaGFubmVsW10pID0+IHtcbiAgICB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KGNoYW5uZWxzKTtcbiAgfTtcblxuICBwcml2YXRlIG1lc3NhZ2VMaXN0U2V0dGVyID0gKG1lc3NhZ2VzOiBTdHJlYW1NZXNzYWdlW10pID0+IHtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChtZXNzYWdlcyk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5jaGFubmVscyQgPSB0aGlzLmNoYW5uZWxzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWwkID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlcyQgPSB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QucGlwZShcbiAgICAgIG1hcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgICAgIHJldHVybiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzU3RyZWFtTWVzc2FnZShtZXNzYWdlKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0Zvcm1hdE1lc3NhZ2VSZXNwb25zZShtZXNzYWdlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRm9ybWF0TWVzc2FnZVJlc3BvbnNlKG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCByZWFkQnk6IGdldFJlYWRCeShtZXNzYWdlLCBjaGFubmVsKSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXRNZXNzYWdlID0gdGhpcy5mb3JtYXRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZm9ybWF0TWVzc2FnZSxcbiAgICAgICAgICAgICAgcmVhZEJ5OiBnZXRSZWFkQnkoZm9ybWF0TWVzc2FnZSwgY2hhbm5lbCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5oYXNNb3JlQ2hhbm5lbHMkID0gdGhpcy5oYXNNb3JlQ2hhbm5lbHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0QXNBY3RpdmVDaGFubmVsKGNoYW5uZWw6IENoYW5uZWwpIHtcbiAgICBjb25zdCBwcmV2QWN0aXZlQ2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvckFjdGl2ZUNoYW5uZWxFdmVudHMocHJldkFjdGl2ZUNoYW5uZWwpO1xuICAgIHRoaXMud2F0Y2hGb3JBY3RpdmVDaGFubmVsRXZlbnRzKGNoYW5uZWwpO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QubmV4dChjaGFubmVsKTtcbiAgICBjaGFubmVsLnN0YXRlLm1lc3NhZ2VzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIG0ucmVhZEJ5ID0gZ2V0UmVhZEJ5KG0sIGNoYW5uZWwpO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmNhblNlbmRSZWFkRXZlbnRzKSB7XG4gICAgICB2b2lkIGNoYW5uZWwubWFya1JlYWQoKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0Lm5leHQoWy4uLmNoYW5uZWwuc3RhdGUubWVzc2FnZXNdKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgYWN0aXZlQ2huYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgY29uc3QgbGFzdE1lc3NhZ2VJZCA9IHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5nZXRWYWx1ZSgpWzBdPy5pZDtcbiAgICBhd2FpdCBhY3RpdmVDaG5hbm5lbD8ucXVlcnkoe1xuICAgICAgbWVzc2FnZXM6IHsgbGltaXQ6IDI1LCBpZF9sdDogbGFzdE1lc3NhZ2VJZCB9LFxuICAgICAgbWVtYmVyczogeyBsaW1pdDogMCB9LFxuICAgICAgd2F0Y2hlcnM6IHsgbGltaXQ6IDAgfSxcbiAgICB9KTtcbiAgICBpZiAoXG4gICAgICBhY3RpdmVDaG5hbm5lbD8uZGF0YT8uaWQgPT09XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCk/LmRhdGE/LmlkXG4gICAgKSB7XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbXG4gICAgICAgIC4uLmFjdGl2ZUNobmFubmVsIS5zdGF0ZS5tZXNzYWdlcyxcbiAgICAgIF0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXQoXG4gICAgZmlsdGVyczogQ2hhbm5lbEZpbHRlcnMsXG4gICAgc29ydD86IENoYW5uZWxTb3J0LFxuICAgIG9wdGlvbnM/OiBDaGFubmVsT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge1xuICAgICAgb2Zmc2V0OiAwLFxuICAgICAgbGltaXQ6IDI1LFxuICAgICAgc3RhdGU6IHRydWUsXG4gICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgIHdhdGNoOiB0cnVlLFxuICAgICAgbWVzc2FnZV9saW1pdDogMjUsXG4gICAgfTtcbiAgICB0aGlzLnNvcnQgPSBzb3J0IHx8IHsgbGFzdF9tZXNzYWdlX2F0OiAtMSwgdXBkYXRlZF9hdDogLTEgfTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5Q2hhbm5lbHMoKTtcbiAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLm5vdGlmaWNhdGlvbiQuc3Vic2NyaWJlKFxuICAgICAgKG5vdGlmaWNhdGlvbikgPT4gdm9pZCB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlQ2hhbm5lbHMoKSB7XG4gICAgdGhpcy5vcHRpb25zIS5vZmZzZXQgPSB0aGlzLmNoYW5uZWxzLmxlbmd0aCE7XG4gICAgYXdhaXQgdGhpcy5xdWVyeUNoYW5uZWxzKCk7XG4gIH1cblxuICBhc3luYyBhZGRSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgcmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgYXdhaXQgdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpPy5zZW5kUmVhY3Rpb24obWVzc2FnZUlkLCB7XG4gICAgICB0eXBlOiByZWFjdGlvblR5cGUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZW1vdmVSZWFjdGlvbihtZXNzYWdlSWQ6IHN0cmluZywgcmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgYXdhaXQgdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdFxuICAgICAgLmdldFZhbHVlKClcbiAgICAgID8uZGVsZXRlUmVhY3Rpb24obWVzc2FnZUlkLCByZWFjdGlvblR5cGUpO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50W10gPSBbXSxcbiAgICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXVxuICApIHtcbiAgICBjb25zdCBwcmV2aWV3ID0gY3JlYXRlTWVzc2FnZVByZXZpZXcoXG4gICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlciEsXG4gICAgICB0ZXh0LFxuICAgICAgYXR0YWNobWVudHMsXG4gICAgICBtZW50aW9uZWRVc2Vyc1xuICAgICk7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgcHJldmlldy5yZWFkQnkgPSBbXTtcbiAgICBjaGFubmVsLnN0YXRlLmFkZE1lc3NhZ2VTb3J0ZWQocHJldmlldywgdHJ1ZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kTWVzc2FnZVJlcXVlc3QocHJldmlldyk7XG4gIH1cblxuICBhc3luYyByZXNlbmRNZXNzYWdlKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpITtcbiAgICBjaGFubmVsLnN0YXRlLmFkZE1lc3NhZ2VTb3J0ZWQoXG4gICAgICB7XG4gICAgICAgIC4uLihtZXNzYWdlIGFzIGFueSBhcyBNZXNzYWdlUmVzcG9uc2UpLFxuICAgICAgICBlcnJvclN0YXR1c0NvZGU6IHVuZGVmaW5lZCxcbiAgICAgICAgc3RhdHVzOiAnc2VuZGluZycsXG4gICAgICB9LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5zZW5kTWVzc2FnZVJlcXVlc3QobWVzc2FnZSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVNZXNzYWdlKG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UpIHtcbiAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXBkYXRlTWVzc2FnZShcbiAgICAgIG1lc3NhZ2UgYXMgVXBkYXRlZE1lc3NhZ2VcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWVzc2FnZShtZXNzYWdlOiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LmRlbGV0ZU1lc3NhZ2UobWVzc2FnZS5pZCk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRBdHRhY2htZW50cyhcbiAgICB1cGxvYWRzOiBBdHRhY2htZW50VXBsb2FkW11cbiAgKTogUHJvbWlzZTxBdHRhY2htZW50VXBsb2FkW10+IHtcbiAgICBjb25zdCByZXN1bHQ6IEF0dGFjaG1lbnRVcGxvYWRbXSA9IFtdO1xuICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgIGNvbnN0IHVwbG9hZFJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICB1cGxvYWRzLm1hcCgodXBsb2FkKSA9PlxuICAgICAgICB1cGxvYWQudHlwZSA9PT0gJ2ltYWdlJ1xuICAgICAgICAgID8gY2hhbm5lbC5zZW5kSW1hZ2UodXBsb2FkLmZpbGUpXG4gICAgICAgICAgOiBjaGFubmVsLnNlbmRGaWxlKHVwbG9hZC5maWxlKVxuICAgICAgKVxuICAgICk7XG4gICAgdXBsb2FkUmVzdWx0cy5mb3JFYWNoKCh1cGxvYWRSZXN1bHQsIGkpID0+IHtcbiAgICAgIGNvbnN0IGZpbGUgPSB1cGxvYWRzW2ldLmZpbGU7XG4gICAgICBjb25zdCB0eXBlID0gdXBsb2Fkc1tpXS50eXBlO1xuICAgICAgaWYgKHVwbG9hZFJlc3VsdC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBmaWxlLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgc3RhdGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICB1cmw6IHVwbG9hZFJlc3VsdC52YWx1ZS5maWxlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZmlsZSwgdHlwZSwgc3RhdGU6ICdlcnJvcicgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50VXBsb2FkOiBBdHRhY2htZW50VXBsb2FkKSB7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgYXdhaXQgKGF0dGFjaG1lbnRVcGxvYWQudHlwZSA9PT0gJ2ltYWdlJ1xuICAgICAgPyBjaGFubmVsLmRlbGV0ZUltYWdlKGF0dGFjaG1lbnRVcGxvYWQudXJsISlcbiAgICAgIDogY2hhbm5lbC5kZWxldGVGaWxlKGF0dGFjaG1lbnRVcGxvYWQudXJsISkpO1xuICB9XG5cbiAgYXN5bmMgYXV0b2NvbXBsZXRlTWVtYmVycyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY3RpdmVDaGFubmVsID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgIGlmICghYWN0aXZlQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoYWN0aXZlQ2hhbm5lbC5zdGF0ZS5tZW1iZXJzKS5sZW5ndGggPD0gMTAwKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhhY3RpdmVDaGFubmVsLnN0YXRlLm1lbWJlcnMpLmZpbHRlcihcbiAgICAgICAgKG0pID0+IG0udXNlcj8uaWQgIT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VySUQhXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXNlYXJjaFRlcm0pIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYWN0aXZlQ2hhbm5lbC5xdWVyeU1lbWJlcnMoe1xuICAgICAgICAkb3I6IFtcbiAgICAgICAgICB7IGlkOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgICAgIHsgbmFtZTogeyAkYXV0b2NvbXBsZXRlOiBzZWFyY2hUZXJtIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWQ6IHsgJG5lOiB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlcklEISB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQubWVtYmVycyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWVzc2FnZVJlcXVlc3QocHJldmlldzogTWVzc2FnZVJlc3BvbnNlIHwgU3RyZWFtTWVzc2FnZSkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFsuLi5jaGFubmVsLnN0YXRlLm1lc3NhZ2VzXSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNoYW5uZWwuc2VuZE1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiBwcmV2aWV3LnRleHQsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBwcmV2aWV3LmF0dGFjaG1lbnRzLFxuICAgICAgICBtZW50aW9uZWRfdXNlcnM6IHByZXZpZXcubWVudGlvbmVkX3VzZXJzPy5tYXAoKHUpID0+IHUuaWQpLFxuICAgICAgICBpZDogcHJldmlldy5pZCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBzdHJpbmdFcnJvciA9IEpTT04uc3RyaW5naWZ5KGVycm9yKTtcbiAgICAgIGNvbnN0IHBhcnNlZEVycm9yOiB7IHN0YXR1cz86IG51bWJlciB9ID0gc3RyaW5nRXJyb3JcbiAgICAgICAgPyAoSlNPTi5wYXJzZShzdHJpbmdFcnJvcikgYXMgeyBzdGF0dXM/OiBudW1iZXIgfSlcbiAgICAgICAgOiB7fTtcblxuICAgICAgY2hhbm5lbC5zdGF0ZS5hZGRNZXNzYWdlU29ydGVkKFxuICAgICAgICB7XG4gICAgICAgICAgLi4uKHByZXZpZXcgYXMgTWVzc2FnZVJlc3BvbnNlKSxcbiAgICAgICAgICBlcnJvclN0YXR1c0NvZGU6IHBhcnNlZEVycm9yLnN0YXR1cyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgc3RhdHVzOiAnZmFpbGVkJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzU3ViamVjdC5uZXh0KFsuLi5jaGFubmVsLnN0YXRlLm1lc3NhZ2VzXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi5ldmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ25vdGlmaWNhdGlvbi5tZXNzYWdlX25ldyc6IHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tTmV3TWVzc2FnZU5vdGlmaWNhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbU5ld01lc3NhZ2VOb3RpZmljYXRpb25IYW5kbGVyKFxuICAgICAgICAgICAgbm90aWZpY2F0aW9uLFxuICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlclxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVOZXdNZXNzYWdlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdub3RpZmljYXRpb24uYWRkZWRfdG9fY2hhbm5lbCc6IHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQWRkZWRUb0NoYW5uZWxOb3RpZmljYXRpb25IYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21BZGRlZFRvQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZGVkVG9DaGFubmVsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdub3RpZmljYXRpb24ucmVtb3ZlZF9mcm9tX2NoYW5uZWwnOiB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBub3RpZmljYXRpb24sXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlbW92ZWRGcm9tQ2hhbm5lbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZW1vdmVkRnJvbUNoYW5uZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgY2hhbm5lbElkVG9CZVJlbW92ZWQgPSBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbCEuY2lkO1xuICAgICAgdGhpcy5yZW1vdmVGcm9tQ2hhbm5lbExpc3QoY2hhbm5lbElkVG9CZVJlbW92ZWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVOZXdNZXNzYWdlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKSB7XG4gICAgYXdhaXQgdGhpcy5hZGRDaGFubmVsRnJvbU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVBZGRlZFRvQ2hhbm5lbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikge1xuICAgIGF3YWl0IHRoaXMuYWRkQ2hhbm5lbEZyb21Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkQ2hhbm5lbEZyb21Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LmNoYW5uZWwoXG4gICAgICBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbD8udHlwZSEsXG4gICAgICBub3RpZmljYXRpb24uZXZlbnQuY2hhbm5lbD8uaWRcbiAgICApO1xuICAgIGF3YWl0IGNoYW5uZWwud2F0Y2goKTtcbiAgICB0aGlzLndhdGNoRm9yQ2hhbm5lbEV2ZW50cyhjaGFubmVsKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIC4uLih0aGlzLmNoYW5uZWxzU3ViamVjdC5nZXRWYWx1ZSgpIHx8IFtdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGcm9tQ2hhbm5lbExpc3QoY2lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjaGFubmVscyA9IHRoaXMuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiBjLmNpZCAhPT0gY2lkKTtcbiAgICBpZiAoY2hhbm5lbHMubGVuZ3RoIDwgdGhpcy5jaGFubmVscy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoY2hhbm5lbHMpO1xuICAgICAgaWYgKHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSEuY2lkID09PSBjaWQpIHtcbiAgICAgICAgdGhpcy5zZXRBc0FjdGl2ZUNoYW5uZWwoY2hhbm5lbHNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2F0Y2hGb3JBY3RpdmVDaGFubmVsRXZlbnRzKGNoYW5uZWw6IENoYW5uZWwpIHtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdtZXNzYWdlLm5ldycsICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbLi4uY2hhbm5lbC5zdGF0ZS5tZXNzYWdlc10pO1xuICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbCQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhblNlbmRSZWFkRXZlbnRzKSB7XG4gICAgICAgICAgICAgIHZvaWQgYz8ubWFya1JlYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgY2hhbm5lbC5vbignbWVzc2FnZS51cGRhdGVkJywgKGV2ZW50KSA9PiB0aGlzLm1lc3NhZ2VVcGRhdGVkKGV2ZW50KSlcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGNoYW5uZWwub24oJ21lc3NhZ2UuZGVsZXRlZCcsIChldmVudCkgPT4gdGhpcy5tZXNzYWdlVXBkYXRlZChldmVudCkpXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdyZWFjdGlvbi5uZXcnLCAoZSkgPT4gdGhpcy5tZXNzYWdlUmVhY3Rpb25FdmVudFJlY2VpdmVkKGUpKVxuICAgICk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgY2hhbm5lbC5vbigncmVhY3Rpb24uZGVsZXRlZCcsIChlKSA9PlxuICAgICAgICB0aGlzLm1lc3NhZ2VSZWFjdGlvbkV2ZW50UmVjZWl2ZWQoZSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuYWN0aXZlQ2hhbm5lbFN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGNoYW5uZWwub24oJ3JlYWN0aW9uLnVwZGF0ZWQnLCAoZSkgPT5cbiAgICAgICAgdGhpcy5tZXNzYWdlUmVhY3Rpb25FdmVudFJlY2VpdmVkKGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjaGFubmVsLm9uKCdtZXNzYWdlLnJlYWQnLCAoZSkgPT4ge1xuICAgICAgICBsZXQgbGF0ZXN0TWVzc2FnZSE6IFN0cmVhbU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgICBsYXRlc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWxhdGVzdE1lc3NhZ2UgfHwgIWUudXNlcikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsYXRlc3RNZXNzYWdlLnJlYWRCeSA9IGdldFJlYWRCeShsYXRlc3RNZXNzYWdlLCBjaGFubmVsKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QuZ2V0VmFsdWUoKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXNzYWdlVXBkYXRlZChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJbmRleCA9IG1lc3NhZ2VzLmZpbmRJbmRleChcbiAgICAgICAgKG0pID0+IG0uaWQgPT09IGV2ZW50Lm1lc3NhZ2U/LmlkXG4gICAgICApO1xuICAgICAgaWYgKG1lc3NhZ2VJbmRleCAhPT0gLTEgJiYgZXZlbnQubWVzc2FnZSkge1xuICAgICAgICBtZXNzYWdlc1ttZXNzYWdlSW5kZXhdID0gZXZlbnQubWVzc2FnZTtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0Lm5leHQoWy4uLm1lc3NhZ2VzXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1lc3NhZ2VSZWFjdGlvbkV2ZW50UmVjZWl2ZWQoZTogRXZlbnQpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2VzITogU3RyZWFtTWVzc2FnZVtdO1xuICAgICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXMkXG4gICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKG0pID0+IChtZXNzYWdlcyA9IG0pKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlcy5maW5kKChtKSA9PiBtLmlkID09PSBlPy5tZXNzYWdlPy5pZCk7XG4gICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbWVzc2FnZS5yZWFjdGlvbl9jb3VudHMgPSB7IC4uLmUubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIH07XG4gICAgICBtZXNzYWdlLnJlYWN0aW9uX3Njb3JlcyA9IHsgLi4uZS5tZXNzYWdlPy5yZWFjdGlvbl9zY29yZXMgfTtcbiAgICAgIG1lc3NhZ2UubGF0ZXN0X3JlYWN0aW9ucyA9IFsuLi4oZS5tZXNzYWdlPy5sYXRlc3RfcmVhY3Rpb25zIHx8IFtdKV07XG4gICAgICBtZXNzYWdlLm93bl9yZWFjdGlvbnMgPSBbLi4uKGUubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSldO1xuICAgICAgdGhpcy5hY3RpdmVDaGFubmVsTWVzc2FnZXNTdWJqZWN0Lm5leHQoWy4uLm1lc3NhZ2VzXSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1lc3NhZ2UobWVzc2FnZTogTWVzc2FnZVJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICAvLyBwYXJzZSB0aGUgZGF0ZS4uXG4gICAgICBwaW5uZWRfYXQ6IG1lc3NhZ2UucGlubmVkX2F0ID8gbmV3IERhdGUobWVzc2FnZS5waW5uZWRfYXQpIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRfYXQ6IG1lc3NhZ2UuY3JlYXRlZF9hdFxuICAgICAgICA/IG5ldyBEYXRlKG1lc3NhZ2UuY3JlYXRlZF9hdClcbiAgICAgICAgOiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZF9hdDogbWVzc2FnZS51cGRhdGVkX2F0XG4gICAgICAgID8gbmV3IERhdGUobWVzc2FnZS51cGRhdGVkX2F0KVxuICAgICAgICA6IG5ldyBEYXRlKCksXG4gICAgICBzdGF0dXM6IG1lc3NhZ2Uuc3RhdHVzIHx8ICdyZWNlaXZlZCcsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdHJlYW1NZXNzYWdlKFxuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCBGb3JtYXRNZXNzYWdlUmVzcG9uc2UgfCBNZXNzYWdlUmVzcG9uc2VcbiAgKTogbWVzc2FnZSBpcyBTdHJlYW1NZXNzYWdlIHtcbiAgICByZXR1cm4gISFtZXNzYWdlLnJlYWRCeTtcbiAgfVxuXG4gIHByaXZhdGUgaXNGb3JtYXRNZXNzYWdlUmVzcG9uc2UoXG4gICAgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IEZvcm1hdE1lc3NhZ2VSZXNwb25zZSB8IE1lc3NhZ2VSZXNwb25zZVxuICApOiBtZXNzYWdlIGlzIEZvcm1hdE1lc3NhZ2VSZXNwb25zZSB7XG4gICAgcmV0dXJuIG1lc3NhZ2UuY3JlYXRlZF9hdCBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICBwcml2YXRlIHN0b3BXYXRjaEZvckFjdGl2ZUNoYW5uZWxFdmVudHMoY2hhbm5lbDogQ2hhbm5lbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghY2hhbm5lbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5hY3RpdmVDaGFubmVsU3Vic2NyaXB0aW9ucyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBxdWVyeUNoYW5uZWxzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGFubmVscyA9IGF3YWl0IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC5xdWVyeUNoYW5uZWxzKFxuICAgICAgICB0aGlzLmZpbHRlcnMhLFxuICAgICAgICB0aGlzLnNvcnQsXG4gICAgICAgIHRoaXMub3B0aW9uc1xuICAgICAgKTtcbiAgICAgIGNoYW5uZWxzLmZvckVhY2goKGMpID0+IHRoaXMud2F0Y2hGb3JDaGFubmVsRXZlbnRzKGMpKTtcbiAgICAgIGNvbnN0IHByZXZDaGFubmVscyA9IHRoaXMuY2hhbm5lbHNTdWJqZWN0LmdldFZhbHVlKCkgfHwgW107XG4gICAgICB0aGlzLmNoYW5uZWxzU3ViamVjdC5uZXh0KFsuLi5wcmV2Q2hhbm5lbHMsIC4uLmNoYW5uZWxzXSk7XG4gICAgICBpZiAoY2hhbm5lbHMubGVuZ3RoID4gMCAmJiAhdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgIHRoaXMuc2V0QXNBY3RpdmVDaGFubmVsKGNoYW5uZWxzWzBdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFzTW9yZUNoYW5uZWxzU3ViamVjdC5uZXh0KGNoYW5uZWxzLmxlbmd0aCA+PSB0aGlzLm9wdGlvbnMhLmxpbWl0ISk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0LmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdhdGNoRm9yQ2hhbm5lbEV2ZW50cyhjaGFubmVsOiBDaGFubmVsKSB7XG4gICAgY2hhbm5lbC5vbigoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbWVzc2FnZS5uZXcnOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tTmV3TWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tTmV3TWVzc2FnZUhhbmRsZXIoXG4gICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyLFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0U2V0dGVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5ld01lc3NhZ2UoZXZlbnQsIGNoYW5uZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdjaGFubmVsLmhpZGRlbic6IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21DaGFubmVsSGlkZGVuSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21DaGFubmVsSGlkZGVuSGFuZGxlcihcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3RTZXR0ZXIsXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RTZXR0ZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbm5lbEhpZGRlbihldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdjaGFubmVsLmRlbGV0ZWQnOiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ2hhbm5lbERlbGV0ZWRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYW5uZWxEZWxldGVkSGFuZGxlcihcbiAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgIGNoYW5uZWwsXG4gICAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3RTZXR0ZXIsXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RTZXR0ZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbm5lbERlbGV0ZWQoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnY2hhbm5lbC52aXNpYmxlJzoge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYW5uZWxWaXNpYmxlSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21DaGFubmVsVmlzaWJsZUhhbmRsZXIoXG4gICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgICB0aGlzLmNoYW5uZWxMaXN0U2V0dGVyLFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0U2V0dGVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5uZWxWaXNpYmxlKGV2ZW50LCBjaGFubmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2NoYW5uZWwudXBkYXRlZCc6IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21DaGFubmVsVXBkYXRlZEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ2hhbm5lbFVwZGF0ZWRIYW5kbGVyKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlcixcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlTGlzdFNldHRlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFubmVsVXBkYXRlKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2NoYW5uZWwudHJ1bmNhdGVkJzoge1xuICAgICAgICAgIGlmICh0aGlzLmN1c3RvbUNoYW5uZWxUcnVuY2F0ZWRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNoYW5uZWxUcnVuY2F0ZWRIYW5kbGVyKFxuICAgICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgY2hhbm5lbCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFubmVsTGlzdFNldHRlcixcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlTGlzdFNldHRlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFubmVsVHJ1bmNhdGUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hcHBSZWYudGljaygpLCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTmV3TWVzc2FnZShfOiBFdmVudCwgY2hhbm5lbDogQ2hhbm5lbCkge1xuICAgIGNvbnN0IGNoYW5uZWxJbmRleCA9IHRoaXMuY2hhbm5lbHMuZmluZEluZGV4KChjKSA9PiBjLmNpZCA9PT0gY2hhbm5lbC5jaWQpO1xuICAgIHRoaXMuY2hhbm5lbHMuc3BsaWNlKGNoYW5uZWxJbmRleCwgMSk7XG4gICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbY2hhbm5lbCwgLi4udGhpcy5jaGFubmVsc10pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFubmVsSGlkZGVuKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMucmVtb3ZlRnJvbUNoYW5uZWxMaXN0KGV2ZW50LmNoYW5uZWwhLmNpZCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5uZWxEZWxldGVkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMucmVtb3ZlRnJvbUNoYW5uZWxMaXN0KGV2ZW50LmNoYW5uZWwhLmNpZCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5uZWxWaXNpYmxlKGV2ZW50OiBFdmVudCwgY2hhbm5lbDogQ2hhbm5lbCkge1xuICAgIGlmICghdGhpcy5jaGFubmVscy5maW5kKChjKSA9PiBjLmNpZCA9PT0gZXZlbnQuY2lkKSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+XG4gICAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuY2hhbm5lbHMsIGNoYW5uZWxdKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5uZWxVcGRhdGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgY2hhbm5lbEluZGV4ID0gdGhpcy5jaGFubmVscy5maW5kSW5kZXgoXG4gICAgICAoYykgPT4gYy5jaWQgPT09IGV2ZW50LmNoYW5uZWwhLmNpZFxuICAgICk7XG4gICAgaWYgKGNoYW5uZWxJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuY2hhbm5lbHNbY2hhbm5lbEluZGV4XS5kYXRhID0gZXZlbnQuY2hhbm5lbDtcbiAgICAgIHRoaXMuY2hhbm5lbHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuY2hhbm5lbHNdKTtcbiAgICAgIGlmIChldmVudC5jaGFubmVsPy5jaWQgPT09IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKT8uY2lkKSB7XG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0LmdldFZhbHVlKCkhO1xuICAgICAgICBjaGFubmVsLmRhdGEgPSBldmVudC5jaGFubmVsO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxTdWJqZWN0Lm5leHQoY2hhbm5lbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDaGFubmVsVHJ1bmNhdGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgY2hhbm5lbEluZGV4ID0gdGhpcy5jaGFubmVscy5maW5kSW5kZXgoXG4gICAgICAoYykgPT4gYy5jaWQgPT09IGV2ZW50LmNoYW5uZWwhLmNpZFxuICAgICk7XG4gICAgaWYgKGNoYW5uZWxJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuY2hhbm5lbHNbY2hhbm5lbEluZGV4XS5zdGF0ZS5tZXNzYWdlcyA9IFtdO1xuICAgICAgdGhpcy5jaGFubmVsc1N1YmplY3QubmV4dChbLi4udGhpcy5jaGFubmVsc10pO1xuICAgICAgaWYgKGV2ZW50LmNoYW5uZWw/LmNpZCA9PT0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpPy5jaWQpIHtcbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuYWN0aXZlQ2hhbm5lbFN1YmplY3QuZ2V0VmFsdWUoKSE7XG4gICAgICAgIGNoYW5uZWwuc3RhdGUubWVzc2FnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5uZXh0KGNoYW5uZWwpO1xuICAgICAgICB0aGlzLmFjdGl2ZUNoYW5uZWxNZXNzYWdlc1N1YmplY3QubmV4dChbXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbHNTdWJqZWN0LmdldFZhbHVlKCkgfHwgW107XG4gIH1cblxuICBwcml2YXRlIGdldCBjYW5TZW5kUmVhZEV2ZW50cygpIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5hY3RpdmVDaGFubmVsU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgIGlmICghY2hhbm5lbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjYXBhYmlsaXRlcyA9IGNoYW5uZWwuZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICByZXR1cm4gY2FwYWJpbGl0ZXMuaW5kZXhPZigncmVhZC1ldmVudHMnKSAhPT0gLTE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -64,6 +64,21 @@ export class ChatClientService {
|
|
|
64
64
|
yield this.chatClient.flagMessage(messageId);
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
+
autocompleteUsers(searchTerm) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
if (!searchTerm) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const result = yield this.chatClient.queryUsers({
|
|
73
|
+
$or: [
|
|
74
|
+
{ id: { $autocomplete: searchTerm } },
|
|
75
|
+
{ name: { $autocomplete: searchTerm } },
|
|
76
|
+
],
|
|
77
|
+
id: { $ne: this.chatClient.userID },
|
|
78
|
+
});
|
|
79
|
+
return result.users;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
67
82
|
}
|
|
68
83
|
ChatClientService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, deps: [{ token: i0.NgZone }, { token: i0.ApplicationRef }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
84
|
ChatClientService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChatClientService, providedIn: 'root' });
|
|
@@ -73,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
73
88
|
providedIn: 'root',
|
|
74
89
|
}]
|
|
75
90
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ApplicationRef }, { type: i1.NotificationService }]; } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWtCLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBUyxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFjNUMsTUFBTSxPQUFPLGlCQUFpQjtJQU81QixZQUNVLE1BQWMsRUFDZCxNQUFzQixFQUN0QixtQkFBd0M7UUFGeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFOMUMsd0JBQW1CLEdBQUcsSUFBSSxhQUFhLENBQWUsQ0FBQyxDQUFDLENBQUM7UUFDekQsMkJBQXNCLEdBQUcsSUFBSSxhQUFhLENBQXVCLENBQUMsQ0FBQyxDQUFDO1FBTzFFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVLLElBQUksQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLFNBQWlCOztZQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLENBQUMs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QUssQ0FBQztRQUN0QixDQUFDO0tBQUE7OzhHQTlFVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFdmVudCwgU3RyZWFtQ2hhdCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9hc3NldHMvdmVyc2lvbic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbiA9IHtcbiAgZXZlbnRUeXBlOlxuICAgIHwgJ25vdGlmaWNhdGlvbi5hZGRlZF90b19jaGFubmVsJ1xuICAgIHwgJ25vdGlmaWNhdGlvbi5tZXNzYWdlX25ldydcbiAgICB8ICdub3RpZmljYXRpb24ucmVtb3ZlZF9mcm9tX2NoYW5uZWwnO1xuICBldmVudDogRXZlbnQ7XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdENsaWVudFNlcnZpY2Uge1xuICBjaGF0Q2xpZW50ITogU3RyZWFtQ2hhdDtcbiAgbm90aWZpY2F0aW9uJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+O1xuICBjb25uZWN0aW9uU3RhdGUkOiBPYnNlcnZhYmxlPCdvZmZsaW5lJyB8ICdvbmxpbmUnPjtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Tm90aWZpY2F0aW9uPigxKTtcbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8J29mZmxpbmUnIHwgJ29ubGluZSc+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbiQgPSB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkID0gdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgaW5pdChhcGlLZXk6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIHVzZXJUb2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jaGF0Q2xpZW50ID0gU3RyZWFtQ2hhdC5nZXRJbnN0YW5jZShhcGlLZXkpO1xuICAgIGF3YWl0IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5jb25uZWN0VXNlcih7IGlkOiB1c2VySWQgfSwgdXNlclRva2VuKTtcbiAgICAgIHRoaXMuY2hhdENsaWVudC5zZXRVc2VyQWdlbnQoXG4gICAgICAgIGBzdHJlYW0tY2hhdC1hbmd1bGFyLSR7dmVyc2lvbn0tJHt0aGlzLmNoYXRDbGllbnQuZ2V0VXNlckFnZW50KCl9YFxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmNoYXRDbGllbnQub24oJ25vdGlmaWNhdGlvbi5hZGRlZF90b19jaGFubmVsJywgKGUpID0+IHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgZXZlbnRUeXBlOiAnbm90aWZpY2F0aW9uLmFkZGVkX3RvX2NoYW5uZWwnLFxuICAgICAgICBldmVudDogZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhdENsaWVudC5vbignbm90aWZpY2F0aW9uLm1lc3NhZ2VfbmV3JywgKGUpID0+IHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgZXZlbnRUeXBlOiAnbm90aWZpY2F0aW9uLm1lc3NhZ2VfbmV3JyxcbiAgICAgICAgZXZlbnQ6IGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICB9KTtcbiAgICB0aGlzLmNoYXRDbGllbnQub24oJ25vdGlmaWNhdGlvbi5yZW1vdmVkX2Zyb21fY2hhbm5lbCcsIChlKSA9PiB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblN1YmplY3QubmV4dCh7XG4gICAgICAgIGV2ZW50VHlwZTogJ25vdGlmaWNhdGlvbi5yZW1vdmVkX2Zyb21fY2hhbm5lbCcsXG4gICAgICAgIGV2ZW50OiBlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgfSk7XG4gICAgbGV0IHJlbW92ZU5vdGlmaWNhdGlvbjogdW5kZWZpbmVkIHwgRnVuY3Rpb247XG4gICAgdGhpcy5jaGF0Q2xpZW50Lm9uKCdjb25uZWN0aW9uLmNoYW5nZWQnLCAoZSkgPT4ge1xuICAgICAgY29uc3QgaXNPbmxpbmUgPSBlLm9ubGluZTtcbiAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuQ29ubmVjdGlvbiBmYWlsdXJlLCByZWNvbm5lY3Rpbmcgbm93Li4uJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGVTdWJqZWN0Lm5leHQoaXNPbmxpbmUgPyAnb25saW5lJyA6ICdvZmZsaW5lJyk7XG4gICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBmbGFnTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5mbGFnTWVzc2FnZShtZXNzYWdlSWQpO1xuICB9XG5cbiAgYXN5bmMgYXV0b2NvbXBsZXRlVXNlcnMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2hhdENsaWVudC5xdWVyeVVzZXJzKHtcbiAgICAgICRvcjogW1xuICAgICAgICB7IGlkOiB7ICRhdXRvY29tcGxldGU6IHNlYXJjaFRlcm0gfSB9LFxuICAgICAgICB7IG5hbWU6IHsgJGF1dG9jb21wbGV0ZTogc2VhcmNoVGVybSB9IH0sXG4gICAgICBdLFxuICAgICAgaWQ6IHsgJG5lOiB0aGlzLmNoYXRDbGllbnQudXNlcklEISB9LFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQudXNlcnM7XG4gIH1cbn1cbiJdfQ==
|