asap-feed-beta 12.7.3 → 12.7.5

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.
@@ -331,7 +331,7 @@ export class AsapFeedBetaComponent {
331
331
  AsapFeedBetaComponent.decorators = [
332
332
  { type: Component, args: [{
333
333
  selector: 'asap-feed-beta',
334
- template: "<!-- <code>{{publication}}/{{hasID}}/{{isSinglePost}}</code> -->\n\n<ng-container *ngIf=\"!settings?.channelsHidden\">\n <app-stories *ngIf=\"stories && !hasID && !isSinglePost\"></app-stories>\n</ng-container>\n\n<feed-publication [settings]=\"settings\" [announce]=\"announce\" (feedCreated)=\"onNewFeed($event)\" (filter)=\"reload($event)\" *ngIf=\"publication && !hasID && !isSinglePost\"></feed-publication>\n\n<!-- Este trecho do c\u00F3digo foi removido, pois ele fazia o Feed ficar flicando na tela. -->\n<ng-container *ngIf=\"!feeds\">\n <div [class.col-sm-8]=\"hasID\" [class.mx-auto]=\"hasID\"> \n <ng-container *ngFor=\"let item of [0,1]\">\n <div>\n <mat-card class=\"feed-card mb-4\">\n <mat-card-header class=\"feed-header\">\n <div class=\"mr-3\" mat-card-avatar>\n <ngx-skeleton-loader animation=\"progress\" appearance=\"circle\" [theme]=\"{height:'40px'}\">\n </ngx-skeleton-loader>\n </div>\n <mat-card-title>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'25px','transform': 'initial', marginBottom: '0'}\">\n </ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'15px','transform': 'initial'}\">\n </ngx-skeleton-loader>\n </mat-card-title>\n\n </mat-card-header>\n\n <ng-container>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'400px','transform': 'initial'}\">\n </ngx-skeleton-loader>\n </ng-container>\n\n </mat-card>\n </div>\n </ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"feeds\">\n <ng-container *ngFor=\"let item of feeds\">\n <div [class.focus-on-me]=\"item.focus\" [class.col-sm-8]=\"hasID\" [class.mx-auto]=\"hasID\">\n <app-feed-item [owner]=\"this\" [settings]=\"settings\" [item]=\"item\" (isVisible)=\"sendVisible($event)\"></app-feed-item>\n </div>\n </ng-container>\n</ng-container>\n\n<div *ngIf=\"loading\">\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'40px', width:'100%'}\"></ngx-skeleton-loader>\n</div>\n\n<div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"2000\" [infiniteScrollDisabled]=\"\n loading || \n paginate.count >= paginate.limit || \n isSinglePost || \n paginate.last_document === paginate.next_document\" (scrolled)=\"getMore()\">\n</div>\n\n<button \n *ngIf=\"showToTopButton\" \n (click)=\"gotoTop()\" \n style=\"position: fixed;\n bottom: 0;\n right: 0;\n color:#FFFF;\n font-size: 20px;\n margin-right: 10px;\n margin-bottom: 10px;\n height: 35px;\n width: 35px;\n border: none;\n text-align: center;\n border-radius: 50%;\n outline: none;\n transition: all 1s ease-in;\n background-color: var(--main-color);\n z-index: 99999;\"\n class=\"d-none d-sm-block\">\n <i class=\"fa fa-angle-up\"></i>\n</button>\n",
334
+ template: "<ng-container *ngIf=\"!settings?.channelsHidden\">\n <app-stories *ngIf=\"stories && !hasID && !isSinglePost\"></app-stories>\n</ng-container>\n\n<feed-publication [settings]=\"settings\" [announce]=\"announce\" (feedCreated)=\"onNewFeed($event)\" (filter)=\"reload($event)\" *ngIf=\"publication && !hasID && !isSinglePost\"></feed-publication>\n\n<!-- Este trecho do c\u00F3digo foi removido, pois ele fazia o Feed ficar flicando na tela. -->\n<ng-container *ngIf=\"!feeds\">\n <div [class.col-sm-8]=\"hasID\" [class.mx-auto]=\"hasID\"> \n <ng-container *ngFor=\"let item of [0,1]\">\n <div>\n <mat-card class=\"feed-card mb-4\">\n <mat-card-header class=\"feed-header\">\n <div class=\"mr-3\" mat-card-avatar>\n <ngx-skeleton-loader animation=\"progress\" appearance=\"circle\" [theme]=\"{height:'40px'}\">\n </ngx-skeleton-loader>\n </div>\n <mat-card-title>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'25px','transform': 'initial', marginBottom: '0'}\">\n </ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'15px','transform': 'initial'}\">\n </ngx-skeleton-loader>\n </mat-card-title>\n\n </mat-card-header>\n\n <ng-container>\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'400px','transform': 'initial'}\">\n </ngx-skeleton-loader>\n </ng-container>\n\n </mat-card>\n </div>\n </ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"feeds\">\n <ng-container *ngFor=\"let item of feeds\">\n <div [class.focus-on-me]=\"item.focus\" [class.col-sm-8]=\"hasID\" [class.mx-auto]=\"hasID\">\n <app-feed-item [owner]=\"this\" [settings]=\"settings\" [item]=\"item\" (isVisible)=\"sendVisible($event)\"></app-feed-item>\n </div>\n </ng-container>\n</ng-container>\n\n<div *ngIf=\"loading\">\n <ngx-skeleton-loader animation=\"progress\" [theme]=\"{height:'40px', width:'100%'}\"></ngx-skeleton-loader>\n</div>\n\n<div infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"2000\" [infiniteScrollDisabled]=\"\n loading || \n paginate.count >= paginate.limit || \n isSinglePost || \n paginate.last_document === paginate.next_document\" (scrolled)=\"getMore()\">\n</div>\n\n<button \n *ngIf=\"showToTopButton\" \n (click)=\"gotoTop()\" \n style=\"position: fixed;\n bottom: 0;\n right: 0;\n color:#FFFF;\n font-size: 20px;\n margin-right: 10px;\n margin-bottom: 10px;\n height: 35px;\n width: 35px;\n border: none;\n text-align: center;\n border-radius: 50%;\n outline: none;\n transition: all 1s ease-in;\n background-color: var(--main-color);\n z-index: 99999;\"\n class=\"d-none d-sm-block\">\n <i class=\"fa fa-angle-up\"></i>\n</button>\n",
335
335
  styles: ['./asap-feed.beta.componente.scss']
336
336
  }] }
337
337
  ];
@@ -398,4 +398,4 @@ if (false) {
398
398
  /** @type {?} */
399
399
  AsapFeedBetaComponent.prototype.global;
400
400
  }
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNhcC1mZWVkLWJldGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYXNhcC1mZWVkLWJldGEvIiwic291cmNlcyI6WyJsaWIvYXNhcC1mZWVkLWJldGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRbkMsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7SUF3QjlCLFlBQ1ksV0FBNEIsRUFDN0IsRUFBb0IsRUFDcEIsS0FBcUIsRUFDckIsY0FBbUMsRUFDbkMsTUFBYztRQUpiLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFrQjtRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTNCbEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFHYixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd4QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRWQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUliLHlCQUFvQixHQUFHLEdBQUcsQ0FB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RCxPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNyRTtZQUNMLENBQUMsRUFBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUQsTUFBTSxDQUFDLFVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7OztZQXRRSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsbzlGQUE4Qzt5QkFDckMsa0NBQWtDO2FBQzlDOzs7O1lBWFEsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLE1BQU07OztpQkFhVixLQUFLOzRCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkE0SEwsWUFBWSxTQUFDLGVBQWU7Ozs7SUFqSTdCLHdDQUFzQjs7SUFDdEIsd0NBQXNCOztJQUV0QixtQ0FBWTs7SUFDWiw4Q0FBK0I7O0lBQy9CLHlDQUFrQjs7SUFFbEIsc0NBQXFCOztJQUVyQix3Q0FBc0I7O0lBQ3RCLHlDQUF3Qjs7SUFDeEIsNENBQTBCOztJQUMxQixzQ0FBb0I7O0lBQ3BCLHVDQUFjOztJQUNkLHNDQUFhOztJQUNiLHlDQUFnQjs7SUFDaEIscURBQWtDOztJQUNsQyxnREFBK0I7O0lBQy9CLDZDQUE0Qjs7SUFFNUIsMkNBQTBCOzs7OztJQUd0Qiw0Q0FBb0M7O0lBQ3BDLG1DQUEyQjs7SUFDM0Isc0NBQTRCOztJQUM1QiwrQ0FBMEM7O0lBQzFDLHVDQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzYXBGZWVkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXNhcC1mZWVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFzYXBGZWVkQmV0YVNlcnZpY2UgfSBmcm9tICcuL2FzYXAtZmVlZC1iZXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnYXNhcC1jcnVkJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhc2FwLWZlZWQtYmV0YScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FzYXAtZmVlZC1iZXRhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFsnLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBc2FwRmVlZEJldGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgICBwdWJsaWMgaGFzRmVlZCA9IHRydWU7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaWQ7XG4gICAgQElucHV0KCkgaWdub3JlQ29udHJvbCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldHRpbmdzO1xuXG4gICAgcHVibGljIGhhc0lEID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc3RvcmllcyA9IHRydWU7XG4gICAgcHVibGljIGFubm91bmNlID0gZmFsc2U7XG4gICAgcHVibGljIHB1YmxpY2F0aW9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcXVlcnkgPSBudWxsO1xuICAgIHB1YmxpYyBmZWVkSUQ7XG4gICAgcHVibGljIGZlZWRzO1xuICAgIHB1YmxpYyBwYWdpbmF0ZTtcbiAgICBwdWJsaWMgdG9wUG9zVG9TdGFydFNob3dpbmcgPSA0MDA7XG4gICAgcHVibGljIHNob3dUb1RvcEJ1dHRvbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1NpbmdsZVBvc3QgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBmaWx0ZXJCeU1lID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmZWVkU2VydmljZTogQXNhcEZlZWRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgICAgIHB1YmxpYyByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHB1YmxpYyBjb250cm9sU2VydmljZTogQXNhcEZlZWRCZXRhU2VydmljZSxcbiAgICAgICAgcHVibGljIGdsb2JhbDogR2xvYmFsLFxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICBcbiAgICAgICAgaWYgKCF0aGlzLmlnbm9yZUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2UgPSB0aGlzLmNvbnRyb2xTZXJ2aWNlLmFubm91bmNlO1xuICAgICAgICAgICAgdGhpcy5zdG9yaWVzID0gdGhpcy5jb250cm9sU2VydmljZS5zdG9yaWVzO1xuICAgICAgICAgICAgdGhpcy5wdWJsaWNhdGlvbiA9IHRoaXMuY29udHJvbFNlcnZpY2UucHVibGljYXRpb247XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5jb250cm9sU2VydmljZS5xdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdRdWVyeSAtPicsIHRoaXMucXVlcnkpO1xuXG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUGFyYW1zIC0+JywgcGFyYW0pO1xuICAgICAgICAgICAgaWYgKHBhcmFtKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtLmZlZWRfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWVkSUQgPSBwYXJhbS5mZWVkX2lkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2luZ2xlUG9zdCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEZlZWQodGhpcy5mZWVkSUQpO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGZWVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja0ZlZWRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmVlZElEKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZlZWQodGhpcy5mZWVkSUQpO1xuICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzSUQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250cm9sU2VydmljZS5xdWVyeSkgdGhpcy5jb250cm9sU2VydmljZS5xdWVyeSA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFNlcnZpY2UucXVlcnkuc2VhcmNoQnkgPSAndXNlcl9pbmZvLmlkJztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xTZXJ2aWNlLnF1ZXJ5LnNlYXJjaFZhbHVlID0gdGhpcy5pZCArICcmdHlwZVZhbHVlPW51bWJlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmVlZChmZWVkX2lkID0gJycpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tnZXRGZWVkXSBRdWVyeScsIHRoaXMucXVlcnksIHRoaXMuZmlsdGVyQnlNZSk7XG4gICAgICAgIHRoaXMuZmVlZHMgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmZlZWRTZXJ2aWNlLmdldEZlZWQoZmVlZF9pZCwgdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLCB0aGlzLnF1ZXJ5LCB0aGlzLmZpbHRlckJ5TWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mZWVkcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRmVlZHMnLCB0aGlzLmZlZWRzKTtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGUgPSByZXNwb25zZS5wYWdpbmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmhhc0ZlZWQgPSAodGhpcy5mZWVkcy5sZW5ndGggPiAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vcmUoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbZ2V0TW9yZV0nLCB0aGlzLnBhZ2luYXRlLm5leHRfZG9jdW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0ZS5uZXh0X2RvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS5nZXRNb3JlRmVlZCg1LCB0aGlzLnBhZ2luYXRlLm5leHRfZG9jdW1lbnQsIHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSwgdGhpcy5xdWVyeSwgdGhpcy5maWx0ZXJCeU1lKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW2dldE1vcmVdIEdvdDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJtaXR0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVlZHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0ZSA9IHJlc3BvbnNlLnBhZ2luYXRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0ZlZWRDaGFuZ2UoKSB7XG4gICAgICAgIC8vIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQsIHJlZiA9PiB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVmLm9yZGVyQnkoJ3VwZGF0ZWRfYXQnLCAnZGVzYycpO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICAvLyBjb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIltjaGVja0ZlZWRDaGFuZ2VdXCIscmVzcG9uc2UpO1xuICAgICAgICAvLyAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIC8vICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW2NoZWNrRmVlZENoYW5nZV1cIilcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5nZXRGZWVkKHRoaXMuZmVlZElEKTtcbiAgICAgICAgLy8gICAgICAgICB9LCA2MDApO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIGNoZWNrU2Nyb2xsKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDA7XG4gICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+PSB0aGlzLnRvcFBvc1RvU3RhcnRTaG93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb1RvcEJ1dHRvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb1RvcEJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ290b1RvcCgpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbCh7XG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBlcm1pdHRlZChwb3N0KSB7XG4gICAgICAgIGlmIChwb3N0LnBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgIGlmIChwb3N0LnBlcm1pc3Npb24ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpO1xuICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3N0LnVzZXJfaW5mbyAmJiBwb3N0LnVzZXJfaW5mby5pZCA9PSB1c2VyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZXIuZXh0cmFzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSB1c2VyLmV4dHJhc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGVybSBvZiBwb3N0LnBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBlcm0uZmllbGQgPT0gJ211bHRpLWNvbnRhJykgJiYgKHBlcm0udmFsdWUgPT0gdXNlci5jbGllbnRfaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChleHRyYXNbcGVybS5maWVsZF0gPT0gcGVybS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25OZXdGZWVkKGlkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbb25OZXdGZWVkXScsIGlkKTtcbiAgICAgICAgdGhpcy5mZWVkU2VydmljZS5nZXRGZWVkKGlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuZmVlZHMubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlZWQgb2YgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGZlZWQuZm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlZWQgb2YgdGhpcy5mZWVkcykge1xuICAgICAgICAgICAgICAgIGZlZWQuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZlZWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tvbk5ld0ZlZWRdIEZlZWQnLCB0aGlzLmZlZWRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmVlZHNbaV0uaXNIaWdobGlnaHRlZCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mZWVkcyA9IFtcbiAgICAgICAgICAgICAgICAuLi4gdGhpcy5mZWVkcy5zbGljZSgwLCBpbmRleCksXG4gICAgICAgICAgICAgICAgLi4uIHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4uIHRoaXMuZmVlZHMuc2xpY2UoaW5kZXgpXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvY3VzLW9uLW1lJylbMF07XG4gICAgICAgICAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kVmlzaWJsZShpdGVtKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBtYXJjYW5kbyBjb21vIHZpc3VhbGl6YWRvXCIsIGl0ZW0pO1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpO1xuXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcbiAgICAgICAgICAgIHBvc3RfaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGl0ZW0udXBkYXRlZF9hdFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgcG9zdF9pZDogaXRlbS5pZCxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgICAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgICAgICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRJRCA9IGBmZWVkLXZpZXcvJHtpdGVtLmlkfWA7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5kYi5kb2MoZG9jdW1lbnRJRCk7XG4gICAgICAgIGRvY3VtZW50LnNldChwb3N0RGF0YSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SUQgPSBgZmVlZC12aWV3LyR7aXRlbS5pZH0vdmlld3MvJHt1c2VyLmlkfWA7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuZGIuZG9jKGRvY3VtZW50SUQpO1xuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0KCkuc3Vic2NyaWJlKChkb2MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRvYy5leGlzdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jLnJlZi5zZXQoZGF0YSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBtYXJjYWRvIGNvbW8gdmlzdWFsaXphZG9cIiwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBqw6EgZm9pIG1hcmNhZG8gY29tbyB2aXN1YWxpemFkb1wiLCBkb2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kYi5jb2xsZWN0aW9uKGAke2RvY3VtZW50SUR9L2hpc3RvcnlgKS5hZGQoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbG9hZChmaWx0ZXJCeU1lOiBhbnkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeU1lID0gZmlsdGVyQnlNZTtcbiAgICAgICAgdGhpcy5nZXRGZWVkKCk7XG4gICAgfVxuXG59XG4iXX0=
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNhcC1mZWVkLWJldGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYXNhcC1mZWVkLWJldGEvIiwic291cmNlcyI6WyJsaWIvYXNhcC1mZWVkLWJldGEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRbkMsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7SUF3QjlCLFlBQ1ksV0FBNEIsRUFDN0IsRUFBb0IsRUFDcEIsS0FBcUIsRUFDckIsY0FBbUMsRUFDbkMsTUFBYztRQUpiLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM3QixPQUFFLEdBQUYsRUFBRSxDQUFrQjtRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTNCbEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFHYixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd4QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRWQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUliLHlCQUFvQixHQUFHLEdBQUcsQ0FB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RCxPQUFPLENBQUMsR0FBRyxDQUFDLCtDQUErQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNyRTtZQUNMLENBQUMsRUFBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUQsTUFBTSxDQUFDLFVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7OztZQXRRSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsZzVGQUE4Qzt5QkFDckMsa0NBQWtDO2FBQzlDOzs7O1lBWFEsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLE1BQU07OztpQkFhVixLQUFLOzRCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkE0SEwsWUFBWSxTQUFDLGVBQWU7Ozs7SUFqSTdCLHdDQUFzQjs7SUFDdEIsd0NBQXNCOztJQUV0QixtQ0FBWTs7SUFDWiw4Q0FBK0I7O0lBQy9CLHlDQUFrQjs7SUFFbEIsc0NBQXFCOztJQUVyQix3Q0FBc0I7O0lBQ3RCLHlDQUF3Qjs7SUFDeEIsNENBQTBCOztJQUMxQixzQ0FBb0I7O0lBQ3BCLHVDQUFjOztJQUNkLHNDQUFhOztJQUNiLHlDQUFnQjs7SUFDaEIscURBQWtDOztJQUNsQyxnREFBK0I7O0lBQy9CLDZDQUE0Qjs7SUFFNUIsMkNBQTBCOzs7OztJQUd0Qiw0Q0FBb0M7O0lBQ3BDLG1DQUEyQjs7SUFDM0Isc0NBQTRCOztJQUM1QiwrQ0FBMEM7O0lBQzFDLHVDQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzYXBGZWVkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXNhcC1mZWVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFzYXBGZWVkQmV0YVNlcnZpY2UgfSBmcm9tICcuL2FzYXAtZmVlZC1iZXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnYXNhcC1jcnVkJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhc2FwLWZlZWQtYmV0YScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FzYXAtZmVlZC1iZXRhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFsnLi9hc2FwLWZlZWQuYmV0YS5jb21wb25lbnRlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBc2FwRmVlZEJldGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgICBwdWJsaWMgaGFzRmVlZCA9IHRydWU7XG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaWQ7XG4gICAgQElucHV0KCkgaWdub3JlQ29udHJvbCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldHRpbmdzO1xuXG4gICAgcHVibGljIGhhc0lEID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc3RvcmllcyA9IHRydWU7XG4gICAgcHVibGljIGFubm91bmNlID0gZmFsc2U7XG4gICAgcHVibGljIHB1YmxpY2F0aW9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcXVlcnkgPSBudWxsO1xuICAgIHB1YmxpYyBmZWVkSUQ7XG4gICAgcHVibGljIGZlZWRzO1xuICAgIHB1YmxpYyBwYWdpbmF0ZTtcbiAgICBwdWJsaWMgdG9wUG9zVG9TdGFydFNob3dpbmcgPSA0MDA7XG4gICAgcHVibGljIHNob3dUb1RvcEJ1dHRvbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1NpbmdsZVBvc3QgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBmaWx0ZXJCeU1lID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmZWVkU2VydmljZTogQXNhcEZlZWRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZGI6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgICAgIHB1YmxpYyByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHB1YmxpYyBjb250cm9sU2VydmljZTogQXNhcEZlZWRCZXRhU2VydmljZSxcbiAgICAgICAgcHVibGljIGdsb2JhbDogR2xvYmFsLFxuICAgICkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICBcbiAgICAgICAgaWYgKCF0aGlzLmlnbm9yZUNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2UgPSB0aGlzLmNvbnRyb2xTZXJ2aWNlLmFubm91bmNlO1xuICAgICAgICAgICAgdGhpcy5zdG9yaWVzID0gdGhpcy5jb250cm9sU2VydmljZS5zdG9yaWVzO1xuICAgICAgICAgICAgdGhpcy5wdWJsaWNhdGlvbiA9IHRoaXMuY29udHJvbFNlcnZpY2UucHVibGljYXRpb247XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5jb250cm9sU2VydmljZS5xdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdRdWVyeSAtPicsIHRoaXMucXVlcnkpO1xuXG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUGFyYW1zIC0+JywgcGFyYW0pO1xuICAgICAgICAgICAgaWYgKHBhcmFtKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtLmZlZWRfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWVkSUQgPSBwYXJhbS5mZWVkX2lkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2luZ2xlUG9zdCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEZlZWQodGhpcy5mZWVkSUQpO1xuICAgICAgICAgICAgICAgICAgICB9LCA2MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGZWVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja0ZlZWRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmVlZElEKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZlZWQodGhpcy5mZWVkSUQpO1xuICAgICAgICAgICAgfSwgNjAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzSUQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb250cm9sU2VydmljZS5xdWVyeSkgdGhpcy5jb250cm9sU2VydmljZS5xdWVyeSA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbFNlcnZpY2UucXVlcnkuc2VhcmNoQnkgPSAndXNlcl9pbmZvLmlkJztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xTZXJ2aWNlLnF1ZXJ5LnNlYXJjaFZhbHVlID0gdGhpcy5pZCArICcmdHlwZVZhbHVlPW51bWJlcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmVlZChmZWVkX2lkID0gJycpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tnZXRGZWVkXSBRdWVyeScsIHRoaXMucXVlcnksIHRoaXMuZmlsdGVyQnlNZSk7XG4gICAgICAgIHRoaXMuZmVlZHMgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmZlZWRTZXJ2aWNlLmdldEZlZWQoZmVlZF9pZCwgdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpLCB0aGlzLnF1ZXJ5LCB0aGlzLmZpbHRlckJ5TWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mZWVkcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRmVlZHMnLCB0aGlzLmZlZWRzKTtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGUgPSByZXNwb25zZS5wYWdpbmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmhhc0ZlZWQgPSAodGhpcy5mZWVkcy5sZW5ndGggPiAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vcmUoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbZ2V0TW9yZV0nLCB0aGlzLnBhZ2luYXRlLm5leHRfZG9jdW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5wYWdpbmF0ZS5uZXh0X2RvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS5nZXRNb3JlRmVlZCg1LCB0aGlzLnBhZ2luYXRlLm5leHRfZG9jdW1lbnQsIHRoaXMuZ2xvYmFsLmxvZ2dlZFVzZXIoKSwgdGhpcy5xdWVyeSwgdGhpcy5maWx0ZXJCeU1lKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW2dldE1vcmVdIEdvdDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJtaXR0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVlZHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0ZSA9IHJlc3BvbnNlLnBhZ2luYXRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0ZlZWRDaGFuZ2UoKSB7XG4gICAgICAgIC8vIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQsIHJlZiA9PiB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVmLm9yZGVyQnkoJ3VwZGF0ZWRfYXQnLCAnZGVzYycpO1xuICAgICAgICAvLyB9KTtcblxuICAgICAgICAvLyBjb2xsZWN0aW9uLnNuYXBzaG90Q2hhbmdlcygpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIltjaGVja0ZlZWRDaGFuZ2VdXCIscmVzcG9uc2UpO1xuICAgICAgICAvLyAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgIC8vICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW2NoZWNrRmVlZENoYW5nZV1cIilcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5nZXRGZWVkKHRoaXMuZmVlZElEKTtcbiAgICAgICAgLy8gICAgICAgICB9LCA2MDApO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9KVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIGNoZWNrU2Nyb2xsKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IDA7XG4gICAgICAgIGlmIChzY3JvbGxQb3NpdGlvbiA+PSB0aGlzLnRvcFBvc1RvU3RhcnRTaG93aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb1RvcEJ1dHRvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb1RvcEJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ290b1RvcCgpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbCh7XG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBlcm1pdHRlZChwb3N0KSB7XG4gICAgICAgIGlmIChwb3N0LnBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgIGlmIChwb3N0LnBlcm1pc3Npb24ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpO1xuICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3N0LnVzZXJfaW5mbyAmJiBwb3N0LnVzZXJfaW5mby5pZCA9PSB1c2VyLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZXIuZXh0cmFzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYXMgPSB1c2VyLmV4dHJhc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGVybSBvZiBwb3N0LnBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBlcm0uZmllbGQgPT0gJ211bHRpLWNvbnRhJykgJiYgKHBlcm0udmFsdWUgPT0gdXNlci5jbGllbnRfaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChleHRyYXNbcGVybS5maWVsZF0gPT0gcGVybS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25OZXdGZWVkKGlkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbb25OZXdGZWVkXScsIGlkKTtcbiAgICAgICAgdGhpcy5mZWVkU2VydmljZS5nZXRGZWVkKGlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMuZmVlZHMubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlZWQgb2YgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGZlZWQuZm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZlZWQgb2YgdGhpcy5mZWVkcykge1xuICAgICAgICAgICAgICAgIGZlZWQuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZlZWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tvbk5ld0ZlZWRdIEZlZWQnLCB0aGlzLmZlZWRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmVlZHNbaV0uaXNIaWdobGlnaHRlZCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mZWVkcyA9IFtcbiAgICAgICAgICAgICAgICAuLi4gdGhpcy5mZWVkcy5zbGljZSgwLCBpbmRleCksXG4gICAgICAgICAgICAgICAgLi4uIHJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4uIHRoaXMuZmVlZHMuc2xpY2UoaW5kZXgpXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZvY3VzLW9uLW1lJylbMF07XG4gICAgICAgICAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kVmlzaWJsZShpdGVtKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBtYXJjYW5kbyBjb21vIHZpc3VhbGl6YWRvXCIsIGl0ZW0pO1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5nbG9iYWwubG9nZ2VkVXNlcigpO1xuXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcbiAgICAgICAgICAgIHBvc3RfaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IGl0ZW0udXBkYXRlZF9hdFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgcG9zdF9pZDogaXRlbS5pZCxcbiAgICAgICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUubm93KCksXG4gICAgICAgICAgICB1cGRhdGVkX2F0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgdXNlcl9pbmZvOiB7XG4gICAgICAgICAgICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICAgICAgICAgICAgdXBkYXRlZF9hdDogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgICAgICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRJRCA9IGBmZWVkLXZpZXcvJHtpdGVtLmlkfWA7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5kYi5kb2MoZG9jdW1lbnRJRCk7XG4gICAgICAgIGRvY3VtZW50LnNldChwb3N0RGF0YSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SUQgPSBgZmVlZC12aWV3LyR7aXRlbS5pZH0vdmlld3MvJHt1c2VyLmlkfWA7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuZGIuZG9jKGRvY3VtZW50SUQpO1xuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0KCkuc3Vic2NyaWJlKChkb2MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRvYy5leGlzdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jLnJlZi5zZXQoZGF0YSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBtYXJjYWRvIGNvbW8gdmlzdWFsaXphZG9cIiwgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3NlbmRWaXNpYmxlXSBqw6EgZm9pIG1hcmNhZG8gY29tbyB2aXN1YWxpemFkb1wiLCBkb2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kYi5jb2xsZWN0aW9uKGAke2RvY3VtZW50SUR9L2hpc3RvcnlgKS5hZGQoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbG9hZChmaWx0ZXJCeU1lOiBhbnkpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeU1lID0gZmlsdGVyQnlNZTtcbiAgICAgICAgdGhpcy5nZXRGZWVkKCk7XG4gICAgfVxuXG59XG4iXX0=
@@ -14,6 +14,7 @@ import { UtilsService } from '../services/utils.service';
14
14
  import { MatDialog } from '@angular/material/dialog';
15
15
  import SwiperCore, { Navigation, Pagination } from 'swiper';
16
16
  import { TranslateService } from '@ngx-translate/core';
17
+ import { DomSanitizer } from '@angular/platform-browser';
17
18
  SwiperCore.use([Navigation, Pagination]);
18
19
  export class FeedItemComponent {
19
20
  /**
@@ -23,14 +24,16 @@ export class FeedItemComponent {
23
24
  * @param {?} dialog
24
25
  * @param {?} service
25
26
  * @param {?} translate
27
+ * @param {?} sanitizer
26
28
  */
27
- constructor(streamService, db, global, dialog, service, translate) {
29
+ constructor(streamService, db, global, dialog, service, translate, sanitizer) {
28
30
  this.streamService = streamService;
29
31
  this.db = db;
30
32
  this.global = global;
31
33
  this.dialog = dialog;
32
34
  this.service = service;
33
35
  this.translate = translate;
36
+ this.sanitizer = sanitizer;
34
37
  this.isVisible = new EventEmitter();
35
38
  this.imageLoaded = false;
36
39
  this.imageDataLoaded = false;
@@ -132,6 +135,16 @@ export class FeedItemComponent {
132
135
  this.videoplayer.nativeElement.play();
133
136
  }
134
137
  }
138
+ /**
139
+ * @param {?} str
140
+ * @return {?}
141
+ */
142
+ sanitizedLinkify(str) {
143
+ // return str;
144
+ /** @type {?} */
145
+ const sanitized = this.sanitizer.bypassSecurityTrustHtml(this.linkify(str));
146
+ return sanitized;
147
+ }
135
148
  /**
136
149
  * @param {?} str
137
150
  * @return {?}
@@ -161,7 +174,7 @@ export class FeedItemComponent {
161
174
  if (www)
162
175
  return "<a class='text-primary' href=\"http://" + www + "\">" + www + "</a>";
163
176
  if (mail)
164
- return "<a class='text-primary' href=\"#</a>";
177
+ return "<a class='text-primary' href=\"mailto://" + mail + "\">" + mail + "</a>";
165
178
  if (twitler)
166
179
  return "<a class='text-primary' href=\"portal/search/" + encodeURIComponent('#' + twitler) + "\">#" + twitler + "</a>";
167
180
  // return "<a class='text-primary' href=\"#\">#" + twitler + "</a>";
@@ -295,7 +308,7 @@ export class FeedItemComponent {
295
308
  FeedItemComponent.decorators = [
296
309
  { type: Component, args: [{
297
310
  selector: 'app-feed-item',
298
- template: "<ng-container *ngIf=\"item && item.status && !item.deleted\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <popover-content #myPopover placement=\"auto right\" [closeOnClickOutside]=\"false\" [closeOnMouseOutside]=\"false\"\n [animation]=\"true\">\n <div class='minibio'>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\" alt=\"{{ item?.user_info?.name }}\">\n <div class=\"info\"><b>{{ item?.user_info?.name }}</b><br />\n <!-- <span class=\"location\"><i class=\"icon fa fa-globe\" aria-hidden=\"true\"></i>&nbsp;Fortaleza/CE</span> -->\n </div>\n </div>\n </popover-content>\n <div mat-card-avatar>\n <a [routerLink]=\"['/profile',item.user_info?.id]\"><img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar mr-1\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\" [popover]=\"myPopover\" [popoverOnHover]=\"true\"></a>\n </div>\n\n <mat-card-title>\n <h4 class=\"ml-2\"><b><a [routerLink]=\"['/profile',item.user_info?.id]\">{{ item?.user_info?.name }}</a> <i\n *ngIf=\"item?.channel_id\" class=\"material-icons text-primary\" matTooltip=\"Este \u00E9 um post Institucional\"\n matTooltipClass=\"tooltip-primary\">done_all</i></b>\n </h4>\n <p class=\"ml-2\"> {{ 'SharedPublication' | translate }} <a [routerLink]=\"['/start',item.id]\">{{\n item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <ng-container *ngIf=\"global.loggedUser()\">\n <div class=\"feed-buttom-option\" *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [disabled]=\"!item.status\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditItem()\" [disabled]=\"!item.status\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"onRemoveItem(item)\" [disabled]=\"!item.status\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n <div *ngIf=\"item.isHighlighted\" matTooltip=\"Post destacado\" class=\"feed-buttom-option pinned-feed\">\n <i class=\"fa fa-thumb-tack fa-lg\"></i>\n </div>\n </ng-container>\n\n </mat-card-header>\n\n <ng-container *ngIf=\"item.type != 'announce'\">\n <ng-container *ngIf=\"!(item.files && item.files.length > 0)\">\n <div class=\"card card-file mt-0 pointer\">\n <!-- <div class=\"card-cover\"> -->\n <ng-container *ngIf=\"item.additional_data && item.additional_data.image\">\n <img style=\"display: none;\" [src]=\"item.additional_data.image\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"item.additional_data.image\">\n <img mat-card-image [src]=\"item.additional_data.image\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n </ng-container>\n <!-- </div> -->\n <a *ngIf=\"item.additional_data && item.additional_data.file_id\"\n [routerLink]=\"['/channel/files/' + item.channel_id +'/'+ item.additional_data.file_id]\" class=\"circle\">\n <i class=\"fa fa-file-text-o\"></i>\n </a>\n <div *ngIf=\"item.additional_data && item.additional_data.description\" class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"description m-3\" [innerHTML]=\"linkify(item.additional_data.description)\"></p>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.files && item.files.length > 0\">\n\n <ng-container *ngIf=\"item.files.length === 1\">\n <ng-container *ngFor=\"let file of item.files\">\n <ng-container *ngIf=\"file.type == 'image'\">\n\n <img style=\"display: none;\" [src]=\"file.name || file.url\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"file.name || file.url\">\n <img mat-card-image [src]=\"file.name || file.url\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'video'\">\n <div class=\"carousel custom-carrousel\">\n <div class=\"content\">\n <div class=\"item\">\n <div class=\"video-overlay cloudinary-true\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\"></div>\n\n <div class=\"video-overlay youtube-true\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <div class=\"video-overlay not-cloudinary-youtube\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video not-cloudinary-youtube\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video cloudinary-true\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'pdf' || file.type == 'txt'\">\n <div class=\"container-mat-card px-3\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id + '/' + file.file_id]\" class=\"w-100\">\n\n <div class=\"card card-file mt-0 pointer\">\n <div class=\"card-cover\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\">\n <ng-container *ngIf=\"file.image\">\n <img [src]=\"file.image\" alt=\"\">\n </ng-container>\n\n <ng-container *ngIf=\"!file.image || file.image == null\">\n <h4 class=\"title\" [innerHTML]=\"linkify(file.title)\"></h4>\n </ng-container>\n </a>\n </div>\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\" class=\"circle\">\n <i *ngIf=\"file.type == 'pdf'\" class=\"fa fa-file-pdf-o\"></i>\n <i *ngIf=\"file.type == 'txt'\" class=\"fa fa-file-text-o\"></i>\n </a>\n <div class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"title mb-1\" style=\"color: #414141 !important; text-shadow: none !important; font-weight: 500 !important;\" [innerHTML]=\"linkify(file.title)\"></p>\n <p class=\"description mb-3\" [innerHTML]=\"linkify(file.description)\"></p>\n </div>\n </div>\n\n </a>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'embed'\">\n <iframe class=\"video\" style=\"height: 280px; width: 100%;margin-top: 15px;\"\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\" allowfullscreen></iframe>\n </ng-container>\n\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"item.files.length > 1\">\n\n <!-- Carrosel de Imavens e v\u00EDdeos -->\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n\n <!-- Imagem -->\n\n <ng-container *ngIf=\"file.type === 'image'\">\n <ng-container *ngIf=\"file.url\">\n <div class=\"swiper-container-img\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.url+')'\">\n </div>\n <img class=\"img\" [src]=\"file.url\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.name\">\n <div class=\"swiper-container-img\" [style.backgroundImage]=\"'url('+file.name+')'\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.name+')'\">\n </div>\n <img class=\"img\" [src]=\"file.name\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Video -->\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container>\n\n <!-- Verifica se o V\u00EDdeo \u00E9 a primeira posi\u00E7\u00E3o do Slide -->\n <!-- <ng-container *ngIf=\" i === 0\">\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer\n *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer\n *ngIf=\"file.isCloudinary === true\" (click)=\"playVideo($event)\"\n (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\" width=\"100%\"\n controls=\"false\" preload=\"metadata\" poster=\"{{file.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube === true\">\n <iframe attr.type='youtube' #videoPlayer\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container> -->\n\n </ng-container>\n\n <ng-template #infiniteContainer></ng-template>\n </div>\n </div>\n </swiper>\n </div>\n\n <!-- Fim Carrosel de Imagens e V\u00EDdeos -->\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"item.type == 'announce'\">\n <div class=\"ribbon ribbon-top-right\"><span>An\u00FAncio</span></div>\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n <ng-container *ngIf=\"file.type === 'image'\">\n <div class=\"img\" [style.backgroundImage]=\"'url('+file.name+')'\" *ngIf=\"file.name\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" [style.background-image]=\"file.url | stream:'styleThumbUrl'\">\n </div>\n\n <video class=\"video\" width=\"100%\" preload=\"metadata\" poster=\"{{ file?.url | stream:'thumb' }}\">\n <source [src]=\"file?.url | stream:'link'\" />\n </video>\n\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n <ng-template #infiniteContainer></ng-template>\n </swiper>\n </div>\n\n <div class=\"pull-right mt-3\" [routerLink]=\"['/market/product/', item.product.id]\">\n <button class=\"btn btn-primary\">\n <i class=\"fa fa-shopping-cart\"></i>\n {{ preConvertNumber(item?.product?.valorDe) | currency:'BRL':true}} -\n {{ preConvertNumber(item?.product?.valorAte) | currency:'BRL':true}}\n </button>\n </div>\n <p *ngIf=\"item?.product?.data?.descr\" [innerHTML]=\"item.product.descr\"></p>\n </ng-container>\n\n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" *ngIf=\"item.additional_data?.type != 'video'\" [innerHTML]=\"linkify(item.additional_data?.description)\"></span>\n \n <feed-actions [settings]=\"settings\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n\n </mat-card>\n</ng-container>\n\n<ng-container *ngIf=\"item && !item.status\">\n <ng-container *ngIf=\"global.loggedUser()\">\n <ng-container *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <ng-container *ngIf=\"item\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <div mat-card-avatar>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\">\n </div>\n <mat-card-title>\n <h4><b>{{ item?.user_info?.name }}</b></h4>\n <p> {{ 'SharedPublication' | translate }} <a>{{ item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <div class=\"feed-buttom-option\" *ngIf=\"false\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"false\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"false\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n\n </mat-card-header>\n\n <ng-container>\n <div class=\"col-sm-12 mx-auto text-center post-processing-section\">\n <img src=\"https://image.flaticon.com/icons/svg/2654/2654464.svg\" width=\"30%\">\n <h4>Estamos processando os dados do seu Post!</h4>\n <p>No momento ele est\u00E1 vis\u00EDvel apenas para voc\u00EA, mas logo estar\u00E1 dispon\u00EDvel para todos!</p>\n </div>\n </ng-container>\n \n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <feed-actions [settings]=\"settings\" prefix=\"prefix\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" prefix=\"prefix\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n </mat-card>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n",
311
+ template: "<ng-container *ngIf=\"item && item.status && !item.deleted\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <popover-content #myPopover placement=\"auto right\" [closeOnClickOutside]=\"false\" [closeOnMouseOutside]=\"false\"\n [animation]=\"true\">\n <div class='minibio'>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\" alt=\"{{ item?.user_info?.name }}\">\n <div class=\"info\"><b>{{ item?.user_info?.name }}</b><br />\n <!-- <span class=\"location\"><i class=\"icon fa fa-globe\" aria-hidden=\"true\"></i>&nbsp;Fortaleza/CE</span> -->\n </div>\n </div>\n </popover-content>\n <div mat-card-avatar>\n <a [routerLink]=\"['/profile',item.user_info?.id]\"><img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar mr-1\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\" [popover]=\"myPopover\" [popoverOnHover]=\"true\"></a>\n </div>\n\n <mat-card-title>\n <h4 class=\"ml-2\"><b><a [routerLink]=\"['/profile',item.user_info?.id]\">{{ item?.user_info?.name }}</a> <i\n *ngIf=\"item?.channel_id\" class=\"material-icons text-primary\" matTooltip=\"Este \u00E9 um post Institucional\"\n matTooltipClass=\"tooltip-primary\">done_all</i></b>\n </h4>\n <p class=\"ml-2\"> {{ 'SharedPublication' | translate }} <a [routerLink]=\"['/start',item.id]\">{{\n item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <ng-container *ngIf=\"global.loggedUser()\">\n <div class=\"feed-buttom-option\" *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [disabled]=\"!item.status\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditItem()\" [disabled]=\"!item.status\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"onRemoveItem(item)\" [disabled]=\"!item.status\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n <div *ngIf=\"item.isHighlighted\" matTooltip=\"Post destacado\" class=\"feed-buttom-option pinned-feed\">\n <i class=\"fa fa-thumb-tack fa-lg\"></i>\n </div>\n </ng-container>\n\n </mat-card-header>\n\n <ng-container *ngIf=\"item.type != 'announce'\">\n <ng-container *ngIf=\"!(item.files && item.files.length > 0)\">\n <div class=\"card card-file mt-0 pointer\">\n <!-- <div class=\"card-cover\"> -->\n <ng-container *ngIf=\"item.additional_data && item.additional_data.image\">\n <img style=\"display: none;\" [src]=\"item.additional_data.image\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"item.additional_data.image\">\n <img mat-card-image [src]=\"item.additional_data.image\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n </ng-container>\n <!-- </div> -->\n <a *ngIf=\"item.additional_data && item.additional_data.file_id\"\n [routerLink]=\"['/channel/files/' + item.channel_id +'/'+ item.additional_data.file_id]\" class=\"circle\">\n <i class=\"fa fa-file-text-o\"></i>\n </a>\n <div *ngIf=\"item.additional_data && item.additional_data.description\" class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"description m-3\" [innerHTML]=\"linkify(item.additional_data.description)\"></p>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.files && item.files.length > 0\">\n\n <ng-container *ngIf=\"item.files.length === 1\">\n <ng-container *ngFor=\"let file of item.files\">\n <ng-container *ngIf=\"file.type == 'image'\">\n\n <img style=\"display: none;\" [src]=\"file.name || file.url\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n\n <div class=\"container-mat-card\" *ngIf=\"imageLoaded\">\n <img class=\"bg-mat-card\" [src]=\"file.name || file.url\">\n <img mat-card-image [src]=\"file.name || file.url\">\n </div>\n\n <div class=\"container-mat-card\" *ngIf=\"!imageLoaded\">\n <img mat-card-image [src]=\"'assets/img/background-blur-' + blurBackgroundIndex + '.png'\">\n </div>\n\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'video'\">\n <div class=\"carousel custom-carrousel\">\n <div class=\"content\">\n <div class=\"item\">\n <div class=\"video-overlay cloudinary-true\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\"></div>\n\n <div class=\"video-overlay youtube-true\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <div class=\"video-overlay not-cloudinary-youtube\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\"></div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video not-cloudinary-youtube\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video cloudinary-true\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'pdf' || file.type == 'txt'\">\n <div class=\"container-mat-card px-3\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id + '/' + file.file_id]\" class=\"w-100\">\n\n <div class=\"card card-file mt-0 pointer\">\n <div class=\"card-cover\">\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\">\n <ng-container *ngIf=\"file.image\">\n <img [src]=\"file.image\" alt=\"\">\n </ng-container>\n\n <ng-container *ngIf=\"!file.image || file.image == null\">\n <h4 class=\"title\" [innerHTML]=\"linkify(file.title)\"></h4>\n </ng-container>\n </a>\n </div>\n <a [routerLink]=\"['/channel/files/' + file.channel_id +'/'+ file.file_id]\" class=\"circle\">\n <i *ngIf=\"file.type == 'pdf'\" class=\"fa fa-file-pdf-o\"></i>\n <i *ngIf=\"file.type == 'txt'\" class=\"fa fa-file-text-o\"></i>\n </a>\n <div class=\"card-content\">\n <div class=\"clearfix\"></div>\n <p class=\"title mb-1\" style=\"color: #414141 !important; text-shadow: none !important; font-weight: 500 !important;\" [innerHTML]=\"linkify(file.title)\"></p>\n <p class=\"description mb-3\" [innerHTML]=\"linkify(file.description)\"></p>\n </div>\n </div>\n\n </a>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type == 'embed'\">\n <iframe class=\"video\" style=\"height: 280px; width: 100%;margin-top: 15px;\"\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\" allowfullscreen></iframe>\n </ng-container>\n\n </ng-container>\n </ng-container>\n\n\n <ng-container *ngIf=\"item.files.length > 1\">\n\n <!-- Carrosel de Imavens e v\u00EDdeos -->\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n\n <!-- Imagem -->\n\n <ng-container *ngIf=\"file.type === 'image'\">\n <ng-container *ngIf=\"file.url\">\n <div class=\"swiper-container-img\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.url+')'\">\n </div>\n <img class=\"img\" [src]=\"file.url\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.name\">\n <div class=\"swiper-container-img\" [style.backgroundImage]=\"'url('+file.name+')'\">\n <div class=\"swiper-bg-blur\" [style.backgroundImage]=\"'url('+file.name+')'\">\n </div>\n <img class=\"img\" [src]=\"file.name\" alt=\"\" (load)=\"onloadImage($event)\"\n (error)=\"onErrorImage($event)\">\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Video -->\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer *ngIf=\"file.isCloudinary == true\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\"\n width=\"100%\" controls=\"false\" preload=\"metadata\" poster=\"{{file?.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube == true\">\n <iframe attr.type='youtube' #videoPlayer [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container>\n\n <!-- Verifica se o V\u00EDdeo \u00E9 a primeira posi\u00E7\u00E3o do Slide -->\n <!-- <ng-container *ngIf=\" i === 0\">\n\n <div class=\"video-overlay\" *ngIf=\"file.isCloudinary == true\"\n [style.background-image]=\"file.thumb | stream: 'backgroundImage'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isYoutube == true\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <div class=\"video-overlay\" *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n [style.background-image]=\"file.url | stream: 'styleThumbUrl'\">\n </div>\n\n <video attr.type='stream' #videoPlayer\n *ngIf=\"!file.isCloudinary && !file.isYoutube\"\n (click)=\"playVideo($event)\" (onloadeddata)=\"checkVideoRender(file.url)\"\n class=\"video\" width=\"100%\" controls=\"false\" preload=\"metadata\"\n poster=\"{{file.url | stream:'thumb'}}\">\n <source [src]=\"file.url | stream:'link'\" />\n </video>\n\n <video attr.type='cloudinary' #videoPlayer\n *ngIf=\"file.isCloudinary === true\" (click)=\"playVideo($event)\"\n (onloadeddata)=\"checkVideoRender(file.url)\" class=\"video\" width=\"100%\"\n controls=\"false\" preload=\"metadata\" poster=\"{{file.thumb}}\">\n <source [src]=\"file.url\" />\n </video>\n\n <ng-container *ngIf=\"file.isYoutube === true\">\n <iframe attr.type='youtube' #videoPlayer\n [src]=\"file.url | safe:'resourceUrl'\" frameborder=\"0\"\n frameborder=\"0\" width=\"100%\" class=\"video\"></iframe>\n </ng-container>\n\n </ng-container> -->\n\n </ng-container>\n\n <ng-template #infiniteContainer></ng-template>\n </div>\n </div>\n </swiper>\n </div>\n\n <!-- Fim Carrosel de Imagens e V\u00EDdeos -->\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"item.type == 'announce'\">\n <div class=\"ribbon ribbon-top-right\"><span>An\u00FAncio</span></div>\n\n <div class=\"swiper-stage\">\n <swiper [config]=\"global.swiperConfig(false)\">\n <div swiperSlide *ngFor=\"let file of item.files; let i = index\">\n <div class=\"swiper-carousel-custom\">\n <ng-container *ngIf=\"file.type === 'image'\">\n <div class=\"img\" [style.backgroundImage]=\"'url('+file.name+')'\" *ngIf=\"file.name\">\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"file.type === 'video'\">\n\n <ng-container>\n\n <div class=\"video-overlay\" [style.background-image]=\"file.url | stream:'styleThumbUrl'\">\n </div>\n\n <video class=\"video\" width=\"100%\" preload=\"metadata\" poster=\"{{ file?.url | stream:'thumb' }}\">\n <source [src]=\"file?.url | stream:'link'\" />\n </video>\n\n </ng-container>\n\n </ng-container>\n </div>\n </div>\n <ng-template #infiniteContainer></ng-template>\n </swiper>\n </div>\n\n <div class=\"pull-right mt-3\" [routerLink]=\"['/market/product/', item.product.id]\">\n <button class=\"btn btn-primary\">\n <i class=\"fa fa-shopping-cart\"></i>\n {{ preConvertNumber(item?.product?.valorDe) | currency:'BRL':true}} -\n {{ preConvertNumber(item?.product?.valorAte) | currency:'BRL':true}}\n </button>\n </div>\n <p *ngIf=\"item?.product?.data?.descr\" [innerHTML]=\"item.product.descr\"></p>\n </ng-container>\n\n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"sanitizedLinkify(item.title)\"></span>\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" *ngIf=\"item.additional_data?.type != 'video'\" [innerHTML]=\"linkify(item.additional_data?.description)\"></span>\n \n <feed-actions [settings]=\"settings\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n\n </mat-card>\n</ng-container>\n\n<ng-container *ngIf=\"item && !item.status\">\n <ng-container *ngIf=\"global.loggedUser()\">\n <ng-container *ngIf=\"item.user_info.id === global.loggedUser().id\">\n <ng-container *ngIf=\"item\">\n <mat-card #visibleControl class=\"feed-card\" id=\"{{ item.id +'#'+ item.type}}\">\n <mat-card-header class=\"feed-header ml-2\">\n <div mat-card-avatar>\n <img\n [src]=\"(item.user_info?.picture)? item.user_info.picture : 'assets/img/default-avatar.png' || 'assets/img/default-avatar.png'\"\n class=\"feed-avatar\" (error)=\"item.user_info.picture = 'assets/img/default-avatar.png'\"\n alt=\"{{ item?.user_info?.name }}\">\n </div>\n <mat-card-title>\n <h4><b>{{ item?.user_info?.name }}</b></h4>\n <p> {{ 'SharedPublication' | translate }} <a>{{ item?.updated_at | amTimeAgo }}</a></p>\n </mat-card-title>\n\n <div class=\"feed-buttom-option\" *ngIf=\"false\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"false\">\n <mat-icon>create</mat-icon>\n <span>{{ 'Edit' | translate }}</span>\n </button>\n <button mat-menu-item (click)=\"false\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'Remove' | translate }}</span>\n </button>\n </mat-menu>\n </div>\n\n </mat-card-header>\n\n <ng-container>\n <div class=\"col-sm-12 mx-auto text-center post-processing-section\">\n <img src=\"https://image.flaticon.com/icons/svg/2654/2654464.svg\" width=\"30%\">\n <h4>Estamos processando os dados do seu Post!</h4>\n <p>No momento ele est\u00E1 vis\u00EDvel apenas para voc\u00EA, mas logo estar\u00E1 dispon\u00EDvel para todos!</p>\n </div>\n </ng-container>\n \n <div class=\"mat-card-content\">\n <span class=\"ws-pre-wrap post-text mt-1 mb-4\" [innerHTML]=\"linkify(item.title)\"></span>\n <feed-actions [settings]=\"settings\" prefix=\"prefix\" [item]=\"item\"></feed-actions>\n <feed-comments [settings]=\"settings\" prefix=\"prefix\" [feed_id]=\"item.id\" [user]=\"item.user_info\"></feed-comments>\n </div>\n </mat-card>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n",
299
312
  providers: [StreamService],
300
313
  styles: ["li,ul{list-style:none!important}a,a:hover{text-decoration:none}.text-primary{color:var(--main-color)}.card{border-radius:6px;box-shadow:1px 1px 10px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 10px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 10px rgba(201,191,187,.7);border:none;margin-bottom:30px;margin-top:0}.card .card-content{flex:1 1 auto;padding:1.25rem}.comments{margin:30px -15px}.comments h4{font-size:16px;color:#414141;margin-bottom:0;font-weight:600}.comments p{margin:5px 15px 5px 65px;font-size:14px;word-break:break-all}.post-text{white-space:pre-wrap!important;font-size:14px}.form-feed{width:100%;margin:0 0 25px!important;padding:10px 15px!important;border-radius:8px;box-shadow:1px 1px 15px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7);background-color:#fff!important}.form-feed .title{font-size:16px;margin-bottom:10px;border-bottom:1px solid #eee;padding-bottom:10px}.form-feed textarea{float:left;width:calc(100% - 50px);border-bottom:1px solid #eee;border-top:transparent;border-left:transparent;border-right:transparent;box-shadow:none;padding:5px 10px;outline:0!important}.form-input-btn a{float:right;border:none!important;box-shadow:none!important;background:0 0;padding:0;margin-top:12px;position:relative;right:0;left:0;margin-bottom:0;color:#8e8994}.form-input-btn a .material-icons{font-size:18px}.mat-dialog-container{padding:0!important}.form-comment{width:100%;margin:0!important;padding:15px 0 0!important;border-top:1px solid #eee}.form-comment input[type=text]{float:left;width:calc(100% - 50px);border:1px solid #eee;box-shadow:none;border-radius:30px;padding:5px 10px;outline:0}input::-webkit-input-placeholder{color:#ccc}input::-moz-placeholder{color:#ccc}input:-ms-input-placeholder{color:#ccc}input::-ms-input-placeholder{color:#ccc}input::placeholder{color:#ccc}.avatar-30{float:left;width:30px;height:30px;margin-right:10px;border-radius:50%}.avatar-30-null{display:flex;align-items:center;justify-content:center;float:left;width:30px;height:30px;margin-right:10px;border-radius:50%;background:#fafafa;color:#bbb}.comment-time{position:absolute;right:15px}.avatar-45{float:left;width:40px;height:40px;margin-right:10px;border-radius:50%}.avatar-45-null{display:flex;align-items:center;justify-content:center;float:left;width:40px;height:40px;margin-right:10px;border-radius:50%;background:#fafafa;color:#bbb;border:1.3px solid var(--main-color)}.super-post{position:absolute;right:15px;top:10px;font-size:1.8em;color:#888}.icons-comments{margin:10px 0 0;padding:10px 20px;border-top:1px solid #eee;border-bottom:1px solid #eee}.icons-comments li{display:inline-block;margin-right:30px;font-size:14px}.icons-comments li:last-child{margin-right:0;position:absolute;right:20px}.icons-comments li a{color:#4a4a4a;cursor:pointer}.icons-comments li a.active,.icons-comments li a:hover{color:var(--main-color)}.icons-comments .fa{font-size:16px}.card-file{width:100%;margin:0 auto 30px;box-shadow:0 0 30px rgba(204,204,204,.4);border:none;border-radius:12px;transition:.5s}.card-file:hover{box-shadow:0 0 30px rgba(204,204,204,.8)}.card-file .card-cover{display:flex;align-items:center;justify-content:center;padding:15px;position:relative;width:100%;height:160px;border-top-left-radius:16px;border-top-right-radius:12px;-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:1;background:var(--main-color);color:#fff!important}.card-file .card-content{height:auto;padding:0 15px}.card-file .card-content .description{color:#888}.card-file .title{color:#fff;margin-bottom:0;font-size:18px;text-shadow:2px 2px 2px #101010}.btn-feed{width:auto;font-size:12px;padding:2px 10px;border-radius:30px;font-weight:600;text-transform:capitalize}.btn-group-xs>.btn,.btn-xs{padding:2px 15px 3px;font-size:13px;line-height:1;border-radius:30px}.btn-primary,.btn-primary:hover{color:var(--text-btn)!important;background-color:var(--bg-btn);border-color:var(--bg-btn)}.btn-primary.focus,.btn-primary:focus{background-color:var(--bg-btn);border-color:var(--bg-btn);box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-primary.disabled,.btn-primary:disabled,.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:var(--text-btn)!important;background-color:var(--bg-btn);border-color:var(--bg-btn)}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-secondary{color:#fff;background-color:#111;border-color:#111}.btn-secondary:hover{color:#fff;background-color:#333;border-color:#333}.btn-secondary.focus,.btn-secondary:focus{background-color:#333;border-color:#333;box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#111;border-color:#111}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#333;border-color:#333}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,0,0,.5)}.ribbon{width:150px;height:150px;overflow:hidden;position:absolute;z-index:1}.ribbon::after,.ribbon::before{position:absolute;z-index:-1;content:\"\";display:block;border:5px solid var(--bg-btn)}.ribbon span{position:absolute;display:block;width:225px;padding:15px 0;background-color:var(--bg-btn);box-shadow:0 5px 10px rgba(0,0,0,.1);color:#fff;font:700 18px/1 Lato,sans-serif;text-shadow:0 1px 1px rgba(0,0,0,.2);text-transform:uppercase;text-align:center}.ribbon-top-left{top:-10px;left:-10px;background:0 0}.ribbon-top-left::after,.ribbon-top-left::before{border-top-color:transparent;border-left-color:transparent}.ribbon-top-left::before{top:0;right:0}.ribbon-top-left::after{bottom:0;left:0}.ribbon-top-left span{right:-25px;top:30px;transform:rotate(-45deg)}.ribbon-top-right{top:-10px;right:-10px;background:0 0!important}.ribbon-top-right::after,.ribbon-top-right::before{border-top-color:transparent;border-right-color:transparent}.ribbon-top-right::before{top:0;left:0}.ribbon-top-right::after{bottom:0;right:0}.ribbon-top-right span{left:-25px;top:30px;transform:rotate(45deg)}.ribbon-bottom-left{bottom:-10px;left:-10px}.ribbon-bottom-left::after,.ribbon-bottom-left::before{border-bottom-color:transparent;border-left-color:transparent}.ribbon-bottom-left::before{bottom:0;right:0}.ribbon-bottom-left::after{top:0;left:0}.ribbon-bottom-left span{right:-25px;bottom:30px;transform:rotate(225deg)}.ribbon-bottom-right{bottom:-10px;right:-10px}.ribbon-bottom-right::after,.ribbon-bottom-right::before{border-bottom-color:transparent;border-right-color:transparent}.ribbon-bottom-right::before{bottom:0;left:0}.ribbon-bottom-right::after{top:0;right:0}.ribbon-bottom-right span{left:-25px;bottom:30px;transform:rotate(-225deg)}.video-container{min-height:200px}.video-container img{width:100%;-o-object-fit:cover;object-fit:cover;-webkit-filter:blur(10px);filter:blur(10px)}.video-player{top:0;left:1px;width:calc(100% - 2px)}.tmp-file-buttons-overlay{opacity:1}.overlayed{opacity:1!important;visibility:visible}.tmp-file-status-overlay{position:absolute;background:rgba(0,0,0,.5);text-align:center;z-index:999;color:#fff;width:156px;height:120px;padding:20px}.tmp-file-status-overlay p{color:#fff}.tmp-file-buttons-overlay{background:rgba(0,0,0,.5);width:156px;height:120px;position:absolute;z-index:999;visibility:visible;opacity:1;transition:opacity .5s ease-out}.tmp-file-remove-button{position:absolute;right:5px;text-align:right;width:10px;color:#fff;padding:0 1px;border-radius:0}.tmp-file-content{width:156px;height:120px;overflow:hidden}.tmp-upload-video{-o-object-fit:contain;object-fit:contain}.tmp-file-wrapper{position:relative}.tmp-upload{-o-object-fit:cover;object-fit:cover;width:156px;height:120px}.tmp-file-wrapper-container{padding:20px 0 0;margin:20px -15px;border-width:1px 0;border-color:#ccc;border-style:solid}.hide{display:none}.masonry{display:flex;flex-flow:row wrap;margin:20px 0 -2px}.masonry-brick{flex:auto;height:250px;min-width:150px;margin:2px;position:relative;cursor:pointer}.masonry-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.masonry-brick:nth-child(4n+1){width:50%}.masonry-brick:nth-child(4n+2){width:40%}.masonry-brick:nth-child(4n+3){width:20%}.masonry-brick:nth-child(4n+4){width:30%}.masonry-brick-full{width:100%!important;height:291px!important;overflow:hidden;outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.card-body{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.card .circle{float:left;position:relative;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;margin:-30px 10px 15px 15px;background:#eee;z-index:1;font-size:1.5em;color:#414141!important}.card-team .card-content{width:100%;height:160px;margin-bottom:10px}.card-classroom{padding:15px;box-shadow:1px 1px 5px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 5px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 5px rgba(201,191,187,.7);margin-bottom:20px}.play-overlay{position:absolute;top:0;left:0;width:100%;text-align:center;height:291px;line-height:291px;background:rgba(0,0,0,.05)}.play-overlay img{width:80px;height:80px}.preview-wrapper{position:relative;margin-top:30px}.preview-image img{outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.preview-button{position:absolute;top:0;right:0;color:#fff}.preview-text{position:relative;background:#f9f9f9;border:1px solid #ccc;padding:11px;margin-top:-7px}.img-with-outline{outline:rgba(0,0,0,.2) solid 1px;outline-offset:-1px}.mt-5{margin-top:2em}.feed-card{width:100%;margin-bottom:30px;box-shadow:1px 1px 15px rgba(201,191,187,.7);-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7);-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7)}.feed-card .feed-header{margin-bottom:10px}.feed-card .feed-header .feed-avatar{float:left;width:40px;height:40px;margin-right:5px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:2px solid #e6e5e5}.feed-card .feed-header .feed-buttom-option{position:absolute;top:5px;right:0;z-index:21}.mat-card{padding:15px 0 10px!important}.mat-card .mat-card-header .mat-card-title h4{font-size:16px;margin-bottom:0}.mat-card .mat-card-header .mat-card-title p{font-size:13px;color:#aaa}.container-mat-card{display:flex;align-items:flex-end;justify-content:flex-end;position:relative;overflow:hidden;margin:0 0 10px}.bg-mat-card{display:block;position:absolute;z-index:15;width:100%;height:calc(100% - 30px);-webkit-filter:blur(40px) brightness(80%);filter:blur(40px) brightness(80%);background-size:cover;background-repeat:no-repeat;background-position:center}.mat-card-image{position:relative;z-index:20;margin:0!important;-o-object-fit:contain;object-fit:contain;height:auto;max-height:540px;display:block;width:100%}.feed-comment-option{float:right;margin-top:-10px;margin-left:0}.clickable{cursor:pointer;color:var(--main-color)}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:.2s ease-in-out}.show-scroll{opacity:1;transition:.2s ease-in-out}.feed-actions{color:#ccc;font-size:16px;margin-right:10px;margin-bottom:5px;margin-left:10px}.feed-actions span{margin-left:5px}.feed-actions .btn{background:0 0!important;border:none!important}.feed-likes{font-size:13px;margin-top:10px}a.is-liked{color:var(--main-color)!important}a.disabled-like{color:#ccc!important;cursor:not-allowed;text-decoration:none;pointer-events:none}.carousel{margin-bottom:10px;margin-left:0;margin-right:0}.carousel-item{-o-object-fit:cover!important;object-fit:cover!important;max-height:400px;-o-object-position:center;object-position:center}.video-player{position:initial!important}::ng-deep .ws-pre-wrap h4{font-size:18px!important}::ng-deep .ws-pre-wrap a{color:var(--main-color)}.SeeMore{display:block;color:var(--main-color)!important;text-align:center;cursor:pointer}.carousel-stage{position:relative;z-index:0;min-height:100px}.carousel-stage .progress{height:8px;border-radius:30px}.carousel-stage .progress .progress-bar{background:var(--main-color)}.carousel-stage .courses-image-item{border-radius:5%;-o-object-fit:cover;object-fit:cover}.carousel-stage .courses-item{padding:15px}.carousel-stage .courses-title{text-align:center}.carousel-stage .courses-title a{color:#000!important;font-weight:400!important}.customNavigation a{display:flex;justify-content:center;align-items:center;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.8);color:var(--main-color)!important;text-align:center}.customNavigation a:hover{background:#fff;color:var(--main-color)}.prev{position:absolute;width:100%;top:50%;left:-15px;margin-top:-15px;z-index:10}.next{position:absolute;width:100%;top:50%;right:-15px;margin-top:-15px;z-index:10}.owl-dots{position:absolute;top:-40px;right:15px;outline:0!important}.owl-dots .owl-dot{background:#ccc!important;border-radius:50%;height:10px;width:10px;padding:0!important;border:none;margin:0 2px;outline:0!important}.owl-dots .owl-dot.active{background:var(--main-color)!important;outline:0!important}::ng-deep .owl-carousel-o-stories .owl-next,::ng-deep .owl-carousel-o-stories .owl-prev{position:absolute!important;top:50%!important;transform:translateY(-50%)!important;display:block!important;border-radius:50%!important;margin-top:-5px!important}::ng-deep .owl-carousel-o-stories .owl-prev{left:5px!important}::ng-deep .owl-carousel-o-stories .owl-next{right:5px!important}::ng-deep .swiper-stage .swiper-container{padding:0}::ng-deep .swiper-stage .swiper-slide{width:100%}::ng-deep .swiper-stage .swiper-button-next,::ng-deep .swiper-stage .swiper-button-prev{display:flex;align-items:center;justify-content:center;margin-top:0!important;width:25px;height:25px;border-radius:50%;background-color:var(--main-color)!important;opacity:.7!important}::ng-deep .swiper-stage .swiper-button-prev{left:10px;right:auto!important}::ng-deep .swiper-stage .swiper-button-next{right:10px;left:auto!important}::ng-deep .swiper-stage .swiper-button-next:after,::ng-deep .swiper-stage .swiper-button-prev:after{font-size:13px!important;color:#fff}::ng-deep .swiper-stage .swiper-button-disabled{opacity:0!important}.carousel-stories{display:inline-block;width:100%;height:145px;margin:0;border-radius:6px;text-transform:uppercase;font-size:1em;font-weight:500;background-repeat:no-repeat;background-size:cover;cursor:pointer;background-position:center!important}.carousel-stories .item:focus{outline:0}.carousel-stories .stories-body{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;height:100%;padding:0}.carousel-stories .stories-body a{font-size:12px;color:#fff;margin-bottom:10px;text-shadow:0 1px 1px rgba(0,0,0,.6)}.carousel-stories .stories-body a:hover{color:#ccc}.mat-button,.mat-flat-button,.mat-icon-button,.mat-stroked-button{outline:0!important}::ng-deep .mat-menu-panel{border-radius:6px!important;outline:0!important}::ng-deep .mat-menu-panel .mat-menu-content:not(:empty){padding-top:0!important;padding-bottom:0!important}::ng-deep .mat-menu-panel .mat-menu-item{color:#414141;font-size:15px;font-style:normal;font-weight:400;letter-spacing:1px;outline:0!important}.progress-bar-custom span{display:inline-block;height:100%;border-radius:3px;box-shadow:0 1px 0 rgba(37,21,21,.5) inset;transition:width .4s ease-in-out}.green-progress span{background-image:linear-gradient(to bottom,#fff,var(--main-color))}.stripes span{background-size:30px 30px;background-image:linear-gradient(135deg,#ff4e4ef3 25%,transparent 25%,transparent 50%,rgba(236,47,47,.972) 50%,rgba(240,0,0,.15) 75%,transparent 75%,transparent);-webkit-animation:3s linear infinite animate-stripes;animation:3s linear infinite animate-stripes}.container-stipes{width:100%;padding:0 10px;font-weight:700}.keep-logged{position:relative;height:150px;background:var(--main-color);top:0;color:#fff!important;z-index:99;opacity:.9;width:100%;border:0;left:0;right:0}.keep-logged button{background:#fff!important;color:var(--main-color)!important}.scrollable{overflow-y:scroll;height:100vh}.alert-primary{color:#fff;background-color:var(--main-color)!important;background:var(--main-color)!important}.mat-progress-bar{height:17px;border-radius:5px}@-webkit-keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:60px 0}}.p-channel{color:#3c4858;font-weight:500;margin-bottom:0!important}@media (max-width:767px){.form-feed textarea{font-size:12px}.btn-feed{width:auto;font-size:11px;padding:2px 5px;border-radius:30px;font-weight:600;text-transform:capitalize}.carousel-stories{width:120px;height:120px}.keep-logged{height:175px}.keep-logged h3{font-size:1.1rem}.keep-logged button{font-size:1rem}.btn-group-xs>.btn,.btn-xs{padding:2px 5px;font-size:11px;line-height:1;border-radius:30px}}::ng-deep .mat-card-header-text{width:100%!important;margin:0}::ng-deep .popover{background:#fff!important;border:0!important;box-shadow:1px 1px 15px rgba(201,191,187,.7)!important;-moz-box-shadow:1px 1px 15px rgba(201,191,187,.7)!important;-webkit-box-shadow:1px 1px 15px rgba(201,191,187,.7)!important}.minibio{padding:10px;border-radius:10px}.minibio img{width:30%;max-width:100px;display:inline-block;padding-right:10px}.minibio .info{display:inline-block;vertical-align:top}.minibio .info .icon{color:#d4d4d4}.minibio .info ul{list-style:none}.minibio .info li{display:inline-block}::ng-deep .feed .box-input-feed{width:100%;background-color:transparent}::ng-deep .feed .feed-actions{margin-top:25px}::ng-deep .feed .feed-actions .icons{position:relative;display:inline-flex;align-items:flex-end;margin-right:15px}::ng-deep .feed .feed-actions .icons .fa{font-size:20px;margin-right:10px}::ng-deep .feed .feed-actions .icons .number{position:absolute;bottom:-1px;right:0;font-size:13px}::ng-deep .new-feed .feed-card,::ng-deep .new-feed .form-feed{border-radius:4px!important;box-shadow:0 4px 12px 0 rgba(0,0,0,.1)!important;background:#fff!important}::ng-deep .new-feed .box-publication{display:flex;align-items:center;justify-content:space-between}::ng-deep .new-feed .box-publication .box-input-feed{width:84%}::ng-deep .new-feed .box-publication .send{width:16%;text-align:center;margin-top:5px}::ng-deep .new-feed .box-publication .send i{font-size:24px}::ng-deep .new-feed .box-publication .send p{font-size:12px}::ng-deep .new-feed .box-input-feed{display:flex;align-items:center;width:100%;border-radius:30px;padding:5px;background-color:#eaeaea}::ng-deep .new-feed .box-input-feed input{width:calc(100% - 80px);border:none;background-color:transparent}::ng-deep .new-feed .box-input-feed input:focus{outline:0}::ng-deep .new-feed .box-input-feed input::-webkit-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::-moz-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input:-ms-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::-ms-input-placeholder{color:#999}::ng-deep .new-feed .box-input-feed input::placeholder{color:#999}::ng-deep .new-feed .box-input-feed i{font-size:18px;margin-top:5px;cursor:pointer;color:#495057}::ng-deep .new-feed .feed-actions{margin-top:25px}::ng-deep .new-feed .feed-actions .icons{position:relative;display:inline-flex;align-items:flex-end;margin-right:15px}::ng-deep .new-feed .feed-actions .icons .ph{font-size:20px;margin-right:8px}::ng-deep .new-feed .feed-actions .icons .number{position:absolute;bottom:-1px;right:-8px;font-size:13px}", "@charset \"UTF-8\";.pinned-feed{background-color:var(--bg-btn);color:var(--text-btn);padding:5px;height:40px;width:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;position:absolute;margin-top:60px;margin-right:5px;opacity:1}.mat-card-video{-o-object-fit:cover;object-fit:cover;width:calc(100% + 31px);margin:0 0 10px}.mat-card-content{word-break:break-word;padding:0 15px}::ng-deep .tooltip-primary{background:var(--main-color);opacity:.85;font-size:13px}.no-click{pointer-events:none}.modal-feed-publication{border-radius:24px!important}.share-social{max-width:185px}.mat-card-actions{min-height:40px}.post-processing-section{padding:12px;border:3px dotted gray;border-radius:8px;background-color:#f4f4f4}.carousel{color:#fff}.carousel .content{display:flex}.carousel .content .item{width:100%;display:block;transition:opacity 295ms linear .2s}.carousel .content .item.visible{opacity:1}.carousel .content .item .img{width:100%;height:500px;display:block;-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center}.carousel .content .item .video{width:100%;height:500px!important;display:block;background-size:cover;background-position:center}.carousel .content .item .video-overlay{background:rgba(0,0,0,.5);width:100%;height:500px!important;position:absolute;z-index:-1;transition:opacity .5s ease-out;filter:blur(8px);-webkit-filter:blur(8px)}.carousel .content .wraper-video{background-color:#000}.carousel .ball{width:10px;height:10px;border-radius:50%;background:#000;border:2px solid;opacity:.5}.carousel .ball.visible{opacity:1}.carousel .click-area{width:50px;text-align:center}.carousel .click-area i{font-size:2em;background:rgba(255,255,255,.8);color:#000;border-radius:100%}.custom-carrousel{z-index:1;overflow:hidden}::ng-deep .card-file{box-shadow:0 0 30px rgba(204,204,204,.4);border:none;border-radius:16px;transition:.5s;margin-bottom:30px;cursor:pointer}::ng-deep .card-file .card-cover{display:flex;align-items:center;justify-content:center;text-align:center;padding:0;width:100%;height:250px;border-top-left-radius:10px;border-top-right-radius:10px;background:var(--main-color);color:#fff!important;overflow:hidden}::ng-deep .card-file .card-cover img{position:absolute;z-index:0;top:0;left:0;width:100%;height:inherit;-o-object-fit:cover;object-fit:cover;border-top-left-radius:10px;border-top-right-radius:10px}::ng-deep .card-file .card-cover .title{position:relative;z-index:3;text-shadow:none!important;color:#414141;margin-bottom:0;height:60px;padding:0 15px;font-size:18px}::ng-deep .card-file .circle{float:left;position:relative;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;margin:-30px 10px 15px 15px;background:#eee;z-index:20;font-size:1.5em;color:#3c4858!important}::ng-deep .card-file .card-body{height:125px;border-bottom-left-radius:16px;border-bottom-right-radius:16px}::ng-deep .card-file .card-body .edit-file{float:right!important;margin-top:-60px;margin-right:-15px}::ng-deep .card-file .card-body h5{height:60px}::ng-deep .card-file .card-body .description{color:#888;height:65px;overflow:hidden}::ng-deep owl-carousel-o .owl-theme .owl-next,::ng-deep owl-carousel-o .owl-theme .owl-prev{position:absolute;top:50%;transform:translateY(-50%);display:flex!important;align-items:center!important;justify-content:center!important;width:30px!important;height:30px!important;border-radius:50%!important;margin:20px 0;background:rgba(255,255,255,.8)!important;color:#414141!important;border:none!important;font-size:20px!important;font-weight:600!important}::ng-deep owl-carousel-o .owl-theme .owl-prev{left:5px;transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-prev:hover{transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-next{right:5px;transition:.3s!important}::ng-deep owl-carousel-o .owl-theme .owl-next:hover{transition:.3s}::ng-deep owl-carousel-o .owl-carousel .owl-dot,::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-next,::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-prev{font-family:fontAwesome}::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-prev:before{content:\"\uF104\"}::ng-deep owl-carousel-o .owl-carousel .owl-nav .owl-next:after{content:\"\uF105\"}.swiper-carousel-custom .swiper-container-img{display:flex;align-items:center;justify-content:center;width:100%;height:500px}.swiper-carousel-custom .swiper-bg-blur{position:absolute;z-index:10;width:100%;height:500px;-webkit-filter:blur(30px) brightness(80%);filter:blur(30px) brightness(80%);background-size:cover;background-repeat:no-repeat;background-position:center}.swiper-carousel-custom .img{position:relative;z-index:20;max-width:100%;max-height:500px!important;display:block;-o-object-fit:contain;object-fit:contain;background-size:cover;background-position:center}.swiper-carousel-custom .video{width:100%;height:500px!important;display:block;background-size:cover;background-position:center}.swiper-carousel-custom .video-overlay{background:rgba(0,0,0,.5);width:100%;height:500px!important;position:absolute;z-index:-1;transition:opacity .5s ease-out;filter:blur(8px);-webkit-filter:blur(8px)}"]
301
314
  }] }
@@ -307,7 +320,8 @@ FeedItemComponent.ctorParameters = () => [
307
320
  { type: Global },
308
321
  { type: MatDialog },
309
322
  { type: UtilsService },
310
- { type: TranslateService }
323
+ { type: TranslateService },
324
+ { type: DomSanitizer }
311
325
  ];
312
326
  FeedItemComponent.propDecorators = {
313
327
  item: [{ type: Input }],
@@ -358,5 +372,7 @@ if (false) {
358
372
  FeedItemComponent.prototype.service;
359
373
  /** @type {?} */
360
374
  FeedItemComponent.prototype.translate;
375
+ /** @type {?} */
376
+ FeedItemComponent.prototype.sanitizer;
361
377
  }
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FzYXAtZmVlZC1iZXRhLyIsInNvdXJjZXMiOlsibGliL2ZlZWQtaXRlbS9mZWVkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDckgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQVF6QyxNQUFNLE9BQU8saUJBQWlCOzs7Ozs7Ozs7SUFrQjVCLFlBQ1MsYUFBNEIsRUFDNUIsRUFBb0IsRUFDcEIsTUFBYyxFQUNkLE1BQWlCLEVBQ2pCLE9BQXFCLEVBQ3JCLFNBQTJCO1FBTDNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQWtCO1FBQ3BCLFdBQU0sR0FBTixN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QWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7NkJBQ3pDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7OztJQUxoRSxpQ0FBYzs7SUFDZCxxQ0FBa0I7O0lBQ2xCLGtDQUFlOztJQUNmLHNDQUF5Qzs7SUFDekMsd0NBQW1FOztJQUNuRSwyQ0FBaUY7O0lBRWpGLHlDQUFvQjs7SUFDcEIsd0NBQTJCOztJQUMzQiw0Q0FBK0I7O0lBQy9CLGtEQUE2Qjs7SUFDN0IsZ0RBQWlFOztJQUNqRSxxQ0FBZ0I7O0lBQ2hCLHlDQUFvQjs7SUFDcEIsc0NBQWlCOztJQUdmLDBDQUFtQzs7SUFDbkMsK0JBQTJCOztJQUMzQixtQ0FBcUI7O0lBQ3JCLG1DQUF3Qjs7SUFDeEIsb0NBQTRCOztJQUM1QixzQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RyZWFtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0cmVhbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICdhc2FwLWNydWQnO1xuaW1wb3J0IHsgRmVlZE1vZGFsSXRlbUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9mZWVkLXB1YmxpY2F0aW9uL2ZlZWQtbW9kYWwtaXRlbS1lZGl0L2ZlZWQtbW9kYWwtaXRlbS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBwYXRoIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCBTd2lwZXJDb3JlLCB7IE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuU3dpcGVyQ29yZS51c2UoW05hdmlnYXRpb24sIFBhZ2luYXRpb25dKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZlZWQtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vYXNhcC1mZWVkLmJldGEuY29tcG9uZW50ZS5zY3NzJywgJy4vZmVlZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1N0cmVhbVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGl0ZW07XG4gIEBJbnB1dCgpIHNldHRpbmdzO1xuICBASW5wdXQoKSBvd25lcjtcbiAgQE91dHB1dCgpIGlzVmlzaWJsZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgndmlkZW9QbGF5ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSB2aWRlb3BsYXllcjogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCd2aXNpYmxlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSB2aXNpYmxlQ29udHJvbDtcblxuICBwdWJsaWMgY3VycmVudEluZGV4O1xuICBwdWJsaWMgaW1hZ2VMb2FkZWQgPSBmYWxzZTtcbiAgcHVibGljIGltYWdlRGF0YUxvYWRlZCA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudENhcnJvdXNlbEluZGV4O1xuICBwdWJsaWMgYmx1ckJhY2tncm91bmRJbmRleCA9IE1hdGguZmxvb3IoKE1hdGgucmFuZG9tKCkgKiA1KSArIDEpO1xuICBwdWJsaWMgb2JzZXJ2ZXI7XG4gIHB1YmxpYyB2aXNpYmxlVGltZXI7XG4gIHB1YmxpYyBzaG90VGltZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHN0cmVhbVNlcnZpY2U6IFN0cmVhbVNlcnZpY2UsXG4gICAgcHVibGljIGRiOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgIHB1YmxpYyBnbG9iYWw6IEdsb2JhbCxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHNlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkVmlzaWJpbGl0eUNvbnRyb2xzKCk7XG5cbiAgICBpZiAodGhpcy5pdGVtLmZpbGVzICYmIHRoaXMuaXRlbS5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW0uZmlsZXMubWFwKGZlZWQgPT4ge1xuICAgICAgICBpZiAoZmVlZC51cmwgJiYgZmVlZC51cmwuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgIGZlZWQuaXNZb3V0dWJlID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgeW91dHViZUlEID0gdGhpcy5nZXRZb3V0dWJlSUQoZmVlZC51cmwpO1xuICAgICAgICAgIGZlZWQudXJsID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7eW91dHViZUlEfWA7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0lURU0gLT4nLCB0aGlzLml0ZW0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpc2libGVDb250cm9sLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLnZpc2libGVUaW1lcik7XG4gIH1cblxuICBwdWJsaWMgbG9hZFZpc2liaWxpdHlDb250cm9scygpIHtcbiAgICB0aGlzLnZpc2libGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdFRpbWVyLS07XG4gICAgICBpZiAodGhpcy5zaG90VGltZXIgPT0gMCkge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZS5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy52aXNpYmxlVGltZXIpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogWzAsIDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIDAuNywgMC44LCAwLjksIDEuMF1cbiAgICB9O1xuXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIHRoaXMuc2hvdFRpbWVyID0gLTE7XG4gICAgICAgIHRoaXMuaXRlbS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVudHJ5LmludGVyc2VjdGlvblJhdGlvID09IDEpIHtcbiAgICAgICAgICB0aGlzLnNob3RUaW1lciA9IDU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIG9ubG9hZEltYWdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5pbWFnZURhdGFMb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG9uRXJyb3JJbWFnZShldmVudCkge1xuICB9XG5cbiAgcHVibGljIHBsYXlWaWRlbyhldmVudCkge1xuICAgIGlmICh0aGlzLnZpZGVvcGxheWVyKSB7XG4gICAgICB0aGlzLnZpZGVvcGxheWVyLm5hdGl2ZUVsZW1lbnQucGxheSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsaW5raWZ5KHN0cikge1xuICAgIHZhciByZTogYW55O1xuICAgIHJlID0gW1xuICAgICAgXCJcXFxcYigoPzpodHRwcz98ZnRwKTovL1teXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIod3d3XFxcXC5bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKFxcXFx3W1xcXFx3ListXSpAW1xcXFx3Li1dK1xcXFwuW2Etel17Miw2fSlcXFxcYlwiLFxuICAgICAgXCIjKFthLXowLTldKylcIl07XG4gICAgcmUgPSBuZXcgUmVnRXhwKHJlLmpvaW4oJ3wnKSwgXCJnaVwiKTtcblxuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoLCB1cmwsIHd3dywgbWFpbCwgdHdpdGxlcikge1xuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIHRhcmdldD0nX2JsYW5rJyAoY2xpY2spPSdyZWRpcmVjdE5ld0xpbmsodXJsKScgaHJlZj1cXFwiXCIgKyB1cmwgKyBcIlxcXCI+XCIgKyB1cmwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHd3dylcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJodHRwOi8vXCIgKyB3d3cgKyBcIlxcXCI+XCIgKyB3d3cgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKG1haWwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiIzwvYT5cIjtcbiAgICAgICAgaWYgKHR3aXRsZXIpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwicG9ydGFsL3NlYXJjaC9cIiArIGVuY29kZVVSSUNvbXBvbmVudCgnIycgKyB0d2l0bGVyKSArIFwiXFxcIj4jXCIgKyB0d2l0bGVyICsgXCI8L2E+XCI7XG4gICAgICAgIC8vIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9XFxcIiNcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcblxuICAgICAgICAvLyBzaG91bGRudCBnZXQgaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hlY2tWaWRlb1JlbmRlcihpdGVtKSB7XG5cbiAgICBjb25zb2xlLmxvZygndmlkZW9SZW5kZXIgLT4nLCBpdGVtKTtcbiAgICB0aGlzLnN0cmVhbVNlcnZpY2Uuc3RhdHVzKGl0ZW0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdjaGVja1ZpZGVvUmVuZGVyJywgcmVzKTtcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIG9uRWRpdEl0ZW0oKSB7XG4gICAgY29uc29sZS5sb2coXCJbb25FZGl0SXRlbV1cIiwgdGhpcy5pdGVtKTtcbiAgICBpZiAodGhpcy5pdGVtLmNoYW5uZWxfaWQpIHtcbiAgICAgIHRoaXMuZ2xvYmFsLnN3YWwoe1xuICAgICAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1RoaXNGZWVkQ2FuT25seUJlRWRpdGVkT25DaGFubmVsJylcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vICBQcmVwYXJhciBmZWVkIHBhcmEgZWRpdGFyXG4gICAgICBsZXQgZmVlZDtcbiAgICAgIGZlZWQgPSB0aGlzLml0ZW07XG4gICAgICBkZWxldGUgZmVlZC5jb21tZW50cztcbiAgICAgIGRlbGV0ZSBmZWVkLmxpa2VzO1xuICBcbiAgICAgIGZlZWQuZmlsZXMubWFwKGZpbGUgPT4ge1xuICAgICAgICBmaWxlLm5ldyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIFxuICAgICAgdGhpcy5kaWFsb2cub3BlbihGZWVkTW9kYWxJdGVtRWRpdENvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgZGF0YTogZmVlZCxcbiAgICAgICAgcGFuZWxDbGFzczogJ21vZGFsLWZlZWQtcHVibGljYXRpb24nXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByZUNvbnZlcnROdW1iZXIodmFsdWUpIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25SZW1vdmVJdGVtKGl0ZW0pIHtcbiAgICB0aGlzLmdsb2JhbC5zd2FsKHtcbiAgICAgIHRpdGxlOiAnVm9jw6ogcmVhbG1lbnRlIGRlc2VqYSByZW1vdmVyIGVzdGUgUG9zdD8nLFxuICAgICAgdGV4dDogJ1ZvY8OqIG7Do28gcG9kZXLDoSByZXZlcnRlciBlc3NhIGHDp8OjbyBkZXBvaXMgZGUgY29uZmlybWFkbycsXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICBjb25maXJtQnV0dG9uVGV4dDogXCJTaW1cIixcbiAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IFwiTsOjb1wiXG4gICAgfSkudGhlbihhc3luYyBjb25maXJtID0+IHtcbiAgICAgIGlmIChjb25maXJtLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmRiLmNvbGxlY3Rpb24ocGF0aCgpLmZlZWQpLmRvYyhpdGVtLmlkKTtcblxuICAgICAgICBpZiAoaXRlbS5maWxlcyAmJiBpdGVtLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgaXRlbS5maWxlcykge1xuICAgICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICBpZiAoZmlsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5kZWxldGVGaXJlU3RvcmFnZShgJHtwYXRoKCkuaW1hZ2VzfS8ke2ZpbGUubmFtZX1gKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1JlbW92ZW5kbyB1bSBwb3N0IGNvbSBpbWFnZW0gbsOjbyByZWZlcmVuY2lhZGEnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29sbGVjdGlvbi5kZWxldGUoKTtcbiAgICAgICAgaXRlbS5kZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5nbG9iYWwudG9hc3QoJ1Bvc3QgcmVtb3ZpZG8gY29tIFN1Y2Vzc28nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrRmlsZU9yaWdpbihmaWxlKSB7XG5cbiAgfVxuXG4gIGlzWW91dHViZShmaWxlKSB7XG4gICAgY29uc29sZS5sb2coJ0lzWW91dHViZSAtPicsIGZpbGUpO1xuICAgIGlmIChmaWxlLmluY2x1ZGVzKCd5b3V0dWJlJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRZb3V0dWJlSUQodXJsKSB7XG4gICAgdmFyIHJlZ0V4cCA9IC9eLiooKHlvdXR1LmJlXFwvKXwodlxcLyl8KFxcL3VcXC9cXHdcXC8pfChlbWJlZFxcLyl8KHdhdGNoXFw/KSlcXD8/dj89PyhbXiMmP10qKS4qLztcbiAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXhwKTtcbiAgICByZXR1cm4gKG1hdGNoICYmIG1hdGNoWzddLmxlbmd0aCA9PSAxMSkgPyBtYXRjaFs3XSA6IGZhbHNlO1xuICB9XG5cblxufVxuIl19
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FzYXAtZmVlZC1iZXRhLyIsInNvdXJjZXMiOlsibGliL2ZlZWQtaXRlbS9mZWVkLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDckgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFRekMsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7Ozs7OztJQWtCNUIsWUFDUyxhQUE0QixFQUM1QixFQUFvQixFQUNwQixNQUFjLEVBQ2QsTUFBaUIsRUFDakIsT0FBcUIsRUFDckIsU0FBMkIsRUFDM0IsU0FBdUI7UUFOdkIsa0JBQWEsR0FB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LENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDOzs7WUE1TkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qix3d3BCQUF5QztnQkFFekMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDOzthQUMzQjs7OztZQWxCUSxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLE1BQU07WUFJTixTQUFTO1lBRFQsWUFBWTtZQUlaLGdCQUFnQjtZQUNoQixZQUFZOzs7bUJBV2xCLEtBQUs7dUJBQ0wsS0FBSztvQkFDTCxLQUFLO3dCQUNMLE1BQU07MEJBQ04sU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7NkJBQ3pDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7OztJQUxoRSxpQ0FBYzs7SUFDZCxxQ0FBa0I7O0lBQ2xCLGtDQUFlOztJQUNmLHNDQUF5Qzs7SUFDekMsd0NBQW1FOztJQUNuRSwyQ0FBaUY7O0lBRWpGLHlDQUFvQjs7SUFDcEIsd0NBQTJCOztJQUMzQiw0Q0FBK0I7O0lBQy9CLGtEQUE2Qjs7SUFDN0IsZ0RBQWlFOztJQUNqRSxxQ0FBZ0I7O0lBQ2hCLHlDQUFvQjs7SUFDcEIsc0NBQWlCOztJQUdmLDBDQUFtQzs7SUFDbkMsK0JBQTJCOztJQUMzQixtQ0FBcUI7O0lBQ3JCLG1DQUF3Qjs7SUFDeEIsb0NBQTRCOztJQUM1QixzQ0FBa0M7O0lBQ2xDLHNDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdHJlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RyZWFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJ2FzYXAtY3J1ZCc7XG5pbXBvcnQgeyBGZWVkTW9kYWxJdGVtRWRpdENvbXBvbmVudCB9IGZyb20gJy4uL2ZlZWQtcHVibGljYXRpb24vZmVlZC1tb2RhbC1pdGVtLWVkaXQvZmVlZC1tb2RhbC1pdGVtLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IHBhdGggfSBmcm9tICcuLi9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IFN3aXBlckNvcmUsIHsgTmF2aWdhdGlvbiwgUGFnaW5hdGlvbiB9IGZyb20gJ3N3aXBlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblN3aXBlckNvcmUudXNlKFtOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uXSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mZWVkLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2FzYXAtZmVlZC5iZXRhLmNvbXBvbmVudGUuc2NzcycsICcuL2ZlZWQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtTdHJlYW1TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBGZWVkSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBpdGVtO1xuICBASW5wdXQoKSBzZXR0aW5ncztcbiAgQElucHV0KCkgb3duZXI7XG4gIEBPdXRwdXQoKSBpc1Zpc2libGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvUGxheWVyJywgeyBzdGF0aWM6IHRydWUgfSkgdmlkZW9wbGF5ZXI6IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZCgndmlzaWJsZUNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgdmlzaWJsZUNvbnRyb2w7XG5cbiAgcHVibGljIGN1cnJlbnRJbmRleDtcbiAgcHVibGljIGltYWdlTG9hZGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpbWFnZURhdGFMb2FkZWQgPSBmYWxzZTtcbiAgcHVibGljIGN1cnJlbnRDYXJyb3VzZWxJbmRleDtcbiAgcHVibGljIGJsdXJCYWNrZ3JvdW5kSW5kZXggPSBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogNSkgKyAxKTtcbiAgcHVibGljIG9ic2VydmVyO1xuICBwdWJsaWMgdmlzaWJsZVRpbWVyO1xuICBwdWJsaWMgc2hvdFRpbWVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdHJlYW1TZXJ2aWNlOiBTdHJlYW1TZXJ2aWNlLFxuICAgIHB1YmxpYyBkYjogQW5ndWxhckZpcmVzdG9yZSxcbiAgICBwdWJsaWMgZ2xvYmFsOiBHbG9iYWwsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRWaXNpYmlsaXR5Q29udHJvbHMoKTtcblxuICAgIGlmICh0aGlzLml0ZW0uZmlsZXMgJiYgdGhpcy5pdGVtLmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXRlbS5maWxlcy5tYXAoZmVlZCA9PiB7XG4gICAgICAgIGlmIChmZWVkLnVybCAmJiBmZWVkLnVybC5pbmNsdWRlcygneW91dHViZScpKSB7XG4gICAgICAgICAgZmVlZC5pc1lvdXR1YmUgPSB0cnVlO1xuICAgICAgICAgIGxldCB5b3V0dWJlSUQgPSB0aGlzLmdldFlvdXR1YmVJRChmZWVkLnVybCk7XG4gICAgICAgICAgZmVlZC51cmwgPSBgaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHt5b3V0dWJlSUR9YDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnSVRFTSAtPicsIHRoaXMuaXRlbSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMudmlzaWJsZUNvbnRyb2wubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMudmlzaWJsZVRpbWVyKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkVmlzaWJpbGl0eUNvbnRyb2xzKCkge1xuICAgIHRoaXMudmlzaWJsZVRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5zaG90VGltZXItLTtcbiAgICAgIGlmICh0aGlzLnNob3RUaW1lciA9PSAwKSB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlLmVtaXQodGhpcy5pdGVtKTtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnZpc2libGVUaW1lcik7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgdGhyZXNob2xkOiBbMCwgMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNiwgMC43LCAwLjgsIDAuOSwgMS4wXVxuICAgIH07XG5cbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgdGhpcy5zaG90VGltZXIgPSAtMTtcbiAgICAgICAgdGhpcy5pdGVtLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPT0gMSkge1xuICAgICAgICAgIHRoaXMuc2hvdFRpbWVyID0gNTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25sb2FkSW1hZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmltYWdlTG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmltYWdlRGF0YUxvYWRlZCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgb25FcnJvckltYWdlKGV2ZW50KSB7XG4gIH1cblxuICBwdWJsaWMgcGxheVZpZGVvKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMudmlkZW9wbGF5ZXIpIHtcbiAgICAgIHRoaXMudmlkZW9wbGF5ZXIubmF0aXZlRWxlbWVudC5wbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNhbml0aXplZExpbmtpZnkoc3RyKSB7XG4gICAgLy8gcmV0dXJuIHN0cjtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmxpbmtpZnkoc3RyKSk7XG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuXG4gIHB1YmxpYyBsaW5raWZ5KHN0cikge1xuICAgIHZhciByZTogYW55O1xuICAgIHJlID0gW1xuICAgICAgXCJcXFxcYigoPzpodHRwcz98ZnRwKTovL1teXFxcXHNcXFwiJzw+XSspXFxcXGJcIixcbiAgICAgIFwiXFxcXGIod3d3XFxcXC5bXlxcXFxzXFxcIic8Pl0rKVxcXFxiXCIsXG4gICAgICBcIlxcXFxiKFxcXFx3W1xcXFx3ListXSpAW1xcXFx3Li1dK1xcXFwuW2Etel17Miw2fSlcXFxcYlwiLFxuICAgICAgXCIjKFthLXowLTldKylcIl07XG4gICAgcmUgPSBuZXcgUmVnRXhwKHJlLmpvaW4oJ3wnKSwgXCJnaVwiKTtcblxuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoLCB1cmwsIHd3dywgbWFpbCwgdHdpdGxlcikge1xuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgIHJldHVybiBcIjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIHRhcmdldD0nX2JsYW5rJyAoY2xpY2spPSdyZWRpcmVjdE5ld0xpbmsodXJsKScgaHJlZj1cXFwiXCIgKyB1cmwgKyBcIlxcXCI+XCIgKyB1cmwgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKHd3dylcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJodHRwOi8vXCIgKyB3d3cgKyBcIlxcXCI+XCIgKyB3d3cgKyBcIjwvYT5cIjtcbiAgICAgICAgaWYgKG1haWwpXG4gICAgICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwibWFpbHRvOi8vXCIgKyBtYWlsICsgXCJcXFwiPlwiICsgbWFpbCArIFwiPC9hPlwiO1xuICAgICAgICBpZiAodHdpdGxlcilcbiAgICAgICAgICByZXR1cm4gXCI8YSBjbGFzcz0ndGV4dC1wcmltYXJ5JyBocmVmPVxcXCJwb3J0YWwvc2VhcmNoL1wiICsgZW5jb2RlVVJJQ29tcG9uZW50KCcjJyArIHR3aXRsZXIpICsgXCJcXFwiPiNcIiArIHR3aXRsZXIgKyBcIjwvYT5cIjtcbiAgICAgICAgLy8gcmV0dXJuIFwiPGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj1cXFwiI1xcXCI+I1wiICsgdHdpdGxlciArIFwiPC9hPlwiO1xuXG4gICAgICAgIC8vIHNob3VsZG50IGdldCBoZXJlLCBidXQganVzdCBpbiBjYXNlXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja1ZpZGVvUmVuZGVyKGl0ZW0pIHtcblxuICAgIGNvbnNvbGUubG9nKCd2aWRlb1JlbmRlciAtPicsIGl0ZW0pO1xuICAgIHRoaXMuc3RyZWFtU2VydmljZS5zdGF0dXMoaXRlbSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ2NoZWNrVmlkZW9SZW5kZXInLCByZXMpO1xuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgb25FZGl0SXRlbSgpIHtcbiAgICBjb25zb2xlLmxvZyhcIltvbkVkaXRJdGVtXVwiLCB0aGlzLml0ZW0pO1xuICAgIGlmICh0aGlzLml0ZW0uY2hhbm5lbF9pZCkge1xuICAgICAgdGhpcy5nbG9iYWwuc3dhbCh7XG4gICAgICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnVGhpc0ZlZWRDYW5Pbmx5QmVFZGl0ZWRPbkNoYW5uZWwnKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gIFByZXBhcmFyIGZlZWQgcGFyYSBlZGl0YXJcbiAgICAgIGxldCBmZWVkO1xuICAgICAgZmVlZCA9IHRoaXMuaXRlbTtcbiAgICAgIGRlbGV0ZSBmZWVkLmNvbW1lbnRzO1xuICAgICAgZGVsZXRlIGZlZWQubGlrZXM7XG4gIFxuICAgICAgZmVlZC5maWxlcy5tYXAoZmlsZSA9PiB7XG4gICAgICAgIGZpbGUubmV3ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKEZlZWRNb2RhbEl0ZW1FZGl0Q29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnNjAwcHgnLFxuICAgICAgICBkYXRhOiBmZWVkLFxuICAgICAgICBwYW5lbENsYXNzOiAnbW9kYWwtZmVlZC1wdWJsaWNhdGlvbidcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcHJlQ29udmVydE51bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlbW92ZUl0ZW0oaXRlbSkge1xuICAgIHRoaXMuZ2xvYmFsLnN3YWwoe1xuICAgICAgdGl0bGU6ICdWb2PDqiByZWFsbWVudGUgZGVzZWphIHJlbW92ZXIgZXN0ZSBQb3N0PycsXG4gICAgICB0ZXh0OiAnVm9jw6ogbsOjbyBwb2RlcsOhIHJldmVydGVyIGVzc2EgYcOnw6NvIGRlcG9pcyBkZSBjb25maXJtYWRvJyxcbiAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxuICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiBcIlNpbVwiLFxuICAgICAgY2FuY2VsQnV0dG9uVGV4dDogXCJOw6NvXCJcbiAgICB9KS50aGVuKGFzeW5jIGNvbmZpcm0gPT4ge1xuICAgICAgaWYgKGNvbmZpcm0udmFsdWUpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuZGIuY29sbGVjdGlvbihwYXRoKCkuZmVlZCkuZG9jKGl0ZW0uaWQpO1xuXG4gICAgICAgIGlmIChpdGVtLmZpbGVzICYmIGl0ZW0uZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBpdGVtLmZpbGVzKSB7XG4gICAgICAgICAgICBpZiAoZmlsZS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgIGlmIChmaWxlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmRlbGV0ZUZpcmVTdG9yYWdlKGAke3BhdGgoKS5pbWFnZXN9LyR7ZmlsZS5uYW1lfWApO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUmVtb3ZlbmRvIHVtIHBvc3QgY29tIGltYWdlbSBuw6NvIHJlZmVyZW5jaWFkYScsIGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb2xsZWN0aW9uLmRlbGV0ZSgpO1xuICAgICAgICBpdGVtLmRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmdsb2JhbC50b2FzdCgnUG9zdCByZW1vdmlkbyBjb20gU3VjZXNzbycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2hlY2tGaWxlT3JpZ2luKGZpbGUpIHtcblxuICB9XG5cbiAgaXNZb3V0dWJlKGZpbGUpIHtcbiAgICBjb25zb2xlLmxvZygnSXNZb3V0dWJlIC0+JywgZmlsZSk7XG4gICAgaWYgKGZpbGUuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFlvdXR1YmVJRCh1cmwpIHtcbiAgICB2YXIgcmVnRXhwID0gL14uKigoeW91dHUuYmVcXC8pfCh2XFwvKXwoXFwvdVxcL1xcd1xcLyl8KGVtYmVkXFwvKXwod2F0Y2hcXD8pKVxcPz92Pz0/KFteIyY/XSopLiovO1xuICAgIHZhciBtYXRjaCA9IHVybC5tYXRjaChyZWdFeHApO1xuICAgIHJldHVybiAobWF0Y2ggJiYgbWF0Y2hbN10ubGVuZ3RoID09IDExKSA/IG1hdGNoWzddIDogZmFsc2U7XG4gIH1cblxuXG59XG4iXX0=