UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

384 lines 26.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { ElementApiService, fullApiPath, ElementsService } from 'dbweb-core'; import { tap, map } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "dbweb-core"; /** @type {?} */ const indexElementName = 'index'; /** @enum {string} */ const CardType = { navigation: 'navigation', calendar: 'calendar', notice: 'notice', datalist: 'datalist', chart: 'chart', }; export { CardType }; /** @type {?} */ export const defaultCardSize = { [CardType.navigation]: 'sm', [CardType.calendar]: 'sm', [CardType.notice]: 'sm', [CardType.datalist]: 'md', [CardType.chart]: 'sm' }; /** * @record */ export function UserIndexCard() { } if (false) { /** @type {?} */ UserIndexCard.prototype.Type; /** @type {?} */ UserIndexCard.prototype.Size; /** @type {?} */ UserIndexCard.prototype.Setting; } /** * @record */ function UserIndexSetting() { } if (false) { /** @type {?} */ UserIndexSetting.prototype.Layout; /** @type {?} */ UserIndexSetting.prototype.Cards; /** @type {?} */ UserIndexSetting.prototype.NavigationElements; } /** * @record */ function BannerSetting() { } if (false) { /** @type {?} */ BannerSetting.prototype.DefaultBannerImage; /** @type {?} */ BannerSetting.prototype.Banners; } /** * @record */ function UserDiary() { } if (false) { /** @type {?} */ UserDiary.prototype.Day; /** @type {?} */ UserDiary.prototype.Content; } /** * @record */ function UserNotice() { } if (false) { /** @type {?} */ UserNotice.prototype.ID; /** @type {?} */ UserNotice.prototype.Title; /** @type {?} */ UserNotice.prototype.Time; /** @type {?} */ UserNotice.prototype.IsReaded; /** @type {?} */ UserNotice.prototype.URL; /** @type {?} */ UserNotice.prototype.Sign; /** @type {?} */ UserNotice.prototype.FrontURL; } /** * @record */ function FetchMyNoticeResult() { } if (false) { /** @type {?} */ FetchMyNoticeResult.prototype.ElementForBrowseNotice; /** @type {?} */ FetchMyNoticeResult.prototype.Data; } export class IndexService { // 是否已经初始化完毕 /** * @param {?} api * @param {?} eles */ constructor(api, eles) { this.api = api; this.eles = eles; this.userSetting = (/** @type {?} */ ({})); this.inited = false; // 是否已经初始化完毕 } /** * @private * @return {?} */ fetchIndexSetting() { return this.api.get(indexElementName, 'fetch-index-setting'); } /** * @private * @param {?} param * @return {?} */ updateIndexSetting(param) { return this.api.post(indexElementName, 'update-index-setting', param); } /** * @private * @return {?} */ fetchBanner() { return this.api.get(indexElementName, 'fetch-banner'); } /** * @private * @return {?} */ fetchIndexUserDiary() { // 需要将后端传递过来的字符串转换成date类型 return this.api.get(indexElementName, 'fetch-index-user-diary').pipe(map((/** * @param {?} vals * @return {?} */ vals => vals ? vals.map((/** * @param {?} v * @return {?} */ v => ({ Day: new Date(v.Day), Content: v.Content // tslint:disable-next-line: indent }))) : []))); } /** * @private * @param {?} day * @return {?} */ removeIndexUserDiary(day) { return this.api.post(indexElementName, 'remove-index-user-diary', day); } /** * @private * @param {?} param * @return {?} */ updateIndexUserDiary(param) { return this.api.post(indexElementName, 'update-index-user-diary', param); } /** * @private * @return {?} */ fetchMyNotice() { /** * @record */ function IUserNotice() { } if (false) { /** @type {?} */ IUserNotice.prototype.ID; /** @type {?} */ IUserNotice.prototype.Title; /** @type {?} */ IUserNotice.prototype.Time; /** @type {?} */ IUserNotice.prototype.IsReaded; /** @type {?} */ IUserNotice.prototype.URL; /** @type {?} */ IUserNotice.prototype.Sign; } /** * @record */ function IFetchMyNoticeResult() { } if (false) { /** @type {?} */ IFetchMyNoticeResult.prototype.ElementForBrowseNotice; /** @type {?} */ IFetchMyNoticeResult.prototype.Data; } return this.api.get(indexElementName, 'fetch-my-notice').pipe(map((/** * @param {?} v * @return {?} */ v => ((/** @type {?} */ ({ ElementForBrowseNotice: v.ElementForBrowseNotice, Data: v.Data.map((/** * @param {?} sv * @return {?} */ sv => ((/** @type {?} */ ({ ID: sv.ID, Title: sv.Title, Time: new Date(sv.Time), IsReaded: sv.IsReaded, URL: sv.URL, Sign: sv.Sign }))))) })))))); } /** * @return {?} */ init() { this.fetchIndexSetting().subscribe((/** * @param {?} data * @return {?} */ data => { this.userSetting = data || ((/** @type {?} */ ({}))); // console.log('======', this.userSetting); this.userSetting.Cards = this.userSetting.Cards || []; this.userSetting.Layout = this.userSetting.Layout || 'auto'; // console.log('------', this.userSetting.Layout); this.userSetting.NavigationElements = this.userSetting.NavigationElements || []; // 找不到的菜单项,或者是没有权限,需要去除 this.userSetting.NavigationElements = this.userSetting.NavigationElements.filter((/** * @param {?} v * @return {?} */ v => this.eles.get(v))); this.inited = true; })); this.fetchBanner().subscribe((/** * @param {?} val * @return {?} */ val => { this.banner = val; this.banner.DefaultBannerImage = fullApiPath(this.banner.DefaultBannerImage); })); } /** * @return {?} */ initCalendar() { this.fetchIndexUserDiary().subscribe((/** * @param {?} v * @return {?} */ v => { this.userDiary = v; })); } /** * @return {?} */ initNotice() { this.fetchMyNotice().subscribe((/** * @param {?} v * @return {?} */ v => { this.notice = v.Data; this.eles.addElement(v.ElementForBrowseNotice); v.Data.forEach((/** * @param {?} one * @return {?} */ one => this.eles.setURLSign(one.URL, one.Sign))); // 然后才能计算前端url this.notice.forEach((/** * @param {?} one * @return {?} */ one => { one.FrontURL = this.eles.frontElementURL(v.ElementForBrowseNotice.Name, one.URL); })); })); } /** * @param {?} day * @param {?} content * @return {?} */ updateUserDiary(day, content) { return this.updateIndexUserDiary({ Day: day, Content: content }).pipe(tap((/** * @return {?} */ () => { /** @type {?} */ const found = this.userDiary.find((/** * @param {?} v * @return {?} */ v => v.Day.getTime() === day.getTime())); if (found) { found.Content = content; } else { this.userDiary.push({ Day: day, Content: content }); this.userDiary.sort((/** * @param {?} a * @param {?} b * @return {?} */ (a, b) => { return a.Day.getTime() - b.Day.getTime(); })); } }))); } /** * @param {?} day * @return {?} */ removeUserDiary(day) { return this.removeIndexUserDiary(day).pipe(tap((/** * @return {?} */ () => { this.userDiary.splice(this.userDiary.findIndex((/** * @param {?} v * @return {?} */ v => v.Day.getTime() === day.getTime())), 1); }))); } /** * @return {?} */ updateSetting() { return this.updateIndexSetting(this.userSetting); } } IndexService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ IndexService.ctorParameters = () => [ { type: ElementApiService }, { type: ElementsService } ]; /** @nocollapse */ IndexService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function IndexService_Factory() { return new IndexService(i0.ɵɵinject(i1.ElementApiService), i0.ɵɵinject(i1.ElementsService)); }, token: IndexService, providedIn: "root" }); if (false) { /** @type {?} */ IndexService.prototype.userSetting; /** @type {?} */ IndexService.prototype.banner; /** @type {?} */ IndexService.prototype.userDiary; /** @type {?} */ IndexService.prototype.notice; /** @type {?} */ IndexService.prototype.inited; /** * @type {?} * @private */ IndexService.prototype.api; /** * @type {?} * @private */ IndexService.prototype.eles; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9pbmRleC9pbmRleC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFZLE1BQU0sWUFBWSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7TUFDcEMsZ0JBQWdCLEdBQUcsT0FBTzs7O0lBRy9CLFlBQWEsWUFBWTtJQUN6QixVQUFXLFVBQVU7SUFDckIsUUFBUyxRQUFRO0lBQ2pCLFVBQVcsVUFBVTtJQUNyQixPQUFRLE9BQU87Ozs7QUFFaEIsTUFBTSxPQUFPLGVBQWUsR0FBZ0M7SUFDM0QsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSTtJQUMzQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJO0lBQ3pCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7SUFDdkIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO0NBQ3RCOzs7O0FBRUQsbUNBSUM7OztJQUhBLDZCQUFlOztJQUNmLDZCQUFlOztJQUNmLGdDQUFnQzs7Ozs7QUFFakMsK0JBSUM7OztJQUhBLGtDQUFvQjs7SUFDcEIsaUNBQXVCOztJQUN2Qiw4Q0FBNkI7Ozs7O0FBRTlCLDRCQU1DOzs7SUFMQSwyQ0FBMkI7O0lBQzNCLGdDQUdJOzs7OztBQUVMLHdCQUdDOzs7SUFGQSx3QkFBVTs7SUFDViw0QkFBZ0I7Ozs7O0FBRWpCLHlCQVFDOzs7SUFQQSx3QkFBVzs7SUFDWCwyQkFBYzs7SUFDZCwwQkFBVzs7SUFDWCw4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QWU7Ozs7O0lBdUR2RCxtQ0FBdUQ7O0lBQ3ZELDhCQUFzQjs7SUFDdEIsaUNBQXVCOztJQUN2Qiw4QkFBcUI7O0lBQ3JCLDhCQUFlOzs7OztJQUNILDJCQUE4Qjs7Ozs7SUFBRSw0QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRBcGlTZXJ2aWNlLCBmdWxsQXBpUGF0aCwgRWxlbWVudHNTZXJ2aWNlLCBJRWxlbWVudCB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuY29uc3QgaW5kZXhFbGVtZW50TmFtZSA9ICdpbmRleCc7XHJcbmV4cG9ydCB0eXBlIENhcmRTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnO1xyXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XHJcblx0bmF2aWdhdGlvbiA9ICduYXZpZ2F0aW9uJyxcclxuXHRjYWxlbmRhciA9ICdjYWxlbmRhcicsXHJcblx0bm90aWNlID0gJ25vdGljZScsXHJcblx0ZGF0YWxpc3QgPSAnZGF0YWxpc3QnLFxyXG5cdGNoYXJ0ID0gJ2NoYXJ0J1xyXG59XHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0Q2FyZFNpemU6IHsgW2tleTogc3RyaW5nXTogQ2FyZFNpemUgfSA9IHtcclxuXHRbQ2FyZFR5cGUubmF2aWdhdGlvbl06ICdzbScsXHJcblx0W0NhcmRUeXBlLmNhbGVuZGFyXTogJ3NtJyxcclxuXHRbQ2FyZFR5cGUubm90aWNlXTogJ3NtJyxcclxuXHRbQ2FyZFR5cGUuZGF0YWxpc3RdOiAnbWQnLFxyXG5cdFtDYXJkVHlwZS5jaGFydF06ICdzbSdcclxufTtcclxuZXhwb3J0IHR5cGUgSW5kZXhMYXlvdXQgPSAnYXV0bycgfCAnc2ltcGxlJztcclxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5kZXhDYXJkIHtcclxuXHRUeXBlOiBDYXJkVHlwZTtcclxuXHRTaXplOiBDYXJkU2l6ZTtcclxuXHRTZXR0aW5nOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBVc2VySW5kZXhTZXR0aW5nIHtcclxuXHRMYXlvdXQ6IEluZGV4TGF5b3V0O1xyXG5cdENhcmRzOiBVc2VySW5kZXhDYXJkW107XHJcblx0TmF2aWdhdGlvbkVsZW1lbnRzOiBzdHJpbmdbXTtcclxufVxyXG5pbnRlcmZhY2UgQmFubmVyU2V0dGluZyB7XHJcblx0RGVmYXVsdEJhbm5lckltYWdlOiBzdHJpbmc7XHJcblx0QmFubmVyczoge1xyXG5cdFx0SW1hZ2VVUkw6IHN0cmluZztcclxuXHRcdE5hdmlnYXRpb25VUkw6IHN0cmluZztcclxuXHR9W107XHJcbn1cclxuaW50ZXJmYWNlIFVzZXJEaWFyeSB7XHJcblx0RGF5OiBEYXRlO1xyXG5cdENvbnRlbnQ6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgVXNlck5vdGljZSB7XHJcblx0SUQ6IHN0cmluZztcclxuXHRUaXRsZTogc3RyaW5nO1xyXG5cdFRpbWU6IERhdGU7XHJcblx0SXNSZWFkZWQ6IGJvb2xlYW47XHJcblx0VVJMOiBzdHJpbmc7XHJcblx0U2lnbjogc3RyaW5nO1xyXG5cdEZyb250VVJMOiBzdHJpbmc7IC8vIOWQjuerr1VSTOi9rOaNouaIkOWJjeerr1VSTFxyXG59XHJcbmludGVyZmFjZSBGZXRjaE15Tm90aWNlUmVzdWx0IHtcclxuXHRFbGVtZW50Rm9yQnJvd3NlTm90aWNlOiBJRWxlbWVudDtcclxuXHREYXRhOiBVc2VyTm90aWNlW107XHJcbn1cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEluZGV4U2VydmljZSB7XHJcblx0dXNlclNldHRpbmc6IFVzZXJJbmRleFNldHRpbmcgPSB7fSBhcyBVc2VySW5kZXhTZXR0aW5nO1xyXG5cdGJhbm5lcjogQmFubmVyU2V0dGluZztcclxuXHR1c2VyRGlhcnk6IFVzZXJEaWFyeVtdO1xyXG5cdG5vdGljZTogVXNlck5vdGljZVtdO1xyXG5cdGluaXRlZCA9IGZhbHNlOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJblrozmr5VcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaTogRWxlbWVudEFwaVNlcnZpY2UsIHByaXZhdGUgZWxlczogRWxlbWVudHNTZXJ2aWNlKSB7fVxyXG5cdHByaXZhdGUgZmV0Y2hJbmRleFNldHRpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkuZ2V0PFVzZXJJbmRleFNldHRpbmc+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1pbmRleC1zZXR0aW5nJyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZUluZGV4U2V0dGluZyhwYXJhbTogVXNlckluZGV4U2V0dGluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLnBvc3QoaW5kZXhFbGVtZW50TmFtZSwgJ3VwZGF0ZS1pbmRleC1zZXR0aW5nJywgcGFyYW0pO1xyXG5cdH1cclxuXHRwcml2YXRlIGZldGNoQmFubmVyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLmdldDxCYW5uZXJTZXR0aW5nPihpbmRleEVsZW1lbnROYW1lLCAnZmV0Y2gtYmFubmVyJyk7XHJcblx0fVxyXG5cdHByaXZhdGUgZmV0Y2hJbmRleFVzZXJEaWFyeSgpIHtcclxuXHRcdC8vIOmcgOimgeWwhuWQjuerr+S8oOmAkui/h+adpeeahOWtl+espuS4sui9rOaNouaIkGRhdGXnsbvlnotcclxuXHRcdHJldHVybiB0aGlzLmFwaS5nZXQ8VXNlckRpYXJ5W10+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1pbmRleC11c2VyLWRpYXJ5JykucGlwZShcclxuXHRcdFx0bWFwKFxyXG5cdFx0XHRcdHZhbHMgPT5cclxuXHRcdFx0XHRcdHZhbHNcclxuXHRcdFx0XHRcdFx0PyB2YWxzLm1hcCh2ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHREYXk6IG5ldyBEYXRlKHYuRGF5KSxcclxuXHRcdFx0XHRcdFx0XHRcdENvbnRlbnQ6IHYuQ29udGVudFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBpbmRlbnRcclxuXHRcdFx0XHRcdFx0XHR9KSlcclxuXHRcdFx0XHRcdFx0OiBbXVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdH1cclxuXHRwcml2YXRlIHJlbW92ZUluZGV4VXNlckRpYXJ5KGRheTogRGF0ZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLnBvc3Q8Ym9vbGVhbj4oaW5kZXhFbGVtZW50TmFtZSwgJ3JlbW92ZS1pbmRleC11c2VyLWRpYXJ5JywgZGF5KTtcclxuXHR9XHJcblx0cHJpdmF0ZSB1cGRhdGVJbmRleFVzZXJEaWFyeShwYXJhbTogVXNlckRpYXJ5KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkucG9zdDxib29sZWFuPihpbmRleEVsZW1lbnROYW1lLCAndXBkYXRlLWluZGV4LXVzZXItZGlhcnknLCBwYXJhbSk7XHJcblx0fVxyXG5cdHByaXZhdGUgZmV0Y2hNeU5vdGljZSgpIHtcclxuXHRcdGludGVyZmFjZSBJVXNlck5vdGljZSB7XHJcblx0XHRcdElEOiBzdHJpbmc7XHJcblx0XHRcdFRpdGxlOiBzdHJpbmc7XHJcblx0XHRcdFRpbWU6IHN0cmluZztcclxuXHRcdFx0SXNSZWFkZWQ6IGJvb2xlYW47XHJcblx0XHRcdFVSTDogc3RyaW5nO1xyXG5cdFx0XHRTaWduOiBzdHJpbmc7XHJcblx0XHR9XHJcblx0XHRpbnRlcmZhY2UgSUZldGNoTXlOb3RpY2VSZXN1bHQge1xyXG5cdFx0XHRFbGVtZW50Rm9yQnJvd3NlTm90aWNlOiBJRWxlbWVudDtcclxuXHRcdFx0RGF0YTogSVVzZXJOb3RpY2VbXTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmFwaS5nZXQ8SUZldGNoTXlOb3RpY2VSZXN1bHQ+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1teS1ub3RpY2UnKS5waXBlKFxyXG5cdFx0XHRtYXAoXHJcblx0XHRcdFx0diA9PlxyXG5cdFx0XHRcdFx0KHtcclxuXHRcdFx0XHRcdFx0RWxlbWVudEZvckJyb3dzZU5vdGljZTogdi5FbGVtZW50Rm9yQnJvd3NlTm90aWNlLFxyXG5cdFx0XHRcdFx0XHREYXRhOiB2LkRhdGEubWFwKFxyXG5cdFx0XHRcdFx0XHRcdHN2ID0+XHJcblx0XHRcdFx0XHRcdFx0XHQoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRJRDogc3YuSUQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFRpdGxlOiBzdi5UaXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0VGltZTogbmV3IERhdGUoc3YuVGltZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdElzUmVhZGVkOiBzdi5Jc1JlYWRlZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0VVJMOiBzdi5VUkwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFNpZ246IHN2LlNpZ25cclxuXHRcdFx0XHRcdFx0XHRcdH0gYXMgVXNlck5vdGljZSlcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0fSBhcyBGZXRjaE15Tm90aWNlUmVzdWx0KVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdH1cclxuXHRpbml0KCkge1xyXG5cdFx0dGhpcy5mZXRjaEluZGV4U2V0dGluZygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuXHRcdFx0dGhpcy51c2VyU2V0dGluZyA9IGRhdGEgfHwgKHt9IGFzIFVzZXJJbmRleFNldHRpbmcpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnPT09PT09JywgdGhpcy51c2VyU2V0dGluZyk7XHJcblx0XHRcdHRoaXMudXNlclNldHRpbmcuQ2FyZHMgPSB0aGlzLnVzZXJTZXR0aW5nLkNhcmRzIHx8IFtdO1xyXG5cdFx0XHR0aGlzLnVzZXJTZXR0aW5nLkxheW91dCA9IHRoaXMudXNlclNldHRpbmcuTGF5b3V0IHx8ICdhdXRvJztcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJy0tLS0tLScsIHRoaXMudXNlclNldHRpbmcuTGF5b3V0KTtcclxuXHRcdFx0dGhpcy51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMgPSB0aGlzLnVzZXJTZXR0aW5nLk5hdmlnYXRpb25FbGVtZW50cyB8fCBbXTtcclxuXHRcdFx0Ly8g5om+5LiN5Yiw55qE6I+c5Y2V6aG577yM5oiW6ICF5piv5rKh5pyJ5p2D6ZmQ77yM6ZyA6KaB5Y676ZmkXHJcblx0XHRcdHRoaXMudXNlclNldHRpbmcuTmF2aWdhdGlvbkVsZW1lbnRzID0gdGhpcy51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMuZmlsdGVyKHYgPT4gdGhpcy5lbGVzLmdldCh2KSk7XHJcblx0XHRcdHRoaXMuaW5pdGVkID0gdHJ1ZTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5mZXRjaEJhbm5lcigpLnN1YnNjcmliZSh2YWwgPT4ge1xyXG5cdFx0XHR0aGlzLmJhbm5lciA9IHZhbDtcclxuXHRcdFx0dGhpcy5iYW5uZXIuRGVmYXVsdEJhbm5lckltYWdlID0gZnVsbEFwaVBhdGgodGhpcy5iYW5uZXIuRGVmYXVsdEJhbm5lckltYWdlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRpbml0Q2FsZW5kYXIoKSB7XHJcblx0XHR0aGlzLmZldGNoSW5kZXhVc2VyRGlhcnkoKS5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdHRoaXMudXNlckRpYXJ5ID0gdjtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRpbml0Tm90aWNlKCkge1xyXG5cdFx0dGhpcy5mZXRjaE15Tm90aWNlKCkuc3Vic2NyaWJlKHYgPT4ge1xyXG5cdFx0XHR0aGlzLm5vdGljZSA9IHYuRGF0YTtcclxuXHRcdFx0dGhpcy5lbGVzLmFkZEVsZW1lbnQodi5FbGVtZW50Rm9yQnJvd3NlTm90aWNlKTtcclxuXHRcdFx0di5EYXRhLmZvckVhY2gob25lID0+IHRoaXMuZWxlcy5zZXRVUkxTaWduKG9uZS5VUkwsIG9uZS5TaWduKSk7XHJcblx0XHRcdC8vIOeEtuWQjuaJjeiDveiuoeeul+WJjeerr3VybFxyXG5cdFx0XHR0aGlzLm5vdGljZS5mb3JFYWNoKG9uZSA9PiB7XHJcblx0XHRcdFx0b25lLkZyb250VVJMID0gdGhpcy5lbGVzLmZyb250RWxlbWVudFVSTCh2LkVsZW1lbnRGb3JCcm93c2VOb3RpY2UuTmFtZSwgb25lLlVSTCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHVwZGF0ZVVzZXJEaWFyeShkYXk6IERhdGUsIGNvbnRlbnQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlSW5kZXhVc2VyRGlhcnkoeyBEYXk6IGRheSwgQ29udGVudDogY29udGVudCB9KS5waXBlKFxyXG5cdFx0XHR0YXAoKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGZvdW5kID0gdGhpcy51c2VyRGlhcnkuZmluZCh2ID0+IHYuRGF5LmdldFRpbWUoKSA9PT0gZGF5LmdldFRpbWUoKSk7XHJcblx0XHRcdFx0aWYgKGZvdW5kKSB7XHJcblx0XHRcdFx0XHRmb3VuZC5Db250ZW50ID0gY29udGVudDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyRGlhcnkucHVzaCh7IERheTogZGF5LCBDb250ZW50OiBjb250ZW50IH0pO1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyRGlhcnkuc29ydCgoYSwgYikgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYS5EYXkuZ2V0VGltZSgpIC0gYi5EYXkuZ2V0VGltZSgpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0cmVtb3ZlVXNlckRpYXJ5KGRheTogRGF0ZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMucmVtb3ZlSW5kZXhVc2VyRGlhcnkoZGF5KS5waXBlKFxyXG5cdFx0XHR0YXAoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMudXNlckRpYXJ5LnNwbGljZSh0aGlzLnVzZXJEaWFyeS5maW5kSW5kZXgodiA9PiB2LkRheS5nZXRUaW1lKCkgPT09IGRheS5nZXRUaW1lKCkpLCAxKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdHVwZGF0ZVNldHRpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy51cGRhdGVJbmRleFNldHRpbmcodGhpcy51c2VyU2V0dGluZyk7XHJcblx0fVxyXG59XHJcbiJdfQ==