stream-chat-angular 4.60.0 → 4.60.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +10 -11
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/attachment-list/attachment-list.component.js +2 -2
- package/esm2015/lib/attachment-preview-list/attachment-preview-list.component.js +2 -2
- package/esm2015/lib/avatar/avatar.component.js +2 -2
- package/esm2015/lib/channel-list/channel-list.component.js +2 -2
- package/esm2015/lib/message/message.component.js +2 -2
- package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +2 -2
- package/esm2015/lib/message-input/message-input.component.js +2 -2
- package/esm2015/lib/message-list/message-list.component.js +2 -2
- package/esm2015/lib/message-reactions/message-reactions.component.js +2 -3
- package/fesm2015/stream-chat-angular.js +10 -11
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/version.ts +1 -1
|
@@ -227,7 +227,7 @@ export class AutocompleteTextareaComponent {
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
AutocompleteTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.TransliterationService }, { token: i4.EmojiInputService }, { token: i5.CustomTemplatesService }, { token: i6.ThemeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
-
AutocompleteTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AutocompleteTextareaComponent, selector: "stream-autocomplete-textarea", inputs: { value: "value", placeholder: "placeholder", areMentionsEnabled: "areMentionsEnabled", inputMode: "inputMode", mentionScope: "mentionScope", autoFocus: "autoFocus" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea\n [value]=\"value || ''\"\n [autofocus]=\"autoFocus\"\n data-testid=\"textarea\"\n #input\n placeholder=\"{{ placeholder | translate }}\"\n class=\"\n rta__textarea\n str-chat__textarea__textarea\n str-chat__angular-textarea\n str-chat__message-textarea\n \"\n rows=\"1\"\n (input)=\"inputChanged()\"\n (keydown.enter)=\"enterHit($event)\"\n [mentionConfig]=\"autocompleteConfig\"\n (searchTerm)=\"autcompleteSearchTermChanged($event)\"\n [mentionListTemplate]=\"autocompleteItem\"\n (blur)=\"inputLeft()\"\n></textarea>\n<ng-template #autocompleteItem let-item=\"item\">\n <div class=\"rta rta__item str-chat__emojisearch__item\" [ngSwitch]=\"item.type\">\n <div class=\"rta__entity\" *ngSwitchCase=\"'mention'\">\n <ng-container\n *ngTemplateOutlet=\"\n mentionAutocompleteItemTemplate || defaultMentionTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n <div class=\"rta__entity\" *ngSwitchCase=\"'command'\">\n <ng-container\n *ngTemplateOutlet=\"\n commandAutocompleteItemTemplate || defaultCommandTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #defaultCommandTemplate let-item=\"item\">\n <div class=\"str-chat__slash-command\">\n <span class=\"str-chat__slash-command-header\">\n <strong\n class=\"str-chat__slash-command-name\"\n data-testclass=\"command-name\"\n >{{ item.name }}</strong\n >\n <span class=\"str-chat__slash-command-args\"\n >/{{ item.name }} {{ item.args }}</span\n >\n </span>\n <br />\n </div>\n</ng-template>\n\n<ng-template #defaultMentionTemplate let-item=\"item\">\n <div class=\"str-chat__user-item\">\n <stream-avatar-placeholder\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n [
|
|
230
|
+
AutocompleteTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AutocompleteTextareaComponent, selector: "stream-autocomplete-textarea", inputs: { value: "value", placeholder: "placeholder", areMentionsEnabled: "areMentionsEnabled", inputMode: "inputMode", mentionScope: "mentionScope", autoFocus: "autoFocus" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea\n [value]=\"value || ''\"\n [autofocus]=\"autoFocus\"\n data-testid=\"textarea\"\n #input\n placeholder=\"{{ placeholder | translate }}\"\n class=\"\n rta__textarea\n str-chat__textarea__textarea\n str-chat__angular-textarea\n str-chat__message-textarea\n \"\n rows=\"1\"\n (input)=\"inputChanged()\"\n (keydown.enter)=\"enterHit($event)\"\n [mentionConfig]=\"autocompleteConfig\"\n (searchTerm)=\"autcompleteSearchTermChanged($event)\"\n [mentionListTemplate]=\"autocompleteItem\"\n (blur)=\"inputLeft()\"\n></textarea>\n<ng-template #autocompleteItem let-item=\"item\">\n <div class=\"rta rta__item str-chat__emojisearch__item\" [ngSwitch]=\"item.type\">\n <div class=\"rta__entity\" *ngSwitchCase=\"'mention'\">\n <ng-container\n *ngTemplateOutlet=\"\n mentionAutocompleteItemTemplate || defaultMentionTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n <div class=\"rta__entity\" *ngSwitchCase=\"'command'\">\n <ng-container\n *ngTemplateOutlet=\"\n commandAutocompleteItemTemplate || defaultCommandTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #defaultCommandTemplate let-item=\"item\">\n <div class=\"str-chat__slash-command\">\n <span class=\"str-chat__slash-command-header\">\n <strong\n class=\"str-chat__slash-command-name\"\n data-testclass=\"command-name\"\n >{{ item.name }}</strong\n >\n <span class=\"str-chat__slash-command-args\"\n >/{{ item.name }} {{ item.args }}</span\n >\n </span>\n <br />\n </div>\n</ng-template>\n\n<ng-template #defaultMentionTemplate let-item=\"item\">\n <div class=\"str-chat__user-item\">\n <stream-avatar-placeholder\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n [ngStyle]=\"{ height: themeVersion === '2' ? 30 : 20 + 'px' }\"\n [size]=\"themeVersion === '2' ? 30 : 20\"\n [imageUrl]=\"item.image || item.user?.image\"\n [name]=\"item.autocompleteLabel\"\n type=\"user\"\n location=\"autocomplete-item\"\n [user]=\"item.user || item\"\n ></stream-avatar-placeholder>\n <span data-testclass=\"username\" class=\"str-chat__user-item--name\">{{\n item.autocompleteLabel\n }}</span>\n </div>\n</ng-template>\n", components: [{ type: i7.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }], directives: [{ type: i8.MentionDirective, selector: "[mention], [mentionConfig]", inputs: ["mentionConfig", "mention", "mentionListTemplate"], outputs: ["searchTerm", "itemSelected", "opened", "closed"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "translate": i10.TranslatePipe } });
|
|
231
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, decorators: [{
|
|
232
232
|
type: Component,
|
|
233
233
|
args: [{
|
|
@@ -259,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
259
259
|
type: ViewChild,
|
|
260
260
|
args: ['input']
|
|
261
261
|
}] } });
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBS3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTTlDOztHQUVHO0FBTUgsTUFBTSxPQUFPLDZCQUE2QjtJQW1GeEMsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLGlCQUFvQyxFQUNwQyxzQkFBOEMsRUFDOUMsWUFBMEIsRUFDMUIsS0FBd0I7UUFOeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUF2Rm5CLFVB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QUlHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJYSxXQUFXO3NCQUE3QixNQUFNO2dCQUlZLElBQUk7c0JBQXRCLE1BQU07Z0JBSVksWUFBWTtzQkFBOUIsTUFBTTtnQkFjcUIsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnRpb25Db25maWcsIE1lbnRpb25zIH0gZnJvbSAnYW5ndWxhci1tZW50aW9ucyc7XG5pbXBvcnQge1xuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtLFxuICBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uLy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4uL3RleHRhcmVhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsaXRlcmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3RyYW5zbGl0ZXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVtb2ppSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vZW1vamktaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1lLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgQXV0b2NvbXBsZXRlVGV4dGFyZWFgIGNvbXBvbmVudCBpcyB1c2VkIGJ5IHRoZSBbYE1lc3NhZ2VJbnB1dGBdKC4vTWVzc2FnZUlucHV0Q29tcG9uZW50Lm1keCkgY29tcG9uZW50IHRvIGRpc3BsYXkgdGhlIGlucHV0IEhUTUwgZWxlbWVudCB3aGVyZSB1c2VycyBjYW4gdHlwZSB0aGVpciBtZXNzYWdlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tYXV0b2NvbXBsZXRlLXRleHRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRleHRhcmVhQ29tcG9uZW50XG4gIGltcGxlbWVudHMgVGV4dGFyZWFJbnRlcmZhY2UsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdFxue1xuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0X190ZXh0YXJlYSBzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYS1hbmd1bGFyLWhvc3QnO1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBIVE1MIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICAvKipcbiAgICogUGxhY2Vob2xkZXIgb2YgdGhlIHRleHRhcmVhXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdXNlcnMgY2FuIG1lbnRpb24gb3RoZXIgdXNlcnMgaW4gbWVzc2FnZXMuIFlvdSBjYW4gYWxzbyBzZXQgdGhpcyBpbnB1dCBvbiB0aGUgW2BNZXNzYWdlSW5wdXRgXSguL01lc3NhZ2VJbnB1dENvbXBvbmVudC5tZHgvI2lucHV0cy1hbmQtb3V0cHV0cykgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFNlZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICovXG4gIEBJbnB1dCgpIGlucHV0TW9kZSE6ICdkZXNrdG9wJyB8ICdtb2JpbGUnO1xuICAvKipcbiAgICogVGhlIHNjb3BlIGZvciB1c2VyIG1lbnRpb25zLCBlaXRoZXIgbWVtYmVycyBvZiB0aGUgY3VycmVudCBjaGFubmVsIG9mIG1lbWJlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFsc28gc2V0IHRoaXMgaW5wdXQgb24gdGhlIFtgTWVzc2FnZUlucHV0YF0oLi9NZXNzYWdlSW5wdXRDb21wb25lbnQubWR4LyNpbnB1dHMtYW5kLW91dHB1dHMpIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyA9ICdjaGFubmVsJztcbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0byBmb2N1cyBvbiB0aGUgdGV4dGFyZWEgZWxlbWVudFxuICAgKi9cbiAgQElucHV0KCkgYXV0b0ZvY3VzID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlbGVtZW50IHdoZW4gYSB1c2VyIHR5cGVzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgdXNlciB0cmlnZ2VycyBhIG1lc3NhZ2Ugc2VuZCBldmVudCAodGhpcyBoYXBwZW5zIHdoZW4gdGhleSBoaXQgdGhlIGBFbnRlcmAga2V5KS5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogRW1pdHMgdGhlIGFycmF5IG9mIHVzZXJzIHRoYXQgYXJlIG1lbnRpb25lZCBpbiB0aGUgbWVzc2FnZSwgaXQgaXMgdXBkYXRlZCB3aGVuIGEgdXNlciBtZW50aW9ucyBhIG5ldyB1c2VyIG9yIGRlbGV0ZXMgYSBtZW50aW9uLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJNZW50aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+KCk7XG4gIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICB0aGVtZVZlcnNpb246ICcxJyB8ICcyJztcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRvY29tcGxldGVLZXkgPSAnYXV0b2NvbXBsZXRlTGFiZWwnO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnRpb25UcmlnZ2VyQ2hhciA9ICdAJztcbiAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kVHJpZ2dlckNoYXIgPSAnLyc7XG4gIGF1dG9jb21wbGV0ZUNvbmZpZzogTWVudGlvbkNvbmZpZyA9IHtcbiAgICBtZW50aW9uczogW10sXG4gIH07XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgcHJpdmF0ZSBtZXNzYWdlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdID0gW107XG4gIHByaXZhdGUgdXNlck1lbnRpb25Db25maWc6IE1lbnRpb25zID0ge1xuICAgIHRyaWdnZXJDaGFyOiB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcixcbiAgICBkcm9wVXA6IHRydWUsXG4gICAgbGFiZWxLZXk6IHRoaXMuYXV0b2NvbXBsZXRlS2V5LFxuICAgIHJldHVyblRyaWdnZXI6IHRydWUsXG4gICAgbWVudGlvbkZpbHRlcjogKFxuICAgICAgc2VhcmNoU3RyaW5nOiBzdHJpbmcsXG4gICAgICBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXVxuICAgICkgPT4gdGhpcy5maWx0ZXIoc2VhcmNoU3RyaW5nLCBpdGVtcyksXG4gICAgbWVudGlvblNlbGVjdDogKGl0ZW0sIHRyaWdnZXJDaGFyKSA9PlxuICAgICAgdGhpcy5pdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChpdGVtLCB0cmlnZ2VyQ2hhciksXG4gIH07XG4gIHByaXZhdGUgc2xhc2hDb21tYW5kQ29uZmlnOiBNZW50aW9ucyA9IHtcbiAgICB0cmlnZ2VyQ2hhcjogdGhpcy5jb21tYW5kVHJpZ2dlckNoYXIsXG4gICAgZHJvcFVwOiB0cnVlLFxuICAgIGxhYmVsS2V5OiAnbmFtZScsXG4gICAgcmV0dXJuVHJpZ2dlcjogdHJ1ZSxcbiAgICBtZW50aW9uRmlsdGVyOiAoXG4gICAgICBzZWFyY2hTdHJpbmc6IHN0cmluZyxcbiAgICAgIGl0ZW1zOiB7IGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmcgfVtdXG4gICAgKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hTdHJpbmcsIGl0ZW1zKSxcbiAgICBtZW50aW9uU2VsZWN0OiAoaXRlbSwgdHJpZ2dlckNoYXIpID0+XG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZEZyb21BdXRvY29tcGxldGVMaXN0KGl0ZW0sIHRyaWdnZXJDaGFyKSxcbiAgfTtcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xpdGVyYXRpb25TZXJ2aWNlOiBUcmFuc2xpdGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoVGVybS5zdGFydHNXaXRoKHRoaXMubWVudGlvblRyaWdnZXJDaGFyKSkge1xuICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnMoc2VhcmNoVGVybSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICBjb25zdCBjb21tYW5kcyA9IGNoYW5uZWw/LmdldENvbmZpZygpPy5jb21tYW5kcyB8fCBbXTtcbiAgICAgICAgdGhpcy5zbGFzaENvbW1hbmRDb25maWcuaXRlbXMgPSBjb21tYW5kcy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgLi4uYyxcbiAgICAgICAgICBbdGhpcy5hdXRvY29tcGxldGVLZXldOiBjLm5hbWUsXG4gICAgICAgICAgdHlwZTogJ2NvbW1hbmQnLFxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dChbLi4udGhpcy5tZW50aW9uZWRVc2Vyc10pO1xuICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnModGhpcy5zZWFyY2hUZXJtJC5nZXRWYWx1ZSgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZW1vamlJbnB1dFNlcnZpY2UuZW1vamlJbnB1dCQuc3Vic2NyaWJlKChlbW9qaSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0UmFuZ2VUZXh0KGVtb2ppKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlSW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQhICsgZW1vamkubGVuZ3RoO1xuICAgICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQhICsgZW1vamkubGVuZ3RoO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlZCgpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMuY29tbWFuZEF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcubWVudGlvbnMgPSBbXG4gICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgdGhpcy5zbGFzaENvbW1hbmRDb25maWcsXG4gICAgXTtcbiAgICB0aGlzLnRoZW1lVmVyc2lvbiA9IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lVmVyc2lvbjtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgICAgIHRoaXMuc2xhc2hDb21tYW5kQ29uZmlnLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVDb25maWcgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnLm1lbnRpb25zID0gW3RoaXMuc2xhc2hDb21tYW5kQ29uZmlnXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnZhbHVlICYmICF0aGlzLnZhbHVlICYmIHRoaXMubWVzc2FnZUlucHV0KSB7XG4gICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlSW5wdXQubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyKHNlYXJjaFN0cmluZzogc3RyaW5nLCBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXSkge1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICB0aGlzLnRyYW5zbGl0ZXJhdGUoaXRlbS5hdXRvY29tcGxldGVMYWJlbC50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy50cmFuc2xpdGVyYXRlKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChcbiAgICBpdGVtOiBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSxcbiAgICB0cmlnZ2VyQ2hhciA9ICcnXG4gICkge1xuICAgIGlmICh0cmlnZ2VyQ2hhciA9PT0gdGhpcy5tZW50aW9uVHJpZ2dlckNoYXIpIHtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMucHVzaCgoaXRlbS51c2VyID8gaXRlbS51c2VyIDogaXRlbSkgYXMgVXNlclJlc3BvbnNlKTtcbiAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnRoaXMubWVudGlvbmVkVXNlcnNdKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRyaWdnZXJDaGFyICtcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWwgK1xuICAgICAgKHRyaWdnZXJDaGFyID09PSB0aGlzLmNvbW1hbmRUcmlnZ2VyQ2hhciA/ICcgJyA6ICcnKVxuICAgICk7XG4gIH1cblxuICBhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcikge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZWQoKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIHRoaXMuYWRqdXN0VGV4dGFyZWFIZWlnaHQoKTtcbiAgfVxuXG4gIGlucHV0TGVmdCgpIHtcbiAgICB0aGlzLnVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKTtcbiAgfVxuXG4gIGVudGVySGl0KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmlucHV0TW9kZSA9PT0gJ2Rlc2t0b3AnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51cGRhdGVNZW50aW9uZWRVc2Vyc0Zyb21UZXh0KCk7XG4gICAgICB0aGlzLnNlbmQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGV4dGFyZWFIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMudGhlbWVWZXJzaW9uID09PSAnMicpIHtcbiAgICAgIHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3RoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGl0ZXJhdGUoczogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZS50cmFuc2xpdGVyYXRlKHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1lbnRpb25PcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtPy5yZXBsYWNlKHRoaXMubWVudGlvblRyaWdnZXJDaGFyLCAnJyk7XG4gICAgY29uc3QgcmVxdWVzdCA9XG4gICAgICB0aGlzLm1lbnRpb25TY29wZSA9PT0gJ2FwcGxpY2F0aW9uJ1xuICAgICAgICA/IChzOiBzdHJpbmcpID0+IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuYXV0b2NvbXBsZXRlVXNlcnMocylcbiAgICAgICAgOiAoczogc3RyaW5nKSA9PiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmF1dG9jb21wbGV0ZU1lbWJlcnMocyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdChzZWFyY2hUZXJtIHx8ICcnKTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmlsdGVyKFxuICAgICAgc2VhcmNoVGVybSB8fCAnJyxcbiAgICAgIHJlc3VsdC5tYXAoKGkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IChpLnVzZXIgPyBpLnVzZXIgOiBpKSBhcyBVc2VyUmVzcG9uc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaSxcbiAgICAgICAgICBhdXRvY29tcGxldGVMYWJlbDogdXNlci5uYW1lIHx8IHVzZXIuaWQsXG4gICAgICAgICAgdHlwZTogJ21lbnRpb24nLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudXNlck1lbnRpb25Db25maWcuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgIHRoaXMudXNlck1lbnRpb25Db25maWcsXG4gICAgICB0aGlzLnNsYXNoQ29tbWFuZENvbmZpZyxcbiAgICBdO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnID0geyAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyB9O1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNZW50aW9uZWRVc2Vyc0Zyb21UZXh0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRNZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgICB0aGlzLm1lbnRpb25lZFVzZXJzLmZvckVhY2goKHUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHUubmFtZSB8fCB1LmlkO1xuICAgICAgaWYgKHRoaXMudmFsdWUuaW5jbHVkZXMoYCR7dGhpcy5tZW50aW9uVHJpZ2dlckNoYXJ9JHtrZXl9YCkpIHtcbiAgICAgICAgdXBkYXRlZE1lbnRpb25lZFVzZXJzLnB1c2godSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHVwZGF0ZWRNZW50aW9uZWRVc2Vycy5sZW5ndGggIT09IHRoaXMubWVudGlvbmVkVXNlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KFsuLi51cGRhdGVkTWVudGlvbmVkVXNlcnNdKTtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSB1cGRhdGVkTWVudGlvbmVkVXNlcnM7XG4gICAgfVxuICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgW3ZhbHVlXT1cInZhbHVlIHx8ICcnXCJcbiAgW2F1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICBkYXRhLXRlc3RpZD1cInRleHRhcmVhXCJcbiAgI2lucHV0XG4gIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cIlxuICAgIHJ0YV9fdGV4dGFyZWFcbiAgICBzdHItY2hhdF9fdGV4dGFyZWFfX3RleHRhcmVhXG4gICAgc3RyLWNoYXRfX2FuZ3VsYXItdGV4dGFyZWFcbiAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYVxuICBcIlxuICByb3dzPVwiMVwiXG4gIChpbnB1dCk9XCJpbnB1dENoYW5nZWQoKVwiXG4gIChrZXlkb3duLmVudGVyKT1cImVudGVySGl0KCRldmVudClcIlxuICBbbWVudGlvbkNvbmZpZ109XCJhdXRvY29tcGxldGVDb25maWdcIlxuICAoc2VhcmNoVGVybSk9XCJhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKCRldmVudClcIlxuICBbbWVudGlvbkxpc3RUZW1wbGF0ZV09XCJhdXRvY29tcGxldGVJdGVtXCJcbiAgKGJsdXIpPVwiaW5wdXRMZWZ0KClcIlxuPjwvdGV4dGFyZWE+XG48bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZUl0ZW0gbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJydGEgcnRhX19pdGVtIHN0ci1jaGF0X19lbW9qaXNlYXJjaF9faXRlbVwiIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRhX19lbnRpdHlcIiAqbmdTd2l0Y2hDYXNlPVwiJ21lbnRpb24nXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSB8fCBkZWZhdWx0TWVudGlvblRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0YV9fZW50aXR5XCIgKm5nU3dpdGNoQ2FzZT1cIidjb21tYW5kJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgfHwgZGVmYXVsdENvbW1hbmRUZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbW1hbmRUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19zbGFzaC1jb21tYW5kXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZC1oZWFkZXJcIj5cbiAgICAgIDxzdHJvbmdcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZC1uYW1lXCJcbiAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJjb21tYW5kLW5hbWVcIlxuICAgICAgICA+e3sgaXRlbS5uYW1lIH19PC9zdHJvbmdcbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3NsYXNoLWNvbW1hbmQtYXJnc1wiXG4gICAgICAgID4ve3sgaXRlbS5uYW1lIH19IHt7IGl0ZW0uYXJncyB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvc3Bhbj5cbiAgICA8YnIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRNZW50aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtXCI+XG4gICAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiYXZhdGFyXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhciBzdHItY2hhdF9fYXZhdGFyLS1jaXJjbGVcIlxuICAgICAgW3N0eWxlXT1cIidoZWlnaHQ6ICcgKyB0aGVtZVZlcnNpb24gPT09ICcyJyA/IDMwIDogMjAgKyAncHgnXCJcbiAgICAgIFtzaXplXT1cInRoZW1lVmVyc2lvbiA9PT0gJzInID8gMzAgOiAyMFwiXG4gICAgICBbaW1hZ2VVcmxdPVwiaXRlbS5pbWFnZSB8fCBpdGVtLnVzZXI/LmltYWdlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0uYXV0b2NvbXBsZXRlTGFiZWxcIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgbG9jYXRpb249XCJhdXRvY29tcGxldGUtaXRlbVwiXG4gICAgICBbdXNlcl09XCJpdGVtLnVzZXIgfHwgaXRlbVwiXG4gICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICA8c3BhbiBkYXRhLXRlc3RjbGFzcz1cInVzZXJuYW1lXCIgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtLS1uYW1lXCI+e3tcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWxcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBS3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTTlDOztHQUVHO0FBTUgsTUFBTSxPQUFPLDZCQUE2QjtJQW1GeEMsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsc0JBQThDLEVBQzlDLGlCQUFvQyxFQUNwQyxzQkFBOEMsRUFDOUMsWUFBMEIsRUFDMUIsS0FBd0I7UUFOeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUF2Rm5CLFVB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QUlHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJYSxXQUFXO3NCQUE3QixNQUFNO2dCQUlZLElBQUk7c0JBQXRCLE1BQU07Z0JBSVksWUFBWTtzQkFBOUIsTUFBTTtnQkFjcUIsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnRpb25Db25maWcsIE1lbnRpb25zIH0gZnJvbSAnYW5ndWxhci1tZW50aW9ucyc7XG5pbXBvcnQge1xuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtLFxuICBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uLy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4uL3RleHRhcmVhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsaXRlcmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3RyYW5zbGl0ZXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVtb2ppSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vZW1vamktaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1lLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgQXV0b2NvbXBsZXRlVGV4dGFyZWFgIGNvbXBvbmVudCBpcyB1c2VkIGJ5IHRoZSBbYE1lc3NhZ2VJbnB1dGBdKC4vTWVzc2FnZUlucHV0Q29tcG9uZW50Lm1keCkgY29tcG9uZW50IHRvIGRpc3BsYXkgdGhlIGlucHV0IEhUTUwgZWxlbWVudCB3aGVyZSB1c2VycyBjYW4gdHlwZSB0aGVpciBtZXNzYWdlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tYXV0b2NvbXBsZXRlLXRleHRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRleHRhcmVhQ29tcG9uZW50XG4gIGltcGxlbWVudHMgVGV4dGFyZWFJbnRlcmZhY2UsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdFxue1xuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0X190ZXh0YXJlYSBzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYS1hbmd1bGFyLWhvc3QnO1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBpbnB1dCBIVE1MIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICAvKipcbiAgICogUGxhY2Vob2xkZXIgb2YgdGhlIHRleHRhcmVhXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdXNlcnMgY2FuIG1lbnRpb24gb3RoZXIgdXNlcnMgaW4gbWVzc2FnZXMuIFlvdSBjYW4gYWxzbyBzZXQgdGhpcyBpbnB1dCBvbiB0aGUgW2BNZXNzYWdlSW5wdXRgXSguL01lc3NhZ2VJbnB1dENvbXBvbmVudC5tZHgvI2lucHV0cy1hbmQtb3V0cHV0cykgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFNlZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICovXG4gIEBJbnB1dCgpIGlucHV0TW9kZSE6ICdkZXNrdG9wJyB8ICdtb2JpbGUnO1xuICAvKipcbiAgICogVGhlIHNjb3BlIGZvciB1c2VyIG1lbnRpb25zLCBlaXRoZXIgbWVtYmVycyBvZiB0aGUgY3VycmVudCBjaGFubmVsIG9mIG1lbWJlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiBZb3UgY2FuIGFsc28gc2V0IHRoaXMgaW5wdXQgb24gdGhlIFtgTWVzc2FnZUlucHV0YF0oLi9NZXNzYWdlSW5wdXRDb21wb25lbnQubWR4LyNpbnB1dHMtYW5kLW91dHB1dHMpIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyA9ICdjaGFubmVsJztcbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0byBmb2N1cyBvbiB0aGUgdGV4dGFyZWEgZWxlbWVudFxuICAgKi9cbiAgQElucHV0KCkgYXV0b0ZvY3VzID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBlbGVtZW50IHdoZW4gYSB1c2VyIHR5cGVzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgdXNlciB0cmlnZ2VycyBhIG1lc3NhZ2Ugc2VuZCBldmVudCAodGhpcyBoYXBwZW5zIHdoZW4gdGhleSBoaXQgdGhlIGBFbnRlcmAga2V5KS5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogRW1pdHMgdGhlIGFycmF5IG9mIHVzZXJzIHRoYXQgYXJlIG1lbnRpb25lZCBpbiB0aGUgbWVzc2FnZSwgaXQgaXMgdXBkYXRlZCB3aGVuIGEgdXNlciBtZW50aW9ucyBhIG5ldyB1c2VyIG9yIGRlbGV0ZXMgYSBtZW50aW9uLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJNZW50aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+KCk7XG4gIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICB0aGVtZVZlcnNpb246ICcxJyB8ICcyJztcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRvY29tcGxldGVLZXkgPSAnYXV0b2NvbXBsZXRlTGFiZWwnO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnRpb25UcmlnZ2VyQ2hhciA9ICdAJztcbiAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kVHJpZ2dlckNoYXIgPSAnLyc7XG4gIGF1dG9jb21wbGV0ZUNvbmZpZzogTWVudGlvbkNvbmZpZyA9IHtcbiAgICBtZW50aW9uczogW10sXG4gIH07XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgcHJpdmF0ZSBtZXNzYWdlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdID0gW107XG4gIHByaXZhdGUgdXNlck1lbnRpb25Db25maWc6IE1lbnRpb25zID0ge1xuICAgIHRyaWdnZXJDaGFyOiB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcixcbiAgICBkcm9wVXA6IHRydWUsXG4gICAgbGFiZWxLZXk6IHRoaXMuYXV0b2NvbXBsZXRlS2V5LFxuICAgIHJldHVyblRyaWdnZXI6IHRydWUsXG4gICAgbWVudGlvbkZpbHRlcjogKFxuICAgICAgc2VhcmNoU3RyaW5nOiBzdHJpbmcsXG4gICAgICBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXVxuICAgICkgPT4gdGhpcy5maWx0ZXIoc2VhcmNoU3RyaW5nLCBpdGVtcyksXG4gICAgbWVudGlvblNlbGVjdDogKGl0ZW0sIHRyaWdnZXJDaGFyKSA9PlxuICAgICAgdGhpcy5pdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChpdGVtLCB0cmlnZ2VyQ2hhciksXG4gIH07XG4gIHByaXZhdGUgc2xhc2hDb21tYW5kQ29uZmlnOiBNZW50aW9ucyA9IHtcbiAgICB0cmlnZ2VyQ2hhcjogdGhpcy5jb21tYW5kVHJpZ2dlckNoYXIsXG4gICAgZHJvcFVwOiB0cnVlLFxuICAgIGxhYmVsS2V5OiAnbmFtZScsXG4gICAgcmV0dXJuVHJpZ2dlcjogdHJ1ZSxcbiAgICBtZW50aW9uRmlsdGVyOiAoXG4gICAgICBzZWFyY2hTdHJpbmc6IHN0cmluZyxcbiAgICAgIGl0ZW1zOiB7IGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmcgfVtdXG4gICAgKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hTdHJpbmcsIGl0ZW1zKSxcbiAgICBtZW50aW9uU2VsZWN0OiAoaXRlbSwgdHJpZ2dlckNoYXIpID0+XG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZEZyb21BdXRvY29tcGxldGVMaXN0KGl0ZW0sIHRyaWdnZXJDaGFyKSxcbiAgfTtcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xpdGVyYXRpb25TZXJ2aWNlOiBUcmFuc2xpdGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICBpZiAoc2VhcmNoVGVybS5zdGFydHNXaXRoKHRoaXMubWVudGlvblRyaWdnZXJDaGFyKSkge1xuICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnMoc2VhcmNoVGVybSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICBjb25zdCBjb21tYW5kcyA9IGNoYW5uZWw/LmdldENvbmZpZygpPy5jb21tYW5kcyB8fCBbXTtcbiAgICAgICAgdGhpcy5zbGFzaENvbW1hbmRDb25maWcuaXRlbXMgPSBjb21tYW5kcy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgLi4uYyxcbiAgICAgICAgICBbdGhpcy5hdXRvY29tcGxldGVLZXldOiBjLm5hbWUsXG4gICAgICAgICAgdHlwZTogJ2NvbW1hbmQnLFxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dChbLi4udGhpcy5tZW50aW9uZWRVc2Vyc10pO1xuICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnModGhpcy5zZWFyY2hUZXJtJC5nZXRWYWx1ZSgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZW1vamlJbnB1dFNlcnZpY2UuZW1vamlJbnB1dCQuc3Vic2NyaWJlKChlbW9qaSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0UmFuZ2VUZXh0KGVtb2ppKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlSW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQhICsgZW1vamkubGVuZ3RoO1xuICAgICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9XG4gICAgICAgICAgc2VsZWN0aW9uU3RhcnQhICsgZW1vamkubGVuZ3RoO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlZCgpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiAodGhpcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMuY29tbWFuZEF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcubWVudGlvbnMgPSBbXG4gICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgdGhpcy5zbGFzaENvbW1hbmRDb25maWcsXG4gICAgXTtcbiAgICB0aGlzLnRoZW1lVmVyc2lvbiA9IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lVmVyc2lvbjtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgICAgIHRoaXMuc2xhc2hDb21tYW5kQ29uZmlnLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVDb25maWcgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnLm1lbnRpb25zID0gW3RoaXMuc2xhc2hDb21tYW5kQ29uZmlnXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnZhbHVlICYmICF0aGlzLnZhbHVlICYmIHRoaXMubWVzc2FnZUlucHV0KSB7XG4gICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlSW5wdXQubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiAwKSB7XG4gICAgICB0aGlzLmFkanVzdFRleHRhcmVhSGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyKHNlYXJjaFN0cmluZzogc3RyaW5nLCBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXSkge1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICB0aGlzLnRyYW5zbGl0ZXJhdGUoaXRlbS5hdXRvY29tcGxldGVMYWJlbC50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy50cmFuc2xpdGVyYXRlKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChcbiAgICBpdGVtOiBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSxcbiAgICB0cmlnZ2VyQ2hhciA9ICcnXG4gICkge1xuICAgIGlmICh0cmlnZ2VyQ2hhciA9PT0gdGhpcy5tZW50aW9uVHJpZ2dlckNoYXIpIHtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMucHVzaCgoaXRlbS51c2VyID8gaXRlbS51c2VyIDogaXRlbSkgYXMgVXNlclJlc3BvbnNlKTtcbiAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnRoaXMubWVudGlvbmVkVXNlcnNdKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRyaWdnZXJDaGFyICtcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWwgK1xuICAgICAgKHRyaWdnZXJDaGFyID09PSB0aGlzLmNvbW1hbmRUcmlnZ2VyQ2hhciA/ICcgJyA6ICcnKVxuICAgICk7XG4gIH1cblxuICBhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcikge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZWQoKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIHRoaXMuYWRqdXN0VGV4dGFyZWFIZWlnaHQoKTtcbiAgfVxuXG4gIGlucHV0TGVmdCgpIHtcbiAgICB0aGlzLnVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKTtcbiAgfVxuXG4gIGVudGVySGl0KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmlucHV0TW9kZSA9PT0gJ2Rlc2t0b3AnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51cGRhdGVNZW50aW9uZWRVc2Vyc0Zyb21UZXh0KCk7XG4gICAgICB0aGlzLnNlbmQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGV4dGFyZWFIZWlnaHQoKSB7XG4gICAgaWYgKHRoaXMudGhlbWVWZXJzaW9uID09PSAnMicpIHtcbiAgICAgIHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICB0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3RoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGl0ZXJhdGUoczogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZS50cmFuc2xpdGVyYXRlKHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1lbnRpb25PcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtPy5yZXBsYWNlKHRoaXMubWVudGlvblRyaWdnZXJDaGFyLCAnJyk7XG4gICAgY29uc3QgcmVxdWVzdCA9XG4gICAgICB0aGlzLm1lbnRpb25TY29wZSA9PT0gJ2FwcGxpY2F0aW9uJ1xuICAgICAgICA/IChzOiBzdHJpbmcpID0+IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuYXV0b2NvbXBsZXRlVXNlcnMocylcbiAgICAgICAgOiAoczogc3RyaW5nKSA9PiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmF1dG9jb21wbGV0ZU1lbWJlcnMocyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdChzZWFyY2hUZXJtIHx8ICcnKTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmlsdGVyKFxuICAgICAgc2VhcmNoVGVybSB8fCAnJyxcbiAgICAgIHJlc3VsdC5tYXAoKGkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IChpLnVzZXIgPyBpLnVzZXIgOiBpKSBhcyBVc2VyUmVzcG9uc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaSxcbiAgICAgICAgICBhdXRvY29tcGxldGVMYWJlbDogdXNlci5uYW1lIHx8IHVzZXIuaWQsXG4gICAgICAgICAgdHlwZTogJ21lbnRpb24nLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudXNlck1lbnRpb25Db25maWcuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgIHRoaXMudXNlck1lbnRpb25Db25maWcsXG4gICAgICB0aGlzLnNsYXNoQ29tbWFuZENvbmZpZyxcbiAgICBdO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnID0geyAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyB9O1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNZW50aW9uZWRVc2Vyc0Zyb21UZXh0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRNZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgICB0aGlzLm1lbnRpb25lZFVzZXJzLmZvckVhY2goKHUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHUubmFtZSB8fCB1LmlkO1xuICAgICAgaWYgKHRoaXMudmFsdWUuaW5jbHVkZXMoYCR7dGhpcy5tZW50aW9uVHJpZ2dlckNoYXJ9JHtrZXl9YCkpIHtcbiAgICAgICAgdXBkYXRlZE1lbnRpb25lZFVzZXJzLnB1c2godSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHVwZGF0ZWRNZW50aW9uZWRVc2Vycy5sZW5ndGggIT09IHRoaXMubWVudGlvbmVkVXNlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KFsuLi51cGRhdGVkTWVudGlvbmVkVXNlcnNdKTtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSB1cGRhdGVkTWVudGlvbmVkVXNlcnM7XG4gICAgfVxuICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgW3ZhbHVlXT1cInZhbHVlIHx8ICcnXCJcbiAgW2F1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICBkYXRhLXRlc3RpZD1cInRleHRhcmVhXCJcbiAgI2lucHV0XG4gIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cIlxuICAgIHJ0YV9fdGV4dGFyZWFcbiAgICBzdHItY2hhdF9fdGV4dGFyZWFfX3RleHRhcmVhXG4gICAgc3RyLWNoYXRfX2FuZ3VsYXItdGV4dGFyZWFcbiAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYVxuICBcIlxuICByb3dzPVwiMVwiXG4gIChpbnB1dCk9XCJpbnB1dENoYW5nZWQoKVwiXG4gIChrZXlkb3duLmVudGVyKT1cImVudGVySGl0KCRldmVudClcIlxuICBbbWVudGlvbkNvbmZpZ109XCJhdXRvY29tcGxldGVDb25maWdcIlxuICAoc2VhcmNoVGVybSk9XCJhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKCRldmVudClcIlxuICBbbWVudGlvbkxpc3RUZW1wbGF0ZV09XCJhdXRvY29tcGxldGVJdGVtXCJcbiAgKGJsdXIpPVwiaW5wdXRMZWZ0KClcIlxuPjwvdGV4dGFyZWE+XG48bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZUl0ZW0gbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJydGEgcnRhX19pdGVtIHN0ci1jaGF0X19lbW9qaXNlYXJjaF9faXRlbVwiIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRhX19lbnRpdHlcIiAqbmdTd2l0Y2hDYXNlPVwiJ21lbnRpb24nXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSB8fCBkZWZhdWx0TWVudGlvblRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0YV9fZW50aXR5XCIgKm5nU3dpdGNoQ2FzZT1cIidjb21tYW5kJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgfHwgZGVmYXVsdENvbW1hbmRUZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbW1hbmRUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19zbGFzaC1jb21tYW5kXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZC1oZWFkZXJcIj5cbiAgICAgIDxzdHJvbmdcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZC1uYW1lXCJcbiAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJjb21tYW5kLW5hbWVcIlxuICAgICAgICA+e3sgaXRlbS5uYW1lIH19PC9zdHJvbmdcbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3NsYXNoLWNvbW1hbmQtYXJnc1wiXG4gICAgICAgID4ve3sgaXRlbS5uYW1lIH19IHt7IGl0ZW0uYXJncyB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvc3Bhbj5cbiAgICA8YnIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRNZW50aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtXCI+XG4gICAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiYXZhdGFyXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhciBzdHItY2hhdF9fYXZhdGFyLS1jaXJjbGVcIlxuICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHRoZW1lVmVyc2lvbiA9PT0gJzInID8gMzAgOiAyMCArICdweCcgfVwiXG4gICAgICBbc2l6ZV09XCJ0aGVtZVZlcnNpb24gPT09ICcyJyA/IDMwIDogMjBcIlxuICAgICAgW2ltYWdlVXJsXT1cIml0ZW0uaW1hZ2UgfHwgaXRlbS51c2VyPy5pbWFnZVwiXG4gICAgICBbbmFtZV09XCJpdGVtLmF1dG9jb21wbGV0ZUxhYmVsXCJcbiAgICAgIHR5cGU9XCJ1c2VyXCJcbiAgICAgIGxvY2F0aW9uPVwiYXV0b2NvbXBsZXRlLWl0ZW1cIlxuICAgICAgW3VzZXJdPVwiaXRlbS51c2VyIHx8IGl0ZW1cIlxuICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgPHNwYW4gZGF0YS10ZXN0Y2xhc3M9XCJ1c2VybmFtZVwiIGNsYXNzPVwic3RyLWNoYXRfX3VzZXItaXRlbS0tbmFtZVwiPnt7XG4gICAgICBpdGVtLmF1dG9jb21wbGV0ZUxhYmVsXG4gICAgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -411,7 +411,7 @@ export class MessageInputComponent {
|
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
413
|
MessageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.ChannelService }, { token: i2.NotificationService }, { token: i3.AttachmentService }, { token: i4.MessageInputConfigService }, { token: textareaInjectionToken }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i5.ChatClientService }, { token: i6.EmojiInputService }, { token: i7.CustomTemplatesService }, { token: i8.ThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
414
|
-
MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", mode: "mode", isMultipleFileUploadEnabled: "isMultipleFileUploadEnabled", message: "message", sendMessage$: "sendMessage$", inputMode: "inputMode", autoFocus: "autoFocus" }, outputs: { messageUpdate: "messageUpdate" }, host: { properties: { "class": "this.class" } }, providers: [AttachmentService, EmojiInputService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "textareaAnchor", first: true, predicate: TextareaDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"themeVersion !== '2'\"\n class=\"{{\n mode === 'main' ? 'str-chat__input-flat' : 'str-chat__small-message-input'\n }}\"\n [class.str-chat__input-flat-has-attachments]=\"\n (attachmentUploads$ | async)!.length > 0\n \"\n [class.str-chat__input-flat-quoted]=\"!!quotedMessage\"\n>\n <div class=\"quoted-message-preview\" *ngIf=\"quotedMessage\">\n <div class=\"quoted-message-preview-header\">\n <div>{{ \"streamChat.Reply to Message\" | translate }}</div>\n <button\n class=\"str-chat__square-button\"\n data-testid=\"remove-quote\"\n (click)=\"deselectMessageToQuote()\"\n (keyup.enter)=\"deselectMessageToQuote()\"\n >\n <stream-icon-placeholder\n icon=\"close-no-outline\"\n style=\"font-size: 15px; line-height: 15px; width: 15px; height: 15px\"\n ></stream-icon-placeholder>\n </button>\n </div>\n <div class=\"quoted-message-preview-content\">\n <stream-avatar-placeholder\n data-testid=\"qouted-message-avatar\"\n class=\"str-chat-angular__avatar-host\"\n [imageUrl]=\"quotedMessage?.user?.image\"\n [name]=\"quotedMessage?.user?.name || quotedMessage?.user?.id\"\n [size]=\"20\"\n type=\"user\"\n location=\"quoted-message-sender\"\n [user]=\"quotedMessage?.user || undefined\"\n ></stream-avatar-placeholder>\n <div class=\"quoted-message-preview-content-inner\">\n <stream-attachment-list\n *ngIf=\"\n quotedMessage?.attachments && quotedMessage?.attachments?.length\n \"\n [attachments]=\"quotedMessageAttachments\"\n [messageId]=\"quotedMessage?.id\"\n ></stream-attachment-list>\n <div\n data-testid=\"quoted-message-text\"\n [innerHTML]=\"\n message?.quoted_message?.translation ||\n quotedMessage?.html ||\n quotedMessage?.text\n \"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__input-flat-wrapper\" style=\"width: 100%\">\n <div\n class=\"{{\n mode === 'main'\n ? 'str-chat__input-flat--textarea-wrapper'\n : 'str-chat__small-message-input--textarea-wrapper'\n }}\"\n >\n <ng-template\n #defaultAttachmentsPreview\n let-attachmentUploads$=\"attachmentUploads$\"\n let-retryUploadHandler=\"retryUploadHandler\"\n let-deleteUploadHandler=\"deleteUploadHandler\"\n >\n <stream-attachment-preview-list\n [attachmentUploads$]=\"attachmentUploads$\"\n (retryAttachmentUpload)=\"retryUploadHandler($event)\"\n (deleteAttachment)=\"deleteUploadHandler($event)\"\n class=\"rfu-image-previewer-angular-host\"\n ></stream-attachment-preview-list>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n attachmentPreviewListTemplate || defaultAttachmentsPreview;\n context: getAttachmentPreviewListContext()\n \"\n ></ng-container>\n <div class=\"rta str-chat__textarea str-chat-angular__textarea\">\n <ng-container *ngIf=\"emojiPickerTemplate\" data-testid=\"emoji-picker\">\n <div\n class=\"\n str-chat__input-flat-emojiselect\n str-chat-angular__emojiselect\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n emojiPickerTemplate;\n context: getEmojiPickerContext()\n \"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"canSendMessages; else disabledTextarea\">\n <ng-container\n streamTextarea\n [(value)]=\"textareaValue\"\n (valueChange)=\"typingStart$.next()\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionScope]=\"mentionScope\"\n [placeholder]=\"textareaPlaceholder\"\n [inputMode]=\"inputMode\"\n [autoFocus]=\"autoFocus\"\n ></ng-container>\n </ng-container>\n <ng-template #disabledTextarea>\n <textarea\n disabled\n rows=\"1\"\n [value]=\"disabledTextareaText | translate\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n data-testid=\"disabled-textarea\"\n ></textarea>\n </ng-template>\n </div>\n <ng-container\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customAttachmentUploadTemplate || defaultAttachmentUpload;\n context: getAttachmentUploadContext()\n \"\n ></ng-container>\n <ng-template #defaultAttachmentUpload>\n <div\n class=\"str-chat__fileupload-wrapper\"\n data-testid=\"file-upload-button\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Attach files\" | translate }}\n </div>\n <div class=\"rfu-file-upload-button\">\n <label>\n <input\n #fileInput\n type=\"file\"\n class=\"rfu-file-input\"\n data-testid=\"file-input\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n />\n <span class=\"str-chat__input-flat-fileupload\">\n <stream-icon-placeholder\n icon=\"file-upload\"\n ></stream-icon-placeholder>\n </span>\n </label>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n <button\n *ngIf=\"canSendMessages && !isCooldownInProgress\"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon-placeholder\n class=\"str-chat__send-button-angular\"\n icon=\"send\"\n ></stream-icon-placeholder>\n </button>\n <div\n class=\"str-chat__input-flat-cooldown\"\n *ngIf=\"isCooldownInProgress\"\n data-testid=\"cooldown-timer\"\n >\n <div class=\"str-chat__message-input-cooldown-text\">\n {{ cooldown$ | async }}\n </div>\n </div>\n </div>\n</div>\n\n<div\n *ngIf=\"themeVersion === '2'\"\n class=\"str-chat__message-input str-chat-angular__message-input\"\n>\n <div *ngIf=\"quotedMessage\" class=\"str-chat__quoted-message-preview-header\">\n <div class=\"str-chat__quoted-message-reply-to-message\">\n {{ \"streamChat.Reply to Message\" | translate }}\n </div>\n <button\n class=\"str-chat__quoted-message-remove\"\n data-testid=\"remove-quote\"\n (click)=\"deselectMessageToQuote()\"\n (keyup.enter)=\"deselectMessageToQuote()\"\n >\n <stream-icon-placeholder\n icon=\"close-no-outline\"\n ></stream-icon-placeholder>\n </button>\n </div>\n <ng-container *ngIf=\"canSendMessages; else notAllowed\">\n <div\n class=\"\n str-chat__message-input-inner\n str-chat-angular__message-input-inner\n \"\n >\n <ng-container\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customAttachmentUploadTemplate || defaultAttachmentUpload;\n context: getAttachmentUploadContext()\n \"\n ></ng-container>\n <ng-template #defaultAttachmentUpload>\n <div\n class=\"str-chat__file-input-container\"\n data-testid=\"file-upload-button\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"str-chat__file-input\"\n data-testid=\"file-input\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n id=\"{{ fileInputId }}\"\n />\n <label class=\"str-chat__file-input-label\" for=\"{{ fileInputId }}\">\n <stream-icon-placeholder icon=\"attach\"></stream-icon-placeholder>\n </label>\n </div>\n </ng-template>\n </ng-container>\n <div class=\"str-chat__message-textarea-container\">\n <div\n data-testid=\"quoted-message-container\"\n class=\"str-chat__quoted-message-preview\"\n *ngIf=\"quotedMessage\"\n >\n <stream-avatar-placeholder\n data-testid=\"qouted-message-avatar\"\n class=\"\n str-chat-angular__avatar-host\n str-chat__message-sender-avatar\n \"\n [imageUrl]=\"quotedMessage?.user?.image\"\n [name]=\"quotedMessage?.user?.name || quotedMessage?.user?.id\"\n [size]=\"20\"\n type=\"user\"\n location=\"quoted-message-sender\"\n [user]=\"quotedMessage?.user || undefined\"\n ></stream-avatar-placeholder>\n <div\n class=\"\n quoted-message-preview-content-inner\n str-chat__quoted-message-bubble\n \"\n >\n <stream-attachment-list\n *ngIf=\"\n quotedMessage?.attachments && quotedMessage?.attachments?.length\n \"\n [attachments]=\"quotedMessageAttachments\"\n [messageId]=\"quotedMessage?.id\"\n ></stream-attachment-list>\n <div\n class=\"str-chat__quoted-message-text\"\n data-testid=\"quoted-message-text\"\n [innerHTML]=\"\n quotedMessage?.translation ||\n quotedMessage?.html ||\n quotedMessage?.text\n \"\n ></div>\n </div>\n </div>\n <ng-template\n #defaultAttachmentsPreview\n let-attachmentUploads$=\"attachmentUploads$\"\n let-retryUploadHandler=\"retryUploadHandler\"\n let-deleteUploadHandler=\"deleteUploadHandler\"\n >\n <stream-attachment-preview-list\n [attachmentUploads$]=\"attachmentUploads$\"\n (retryAttachmentUpload)=\"retryUploadHandler($event)\"\n (deleteAttachment)=\"deleteUploadHandler($event)\"\n class=\"str-chat__attachment-preview-list-angular-host\"\n ></stream-attachment-preview-list>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n attachmentPreviewListTemplate || defaultAttachmentsPreview;\n context: getAttachmentPreviewListContext()\n \"\n ></ng-container>\n <div class=\"str-chat__message-textarea-with-emoji-picker\">\n <ng-container\n streamTextarea\n [(value)]=\"textareaValue\"\n (valueChange)=\"typingStart$.next()\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionScope]=\"mentionScope\"\n [inputMode]=\"inputMode\"\n [autoFocus]=\"autoFocus\"\n [placeholder]=\"textareaPlaceholder\"\n ></ng-container>\n <div class=\"str-chat__message-textarea-emoji-picker\">\n <ng-container\n *ngIf=\"emojiPickerTemplate\"\n data-testid=\"emoji-picker\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n emojiPickerTemplate;\n context: getEmojiPickerContext()\n \"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"canSendMessages && !isCooldownInProgress && !message\"\n [disabled]=\"\n (attachmentUploadInProgressCounter$ | async)! > 0 ||\n (!textareaValue && (attachmentUploads$ | async)!.length === 0)\n \"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon-placeholder icon=\"send\"></stream-icon-placeholder>\n </button>\n <div\n class=\"str-chat__message-input-cooldown\"\n *ngIf=\"isCooldownInProgress\"\n data-testid=\"cooldown-timer\"\n >\n {{ cooldown$ | async }}\n </div>\n </div>\n </ng-container>\n <ng-template #notAllowed>\n <div\n class=\"str-chat__message-input-not-allowed\"\n data-testid=\"disabled-textarea\"\n >\n {{ disabledTextareaText | translate }}\n </div>\n </ng-template>\n</div>\n", components: [{ type: i9.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }, { type: i10.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }, { type: i11.AttachmentListComponent, selector: "stream-attachment-list", inputs: ["messageId", "parentMessageId", "attachments"], outputs: ["imageModalStateChange"] }, { type: i12.AttachmentPreviewListComponent, selector: "stream-attachment-preview-list", inputs: ["attachmentUploads$"], outputs: ["retryAttachmentUpload", "deleteAttachment"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.TextareaDirective, selector: "[streamTextarea]", inputs: ["componentRef", "areMentionsEnabled", "mentionScope", "inputMode", "value", "placeholder", "autoFocus"], outputs: ["valueChange", "send", "userMentions"] }], pipes: { "async": i13.AsyncPipe, "translate": i15.TranslatePipe } });
|
|
414
|
+
MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", mode: "mode", isMultipleFileUploadEnabled: "isMultipleFileUploadEnabled", message: "message", sendMessage$: "sendMessage$", inputMode: "inputMode", autoFocus: "autoFocus" }, outputs: { messageUpdate: "messageUpdate" }, host: { properties: { "class": "this.class" } }, providers: [AttachmentService, EmojiInputService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "textareaAnchor", first: true, predicate: TextareaDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"themeVersion !== '2'\"\n class=\"{{\n mode === 'main' ? 'str-chat__input-flat' : 'str-chat__small-message-input'\n }}\"\n [class.str-chat__input-flat-has-attachments]=\"\n (attachmentUploads$ | async)!.length > 0\n \"\n [class.str-chat__input-flat-quoted]=\"!!quotedMessage\"\n>\n <div class=\"quoted-message-preview\" *ngIf=\"quotedMessage\">\n <div class=\"quoted-message-preview-header\">\n <div>{{ \"streamChat.Reply to Message\" | translate }}</div>\n <button\n class=\"str-chat__square-button\"\n data-testid=\"remove-quote\"\n (click)=\"deselectMessageToQuote()\"\n (keyup.enter)=\"deselectMessageToQuote()\"\n >\n <stream-icon-placeholder\n icon=\"close-no-outline\"\n ></stream-icon-placeholder>\n </button>\n </div>\n <div class=\"quoted-message-preview-content\">\n <stream-avatar-placeholder\n data-testid=\"qouted-message-avatar\"\n class=\"str-chat-angular__avatar-host\"\n [imageUrl]=\"quotedMessage?.user?.image\"\n [name]=\"quotedMessage?.user?.name || quotedMessage?.user?.id\"\n [size]=\"20\"\n type=\"user\"\n location=\"quoted-message-sender\"\n [user]=\"quotedMessage?.user || undefined\"\n ></stream-avatar-placeholder>\n <div class=\"quoted-message-preview-content-inner\">\n <stream-attachment-list\n *ngIf=\"\n quotedMessage?.attachments && quotedMessage?.attachments?.length\n \"\n [attachments]=\"quotedMessageAttachments\"\n [messageId]=\"quotedMessage?.id\"\n ></stream-attachment-list>\n <div\n data-testid=\"quoted-message-text\"\n [innerHTML]=\"\n message?.quoted_message?.translation ||\n quotedMessage?.html ||\n quotedMessage?.text\n \"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__input-flat-wrapper\">\n <div\n class=\"{{\n mode === 'main'\n ? 'str-chat__input-flat--textarea-wrapper'\n : 'str-chat__small-message-input--textarea-wrapper'\n }}\"\n >\n <ng-template\n #defaultAttachmentsPreview\n let-attachmentUploads$=\"attachmentUploads$\"\n let-retryUploadHandler=\"retryUploadHandler\"\n let-deleteUploadHandler=\"deleteUploadHandler\"\n >\n <stream-attachment-preview-list\n [attachmentUploads$]=\"attachmentUploads$\"\n (retryAttachmentUpload)=\"retryUploadHandler($event)\"\n (deleteAttachment)=\"deleteUploadHandler($event)\"\n class=\"rfu-image-previewer-angular-host\"\n ></stream-attachment-preview-list>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n attachmentPreviewListTemplate || defaultAttachmentsPreview;\n context: getAttachmentPreviewListContext()\n \"\n ></ng-container>\n <div class=\"rta str-chat__textarea str-chat-angular__textarea\">\n <ng-container *ngIf=\"emojiPickerTemplate\" data-testid=\"emoji-picker\">\n <div\n class=\"\n str-chat__input-flat-emojiselect\n str-chat-angular__emojiselect\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n emojiPickerTemplate;\n context: getEmojiPickerContext()\n \"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"canSendMessages; else disabledTextarea\">\n <ng-container\n streamTextarea\n [(value)]=\"textareaValue\"\n (valueChange)=\"typingStart$.next()\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionScope]=\"mentionScope\"\n [placeholder]=\"textareaPlaceholder\"\n [inputMode]=\"inputMode\"\n [autoFocus]=\"autoFocus\"\n ></ng-container>\n </ng-container>\n <ng-template #disabledTextarea>\n <textarea\n disabled\n rows=\"1\"\n [value]=\"disabledTextareaText | translate\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n data-testid=\"disabled-textarea\"\n ></textarea>\n </ng-template>\n </div>\n <ng-container\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customAttachmentUploadTemplate || defaultAttachmentUpload;\n context: getAttachmentUploadContext()\n \"\n ></ng-container>\n <ng-template #defaultAttachmentUpload>\n <div\n class=\"str-chat__fileupload-wrapper\"\n data-testid=\"file-upload-button\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Attach files\" | translate }}\n </div>\n <div class=\"rfu-file-upload-button\">\n <label>\n <input\n #fileInput\n type=\"file\"\n class=\"rfu-file-input\"\n data-testid=\"file-input\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n />\n <span class=\"str-chat__input-flat-fileupload\">\n <stream-icon-placeholder\n icon=\"file-upload\"\n ></stream-icon-placeholder>\n </span>\n </label>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n <button\n *ngIf=\"canSendMessages && !isCooldownInProgress\"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon-placeholder\n class=\"str-chat__send-button-angular\"\n icon=\"send\"\n ></stream-icon-placeholder>\n </button>\n <div\n class=\"str-chat__input-flat-cooldown\"\n *ngIf=\"isCooldownInProgress\"\n data-testid=\"cooldown-timer\"\n >\n <div class=\"str-chat__message-input-cooldown-text\">\n {{ cooldown$ | async }}\n </div>\n </div>\n </div>\n</div>\n\n<div\n *ngIf=\"themeVersion === '2'\"\n class=\"str-chat__message-input str-chat-angular__message-input\"\n>\n <div *ngIf=\"quotedMessage\" class=\"str-chat__quoted-message-preview-header\">\n <div class=\"str-chat__quoted-message-reply-to-message\">\n {{ \"streamChat.Reply to Message\" | translate }}\n </div>\n <button\n class=\"str-chat__quoted-message-remove\"\n data-testid=\"remove-quote\"\n (click)=\"deselectMessageToQuote()\"\n (keyup.enter)=\"deselectMessageToQuote()\"\n >\n <stream-icon-placeholder\n icon=\"close-no-outline\"\n ></stream-icon-placeholder>\n </button>\n </div>\n <ng-container *ngIf=\"canSendMessages; else notAllowed\">\n <div\n class=\"\n str-chat__message-input-inner\n str-chat-angular__message-input-inner\n \"\n >\n <ng-container\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customAttachmentUploadTemplate || defaultAttachmentUpload;\n context: getAttachmentUploadContext()\n \"\n ></ng-container>\n <ng-template #defaultAttachmentUpload>\n <div\n class=\"str-chat__file-input-container\"\n data-testid=\"file-upload-button\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"str-chat__file-input\"\n data-testid=\"file-input\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n id=\"{{ fileInputId }}\"\n />\n <label class=\"str-chat__file-input-label\" for=\"{{ fileInputId }}\">\n <stream-icon-placeholder icon=\"attach\"></stream-icon-placeholder>\n </label>\n </div>\n </ng-template>\n </ng-container>\n <div class=\"str-chat__message-textarea-container\">\n <div\n data-testid=\"quoted-message-container\"\n class=\"str-chat__quoted-message-preview\"\n *ngIf=\"quotedMessage\"\n >\n <stream-avatar-placeholder\n data-testid=\"qouted-message-avatar\"\n class=\"\n str-chat-angular__avatar-host\n str-chat__message-sender-avatar\n \"\n [imageUrl]=\"quotedMessage?.user?.image\"\n [name]=\"quotedMessage?.user?.name || quotedMessage?.user?.id\"\n [size]=\"20\"\n type=\"user\"\n location=\"quoted-message-sender\"\n [user]=\"quotedMessage?.user || undefined\"\n ></stream-avatar-placeholder>\n <div\n class=\"\n quoted-message-preview-content-inner\n str-chat__quoted-message-bubble\n \"\n >\n <stream-attachment-list\n *ngIf=\"\n quotedMessage?.attachments && quotedMessage?.attachments?.length\n \"\n [attachments]=\"quotedMessageAttachments\"\n [messageId]=\"quotedMessage?.id\"\n ></stream-attachment-list>\n <div\n class=\"str-chat__quoted-message-text\"\n data-testid=\"quoted-message-text\"\n [innerHTML]=\"\n quotedMessage?.translation ||\n quotedMessage?.html ||\n quotedMessage?.text\n \"\n ></div>\n </div>\n </div>\n <ng-template\n #defaultAttachmentsPreview\n let-attachmentUploads$=\"attachmentUploads$\"\n let-retryUploadHandler=\"retryUploadHandler\"\n let-deleteUploadHandler=\"deleteUploadHandler\"\n >\n <stream-attachment-preview-list\n [attachmentUploads$]=\"attachmentUploads$\"\n (retryAttachmentUpload)=\"retryUploadHandler($event)\"\n (deleteAttachment)=\"deleteUploadHandler($event)\"\n class=\"str-chat__attachment-preview-list-angular-host\"\n ></stream-attachment-preview-list>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n attachmentPreviewListTemplate || defaultAttachmentsPreview;\n context: getAttachmentPreviewListContext()\n \"\n ></ng-container>\n <div class=\"str-chat__message-textarea-with-emoji-picker\">\n <ng-container\n streamTextarea\n [(value)]=\"textareaValue\"\n (valueChange)=\"typingStart$.next()\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionScope]=\"mentionScope\"\n [inputMode]=\"inputMode\"\n [autoFocus]=\"autoFocus\"\n [placeholder]=\"textareaPlaceholder\"\n ></ng-container>\n <div class=\"str-chat__message-textarea-emoji-picker\">\n <ng-container\n *ngIf=\"emojiPickerTemplate\"\n data-testid=\"emoji-picker\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n emojiPickerTemplate;\n context: getEmojiPickerContext()\n \"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"canSendMessages && !isCooldownInProgress && !message\"\n [disabled]=\"\n (attachmentUploadInProgressCounter$ | async)! > 0 ||\n (!textareaValue && (attachmentUploads$ | async)!.length === 0)\n \"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon-placeholder icon=\"send\"></stream-icon-placeholder>\n </button>\n <div\n class=\"str-chat__message-input-cooldown\"\n *ngIf=\"isCooldownInProgress\"\n data-testid=\"cooldown-timer\"\n >\n {{ cooldown$ | async }}\n </div>\n </div>\n </ng-container>\n <ng-template #notAllowed>\n <div\n class=\"str-chat__message-input-not-allowed\"\n data-testid=\"disabled-textarea\"\n >\n {{ disabledTextareaText | translate }}\n </div>\n </ng-template>\n</div>\n", components: [{ type: i9.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }, { type: i10.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }, { type: i11.AttachmentListComponent, selector: "stream-attachment-list", inputs: ["messageId", "parentMessageId", "attachments"], outputs: ["imageModalStateChange"] }, { type: i12.AttachmentPreviewListComponent, selector: "stream-attachment-preview-list", inputs: ["attachmentUploads$"], outputs: ["retryAttachmentUpload", "deleteAttachment"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i14.TextareaDirective, selector: "[streamTextarea]", inputs: ["componentRef", "areMentionsEnabled", "mentionScope", "inputMode", "value", "placeholder", "autoFocus"], outputs: ["valueChange", "send", "userMentions"] }], pipes: { "async": i13.AsyncPipe, "translate": i15.TranslatePipe } });
|
|
415
415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, decorators: [{
|
|
416
416
|
type: Component,
|
|
417
417
|
args: [{
|
|
@@ -452,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
452
452
|
type: ViewChild,
|
|
453
453
|
args: [TextareaDirective, { static: false }]
|
|
454
454
|
}] } });
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFJTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVwQzs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUErRWhDLFlBQ1UsY0FBOEIsRUFDOUIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNw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QixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO0lBQzdELENBQUM7O2tIQXZpQlUscUJBQXFCLDZKQW9GdEIsc0JBQXNCO3NHQXBGckIscUJBQXFCLHliQUZyQixDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLG1LQXVFdEMsaUJBQWlCLHFFQzNIOUIsd3laQTBXQTsyRkRwVGEscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLE1BQU0sRUFBRSxFQUFFO29CQUNWLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDO2lCQUNsRDs7MEJBcUZJLE1BQU07MkJBQUMsc0JBQXNCO21QQTlFdkIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlhLGFBQWE7c0JBQS9CLE1BQU07Z0JBR1EsS0FBSztzQkFBbkIsV0FBVztnQkF1Qm9CLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVztnQkFFZCxjQUFjO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBDaGFubmVsLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4uL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyB0ZXh0YXJlYUluamVjdGlvblRva2VuIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCxcbiAgQXR0YWNobWVudFVwbG9hZCxcbiAgQ3VzdG9tQXR0YWNobWVudFVwbG9hZENvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIEVtb2ppUGlja2VyQ29udGV4dCxcbiAgU3RyZWFtTWVzc2FnZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYURpcmVjdGl2ZSB9IGZyb20gJy4vdGV4dGFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNJbWFnZUZpbGUgfSBmcm9tICcuLi9pcy1pbWFnZS1maWxlJztcbmltcG9ydCB7IEVtb2ppSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9lbW9qaS1pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VJbnB1dGAgY29tcG9uZW50IGRpc3BsYXlzIGFuIGlucHV0IHdoZXJlIHVzZXJzIGNhbiB0eXBlIHRoZWlyIG1lc3NhZ2VzIGFuZCB1cGxvYWQgZmlsZXMsIGFuZCBzZW5kcyB0aGUgbWVzc2FnZSB0byB0aGUgYWN0aXZlIGNoYW5uZWwuIFRoZSBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gY29tcG9zZSBuZXcgbWVzc2FnZXMgb3IgdXBkYXRlIGV4aXN0aW5nIG9uZXMuIFRvIHNlbmQgbWVzc2FnZXMsIHRoZSBjaGF0IHVzZXIgbmVlZHMgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5IFtjaGFubmVsIGNhcGFiaWxpdHldKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIHByb3ZpZGVyczogW0F0dGFjaG1lbnRTZXJ2aWNlLCBFbW9qaUlucHV0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIElmIGZpbGUgdXBsb2FkIGlzIGVuYWJsZWQsIHRoZSB1c2VyIGNhbiBvcGVuIGEgZmlsZSBzZWxlY3RvciBmcm9tIHRoZSBpbnB1dC4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgdXNlciBhbHNvIG5lZWRzIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeSBbY2hhbm5lbCBjYXBhYmlsaXR5XShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgaXNGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIHRydWUsIHVzZXJzIGNhbiBtZW50aW9uIG90aGVyIHVzZXJzIGluIG1lc3NhZ2VzLiBZb3UgYWxzbyBbbmVlZCB0byB1c2UgdGhlIGBBdXRvY29tcGxldGVUZXh0YXJlYWBdKC4uL2NvbmNlcHRzL29wdC1pbi1hcmNoaXRlY3R1cmUubWR4KSBmb3IgdGhpcyBmZWF0dXJlIHRvIHdvcmsuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIHNjb3BlIGZvciB1c2VyIG1lbnRpb25zLCBlaXRoZXIgbWVtYmVycyBvZiB0aGUgY3VycmVudCBjaGFubmVsIG9mIG1lbWJlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgZGlzcGFseWVkIGluIGEgY2hhbm5lbCBvciBpbiBhIFt0aHJlYWRdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB1c2VycyBjYW4gc2VsZWN0IG11bHRpcGxlIGZpbGVzIHRvIHVwbG9hZC4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBmcm9tIHRoZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBlZGl0XG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgbWVzc2FnZSBzZW5kaW5nIGZyb20gdGhlIG91dHNpZGVcbiAgICovXG4gIEBJbnB1dCgpIHNlbmRNZXNzYWdlJDogT2JzZXJ2YWJsZTx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEluIGBkZXNrdG9wYCBtb2RlIHRoZSBgRW50ZXJgIGtleSB3aWxsIHRyaWdnZXIgbWVzc2FnZSBzZW5kaW5nLCBpbiBgbW9iaWxlYCBtb2RlIHRoZSBgRW50ZXJgIGtleSB3aWxsIGluc2VydCBhIG5ldyBsaW5lIHRvIHRoZSBtZXNzYWdlIGlucHV0LiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIGlucHV0TW9kZTogJ2Rlc2t0b3AnIHwgJ21vYmlsZSc7XG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGF1dG8gZm9jdXMgb24gdGhlIHRleHRhcmVhIGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IHRydWU7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgbWVzc2FnZSB3YXMgc3VjY2Vzc2Z1bHkgc2VudCBvciB1cGRhdGVkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbWVzc2FnZVVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG4gIH0+KCk7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3N0ci1jaGF0X19tZXNzYWdlLWlucHV0LWFuZ3VsYXItaG9zdCc7XG4gIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblNlbmRMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuU2VuZE1lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50VXBsb2FkcyQ6IE9ic2VydmFibGU8QXR0YWNobWVudFVwbG9hZFtdPjtcbiAgYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICB0ZXh0YXJlYVZhbHVlID0gJyc7XG4gIHRleHRhcmVhUmVmOiBDb21wb25lbnRSZWY8VGV4dGFyZWFJbnRlcmZhY2UgJiBQYXJ0aWFsPE9uQ2hhbmdlcz4+IHwgdW5kZWZpbmVkO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgcXVvdGVkTWVzc2FnZTogdW5kZWZpbmVkIHwgU3RyZWFtTWVzc2FnZTtcbiAgdHlwaW5nU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29vbGRvd24kOiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG4gIGlzQ29vbGRvd25JblByb2dyZXNzID0gZmFsc2U7XG4gIGVtb2ppUGlja2VyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVtb2ppUGlja2VyQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIGN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPEN1c3RvbUF0dGFjaG1lbnRVcGxvYWRDb250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50UHJldmlld0xpc3RUZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIHRleHRhcmVhUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgdGhlbWVWZXJzaW9uOiAnMScgfCAnMic7XG4gIGZpbGVJbnB1dElkID0gdXVpZHY0KCk7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHByaXZhdGUgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChUZXh0YXJlYURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGV4dGFyZWFBbmNob3IhOiBUZXh0YXJlYURpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGhpZGVOb3RpZmljYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFubmVsOiBDaGFubmVsPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNlbmRNZXNzYWdlU3ViY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlciA9ICdzdHJlYW1DaGF0LlR5cGUgeW91ciBtZXNzYWdlJztcbiAgcHJpdmF0ZSByZWFkb25seSBzbG93TW9kZVRleHRhcmVhUGxhY2Vob2xkZXIgPSAnc3RyZWFtQ2hhdC5TbG93IE1vZGUgT04nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLFxuICAgIEBJbmplY3QodGV4dGFyZWFJbmplY3Rpb25Ub2tlbilcbiAgICBwcml2YXRlIHRleHRhcmVhVHlwZTogVHlwZTxUZXh0YXJlYUludGVyZmFjZT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXRDbGllbnQ6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRoZW1lVmVyc2lvbiA9IHRoZW1lU2VydmljZS50aGVtZVZlcnNpb247XG4gICAgdGhpcy50ZXh0YXJlYVBsYWNlaG9sZGVyID0gdGhpcy5kZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJC5zdWJzY3JpYmUoXG4gICAgICAgIChjb3VudGVyKSA9PiB7XG4gICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDAgJiYgdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgaWYgKGNoYW5uZWwgJiYgdGhpcy5jaGFubmVsICYmIGNoYW5uZWwuaWQgIT09IHRoaXMuY2hhbm5lbC5pZCkge1xuICAgICAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZSA9ICcnO1xuICAgICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChjYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgICB0aGlzLmlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgPVxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3VwbG9hZC1maWxlJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2FuU2VuZExpbmtzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3NlbmQtbGlua3MnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbDtcbiAgICAgICAgICB0aGlzLnNldENhblNlbmRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQuYXBwU2V0dGluZ3MkLnN1YnNjcmliZShcbiAgICAgICAgKGFwcFNldHRpbmdzKSA9PiAodGhpcy5hcHBTZXR0aW5ncyA9IGFwcFNldHRpbmdzKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLm1lc3NhZ2VUb1F1b3RlJC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgY29uc3QgaXNUaHJlYWRSZXBseSA9IG0gJiYgbS5wYXJlbnRfaWQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAndGhyZWFkJyAmJiBpc1RocmVhZFJlcGx5KSB8fFxuICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmIHRoaXMucXVvdGVkTWVzc2FnZSAmJiAhbSkgfHxcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAnbWFpbicgJiYgIWlzVGhyZWFkUmVwbHkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucXVvdGVkTWVzc2FnZSA9IG07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRVcGxvYWRzJCA9IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkO1xuICAgIHRoaXMuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJCA9XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciQ7XG4gICAgdGhpcy5pc0ZpbGVVcGxvYWRFbmFibGVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmlzRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuY29uZmlnU2VydmljZS5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgdGhpcy5tZW50aW9uU2NvcGUgPSB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvblNjb3BlO1xuICAgIHRoaXMuaW5wdXRNb2RlID0gdGhpcy5jb25maWdTZXJ2aWNlLmlucHV0TW9kZTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50eXBpbmdTdGFydCQuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UudHlwaW5nU3RhcnRlZCh0aGlzLnBhcmVudE1lc3NhZ2VJZClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5sYXRlc3RNZXNzYWdlRGF0ZUJ5VXNlckJ5Q2hhbm5lbHMkLFxuICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKFxuICAgICAgICAgICAgKFtsYXRlc3RNZXNzYWdlcywgY2hhbm5lbF0pOiBbXG4gICAgICAgICAgICAgIERhdGUgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4gfCB1bmRlZmluZWRcbiAgICAgICAgICAgIF0gPT4gW2xhdGVzdE1lc3NhZ2VzW2NoYW5uZWw/LmNpZCB8fCAnJ10sIGNoYW5uZWwhXVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChbbGF0ZXN0TWVzc2FnZURhdGUsIGNoYW5uZWxdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29vbGRvd24gPVxuICAgICAgICAgICAgKGNoYW5uZWw/LmRhdGE/LmNvb2xkb3duIGFzIG51bWJlcikgJiZcbiAgICAgICAgICAgIGxhdGVzdE1lc3NhZ2VEYXRlICYmXG4gICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAoY2hhbm5lbD8uZGF0YT8uY29vbGRvd24gYXMgbnVtYmVyKSAtXG4gICAgICAgICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGF0ZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpKSAvIDEwMDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29vbGRvd24gJiZcbiAgICAgICAgICAgIGNvb2xkb3duID4gMCAmJlxuICAgICAgICAgICAgKGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKCdzbG93LW1vZGUnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvb2xkb3duKGNvb2xkb3duKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb29sZG93bkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcENvb2xkb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5lbW9qaVBpY2tlclRlbXBsYXRlJC5zdWJzY3JpYmUoKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgIHRoaXMuZW1vamlQaWNrZXJUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50UHJldmlld0xpc3RUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRQcmV2aWV3TGlzdFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuY3JlYXRlRnJvbUF0dGFjaG1lbnRzKFxuICAgICAgICAgIHRoaXMubWVzc2FnZSEuYXR0YWNobWVudHMgfHwgW11cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gdGhpcy5tZXNzYWdlIS50ZXh0IHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5pc0ZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uU2NvcGUpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uU2NvcGUgPSB0aGlzLm1lbnRpb25TY29wZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubW9kZSkge1xuICAgICAgdGhpcy5zZXRDYW5TZW5kTWVzc2FnZXMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaW5wdXRNb2RlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaW5wdXRNb2RlID0gdGhpcy5pbnB1dE1vZGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnNlbmRNZXNzYWdlJCkge1xuICAgICAgaWYgKHRoaXMuc2VuZE1lc3NhZ2VTdWJjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbmRNZXNzYWdlJCkge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24gPSB0aGlzLnNlbmRNZXNzYWdlJC5zdWJzY3JpYmUoXG4gICAgICAgICAgKCkgPT4gdm9pZCB0aGlzLm1lc3NhZ2VTZW50KClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZW5kTWVzc2FnZVN1YmNyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBhc3luYyBtZXNzYWdlU2VudCgpIHtcbiAgICBpZiAodGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyITogbnVtYmVyO1xuICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJFxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50ZXIpID0+IChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIgPSBjb3VudGVyKSk7XG4gICAgaWYgKGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciA+IDApIHtcbiAgICAgIGlmICghdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICdzdHJlYW1DaGF0LldhaXQgdW50aWwgYWxsIGF0dGFjaG1lbnRzIGhhdmUgdXBsb2FkZWQnXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLm1hcFRvQXR0YWNobWVudHMoKTtcbiAgICBsZXQgdGV4dCA9IHRoaXMudGV4dGFyZWFWYWx1ZTtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9eXFxuKy9nLCAnJyk7IC8vIGxlYWRpbmcgZW1wdHkgbGluZXNcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXG4rJC9nLCAnJyk7IC8vIGVuZGluZyBlbXB0eSBsaW5lc1xuICAgIGNvbnN0IHRleHRDb250YWluc09ubHlTcGFjZUNoYXJzID0gIXRleHQucmVwbGFjZSgvIC9nLCAnJyk7IC8vc3BjYWVcbiAgICBpZiAoXG4gICAgICAoIXRleHQgfHwgdGV4dENvbnRhaW5zT25seVNwYWNlQ2hhcnMpICYmXG4gICAgICAoIWF0dGFjaG1lbnRzIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRleHRDb250YWluc09ubHlTcGFjZUNoYXJzKSB7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRhaW5zTGlua3MgJiYgIXRoaXMuY2FuU2VuZExpbmtzKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5TZW5kaW5nIGxpbmtzIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udmVyc2F0aW9uJ1xuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCAodGhpcy5pc1VwZGF0ZVxuICAgICAgICA/IHRoaXMuY2hhbm5lbFNlcnZpY2UudXBkYXRlTWVzc2FnZSh7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2UhLFxuICAgICAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2VuZE1lc3NhZ2UoXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICB0aGlzLm1lbnRpb25lZFVzZXJzLFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlSWQsXG4gICAgICAgICAgICB0aGlzLnF1b3RlZE1lc3NhZ2U/LmlkXG4gICAgICAgICAgKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VVcGRhdGUuZW1pdCh7IG1lc3NhZ2UgfSk7XG4gICAgICBpZiAoIXRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuRWRpdCBtZXNzYWdlIHJlcXVlc3QgZmFpbGVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UudHlwaW5nU3RvcHBlZCh0aGlzLnBhcmVudE1lc3NhZ2VJZCk7XG4gICAgaWYgKHRoaXMucXVvdGVkTWVzc2FnZSkge1xuICAgICAgdGhpcy5kZXNlbGVjdE1lc3NhZ2VUb1F1b3RlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRhaW5zTGlua3MoKSB7XG4gICAgcmV0dXJuIC8oPzooPzpodHRwcz98ZnRwKTpcXC9cXC8pP1tcXHcvXFwtPz0lLl0rXFwuW1xcdy9cXC0mPz0lLl0rLy50ZXN0KFxuICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIGdldCBxdW90ZWRNZXNzYWdlQXR0YWNobWVudHMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxBdHRhY2htZW50cyA9IHRoaXMucXVvdGVkTWVzc2FnZT8uYXR0YWNobWVudHM7XG4gICAgcmV0dXJuIG9yaWdpbmFsQXR0YWNobWVudHMgJiYgb3JpZ2luYWxBdHRhY2htZW50cy5sZW5ndGhcbiAgICAgID8gW29yaWdpbmFsQXR0YWNobWVudHNbMF1dXG4gICAgICA6IFtdO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkVGV4dGFyZWFUZXh0KCkge1xuICAgIGlmICghdGhpcy5jYW5TZW5kTWVzc2FnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgID8gXCJzdHJlYW1DaGF0LllvdSBjYW4ndCBzZW5kIHRocmVhZCByZXBsaWVzIGluIHRoaXMgY2hhbm5lbFwiXG4gICAgICAgIDogXCJzdHJlYW1DaGF0LllvdSBjYW4ndCBzZW5kIG1lc3NhZ2VzIGluIHRoaXMgY2hhbm5lbFwiO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBmaWxlc1NlbGVjdGVkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3QpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVzU2VsZWN0ZWQoZmlsZUxpc3QpO1xuICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgfVxuXG4gIGRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKSB7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5zZWxlY3RNZXNzYWdlVG9RdW90ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0RW1vamlQaWNrZXJDb250ZXh0KCk6IEVtb2ppUGlja2VyQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVtb2ppSW5wdXQkOiB0aGlzLmVtb2ppSW5wdXRTZXJ2aWNlLmVtb2ppSW5wdXQkLFxuICAgIH07XG4gIH1cblxuICBnZXRBdHRhY2htZW50UHJldmlld0xpc3RDb250ZXh0KCk6IEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRhY2htZW50VXBsb2FkcyQ6IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkLFxuICAgICAgZGVsZXRlVXBsb2FkSGFuZGxlcjogdGhpcy5kZWxldGVVcGxvYWQuYmluZCh0aGlzKSxcbiAgICAgIHJldHJ5VXBsb2FkSGFuZGxlcjogdGhpcy5yZXRyeVVwbG9hZC5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpOiBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQsXG4gICAgICBhdHRhY2htZW50U2VydmljZTogdGhpcy5hdHRhY2htZW50U2VydmljZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVVcGxvYWQodXBsb2FkOiBBdHRhY2htZW50VXBsb2FkKSB7XG4gICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgIC8vIERlbGF5IGRlbGV0ZSB0byBhdm9pZCBtb2RhbCBkZXRlY3RpbmcgdGhpcyBjbGljayBhcyBvdXRzaWRlIGNsaWNrXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmRlbGV0ZUF0dGFjaG1lbnQodXBsb2FkKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2b2lkIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuZGVsZXRlQXR0YWNobWVudCh1cGxvYWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV0cnlVcGxvYWQoZmlsZTogRmlsZSkge1xuICAgIHZvaWQgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXRyeUF0dGFjaG1lbnRVcGxvYWQoZmlsZSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmlsZUlucHV0KCkge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzVXBkYXRlKCkge1xuICAgIHJldHVybiAhIXRoaXMubWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRleHRhcmVhKCkge1xuICAgIC8vIGNsZWFudXAgcHJldmlvdXNseSBidWlsdCB0ZXh0YXJlYVxuICAgIGlmICghdGhpcy5jYW5TZW5kTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMudGV4dGFyZWFSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcyB8fCB0aGlzLnRleHRhcmVhUmVmIHx8ICF0aGlzLnRleHRhcmVhQW5jaG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLnRleHRhcmVhVHlwZSk7XG4gICAgdGhpcy50ZXh0YXJlYVJlZiA9XG4gICAgICB0aGlzLnRleHRhcmVhQW5jaG9yLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PGFueT4oXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlcbiAgICAgICk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3Q6IEZpbGVMaXN0IHwgbnVsbCkge1xuICAgIGlmICghZmlsZUxpc3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwU2V0dGluZ3MpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIH1cbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgQXJyYXkuZnJvbShmaWxlTGlzdCkuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgbGV0IGhhc0Jsb2NrZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzQmxvY2tlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgbGV0IGhhc05vdEFsbG93ZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzTm90QWxsb3dlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgaWYgKGlzSW1hZ2VGaWxlKGYpKSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaGFzQmxvY2tlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgfHxcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIHVwbG9hZGluZyBmaWxlLCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCcsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB7IG5hbWU6IGYubmFtZSwgZXh0OiBmLnR5cGUgfVxuICAgICAgICApO1xuICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldENhblNlbmRNZXNzYWdlcygpIHtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSB0aGlzLmNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgaWYgKCFjYXBhYmlsaXRpZXMpIHtcbiAgICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2VzID1cbiAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoXG4gICAgICAgICAgdGhpcy5tb2RlID09PSAnbWFpbicgPyAnc2VuZC1tZXNzYWdlJyA6ICdzZW5kLXJlcGx5J1xuICAgICAgICApICE9PSAtMTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuaW5pdFRleHRhcmVhKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcGFyZW50TWVzc2FnZUlkKCkge1xuICAgIGxldCBwYXJlbnRNZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5tb2RlID09PSAndGhyZWFkJykge1xuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlSWQkXG4gICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGlkKSA9PiAocGFyZW50TWVzc2FnZUlkID0gaWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50TWVzc2FnZUlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENvb2xkb3duKGNvb2xkb3duOiBudW1iZXIpIHtcbiAgICB0aGlzLnRleHRhcmVhUGxhY2Vob2xkZXIgPSB0aGlzLnNsb3dNb2RlVGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgICB0aGlzLmlzQ29vbGRvd25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLmNvb2xkb3duJCA9IHRpbWVyKDAsIDEwMDApLnBpcGUoXG4gICAgICB0YWtlKGNvb2xkb3duICsgMSksXG4gICAgICBtYXAoKHYpID0+IGNvb2xkb3duIC0gdiksXG4gICAgICB0YXAoKHYpID0+IHtcbiAgICAgICAgaWYgKHYgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BDb29sZG93bigpIHtcbiAgICB0aGlzLmNvb2xkb3duJCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzQ29vbGRvd25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0YXJlYVBsYWNlaG9sZGVyID0gdGhpcy5kZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cInRoZW1lVmVyc2lvbiAhPT0gJzInXCJcbiAgY2xhc3M9XCJ7e1xuICAgIG1vZGUgPT09ICdtYWluJyA/ICdzdHItY2hhdF9faW5wdXQtZmxhdCcgOiAnc3RyLWNoYXRfX3NtYWxsLW1lc3NhZ2UtaW5wdXQnXG4gIH19XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19pbnB1dC1mbGF0LWhhcy1hdHRhY2htZW50c109XCJcbiAgICAoYXR0YWNobWVudFVwbG9hZHMkIHwgYXN5bmMpIS5sZW5ndGggPiAwXG4gIFwiXG4gIFtjbGFzcy5zdHItY2hhdF9faW5wdXQtZmxhdC1xdW90ZWRdPVwiISFxdW90ZWRNZXNzYWdlXCJcbj5cbiAgPGRpdiBjbGFzcz1cInF1b3RlZC1tZXNzYWdlLXByZXZpZXdcIiAqbmdJZj1cInF1b3RlZE1lc3NhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlldy1oZWFkZXJcIj5cbiAgICAgIDxkaXY+e3sgXCJzdHJlYW1DaGF0LlJlcGx5IHRvIE1lc3NhZ2VcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zcXVhcmUtYnV0dG9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZW1vdmUtcXVvdGVcIlxuICAgICAgICAoY2xpY2spPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgIGljb249XCJjbG9zZS1uby1vdXRsaW5lXCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTVweDsgbGluZS1oZWlnaHQ6IDE1cHg7IHdpZHRoOiAxNXB4OyBoZWlnaHQ6IDE1cHhcIlxuICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWNvbnRlbnRcIj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicW91dGVkLW1lc3NhZ2UtYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdFwiXG4gICAgICAgIFtpbWFnZVVybF09XCJxdW90ZWRNZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICAgIFtuYW1lXT1cInF1b3RlZE1lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgcXVvdGVkTWVzc2FnZT8udXNlcj8uaWRcIlxuICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgIHR5cGU9XCJ1c2VyXCJcbiAgICAgICAgbG9jYXRpb249XCJxdW90ZWQtbWVzc2FnZS1zZW5kZXJcIlxuICAgICAgICBbdXNlcl09XCJxdW90ZWRNZXNzYWdlPy51c2VyIHx8IHVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cInF1b3RlZC1tZXNzYWdlLXByZXZpZXctY29udGVudC1pbm5lclwiPlxuICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtbGlzdFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBxdW90ZWRNZXNzYWdlPy5hdHRhY2htZW50cyAmJiBxdW90ZWRNZXNzYWdlPy5hdHRhY2htZW50cz8ubGVuZ3RoXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0YWNobWVudHNdPVwicXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzXCJcbiAgICAgICAgICBbbWVzc2FnZUlkXT1cInF1b3RlZE1lc3NhZ2U/LmlkXCJcbiAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy50cmFuc2xhdGlvbiB8fFxuICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8uaHRtbCB8fFxuICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8udGV4dFxuICAgICAgICAgIFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19pbnB1dC1mbGF0LXdyYXBwZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ7e1xuICAgICAgICBtb2RlID09PSAnbWFpbidcbiAgICAgICAgICA/ICdzdHItY2hhdF9faW5wdXQtZmxhdC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgICAgICA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1ByZXZpZXdcbiAgICAgICAgbGV0LWF0dGFjaG1lbnRVcGxvYWRzJD1cImF0dGFjaG1lbnRVcGxvYWRzJFwiXG4gICAgICAgIGxldC1yZXRyeVVwbG9hZEhhbmRsZXI9XCJyZXRyeVVwbG9hZEhhbmRsZXJcIlxuICAgICAgICBsZXQtZGVsZXRlVXBsb2FkSGFuZGxlcj1cImRlbGV0ZVVwbG9hZEhhbmRsZXJcIlxuICAgICAgPlxuICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0XG4gICAgICAgICAgW2F0dGFjaG1lbnRVcGxvYWRzJF09XCJhdHRhY2htZW50VXBsb2FkcyRcIlxuICAgICAgICAgIChyZXRyeUF0dGFjaG1lbnRVcGxvYWQpPVwicmV0cnlVcGxvYWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIChkZWxldGVBdHRhY2htZW50KT1cImRlbGV0ZVVwbG9hZEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJyZnUtaW1hZ2UtcHJldmlld2VyLWFuZ3VsYXItaG9zdFwiXG4gICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgYXR0YWNobWVudFByZXZpZXdMaXN0VGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRzUHJldmlldztcbiAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50UHJldmlld0xpc3RDb250ZXh0KClcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydGEgc3RyLWNoYXRfX3RleHRhcmVhIHN0ci1jaGF0LWFuZ3VsYXJfX3RleHRhcmVhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbW9qaVBpY2tlclRlbXBsYXRlXCIgZGF0YS10ZXN0aWQ9XCJlbW9qaS1waWNrZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9faW5wdXQtZmxhdC1lbW9qaXNlbGVjdFxuICAgICAgICAgICAgICBzdHItY2hhdC1hbmd1bGFyX19lbW9qaXNlbGVjdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZW1vamlQaWNrZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRFbW9qaVBpY2tlckNvbnRleHQoKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNlbmRNZXNzYWdlczsgZWxzZSBkaXNhYmxlZFRleHRhcmVhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgc3RyZWFtVGV4dGFyZWFcbiAgICAgICAgICAgIFsodmFsdWUpXT1cInRleHRhcmVhVmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInR5cGluZ1N0YXJ0JC5uZXh0KClcIlxuICAgICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cInRleHRhcmVhUmVmXCJcbiAgICAgICAgICAgICh1c2VyTWVudGlvbnMpPVwibWVudGlvbmVkVXNlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW21lbnRpb25TY29wZV09XCJtZW50aW9uU2NvcGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRleHRhcmVhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2lucHV0TW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRUZXh0YXJlYT5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGlzYWJsZWRUZXh0YXJlYVRleHQgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJydGFfX3RleHRhcmVhIHN0ci1jaGF0X190ZXh0YXJlYV9fdGV4dGFyZWFcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkaXNhYmxlZC10ZXh0YXJlYVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVVcGxvYWRFbmFibGVkICYmIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiYgY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjdXN0b21BdHRhY2htZW50VXBsb2FkVGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRVcGxvYWQ7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdHRhY2htZW50VXBsb2FkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGV1cGxvYWQtd3JhcHBlclwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtdXBsb2FkLWJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCI+XG4gICAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5BdHRhY2ggZmlsZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmZ1LWZpbGUtdXBsb2FkLWJ1dHRvblwiPlxuICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJmdS1maWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZChmaWxlSW5wdXQuZmlsZXMpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtZmlsZXVwbG9hZFwiPlxuICAgICAgICAgICAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmaWxlLXVwbG9hZFwiXG4gICAgICAgICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzICYmICFpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NlbmQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJtZXNzYWdlU2VudCgpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlU2VudCgpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b24tYW5ndWxhclwiXG4gICAgICAgIGljb249XCJzZW5kXCJcbiAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtY29vbGRvd25cIlxuICAgICAgKm5nSWY9XCJpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImNvb2xkb3duLXRpbWVyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5wdXQtY29vbGRvd24tdGV4dFwiPlxuICAgICAgICB7eyBjb29sZG93biQgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgKm5nSWY9XCJ0aGVtZVZlcnNpb24gPT09ICcyJ1wiXG4gIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5wdXQgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1pbnB1dFwiXG4+XG4gIDxkaXYgKm5nSWY9XCJxdW90ZWRNZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtcHJldmlldy1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3F1b3RlZC1tZXNzYWdlLXJlcGx5LXRvLW1lc3NhZ2VcIj5cbiAgICAgIHt7IFwic3RyZWFtQ2hhdC5SZXBseSB0byBNZXNzYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1yZW1vdmVcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZW1vdmUtcXVvdGVcIlxuICAgICAgKGNsaWNrKT1cImRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgaWNvbj1cImNsb3NlLW5vLW91dGxpbmVcIlxuICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzOyBlbHNlIG5vdEFsbG93ZWRcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1pbnB1dC1pbm5lclxuICAgICAgICBzdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWlucHV0LWlubmVyXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVVcGxvYWRFbmFibGVkICYmIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiYgY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjdXN0b21BdHRhY2htZW50VXBsb2FkVGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRVcGxvYWQ7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdHRhY2htZW50VXBsb2FkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGUtaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZmlsZS11cGxvYWQtYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKGZpbGVJbnB1dC5maWxlcylcIlxuICAgICAgICAgICAgICBpZD1cInt7IGZpbGVJbnB1dElkIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzdHItY2hhdF9fZmlsZS1pbnB1dC1sYWJlbFwiIGZvcj1cInt7IGZpbGVJbnB1dElkIH19XCI+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiYXR0YWNoXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1wcmV2aWV3XCJcbiAgICAgICAgICAqbmdJZj1cInF1b3RlZE1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicW91dGVkLW1lc3NhZ2UtYXZhdGFyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNlbmRlci1hdmF0YXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaW1hZ2VVcmxdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgICAgICAgW25hbWVdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8ubmFtZSB8fCBxdW90ZWRNZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICB0eXBlPVwidXNlclwiXG4gICAgICAgICAgICBsb2NhdGlvbj1cInF1b3RlZC1tZXNzYWdlLXNlbmRlclwiXG4gICAgICAgICAgICBbdXNlcl09XCJxdW90ZWRNZXNzYWdlPy51c2VyIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWNvbnRlbnQtaW5uZXJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX3F1b3RlZC1tZXNzYWdlLWJ1YmJsZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtbGlzdFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cInF1b3RlZE1lc3NhZ2VBdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwicXVvdGVkTWVzc2FnZT8uaWRcIlxuICAgICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8udHJhbnNsYXRpb24gfHxcbiAgICAgICAgICAgICAgICBxdW90ZWRNZXNzYWdlPy5odG1sIHx8XG4gICAgICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8udGV4dFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1ByZXZpZXdcbiAgICAgICAgICBsZXQtYXR0YWNobWVudFVwbG9hZHMkPVwiYXR0YWNobWVudFVwbG9hZHMkXCJcbiAgICAgICAgICBsZXQtcmV0cnlVcGxvYWRIYW5kbGVyPVwicmV0cnlVcGxvYWRIYW5kbGVyXCJcbiAgICAgICAgICBsZXQtZGVsZXRlVXBsb2FkSGFuZGxlcj1cImRlbGV0ZVVwbG9hZEhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdFxuICAgICAgICAgICAgW2F0dGFjaG1lbnRVcGxvYWRzJF09XCJhdHRhY2htZW50VXBsb2FkcyRcIlxuICAgICAgICAgICAgKHJldHJ5QXR0YWNobWVudFVwbG9hZCk9XCJyZXRyeVVwbG9hZEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVsZXRlQXR0YWNobWVudCk9XCJkZWxldGVVcGxvYWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXR0YWNobWVudC1wcmV2aWV3LWxpc3QtYW5ndWxhci1ob3N0XCJcbiAgICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1wcmV2aWV3LWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYXR0YWNobWVudFByZXZpZXdMaXN0VGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRzUHJldmlldztcbiAgICAgICAgICAgIGNvbnRleHQ6IGdldEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQoKVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXRleHRhcmVhLXdpdGgtZW1vamktcGlja2VyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgc3RyZWFtVGV4dGFyZWFcbiAgICAgICAgICAgIFsodmFsdWUpXT1cInRleHRhcmVhVmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInR5cGluZ1N0YXJ0JC5uZXh0KClcIlxuICAgICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cInRleHRhcmVhUmVmXCJcbiAgICAgICAgICAgICh1c2VyTWVudGlvbnMpPVwibWVudGlvbmVkVXNlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW21lbnRpb25TY29wZV09XCJtZW50aW9uU2NvcGVcIlxuICAgICAgICAgICAgW2lucHV0TW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRleHRhcmVhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dGFyZWEtZW1vamktcGlja2VyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZW1vamlQaWNrZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1vamktcGlja2VyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBlbW9qaVBpY2tlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogZ2V0RW1vamlQaWNrZXJDb250ZXh0KClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJjYW5TZW5kTWVzc2FnZXMgJiYgIWlzQ29vbGRvd25JblByb2dyZXNzICYmICFtZXNzYWdlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIkIHwgYXN5bmMpISA+IDAgfHxcbiAgICAgICAgICAoIXRleHRhcmVhVmFsdWUgJiYgKGF0dGFjaG1lbnRVcGxvYWRzJCB8IGFzeW5jKSEubGVuZ3RoID09PSAwKVxuICAgICAgICBcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlU2VudCgpXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJzZW5kXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWlucHV0LWNvb2xkb3duXCJcbiAgICAgICAgKm5nSWY9XCJpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY29vbGRvd24tdGltZXJcIlxuICAgICAgPlxuICAgICAgICB7eyBjb29sZG93biQgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vdEFsbG93ZWQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1pbnB1dC1ub3QtYWxsb3dlZFwiXG4gICAgICBkYXRhLXRlc3RpZD1cImRpc2FibGVkLXRleHRhcmVhXCJcbiAgICA+XG4gICAgICB7eyBkaXNhYmxlZFRleHRhcmVhVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFJTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVwQzs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUErRWhDLFlBQ1UsY0FBOEIsRUFDOUIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNw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QixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO0lBQzdELENBQUM7O2tIQXZpQlUscUJBQXFCLDZKQW9GdEIsc0JBQXNCO3NHQXBGckIscUJBQXFCLHliQUZyQixDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLG1LQXVFdEMsaUJBQWlCLHFFQzNIOUIsK3JaQXlXQTsyRkRuVGEscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLE1BQU0sRUFBRSxFQUFFO29CQUNWLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDO2lCQUNsRDs7MEJBcUZJLE1BQU07MkJBQUMsc0JBQXNCO21QQTlFdkIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlhLGFBQWE7c0JBQS9CLE1BQU07Z0JBR1EsS0FBSztzQkFBbkIsV0FBVztnQkF1Qm9CLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVztnQkFFZCxjQUFjO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBDaGFubmVsLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4uL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyB0ZXh0YXJlYUluamVjdGlvblRva2VuIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29udGV4dCxcbiAgQXR0YWNobWVudFVwbG9hZCxcbiAgQ3VzdG9tQXR0YWNobWVudFVwbG9hZENvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIEVtb2ppUGlja2VyQ29udGV4dCxcbiAgU3RyZWFtTWVzc2FnZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYURpcmVjdGl2ZSB9IGZyb20gJy4vdGV4dGFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNJbWFnZUZpbGUgfSBmcm9tICcuLi9pcy1pbWFnZS1maWxlJztcbmltcG9ydCB7IEVtb2ppSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9lbW9qaS1pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VJbnB1dGAgY29tcG9uZW50IGRpc3BsYXlzIGFuIGlucHV0IHdoZXJlIHVzZXJzIGNhbiB0eXBlIHRoZWlyIG1lc3NhZ2VzIGFuZCB1cGxvYWQgZmlsZXMsIGFuZCBzZW5kcyB0aGUgbWVzc2FnZSB0byB0aGUgYWN0aXZlIGNoYW5uZWwuIFRoZSBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gY29tcG9zZSBuZXcgbWVzc2FnZXMgb3IgdXBkYXRlIGV4aXN0aW5nIG9uZXMuIFRvIHNlbmQgbWVzc2FnZXMsIHRoZSBjaGF0IHVzZXIgbmVlZHMgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5IFtjaGFubmVsIGNhcGFiaWxpdHldKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIHByb3ZpZGVyczogW0F0dGFjaG1lbnRTZXJ2aWNlLCBFbW9qaUlucHV0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIElmIGZpbGUgdXBsb2FkIGlzIGVuYWJsZWQsIHRoZSB1c2VyIGNhbiBvcGVuIGEgZmlsZSBzZWxlY3RvciBmcm9tIHRoZSBpbnB1dC4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgdXNlciBhbHNvIG5lZWRzIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeSBbY2hhbm5lbCBjYXBhYmlsaXR5XShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgaXNGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIHRydWUsIHVzZXJzIGNhbiBtZW50aW9uIG90aGVyIHVzZXJzIGluIG1lc3NhZ2VzLiBZb3UgYWxzbyBbbmVlZCB0byB1c2UgdGhlIGBBdXRvY29tcGxldGVUZXh0YXJlYWBdKC4uL2NvbmNlcHRzL29wdC1pbi1hcmNoaXRlY3R1cmUubWR4KSBmb3IgdGhpcyBmZWF0dXJlIHRvIHdvcmsuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIHNjb3BlIGZvciB1c2VyIG1lbnRpb25zLCBlaXRoZXIgbWVtYmVycyBvZiB0aGUgY3VycmVudCBjaGFubmVsIG9mIG1lbWJlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgZGlzcGFseWVkIGluIGEgY2hhbm5lbCBvciBpbiBhIFt0aHJlYWRdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB1c2VycyBjYW4gc2VsZWN0IG11bHRpcGxlIGZpbGVzIHRvIHVwbG9hZC4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBmcm9tIHRoZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBlZGl0XG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgbWVzc2FnZSBzZW5kaW5nIGZyb20gdGhlIG91dHNpZGVcbiAgICovXG4gIEBJbnB1dCgpIHNlbmRNZXNzYWdlJDogT2JzZXJ2YWJsZTx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEluIGBkZXNrdG9wYCBtb2RlIHRoZSBgRW50ZXJgIGtleSB3aWxsIHRyaWdnZXIgbWVzc2FnZSBzZW5kaW5nLCBpbiBgbW9iaWxlYCBtb2RlIHRoZSBgRW50ZXJgIGtleSB3aWxsIGluc2VydCBhIG5ldyBsaW5lIHRvIHRoZSBtZXNzYWdlIGlucHV0LiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIGlucHV0TW9kZTogJ2Rlc2t0b3AnIHwgJ21vYmlsZSc7XG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGF1dG8gZm9jdXMgb24gdGhlIHRleHRhcmVhIGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IHRydWU7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgbWVzc2FnZSB3YXMgc3VjY2Vzc2Z1bHkgc2VudCBvciB1cGRhdGVkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbWVzc2FnZVVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2U7XG4gIH0+KCk7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3N0ci1jaGF0X19tZXNzYWdlLWlucHV0LWFuZ3VsYXItaG9zdCc7XG4gIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblNlbmRMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuU2VuZE1lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50VXBsb2FkcyQ6IE9ic2VydmFibGU8QXR0YWNobWVudFVwbG9hZFtdPjtcbiAgYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICB0ZXh0YXJlYVZhbHVlID0gJyc7XG4gIHRleHRhcmVhUmVmOiBDb21wb25lbnRSZWY8VGV4dGFyZWFJbnRlcmZhY2UgJiBQYXJ0aWFsPE9uQ2hhbmdlcz4+IHwgdW5kZWZpbmVkO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgcXVvdGVkTWVzc2FnZTogdW5kZWZpbmVkIHwgU3RyZWFtTWVzc2FnZTtcbiAgdHlwaW5nU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29vbGRvd24kOiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG4gIGlzQ29vbGRvd25JblByb2dyZXNzID0gZmFsc2U7XG4gIGVtb2ppUGlja2VyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVtb2ppUGlja2VyQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIGN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPEN1c3RvbUF0dGFjaG1lbnRVcGxvYWRDb250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50UHJldmlld0xpc3RUZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIHRleHRhcmVhUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgdGhlbWVWZXJzaW9uOiAnMScgfCAnMic7XG4gIGZpbGVJbnB1dElkID0gdXVpZHY0KCk7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHByaXZhdGUgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChUZXh0YXJlYURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGV4dGFyZWFBbmNob3IhOiBUZXh0YXJlYURpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGhpZGVOb3RpZmljYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFubmVsOiBDaGFubmVsPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNlbmRNZXNzYWdlU3ViY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlciA9ICdzdHJlYW1DaGF0LlR5cGUgeW91ciBtZXNzYWdlJztcbiAgcHJpdmF0ZSByZWFkb25seSBzbG93TW9kZVRleHRhcmVhUGxhY2Vob2xkZXIgPSAnc3RyZWFtQ2hhdC5TbG93IE1vZGUgT04nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLFxuICAgIEBJbmplY3QodGV4dGFyZWFJbmplY3Rpb25Ub2tlbilcbiAgICBwcml2YXRlIHRleHRhcmVhVHlwZTogVHlwZTxUZXh0YXJlYUludGVyZmFjZT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXRDbGllbnQ6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRoZW1lVmVyc2lvbiA9IHRoZW1lU2VydmljZS50aGVtZVZlcnNpb247XG4gICAgdGhpcy50ZXh0YXJlYVBsYWNlaG9sZGVyID0gdGhpcy5kZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJC5zdWJzY3JpYmUoXG4gICAgICAgIChjb3VudGVyKSA9PiB7XG4gICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDAgJiYgdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgaWYgKGNoYW5uZWwgJiYgdGhpcy5jaGFubmVsICYmIGNoYW5uZWwuaWQgIT09IHRoaXMuY2hhbm5lbC5pZCkge1xuICAgICAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZSA9ICcnO1xuICAgICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChjYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgICB0aGlzLmlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgPVxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3VwbG9hZC1maWxlJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2FuU2VuZExpbmtzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3NlbmQtbGlua3MnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbDtcbiAgICAgICAgICB0aGlzLnNldENhblNlbmRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQuYXBwU2V0dGluZ3MkLnN1YnNjcmliZShcbiAgICAgICAgKGFwcFNldHRpbmdzKSA9PiAodGhpcy5hcHBTZXR0aW5ncyA9IGFwcFNldHRpbmdzKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLm1lc3NhZ2VUb1F1b3RlJC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgY29uc3QgaXNUaHJlYWRSZXBseSA9IG0gJiYgbS5wYXJlbnRfaWQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAndGhyZWFkJyAmJiBpc1RocmVhZFJlcGx5KSB8fFxuICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmIHRoaXMucXVvdGVkTWVzc2FnZSAmJiAhbSkgfHxcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAnbWFpbicgJiYgIWlzVGhyZWFkUmVwbHkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucXVvdGVkTWVzc2FnZSA9IG07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRVcGxvYWRzJCA9IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkO1xuICAgIHRoaXMuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJCA9XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciQ7XG4gICAgdGhpcy5pc0ZpbGVVcGxvYWRFbmFibGVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmlzRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuY29uZmlnU2VydmljZS5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgdGhpcy5tZW50aW9uU2NvcGUgPSB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvblNjb3BlO1xuICAgIHRoaXMuaW5wdXRNb2RlID0gdGhpcy5jb25maWdTZXJ2aWNlLmlucHV0TW9kZTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50eXBpbmdTdGFydCQuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UudHlwaW5nU3RhcnRlZCh0aGlzLnBhcmVudE1lc3NhZ2VJZClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5sYXRlc3RNZXNzYWdlRGF0ZUJ5VXNlckJ5Q2hhbm5lbHMkLFxuICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKFxuICAgICAgICAgICAgKFtsYXRlc3RNZXNzYWdlcywgY2hhbm5lbF0pOiBbXG4gICAgICAgICAgICAgIERhdGUgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz4gfCB1bmRlZmluZWRcbiAgICAgICAgICAgIF0gPT4gW2xhdGVzdE1lc3NhZ2VzW2NoYW5uZWw/LmNpZCB8fCAnJ10sIGNoYW5uZWwhXVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChbbGF0ZXN0TWVzc2FnZURhdGUsIGNoYW5uZWxdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29vbGRvd24gPVxuICAgICAgICAgICAgKGNoYW5uZWw/LmRhdGE/LmNvb2xkb3duIGFzIG51bWJlcikgJiZcbiAgICAgICAgICAgIGxhdGVzdE1lc3NhZ2VEYXRlICYmXG4gICAgICAgICAgICBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAoY2hhbm5lbD8uZGF0YT8uY29vbGRvd24gYXMgbnVtYmVyKSAtXG4gICAgICAgICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGF0ZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpKSAvIDEwMDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29vbGRvd24gJiZcbiAgICAgICAgICAgIGNvb2xkb3duID4gMCAmJlxuICAgICAgICAgICAgKGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKCdzbG93LW1vZGUnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvb2xkb3duKGNvb2xkb3duKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb29sZG93bkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcENvb2xkb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5lbW9qaVBpY2tlclRlbXBsYXRlJC5zdWJzY3JpYmUoKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgIHRoaXMuZW1vamlQaWNrZXJUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50UHJldmlld0xpc3RUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRQcmV2aWV3TGlzdFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUF0dGFjaG1lbnRVcGxvYWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuY3JlYXRlRnJvbUF0dGFjaG1lbnRzKFxuICAgICAgICAgIHRoaXMubWVzc2FnZSEuYXR0YWNobWVudHMgfHwgW11cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gdGhpcy5tZXNzYWdlIS50ZXh0IHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5pc0ZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uU2NvcGUpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uU2NvcGUgPSB0aGlzLm1lbnRpb25TY29wZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubW9kZSkge1xuICAgICAgdGhpcy5zZXRDYW5TZW5kTWVzc2FnZXMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaW5wdXRNb2RlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaW5wdXRNb2RlID0gdGhpcy5pbnB1dE1vZGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnNlbmRNZXNzYWdlJCkge1xuICAgICAgaWYgKHRoaXMuc2VuZE1lc3NhZ2VTdWJjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbmRNZXNzYWdlJCkge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24gPSB0aGlzLnNlbmRNZXNzYWdlJC5zdWJzY3JpYmUoXG4gICAgICAgICAgKCkgPT4gdm9pZCB0aGlzLm1lc3NhZ2VTZW50KClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZW5kTWVzc2FnZVN1YmNyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNlbmRNZXNzYWdlU3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBhc3luYyBtZXNzYWdlU2VudCgpIHtcbiAgICBpZiAodGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyITogbnVtYmVyO1xuICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJFxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50ZXIpID0+IChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIgPSBjb3VudGVyKSk7XG4gICAgaWYgKGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciA+IDApIHtcbiAgICAgIGlmICghdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICdzdHJlYW1DaGF0LldhaXQgdW50aWwgYWxsIGF0dGFjaG1lbnRzIGhhdmUgdXBsb2FkZWQnXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLm1hcFRvQXR0YWNobWVudHMoKTtcbiAgICBsZXQgdGV4dCA9IHRoaXMudGV4dGFyZWFWYWx1ZTtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9eXFxuKy9nLCAnJyk7IC8vIGxlYWRpbmcgZW1wdHkgbGluZXNcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXG4rJC9nLCAnJyk7IC8vIGVuZGluZyBlbXB0eSBsaW5lc1xuICAgIGNvbnN0IHRleHRDb250YWluc09ubHlTcGFjZUNoYXJzID0gIXRleHQucmVwbGFjZSgvIC9nLCAnJyk7IC8vc3BjYWVcbiAgICBpZiAoXG4gICAgICAoIXRleHQgfHwgdGV4dENvbnRhaW5zT25seVNwYWNlQ2hhcnMpICYmXG4gICAgICAoIWF0dGFjaG1lbnRzIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRleHRDb250YWluc09ubHlTcGFjZUNoYXJzKSB7XG4gICAgICB0ZXh0ID0gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRhaW5zTGlua3MgJiYgIXRoaXMuY2FuU2VuZExpbmtzKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5TZW5kaW5nIGxpbmtzIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udmVyc2F0aW9uJ1xuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCAodGhpcy5pc1VwZGF0ZVxuICAgICAgICA/IHRoaXMuY2hhbm5lbFNlcnZpY2UudXBkYXRlTWVzc2FnZSh7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2UhLFxuICAgICAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2VuZE1lc3NhZ2UoXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICB0aGlzLm1lbnRpb25lZFVzZXJzLFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlSWQsXG4gICAgICAgICAgICB0aGlzLnF1b3RlZE1lc3NhZ2U/LmlkXG4gICAgICAgICAgKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VVcGRhdGUuZW1pdCh7IG1lc3NhZ2UgfSk7XG4gICAgICBpZiAoIXRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuRWRpdCBtZXNzYWdlIHJlcXVlc3QgZmFpbGVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UudHlwaW5nU3RvcHBlZCh0aGlzLnBhcmVudE1lc3NhZ2VJZCk7XG4gICAgaWYgKHRoaXMucXVvdGVkTWVzc2FnZSkge1xuICAgICAgdGhpcy5kZXNlbGVjdE1lc3NhZ2VUb1F1b3RlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRhaW5zTGlua3MoKSB7XG4gICAgcmV0dXJuIC8oPzooPzpodHRwcz98ZnRwKTpcXC9cXC8pP1tcXHcvXFwtPz0lLl0rXFwuW1xcdy9cXC0mPz0lLl0rLy50ZXN0KFxuICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIGdldCBxdW90ZWRNZXNzYWdlQXR0YWNobWVudHMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxBdHRhY2htZW50cyA9IHRoaXMucXVvdGVkTWVzc2FnZT8uYXR0YWNobWVudHM7XG4gICAgcmV0dXJuIG9yaWdpbmFsQXR0YWNobWVudHMgJiYgb3JpZ2luYWxBdHRhY2htZW50cy5sZW5ndGhcbiAgICAgID8gW29yaWdpbmFsQXR0YWNobWVudHNbMF1dXG4gICAgICA6IFtdO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkVGV4dGFyZWFUZXh0KCkge1xuICAgIGlmICghdGhpcy5jYW5TZW5kTWVzc2FnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgID8gXCJzdHJlYW1DaGF0LllvdSBjYW4ndCBzZW5kIHRocmVhZCByZXBsaWVzIGluIHRoaXMgY2hhbm5lbFwiXG4gICAgICAgIDogXCJzdHJlYW1DaGF0LllvdSBjYW4ndCBzZW5kIG1lc3NhZ2VzIGluIHRoaXMgY2hhbm5lbFwiO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBmaWxlc1NlbGVjdGVkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3QpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVzU2VsZWN0ZWQoZmlsZUxpc3QpO1xuICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgfVxuXG4gIGRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKSB7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5zZWxlY3RNZXNzYWdlVG9RdW90ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0RW1vamlQaWNrZXJDb250ZXh0KCk6IEVtb2ppUGlja2VyQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVtb2ppSW5wdXQkOiB0aGlzLmVtb2ppSW5wdXRTZXJ2aWNlLmVtb2ppSW5wdXQkLFxuICAgIH07XG4gIH1cblxuICBnZXRBdHRhY2htZW50UHJldmlld0xpc3RDb250ZXh0KCk6IEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRhY2htZW50VXBsb2FkcyQ6IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkLFxuICAgICAgZGVsZXRlVXBsb2FkSGFuZGxlcjogdGhpcy5kZWxldGVVcGxvYWQuYmluZCh0aGlzKSxcbiAgICAgIHJldHJ5VXBsb2FkSGFuZGxlcjogdGhpcy5yZXRyeVVwbG9hZC5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpOiBDdXN0b21BdHRhY2htZW50VXBsb2FkQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQsXG4gICAgICBhdHRhY2htZW50U2VydmljZTogdGhpcy5hdHRhY2htZW50U2VydmljZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVVcGxvYWQodXBsb2FkOiBBdHRhY2htZW50VXBsb2FkKSB7XG4gICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgIC8vIERlbGF5IGRlbGV0ZSB0byBhdm9pZCBtb2RhbCBkZXRlY3RpbmcgdGhpcyBjbGljayBhcyBvdXRzaWRlIGNsaWNrXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdm9pZCB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmRlbGV0ZUF0dGFjaG1lbnQodXBsb2FkKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2b2lkIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuZGVsZXRlQXR0YWNobWVudCh1cGxvYWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV0cnlVcGxvYWQoZmlsZTogRmlsZSkge1xuICAgIHZvaWQgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXRyeUF0dGFjaG1lbnRVcGxvYWQoZmlsZSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmlsZUlucHV0KCkge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzVXBkYXRlKCkge1xuICAgIHJldHVybiAhIXRoaXMubWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRleHRhcmVhKCkge1xuICAgIC8vIGNsZWFudXAgcHJldmlvdXNseSBidWlsdCB0ZXh0YXJlYVxuICAgIGlmICghdGhpcy5jYW5TZW5kTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMudGV4dGFyZWFSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcyB8fCB0aGlzLnRleHRhcmVhUmVmIHx8ICF0aGlzLnRleHRhcmVhQW5jaG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLnRleHRhcmVhVHlwZSk7XG4gICAgdGhpcy50ZXh0YXJlYVJlZiA9XG4gICAgICB0aGlzLnRleHRhcmVhQW5jaG9yLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PGFueT4oXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlcbiAgICAgICk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3Q6IEZpbGVMaXN0IHwgbnVsbCkge1xuICAgIGlmICghZmlsZUxpc3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwU2V0dGluZ3MpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIH1cbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgQXJyYXkuZnJvbShmaWxlTGlzdCkuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgbGV0IGhhc0Jsb2NrZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzQmxvY2tlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgbGV0IGhhc05vdEFsbG93ZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzTm90QWxsb3dlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgaWYgKGlzSW1hZ2VGaWxlKGYpKSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaGFzQmxvY2tlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgfHxcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIHVwbG9hZGluZyBmaWxlLCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCcsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB7IG5hbWU6IGYubmFtZSwgZXh0OiBmLnR5cGUgfVxuICAgICAgICApO1xuICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldENhblNlbmRNZXNzYWdlcygpIHtcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSB0aGlzLmNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgaWYgKCFjYXBhYmlsaXRpZXMpIHtcbiAgICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2VzID1cbiAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoXG4gICAgICAgICAgdGhpcy5tb2RlID09PSAnbWFpbicgPyAnc2VuZC1tZXNzYWdlJyA6ICdzZW5kLXJlcGx5J1xuICAgICAgICApICE9PSAtMTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuaW5pdFRleHRhcmVhKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcGFyZW50TWVzc2FnZUlkKCkge1xuICAgIGxldCBwYXJlbnRNZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5tb2RlID09PSAndGhyZWFkJykge1xuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlSWQkXG4gICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGlkKSA9PiAocGFyZW50TWVzc2FnZUlkID0gaWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50TWVzc2FnZUlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENvb2xkb3duKGNvb2xkb3duOiBudW1iZXIpIHtcbiAgICB0aGlzLnRleHRhcmVhUGxhY2Vob2xkZXIgPSB0aGlzLnNsb3dNb2RlVGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgICB0aGlzLmlzQ29vbGRvd25JblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLmNvb2xkb3duJCA9IHRpbWVyKDAsIDEwMDApLnBpcGUoXG4gICAgICB0YWtlKGNvb2xkb3duICsgMSksXG4gICAgICBtYXAoKHYpID0+IGNvb2xkb3duIC0gdiksXG4gICAgICB0YXAoKHYpID0+IHtcbiAgICAgICAgaWYgKHYgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BDb29sZG93bigpIHtcbiAgICB0aGlzLmNvb2xkb3duJCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmlzQ29vbGRvd25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0YXJlYVBsYWNlaG9sZGVyID0gdGhpcy5kZWZhdWx0VGV4dGFyZWFQbGFjZWhvbGRlcjtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cInRoZW1lVmVyc2lvbiAhPT0gJzInXCJcbiAgY2xhc3M9XCJ7e1xuICAgIG1vZGUgPT09ICdtYWluJyA/ICdzdHItY2hhdF9faW5wdXQtZmxhdCcgOiAnc3RyLWNoYXRfX3NtYWxsLW1lc3NhZ2UtaW5wdXQnXG4gIH19XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19pbnB1dC1mbGF0LWhhcy1hdHRhY2htZW50c109XCJcbiAgICAoYXR0YWNobWVudFVwbG9hZHMkIHwgYXN5bmMpIS5sZW5ndGggPiAwXG4gIFwiXG4gIFtjbGFzcy5zdHItY2hhdF9faW5wdXQtZmxhdC1xdW90ZWRdPVwiISFxdW90ZWRNZXNzYWdlXCJcbj5cbiAgPGRpdiBjbGFzcz1cInF1b3RlZC1tZXNzYWdlLXByZXZpZXdcIiAqbmdJZj1cInF1b3RlZE1lc3NhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlldy1oZWFkZXJcIj5cbiAgICAgIDxkaXY+e3sgXCJzdHJlYW1DaGF0LlJlcGx5IHRvIE1lc3NhZ2VcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19zcXVhcmUtYnV0dG9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZW1vdmUtcXVvdGVcIlxuICAgICAgICAoY2xpY2spPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgIGljb249XCJjbG9zZS1uby1vdXRsaW5lXCJcbiAgICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlldy1jb250ZW50XCI+XG4gICAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgICBkYXRhLXRlc3RpZD1cInFvdXRlZC1tZXNzYWdlLWF2YXRhclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3RcIlxuICAgICAgICBbaW1hZ2VVcmxdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgICBbbmFtZV09XCJxdW90ZWRNZXNzYWdlPy51c2VyPy5uYW1lIHx8IHF1b3RlZE1lc3NhZ2U/LnVzZXI/LmlkXCJcbiAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICB0eXBlPVwidXNlclwiXG4gICAgICAgIGxvY2F0aW9uPVwicXVvdGVkLW1lc3NhZ2Utc2VuZGVyXCJcbiAgICAgICAgW3VzZXJdPVwicXVvdGVkTWVzc2FnZT8udXNlciB8fCB1bmRlZmluZWRcIlxuICAgICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWNvbnRlbnQtaW5uZXJcIj5cbiAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8uYXR0YWNobWVudHMgJiYgcXVvdGVkTWVzc2FnZT8uYXR0YWNobWVudHM/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dGFjaG1lbnRzXT1cInF1b3RlZE1lc3NhZ2VBdHRhY2htZW50c1wiXG4gICAgICAgICAgW21lc3NhZ2VJZF09XCJxdW90ZWRNZXNzYWdlPy5pZFwiXG4gICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLXRleHRcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udHJhbnNsYXRpb24gfHxcbiAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/Lmh0bWwgfHxcbiAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/LnRleHRcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdC13cmFwcGVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ7e1xuICAgICAgICBtb2RlID09PSAnbWFpbidcbiAgICAgICAgICA/ICdzdHItY2hhdF9faW5wdXQtZmxhdC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgICAgICA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1ByZXZpZXdcbiAgICAgICAgbGV0LWF0dGFjaG1lbnRVcGxvYWRzJD1cImF0dGFjaG1lbnRVcGxvYWRzJFwiXG4gICAgICAgIGxldC1yZXRyeVVwbG9hZEhhbmRsZXI9XCJyZXRyeVVwbG9hZEhhbmRsZXJcIlxuICAgICAgICBsZXQtZGVsZXRlVXBsb2FkSGFuZGxlcj1cImRlbGV0ZVVwbG9hZEhhbmRsZXJcIlxuICAgICAgPlxuICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0XG4gICAgICAgICAgW2F0dGFjaG1lbnRVcGxvYWRzJF09XCJhdHRhY2htZW50VXBsb2FkcyRcIlxuICAgICAgICAgIChyZXRyeUF0dGFjaG1lbnRVcGxvYWQpPVwicmV0cnlVcGxvYWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIChkZWxldGVBdHRhY2htZW50KT1cImRlbGV0ZVVwbG9hZEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJyZnUtaW1hZ2UtcHJldmlld2VyLWFuZ3VsYXItaG9zdFwiXG4gICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgYXR0YWNobWVudFByZXZpZXdMaXN0VGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRzUHJldmlldztcbiAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50UHJldmlld0xpc3RDb250ZXh0KClcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydGEgc3RyLWNoYXRfX3RleHRhcmVhIHN0ci1jaGF0LWFuZ3VsYXJfX3RleHRhcmVhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbW9qaVBpY2tlclRlbXBsYXRlXCIgZGF0YS10ZXN0aWQ9XCJlbW9qaS1waWNrZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9faW5wdXQtZmxhdC1lbW9qaXNlbGVjdFxuICAgICAgICAgICAgICBzdHItY2hhdC1hbmd1bGFyX19lbW9qaXNlbGVjdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgZW1vamlQaWNrZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRFbW9qaVBpY2tlckNvbnRleHQoKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNlbmRNZXNzYWdlczsgZWxzZSBkaXNhYmxlZFRleHRhcmVhXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgc3RyZWFtVGV4dGFyZWFcbiAgICAgICAgICAgIFsodmFsdWUpXT1cInRleHRhcmVhVmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInR5cGluZ1N0YXJ0JC5uZXh0KClcIlxuICAgICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cInRleHRhcmVhUmVmXCJcbiAgICAgICAgICAgICh1c2VyTWVudGlvbnMpPVwibWVudGlvbmVkVXNlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW21lbnRpb25TY29wZV09XCJtZW50aW9uU2NvcGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRleHRhcmVhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2lucHV0TW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRUZXh0YXJlYT5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGlzYWJsZWRUZXh0YXJlYVRleHQgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJydGFfX3RleHRhcmVhIHN0ci1jaGF0X190ZXh0YXJlYV9fdGV4dGFyZWFcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkaXNhYmxlZC10ZXh0YXJlYVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVVcGxvYWRFbmFibGVkICYmIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiYgY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjdXN0b21BdHRhY2htZW50VXBsb2FkVGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRVcGxvYWQ7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdHRhY2htZW50VXBsb2FkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGV1cGxvYWQtd3JhcHBlclwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtdXBsb2FkLWJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwXCI+XG4gICAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5BdHRhY2ggZmlsZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmZ1LWZpbGUtdXBsb2FkLWJ1dHRvblwiPlxuICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJmdS1maWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZChmaWxlSW5wdXQuZmlsZXMpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtZmlsZXVwbG9hZFwiPlxuICAgICAgICAgICAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmaWxlLXVwbG9hZFwiXG4gICAgICAgICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzICYmICFpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NlbmQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJtZXNzYWdlU2VudCgpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlU2VudCgpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b24tYW5ndWxhclwiXG4gICAgICAgIGljb249XCJzZW5kXCJcbiAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtY29vbGRvd25cIlxuICAgICAgKm5nSWY9XCJpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cImNvb2xkb3duLXRpbWVyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5wdXQtY29vbGRvd24tdGV4dFwiPlxuICAgICAgICB7eyBjb29sZG93biQgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgKm5nSWY9XCJ0aGVtZVZlcnNpb24gPT09ICcyJ1wiXG4gIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5wdXQgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1pbnB1dFwiXG4+XG4gIDxkaXYgKm5nSWY9XCJxdW90ZWRNZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtcHJldmlldy1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3F1b3RlZC1tZXNzYWdlLXJlcGx5LXRvLW1lc3NhZ2VcIj5cbiAgICAgIHt7IFwic3RyZWFtQ2hhdC5SZXBseSB0byBNZXNzYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1yZW1vdmVcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZW1vdmUtcXVvdGVcIlxuICAgICAgKGNsaWNrKT1cImRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgaWNvbj1cImNsb3NlLW5vLW91dGxpbmVcIlxuICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzOyBlbHNlIG5vdEFsbG93ZWRcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1pbnB1dC1pbm5lclxuICAgICAgICBzdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWlucHV0LWlubmVyXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVVcGxvYWRFbmFibGVkICYmIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiYgY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjdXN0b21BdHRhY2htZW50VXBsb2FkVGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRVcGxvYWQ7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50VXBsb2FkQ29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdHRhY2htZW50VXBsb2FkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGUtaW5wdXQtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZmlsZS11cGxvYWQtYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2ZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKGZpbGVJbnB1dC5maWxlcylcIlxuICAgICAgICAgICAgICBpZD1cInt7IGZpbGVJbnB1dElkIH19XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzdHItY2hhdF9fZmlsZS1pbnB1dC1sYWJlbFwiIGZvcj1cInt7IGZpbGVJbnB1dElkIH19XCI+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiYXR0YWNoXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS10ZXh0YXJlYS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1wcmV2aWV3XCJcbiAgICAgICAgICAqbmdJZj1cInF1b3RlZE1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicW91dGVkLW1lc3NhZ2UtYXZhdGFyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNlbmRlci1hdmF0YXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaW1hZ2VVcmxdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgICAgICAgW25hbWVdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8ubmFtZSB8fCBxdW90ZWRNZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgICAgICB0eXBlPVwidXNlclwiXG4gICAgICAgICAgICBsb2NhdGlvbj1cInF1b3RlZC1tZXNzYWdlLXNlbmRlclwiXG4gICAgICAgICAgICBbdXNlcl09XCJxdW90ZWRNZXNzYWdlPy51c2VyIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWNvbnRlbnQtaW5uZXJcbiAgICAgICAgICAgICAgc3RyLWNoYXRfX3F1b3RlZC1tZXNzYWdlLWJ1YmJsZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtbGlzdFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cInF1b3RlZE1lc3NhZ2VBdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwicXVvdGVkTWVzc2FnZT8uaWRcIlxuICAgICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8udHJhbnNsYXRpb24gfHxcbiAgICAgICAgICAgICAgICBxdW90ZWRNZXNzYWdlPy5odG1sIHx8XG4gICAgICAgICAgICAgICAgcXVvdGVkTWVzc2FnZT8udGV4dFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1ByZXZpZXdcbiAgICAgICAgICBsZXQtYXR0YWNobWVudFVwbG9hZHMkPVwiYXR0YWNobWVudFVwbG9hZHMkXCJcbiAgICAgICAgICBsZXQtcmV0cnlVcGxvYWRIYW5kbGVyPVwicmV0cnlVcGxvYWRIYW5kbGVyXCJcbiAgICAgICAgICBsZXQtZGVsZXRlVXBsb2FkSGFuZGxlcj1cImRlbGV0ZVVwbG9hZEhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdFxuICAgICAgICAgICAgW2F0dGFjaG1lbnRVcGxvYWRzJF09XCJhdHRhY2htZW50VXBsb2FkcyRcIlxuICAgICAgICAgICAgKHJldHJ5QXR0YWNobWVudFVwbG9hZCk9XCJyZXRyeVVwbG9hZEhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVsZXRlQXR0YWNobWVudCk9XCJkZWxldGVVcGxvYWRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXR0YWNobWVudC1wcmV2aWV3LWxpc3QtYW5ndWxhci1ob3N0XCJcbiAgICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1wcmV2aWV3LWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYXR0YWNobWVudFByZXZpZXdMaXN0VGVtcGxhdGUgfHwgZGVmYXVsdEF0dGFjaG1lbnRzUHJldmlldztcbiAgICAgICAgICAgIGNvbnRleHQ6IGdldEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbnRleHQoKVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXRleHRhcmVhLXdpdGgtZW1vamktcGlja2VyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgc3RyZWFtVGV4dGFyZWFcbiAgICAgICAgICAgIFsodmFsdWUpXT1cInRleHRhcmVhVmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInR5cGluZ1N0YXJ0JC5uZXh0KClcIlxuICAgICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgICBbY29tcG9uZW50UmVmXT1cInRleHRhcmVhUmVmXCJcbiAgICAgICAgICAgICh1c2VyTWVudGlvbnMpPVwibWVudGlvbmVkVXNlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW21lbnRpb25TY29wZV09XCJtZW50aW9uU2NvcGVcIlxuICAgICAgICAgICAgW2lucHV0TW9kZV09XCJpbnB1dE1vZGVcIlxuICAgICAgICAgICAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRleHRhcmVhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dGFyZWEtZW1vamktcGlja2VyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZW1vamlQaWNrZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1vamktcGlja2VyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBlbW9qaVBpY2tlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogZ2V0RW1vamlQaWNrZXJDb250ZXh0KClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJjYW5TZW5kTWVzc2FnZXMgJiYgIWlzQ29vbGRvd25JblByb2dyZXNzICYmICFtZXNzYWdlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgIChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIkIHwgYXN5bmMpISA+IDAgfHxcbiAgICAgICAgICAoIXRleHRhcmVhVmFsdWUgJiYgKGF0dGFjaG1lbnRVcGxvYWRzJCB8IGFzeW5jKSEubGVuZ3RoID09PSAwKVxuICAgICAgICBcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlU2VudCgpXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJzZW5kXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWlucHV0LWNvb2xkb3duXCJcbiAgICAgICAgKm5nSWY9XCJpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY29vbGRvd24tdGltZXJcIlxuICAgICAgPlxuICAgICAgICB7eyBjb29sZG93biQgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vdEFsbG93ZWQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1pbnB1dC1ub3QtYWxsb3dlZFwiXG4gICAgICBkYXRhLXRlc3RpZD1cImRpc2FibGVkLXRleHRhcmVhXCJcbiAgICA+XG4gICAgICB7eyBkaXNhYmxlZFRleHRhcmVhVGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|