@yelon/bis 12.0.13 → 12.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/bis.d.ts +4 -4
- package/bundles/bis.umd.js +7 -7
- package/bundles/layout.umd.js +2570 -1631
- package/bundles/layout.umd.js.map +1 -1
- package/bundles/shared.umd.js +1226 -1229
- package/bundles/shared.umd.js.map +1 -1
- package/esm2015/bis.js +4 -4
- package/esm2015/layout/act.guard.js +115 -0
- package/esm2015/layout/bis.config.js +10 -10
- package/esm2015/layout/contact/contact.component.js +434 -0
- package/esm2015/layout/contact/contact.service.js +150 -0
- package/esm2015/layout/layout.js +8 -6
- package/esm2015/layout/layout.module.js +47 -35
- package/esm2015/layout/path-to-regexp.service.js +237 -0
- package/esm2015/layout/public_api.js +15 -11
- package/esm2015/layout/stomp.config.js +19 -19
- package/esm2015/layout/widgets/index.js +7 -7
- package/esm2015/layout/widgets/yz.application.component.js +132 -132
- package/esm2015/layout/widgets/yz.clear-storage.component.js +35 -35
- package/esm2015/layout/widgets/yz.fullscreen.component.js +32 -32
- package/esm2015/layout/widgets/yz.i18n.component.js +50 -50
- package/esm2015/layout/widgets/yz.notify.component.js +143 -143
- package/esm2015/layout/widgets/yz.them-btn.component.js +106 -106
- package/esm2015/layout/widgets/yz.user.component.js +57 -57
- package/esm2015/layout/yz.auth.service.js +157 -157
- package/esm2015/layout/yz.basic.component.js +40 -40
- package/esm2015/layout/yz.default.interceptor.js +203 -203
- package/esm2015/layout/yz.i18n.service.js +102 -104
- package/esm2015/layout/yz.startup.service.js +137 -137
- package/esm2015/layout/yz.stomp.service.js +90 -90
- package/esm2015/public_api.js +1 -1
- package/esm2015/shared/public_api.js +4 -4
- package/esm2015/shared/shared-yelon.module.js +107 -107
- package/esm2015/shared/shared-zorro.module.js +81 -79
- package/esm2015/shared/shared.js +4 -4
- package/esm2015/shared/shared.module.js +22 -16
- package/esm2015/shared/style-icons.js +795 -795
- package/fesm2015/bis.js +2 -2
- package/fesm2015/layout.js +2148 -1221
- package/fesm2015/layout.js.map +1 -1
- package/fesm2015/shared.js +909 -901
- package/fesm2015/shared.js.map +1 -1
- package/layout/act.guard.d.ts +20 -0
- package/layout/bis.config.d.ts +3 -3
- package/layout/contact/contact.component.d.ts +166 -0
- package/layout/contact/contact.service.d.ts +115 -0
- package/layout/layout.d.ts +7 -5
- package/layout/layout.metadata.json +1 -1
- package/layout/layout.module.d.ts +2 -2
- package/layout/path-to-regexp.service.d.ts +23 -0
- package/layout/public_api.d.ts +12 -10
- package/layout/stomp.config.d.ts +3 -3
- package/layout/widgets/index.d.ts +7 -7
- package/layout/widgets/yz.application.component.d.ts +45 -45
- package/layout/widgets/yz.clear-storage.component.d.ts +8 -8
- package/layout/widgets/yz.fullscreen.component.d.ts +6 -6
- package/layout/widgets/yz.i18n.component.d.ts +19 -19
- package/layout/widgets/yz.notify.component.d.ts +25 -25
- package/layout/widgets/yz.them-btn.component.d.ts +29 -29
- package/layout/widgets/yz.user.component.d.ts +25 -25
- package/layout/yz.auth.service.d.ts +19 -19
- package/layout/yz.basic.component.d.ts +15 -15
- package/layout/yz.default.interceptor.d.ts +26 -26
- package/layout/yz.i18n.service.d.ts +24 -24
- package/layout/yz.startup.service.d.ts +31 -31
- package/layout/yz.stomp.service.d.ts +39 -39
- package/package.json +10 -10
- package/public_api.d.ts +2 -2
- package/shared/public_api.d.ts +4 -4
- package/shared/shared-yelon.module.d.ts +3 -3
- package/shared/shared-zorro.module.d.ts +2 -2
- package/shared/shared.d.ts +4 -4
- package/shared/shared.metadata.json +1 -1
- package/shared/shared.module.d.ts +2 -2
- package/shared/style-icons.d.ts +1 -1
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/core';
|
|
2
|
-
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
3
|
-
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
4
|
-
import { CacheService } from '@yelon/cache';
|
|
5
|
-
import { WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
6
|
-
import { mergeBisConfig } from '../bis.config';
|
|
7
|
-
export class YzHeaderUserComponent {
|
|
8
|
-
constructor(injector, msg, tokenService,
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
configService, cacheService) {
|
|
11
|
-
this.injector = injector;
|
|
12
|
-
this.msg = msg;
|
|
13
|
-
this.tokenService = tokenService;
|
|
14
|
-
this.configService = configService;
|
|
15
|
-
this.cacheService = cacheService;
|
|
16
|
-
this.icon = '';
|
|
17
|
-
this.username = '';
|
|
18
|
-
this.menus = [];
|
|
19
|
-
this.config = mergeBisConfig(configService);
|
|
20
|
-
}
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
23
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
24
|
-
this.username = user.realname ? user.realname : '未命名';
|
|
25
|
-
this.icon = user.avatarId
|
|
26
|
-
? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
|
|
27
|
-
: `./assets/tmp/img/avatar.jpg`;
|
|
28
|
-
this.menus = projectInfo.profileList;
|
|
29
|
-
}
|
|
30
|
-
logout() {
|
|
31
|
-
localStorage.clear();
|
|
32
|
-
this.tokenService.clear();
|
|
33
|
-
this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
|
|
34
|
-
}
|
|
35
|
-
to(href) {
|
|
36
|
-
if (href) {
|
|
37
|
-
this.injector.get(WINDOW).open(href);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.msg.error('该菜单没有配置链接!');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
YzHeaderUserComponent.decorators = [
|
|
45
|
-
{ type: Component, args: [{
|
|
46
|
-
selector: 'yz-header-user',
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/core';
|
|
2
|
+
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
3
|
+
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
4
|
+
import { CacheService } from '@yelon/cache';
|
|
5
|
+
import { WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
6
|
+
import { mergeBisConfig } from '../bis.config';
|
|
7
|
+
export class YzHeaderUserComponent {
|
|
8
|
+
constructor(injector, msg, tokenService,
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
configService, cacheService) {
|
|
11
|
+
this.injector = injector;
|
|
12
|
+
this.msg = msg;
|
|
13
|
+
this.tokenService = tokenService;
|
|
14
|
+
this.configService = configService;
|
|
15
|
+
this.cacheService = cacheService;
|
|
16
|
+
this.icon = '';
|
|
17
|
+
this.username = '';
|
|
18
|
+
this.menus = [];
|
|
19
|
+
this.config = mergeBisConfig(configService);
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
23
|
+
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
24
|
+
this.username = user.realname ? user.realname : '未命名';
|
|
25
|
+
this.icon = user.avatarId
|
|
26
|
+
? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
|
|
27
|
+
: `./assets/tmp/img/avatar.jpg`;
|
|
28
|
+
this.menus = projectInfo.profileList;
|
|
29
|
+
}
|
|
30
|
+
logout() {
|
|
31
|
+
localStorage.clear();
|
|
32
|
+
this.tokenService.clear();
|
|
33
|
+
this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
|
|
34
|
+
}
|
|
35
|
+
to(href) {
|
|
36
|
+
if (href) {
|
|
37
|
+
this.injector.get(WINDOW).open(href);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.msg.error('该菜单没有配置链接!');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
YzHeaderUserComponent.decorators = [
|
|
45
|
+
{ type: Component, args: [{
|
|
46
|
+
selector: 'yz-header-user',
|
|
47
47
|
template: `
|
|
48
48
|
<div
|
|
49
49
|
class="yunzai-default__nav-item d-flex align-items-center px-sm"
|
|
@@ -67,15 +67,15 @@ YzHeaderUserComponent.decorators = [
|
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
69
69
|
</nz-dropdown-menu>
|
|
70
|
-
`,
|
|
71
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
72
|
-
},] }
|
|
73
|
-
];
|
|
74
|
-
YzHeaderUserComponent.ctorParameters = () => [
|
|
75
|
-
{ type: Injector },
|
|
76
|
-
{ type: NzMessageService },
|
|
77
|
-
{ type: undefined, decorators: [{ type: Inject, args: [YA_SERVICE_TOKEN,] }] },
|
|
78
|
-
{ type: YunzaiConfigService },
|
|
79
|
-
{ type: CacheService }
|
|
80
|
-
];
|
|
70
|
+
`,
|
|
71
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
72
|
+
},] }
|
|
73
|
+
];
|
|
74
|
+
YzHeaderUserComponent.ctorParameters = () => [
|
|
75
|
+
{ type: Injector },
|
|
76
|
+
{ type: NzMessageService },
|
|
77
|
+
{ type: undefined, decorators: [{ type: Inject, args: [YA_SERVICE_TOKEN,] }] },
|
|
78
|
+
{ type: YunzaiConfigService },
|
|
79
|
+
{ type: CacheService }
|
|
80
|
+
];
|
|
81
81
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXoudXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L3dpZGdldHMveXoudXNlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0MvQyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQ1UsUUFBa0IsRUFDbEIsR0FBcUIsRUFDSyxZQUEyQjtJQUM3RCxhQUFhO0lBQ0wsYUFBa0MsRUFDbEMsWUFBMEI7UUFMMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNLLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRXJELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUtwQyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUxyQixJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBTUQsUUFBUTtRQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0QsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLENBQUM7SUFDMUYsQ0FBQztJQUVELEVBQUUsQ0FBQyxJQUFZO1FBQ2IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7O1lBcEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7WUEzQ29ELFFBQVE7WUFFcEQsZ0JBQWdCOzRDQWdEcEIsTUFBTSxTQUFDLGdCQUFnQjtZQTVDVyxtQkFBbUI7WUFEakQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiwgSVRva2VuU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBXSU5ET1csIFl1bnphaUJ1c2luZXNzQ29uZmlnLCBZdW56YWlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4uL2Jpcy5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJMaW5rIHtcbiAgaWNvbjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5ei1oZWFkZXItdXNlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC1zbVwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgbnpQbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwidXNlck1lbnVcIlxuICAgID5cbiAgICAgIDxuei1hdmF0YXIgW256U3JjXT1cImljb25cIiBuelNpemU9XCJzbWFsbFwiIGNsYXNzPVwibXItc21cIj48L256LWF2YXRhcj5cbiAgICAgIHt7IHVzZXJuYW1lIH19XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI3VzZXJNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndpZHRoLXNtXCI+XG4gICAgICAgIDxkaXYgbnotbWVudS1pdGVtICpuZ0Zvcj1cImxldCBtIG9mIG1lbnVzXCIgKGNsaWNrKT1cInRvKG0udXJsKVwiPlxuICAgICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJtLmljb25cIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7IG0ubmFtZSB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxsaSBuei1tZW51LWRpdmlkZXI+PC9saT5cbiAgICAgICAgPGRpdiBuei1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ291dCgpXCI+XG4gICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJsb2dvdXRcIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7ICdtZW51LmFjY291bnQubG9nb3V0JyB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl6SGVhZGVyVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG1zZzogTnpNZXNzYWdlU2VydmljZSxcbiAgICBASW5qZWN0KFlBX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBJVG9rZW5TZXJ2aWNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IG1lcmdlQmlzQ29uZmlnKGNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgaWNvbjogc3RyaW5nID0gJyc7XG4gIHVzZXJuYW1lOiBzdHJpbmcgPSAnJztcbiAgbWVudXM6IFVzZXJMaW5rW10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9qZWN0SW5mbyA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3Byb2plY3RfaW5mbycsIHsgbW9kZTogJ25vbmUnIH0pO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgdGhpcy51c2VybmFtZSA9IHVzZXIucmVhbG5hbWUgPyB1c2VyLnJlYWxuYW1lIDogJ+acquWRveWQjSc7XG4gICAgdGhpcy5pY29uID0gdXNlci5hdmF0YXJJZFxuICAgICAgPyBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt1c2VyLmF2YXRhcklkfWBcbiAgICAgIDogYC4vYXNzZXRzL3RtcC9pbWcvYXZhdGFyLmpwZ2A7XG4gICAgdGhpcy5tZW51cyA9IHByb2plY3RJbmZvLnByb2ZpbGVMaXN0O1xuICB9XG5cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICB9XG5cbiAgdG8oaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGhyZWYpIHtcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykub3BlbihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tc2cuZXJyb3IoJ+ivpeiPnOWNleayoeaciemFjee9rumTvuaOpSEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,158 +1,158 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import { forkJoin, of } from 'rxjs';
|
|
3
|
-
import { map, mergeAll, mergeMap } from 'rxjs/operators';
|
|
4
|
-
import { mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
5
|
-
import { CacheService } from '@yelon/cache';
|
|
6
|
-
import { _HttpClient } from '@yelon/theme';
|
|
7
|
-
import { WINDOW } from '@yelon/util';
|
|
8
|
-
import { YunzaiConfigService } from '@yelon/util/config';
|
|
9
|
-
import { log } from '@yelon/util/other';
|
|
10
|
-
import { mergeBisConfig } from './bis.config';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class YzAuthService {
|
|
13
|
-
constructor(injector) {
|
|
14
|
-
this.injector = injector;
|
|
15
|
-
this.option = mergeAuthConfig(this.csr);
|
|
16
|
-
this.bis = mergeBisConfig(this.csr);
|
|
17
|
-
}
|
|
18
|
-
get csr() {
|
|
19
|
-
return this.injector.get(YunzaiConfigService);
|
|
20
|
-
}
|
|
21
|
-
get tokenService() {
|
|
22
|
-
return this.injector.get(YA_SERVICE_TOKEN);
|
|
23
|
-
}
|
|
24
|
-
get httpClient() {
|
|
25
|
-
return this.injector.get(_HttpClient);
|
|
26
|
-
}
|
|
27
|
-
get cacheService() {
|
|
28
|
-
return this.injector.get(CacheService);
|
|
29
|
-
}
|
|
30
|
-
askToken() {
|
|
31
|
-
var _a;
|
|
32
|
-
log('yz.auth.service: ', 'askToken');
|
|
33
|
-
if ((_a = this.tokenService.get()) === null || _a === void 0 ? void 0 : _a.token) {
|
|
34
|
-
return of(this.tokenService.get());
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
if (this.bis.loginForm) {
|
|
38
|
-
return this.fetchTokenByUP();
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
return this.fetchTokenByCas();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
fetchTokenByUP() {
|
|
46
|
-
log('yz.auth.service: ', 'fetchTokenByUP');
|
|
47
|
-
return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(map((response) => {
|
|
48
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response;
|
|
49
|
-
return {
|
|
50
|
-
token: access_token,
|
|
51
|
-
expired: expires_in,
|
|
52
|
-
refreshToken: refresh_token,
|
|
53
|
-
tokenType: token_type,
|
|
54
|
-
scope
|
|
55
|
-
};
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
fetchTokenByCas() {
|
|
59
|
-
log('yz.auth.service: ', 'fetchTokenByCas');
|
|
60
|
-
const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);
|
|
61
|
-
return this.httpClient
|
|
62
|
-
.get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)
|
|
63
|
-
.pipe(map((response) => {
|
|
64
|
-
switch (response.errcode) {
|
|
65
|
-
case 2000:
|
|
66
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response.data;
|
|
67
|
-
return {
|
|
68
|
-
token: access_token,
|
|
69
|
-
expired: expires_in,
|
|
70
|
-
refreshToken: refresh_token,
|
|
71
|
-
tokenType: token_type,
|
|
72
|
-
scope
|
|
73
|
-
};
|
|
74
|
-
case 2001:
|
|
75
|
-
this.injector.get(WINDOW).location.href = response.msg;
|
|
76
|
-
throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
|
|
77
|
-
default:
|
|
78
|
-
if (response.data) {
|
|
79
|
-
console.error(response.data);
|
|
80
|
-
throw Error(response.data);
|
|
81
|
-
}
|
|
82
|
-
else if (response.msg) {
|
|
83
|
-
console.error(response.msg);
|
|
84
|
-
throw Error(response.msg);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
console.error('cas unknown error');
|
|
88
|
-
throw Error('Unknown Error: Cas auth exception!');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
login() {
|
|
94
|
-
log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);
|
|
95
|
-
return this.askToken().pipe(mergeMap(token => {
|
|
96
|
-
log('yz.auth.service: get token->', token);
|
|
97
|
-
this.csr.set('auth', {
|
|
98
|
-
token_send_key: 'Authorization',
|
|
99
|
-
token_send_template: `${token.tokenType} \${token}`,
|
|
100
|
-
token_send_place: 'header'
|
|
101
|
-
});
|
|
102
|
-
log('yz.auth.service: ', 'set token');
|
|
103
|
-
this.tokenService.set(token);
|
|
104
|
-
return this.cacheInit();
|
|
105
|
-
}), mergeAll());
|
|
106
|
-
}
|
|
107
|
-
cacheInit() {
|
|
108
|
-
log('yz.auth.service: ', 'cacheInit');
|
|
109
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
110
|
-
const header = this.cacheService.get('_yz_header', { mode: 'none' });
|
|
111
|
-
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
112
|
-
return forkJoin(of(user), of(header), of(project)).pipe(mergeMap(([u, h, p]) => {
|
|
113
|
-
let list = [];
|
|
114
|
-
// user cache
|
|
115
|
-
if (!u) {
|
|
116
|
-
log('yz.auth.service: ', 'fetch user cache');
|
|
117
|
-
list.push(this.httpClient.get(`/auth/user`).pipe(map((user) => {
|
|
118
|
-
this.cacheService.set('_yz_user', user.principal);
|
|
119
|
-
})));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
log('yz.auth.service: ', 'user recache');
|
|
123
|
-
list.push(of(() => { }));
|
|
124
|
-
}
|
|
125
|
-
// header cache
|
|
126
|
-
if (!h) {
|
|
127
|
-
log('yz.auth.service: ', 'fetch header cache');
|
|
128
|
-
list.push(this.httpClient.get(`/auth/allheader/v2`).pipe(map((header) => {
|
|
129
|
-
this.cacheService.set('_yz_header', header.data);
|
|
130
|
-
})));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
log('yz.auth.service: ', 'header recache');
|
|
134
|
-
list.push(of(() => { }));
|
|
135
|
-
}
|
|
136
|
-
// project cache
|
|
137
|
-
if (!p) {
|
|
138
|
-
log('yz.auth.service: ', 'fetch project cache');
|
|
139
|
-
list.push(this.httpClient.get(`/app-manager/project/info`).pipe(map((info) => {
|
|
140
|
-
this.cacheService.set('_yz_project_info', info.data);
|
|
141
|
-
})));
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
log('yz.auth.service: ', 'project recache');
|
|
145
|
-
list.push(of(() => { }));
|
|
146
|
-
}
|
|
147
|
-
return forkJoin(list);
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
YzAuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function YzAuthService_Factory() { return new YzAuthService(i0.ɵɵinject(i0.INJECTOR)); }, token: YzAuthService, providedIn: "root" });
|
|
152
|
-
YzAuthService.decorators = [
|
|
153
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
154
|
-
];
|
|
155
|
-
YzAuthService.ctorParameters = () => [
|
|
156
|
-
{ type: Injector }
|
|
157
|
-
];
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { forkJoin, of } from 'rxjs';
|
|
3
|
+
import { map, mergeAll, mergeMap } from 'rxjs/operators';
|
|
4
|
+
import { mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
5
|
+
import { CacheService } from '@yelon/cache';
|
|
6
|
+
import { _HttpClient } from '@yelon/theme';
|
|
7
|
+
import { WINDOW } from '@yelon/util';
|
|
8
|
+
import { YunzaiConfigService } from '@yelon/util/config';
|
|
9
|
+
import { log } from '@yelon/util/other';
|
|
10
|
+
import { mergeBisConfig } from './bis.config';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class YzAuthService {
|
|
13
|
+
constructor(injector) {
|
|
14
|
+
this.injector = injector;
|
|
15
|
+
this.option = mergeAuthConfig(this.csr);
|
|
16
|
+
this.bis = mergeBisConfig(this.csr);
|
|
17
|
+
}
|
|
18
|
+
get csr() {
|
|
19
|
+
return this.injector.get(YunzaiConfigService);
|
|
20
|
+
}
|
|
21
|
+
get tokenService() {
|
|
22
|
+
return this.injector.get(YA_SERVICE_TOKEN);
|
|
23
|
+
}
|
|
24
|
+
get httpClient() {
|
|
25
|
+
return this.injector.get(_HttpClient);
|
|
26
|
+
}
|
|
27
|
+
get cacheService() {
|
|
28
|
+
return this.injector.get(CacheService);
|
|
29
|
+
}
|
|
30
|
+
askToken() {
|
|
31
|
+
var _a;
|
|
32
|
+
log('yz.auth.service: ', 'askToken');
|
|
33
|
+
if ((_a = this.tokenService.get()) === null || _a === void 0 ? void 0 : _a.token) {
|
|
34
|
+
return of(this.tokenService.get());
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
if (this.bis.loginForm) {
|
|
38
|
+
return this.fetchTokenByUP();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return this.fetchTokenByCas();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
fetchTokenByUP() {
|
|
46
|
+
log('yz.auth.service: ', 'fetchTokenByUP');
|
|
47
|
+
return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(map((response) => {
|
|
48
|
+
const { access_token, expires_in, refresh_token, scope, token_type } = response;
|
|
49
|
+
return {
|
|
50
|
+
token: access_token,
|
|
51
|
+
expired: expires_in,
|
|
52
|
+
refreshToken: refresh_token,
|
|
53
|
+
tokenType: token_type,
|
|
54
|
+
scope
|
|
55
|
+
};
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
fetchTokenByCas() {
|
|
59
|
+
log('yz.auth.service: ', 'fetchTokenByCas');
|
|
60
|
+
const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);
|
|
61
|
+
return this.httpClient
|
|
62
|
+
.get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)
|
|
63
|
+
.pipe(map((response) => {
|
|
64
|
+
switch (response.errcode) {
|
|
65
|
+
case 2000:
|
|
66
|
+
const { access_token, expires_in, refresh_token, scope, token_type } = response.data;
|
|
67
|
+
return {
|
|
68
|
+
token: access_token,
|
|
69
|
+
expired: expires_in,
|
|
70
|
+
refreshToken: refresh_token,
|
|
71
|
+
tokenType: token_type,
|
|
72
|
+
scope
|
|
73
|
+
};
|
|
74
|
+
case 2001:
|
|
75
|
+
this.injector.get(WINDOW).location.href = response.msg;
|
|
76
|
+
throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
|
|
77
|
+
default:
|
|
78
|
+
if (response.data) {
|
|
79
|
+
console.error(response.data);
|
|
80
|
+
throw Error(response.data);
|
|
81
|
+
}
|
|
82
|
+
else if (response.msg) {
|
|
83
|
+
console.error(response.msg);
|
|
84
|
+
throw Error(response.msg);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.error('cas unknown error');
|
|
88
|
+
throw Error('Unknown Error: Cas auth exception!');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
login() {
|
|
94
|
+
log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);
|
|
95
|
+
return this.askToken().pipe(mergeMap(token => {
|
|
96
|
+
log('yz.auth.service: get token->', token);
|
|
97
|
+
this.csr.set('auth', {
|
|
98
|
+
token_send_key: 'Authorization',
|
|
99
|
+
token_send_template: `${token.tokenType} \${token}`,
|
|
100
|
+
token_send_place: 'header'
|
|
101
|
+
});
|
|
102
|
+
log('yz.auth.service: ', 'set token');
|
|
103
|
+
this.tokenService.set(token);
|
|
104
|
+
return this.cacheInit();
|
|
105
|
+
}), mergeAll());
|
|
106
|
+
}
|
|
107
|
+
cacheInit() {
|
|
108
|
+
log('yz.auth.service: ', 'cacheInit');
|
|
109
|
+
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
110
|
+
const header = this.cacheService.get('_yz_header', { mode: 'none' });
|
|
111
|
+
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
112
|
+
return forkJoin(of(user), of(header), of(project)).pipe(mergeMap(([u, h, p]) => {
|
|
113
|
+
let list = [];
|
|
114
|
+
// user cache
|
|
115
|
+
if (!u) {
|
|
116
|
+
log('yz.auth.service: ', 'fetch user cache');
|
|
117
|
+
list.push(this.httpClient.get(`/auth/user`).pipe(map((user) => {
|
|
118
|
+
this.cacheService.set('_yz_user', user.principal);
|
|
119
|
+
})));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
log('yz.auth.service: ', 'user recache');
|
|
123
|
+
list.push(of(() => { }));
|
|
124
|
+
}
|
|
125
|
+
// header cache
|
|
126
|
+
if (!h) {
|
|
127
|
+
log('yz.auth.service: ', 'fetch header cache');
|
|
128
|
+
list.push(this.httpClient.get(`/auth/allheader/v2`).pipe(map((header) => {
|
|
129
|
+
this.cacheService.set('_yz_header', header.data);
|
|
130
|
+
})));
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
log('yz.auth.service: ', 'header recache');
|
|
134
|
+
list.push(of(() => { }));
|
|
135
|
+
}
|
|
136
|
+
// project cache
|
|
137
|
+
if (!p) {
|
|
138
|
+
log('yz.auth.service: ', 'fetch project cache');
|
|
139
|
+
list.push(this.httpClient.get(`/app-manager/project/info`).pipe(map((info) => {
|
|
140
|
+
this.cacheService.set('_yz_project_info', info.data);
|
|
141
|
+
})));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
log('yz.auth.service: ', 'project recache');
|
|
145
|
+
list.push(of(() => { }));
|
|
146
|
+
}
|
|
147
|
+
return forkJoin(list);
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
YzAuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function YzAuthService_Factory() { return new YzAuthService(i0.ɵɵinject(i0.INJECTOR)); }, token: YzAuthService, providedIn: "root" });
|
|
152
|
+
YzAuthService.decorators = [
|
|
153
|
+
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
154
|
+
];
|
|
155
|
+
YzAuthService.ctorParameters = () => [
|
|
156
|
+
{ type: Injector }
|
|
157
|
+
];
|
|
158
158
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95ei5hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekQsT0FBTyxFQUE4QixXQUFXLElBQUksZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUEwQyxNQUFNLGFBQWEsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHOUMsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTs7UUFDTixHQUFHLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLDBDQUFFLEtBQUssRUFBRTtZQUNsQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRyxDQUFDLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQy9CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMseUNBQXlDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQzdGLEdBQUcsQ0FBQyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtZQUMxQixNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLFFBQVEsQ0FBQztZQUNoRixPQUFPO2dCQUNMLEtBQUssRUFBRSxZQUFZO2dCQUNuQixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsWUFBWSxFQUFFLGFBQWE7Z0JBQzNCLFNBQVMsRUFBRSxVQUFVO2dCQUNyQixLQUFLO2FBQ04sQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLEdBQUcsQ0FBQyx5Q0FBeUMsR0FBRyxvQ0FBb0MsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQzNHLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFtQixFQUFFLEVBQUU7WUFDMUIsUUFBUSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUN4QixLQUFLLElBQUk7b0JBQ1AsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNyRixPQUFPO3dCQUNMLEtBQUssRUFBRSxZQUFZO3dCQUNuQixPQUFPLEVBQUUsVUFBVTt3QkFDbkIsWUFBWSxFQUFFLGFBQWE7d0JBQzNCLFNBQVMsRUFBRSxVQUFVO3dCQUNyQixLQUFLO3FCQUNTLENBQUM7Z0JBQ25CLEtBQUssSUFBSTtvQkFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ3ZELE1BQU0sS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7Z0JBQ3ZFO29CQUNFLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTt3QkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzdCLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDNUI7eUJBQU0sSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFO3dCQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDNUIsTUFBTSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMzQjt5QkFBTTt3QkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7d0JBQ25DLE1BQU0sS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7cUJBQ25EO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUs7UUFDSCxHQUFHLENBQUMsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQ3pCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLGNBQWMsRUFBRSxlQUFlO2dCQUMvQixtQkFBbUIsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLFlBQVk7Z0JBQ25ELGdCQUFnQixFQUFFLFFBQVE7YUFDM0IsQ0FBQyxDQUFDO1lBQ0gsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxFQUNGLFFBQVEsRUFBRSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxhQUFhO1lBQ2IsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDTixHQUFHLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FDUCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLElBQWUsRUFBRSxFQUFFO29CQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFZLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7WUFDRCxlQUFlO1lBQ2YsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDTixHQUFHLENBQUMsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FDUCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLENBQUMsTUFBaUIsRUFBRSxFQUFFO29CQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQVksR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztZQUNELGdCQUFnQjtZQUNoQixJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNOLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxDQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxJQUFlLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQVksR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7O1lBbEtGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQWZiLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgSVRva2VuTW9kZWwsIElUb2tlblNlcnZpY2UsIG1lcmdlQ29uZmlnIGFzIG1lcmdlQXV0aENvbmZpZywgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBfSHR0cENsaWVudCB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBXSU5ET1csIFl1bnphaUF1dGhDb25maWcsIFl1bnphaUJ1c2luZXNzQ29uZmlnIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgWXVuemFpQ29uZmlnU2VydmljZSB9IGZyb20gJ0B5ZWxvbi91dGlsL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICdAeWVsb24vdXRpbC9vdGhlcic7XG5cbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZekF1dGhTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIG9wdGlvbjogWXVuemFpQXV0aENvbmZpZztcbiAgcHJvdGVjdGVkIGJpczogWXVuemFpQnVzaW5lc3NDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLm9wdGlvbiA9IG1lcmdlQXV0aENvbmZpZyh0aGlzLmNzcik7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNzcik7XG4gIH1cblxuICBwcml2YXRlIGdldCBjc3IoKTogWXVuemFpQ29uZmlnU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFl1bnphaUNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdG9rZW5TZXJ2aWNlKCk6IElUb2tlblNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChZQV9TRVJWSUNFX1RPS0VOKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGh0dHBDbGllbnQoKTogX0h0dHBDbGllbnQge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChfSHR0cENsaWVudCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjYWNoZVNlcnZpY2UoKTogQ2FjaGVTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoQ2FjaGVTZXJ2aWNlKTtcbiAgfVxuXG4gIGFza1Rva2VuKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2Fza1Rva2VuJyk7XG4gICAgaWYgKHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpPy50b2tlbikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmJpcy5sb2dpbkZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hUb2tlbkJ5VVAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoVG9rZW5CeUNhcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZldGNoVG9rZW5CeVVQKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoVG9rZW5CeVVQJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KGAvYXV0aC9vYXV0aC90b2tlbj9fYWxsb3dfYW5vbnltb3VzPXRydWVgLCB0aGlzLmJpcy5sb2dpbkZvcm0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgY29uc3QgeyBhY2Nlc3NfdG9rZW4sIGV4cGlyZXNfaW4sIHJlZnJlc2hfdG9rZW4sIHNjb3BlLCB0b2tlbl90eXBlIH0gPSByZXNwb25zZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b2tlbjogYWNjZXNzX3Rva2VuLFxuICAgICAgICAgIGV4cGlyZWQ6IGV4cGlyZXNfaW4sXG4gICAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgICAgIHRva2VuVHlwZTogdG9rZW5fdHlwZSxcbiAgICAgICAgICBzY29wZVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hUb2tlbkJ5Q2FzKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoVG9rZW5CeUNhcycpO1xuICAgIGNvbnN0IHVyaSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLmxvY2F0aW9uLmhyZWYpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5nZXQoYC9jYXMtcHJveHkvYXBwL3ZhbGlkYXRlX2Z1bGw/Y2FsbGJhY2s9JHt1cml9Jl9hbGxvd19hbm9ueW1vdXM9dHJ1ZSZ0aW1lc3RhbXA9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAocmVzcG9uc2UuZXJyY29kZSkge1xuICAgICAgICAgICAgY2FzZSAyMDAwOlxuICAgICAgICAgICAgICBjb25zdCB7IGFjY2Vzc190b2tlbiwgZXhwaXJlc19pbiwgcmVmcmVzaF90b2tlbiwgc2NvcGUsIHRva2VuX3R5cGUgfSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICAgICAgICBleHBpcmVkOiBleHBpcmVzX2luLFxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgICAgICAgICAgc2NvcGVcbiAgICAgICAgICAgICAgfSBhcyBJVG9rZW5Nb2RlbDtcbiAgICAgICAgICAgIGNhc2UgMjAwMTpcbiAgICAgICAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UubXNnO1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNvb2tpZSBFcnJvcjogQ2FuJ3QgZmluZCBDYXMgQ29va2llLFNvIGp1bXAgdG8gbG9naW4hXCIpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1zZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UubXNnKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NhcyB1bmtub3duIGVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2dpbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2xvZ2luIHdoaXRlIGxvZ2luIGZvcm0tPicsIHRoaXMuYmlzLmxvZ2luRm9ybSk7XG4gICAgcmV0dXJuIHRoaXMuYXNrVG9rZW4oKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodG9rZW4gPT4ge1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogZ2V0IHRva2VuLT4nLCB0b2tlbik7XG4gICAgICAgIHRoaXMuY3NyLnNldCgnYXV0aCcsIHtcbiAgICAgICAgICB0b2tlbl9zZW5kX2tleTogJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgIHRva2VuX3NlbmRfdGVtcGxhdGU6IGAke3Rva2VuLnRva2VuVHlwZX0gXFwke3Rva2VufWAsXG4gICAgICAgICAgdG9rZW5fc2VuZF9wbGFjZTogJ2hlYWRlcidcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnc2V0IHRva2VuJyk7XG4gICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh0b2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlSW5pdCgpO1xuICAgICAgfSksXG4gICAgICBtZXJnZUFsbCgpXG4gICAgKTtcbiAgfVxuXG4gIGNhY2hlSW5pdCgpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnY2FjaGVJbml0Jyk7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el9oZWFkZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfcHJvamVjdF9pbmZvJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgcmV0dXJuIGZvcmtKb2luKG9mKHVzZXIpLCBvZihoZWFkZXIpLCBvZihwcm9qZWN0KSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChbdSwgaCwgcF0pID0+IHtcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcbiAgICAgICAgLy8gdXNlciBjYWNoZVxuICAgICAgICBpZiAoIXUpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIHVzZXIgY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2goXG4gICAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXV0aC91c2VyYCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh1c2VyOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el91c2VyJywgdXNlci5wcmluY2lwYWwpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICd1c2VyIHJlY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2gob2Y8TnpTYWZlQW55PigoKSA9PiB7fSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhlYWRlciBjYWNoZVxuICAgICAgICBpZiAoIWgpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIGhlYWRlciBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoaGVhZGVyOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el9oZWFkZXInLCBoZWFkZXIuZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2hlYWRlciByZWNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKG9mPE56U2FmZUFueT4oKCkgPT4ge30pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm9qZWN0IGNhY2hlXG4gICAgICAgIGlmICghcCkge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2ggcHJvamVjdCBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hcHAtbWFuYWdlci9wcm9qZWN0L2luZm9gKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKGluZm86IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X3Byb2plY3RfaW5mbycsIGluZm8uZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3Byb2plY3QgcmVjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChvZjxOelNhZmVBbnk+KCgpID0+IHt9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxpc3QpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { CacheService } from '@yelon/cache';
|
|
3
|
-
import { YzStompService } from './yz.stomp.service';
|
|
4
|
-
export class YzLayoutBasicComponent {
|
|
5
|
-
constructor(cacheService, yzStompService) {
|
|
6
|
-
this.cacheService = cacheService;
|
|
7
|
-
this.yzStompService = yzStompService;
|
|
8
|
-
this.options = {
|
|
9
|
-
logoExpanded: `./assets/logo-full.svg`,
|
|
10
|
-
logoCollapsed: `./assets/logo.svg`
|
|
11
|
-
};
|
|
12
|
-
this.intro = '';
|
|
13
|
-
this.text = '';
|
|
14
|
-
this.icon = '';
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
const current = this.cacheService.get('_yz_current', { mode: 'none' });
|
|
18
|
-
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
19
|
-
this.text = current.text ? current.text : '应用名称';
|
|
20
|
-
this.intro = current.intro ? current.intro : '应用描述';
|
|
21
|
-
this.icon = current.icon ? current.icon : `./assets/tmp/img/avatar.jpg`;
|
|
22
|
-
this.options.logoExpanded = project.maxLogoUrl ? project.maxLogoUrl : `./assets/logo-full.svg`;
|
|
23
|
-
this.options.logoCollapsed = project.miniLogoUrl ? project.miniLogoUrl : `./assets/logo.svg`;
|
|
24
|
-
this.yzStompService.listen();
|
|
25
|
-
}
|
|
26
|
-
ngOnDestroy() {
|
|
27
|
-
this.yzStompService.unListen();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
YzLayoutBasicComponent.decorators = [
|
|
31
|
-
{ type: Component, args: [{
|
|
32
|
-
selector: 'yz-layout-basic',
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { CacheService } from '@yelon/cache';
|
|
3
|
+
import { YzStompService } from './yz.stomp.service';
|
|
4
|
+
export class YzLayoutBasicComponent {
|
|
5
|
+
constructor(cacheService, yzStompService) {
|
|
6
|
+
this.cacheService = cacheService;
|
|
7
|
+
this.yzStompService = yzStompService;
|
|
8
|
+
this.options = {
|
|
9
|
+
logoExpanded: `./assets/logo-full.svg`,
|
|
10
|
+
logoCollapsed: `./assets/logo.svg`
|
|
11
|
+
};
|
|
12
|
+
this.intro = '';
|
|
13
|
+
this.text = '';
|
|
14
|
+
this.icon = '';
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
const current = this.cacheService.get('_yz_current', { mode: 'none' });
|
|
18
|
+
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
19
|
+
this.text = current.text ? current.text : '应用名称';
|
|
20
|
+
this.intro = current.intro ? current.intro : '应用描述';
|
|
21
|
+
this.icon = current.icon ? current.icon : `./assets/tmp/img/avatar.jpg`;
|
|
22
|
+
this.options.logoExpanded = project.maxLogoUrl ? project.maxLogoUrl : `./assets/logo-full.svg`;
|
|
23
|
+
this.options.logoCollapsed = project.miniLogoUrl ? project.miniLogoUrl : `./assets/logo.svg`;
|
|
24
|
+
this.yzStompService.listen();
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
this.yzStompService.unListen();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
YzLayoutBasicComponent.decorators = [
|
|
31
|
+
{ type: Component, args: [{
|
|
32
|
+
selector: 'yz-layout-basic',
|
|
33
33
|
template: `
|
|
34
34
|
<layout-default [options]="options" [asideUser]="asideUserTpl" [content]="contentTpl">
|
|
35
35
|
<layout-default-header-item direction="left">
|
|
@@ -90,12 +90,12 @@ YzLayoutBasicComponent.decorators = [
|
|
|
90
90
|
<router-outlet (activate)="reuseTab.activate($event)"></router-outlet>
|
|
91
91
|
</ng-template>
|
|
92
92
|
</layout-default>
|
|
93
|
-
`,
|
|
94
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
95
|
-
},] }
|
|
96
|
-
];
|
|
97
|
-
YzLayoutBasicComponent.ctorParameters = () => [
|
|
98
|
-
{ type: CacheService },
|
|
99
|
-
{ type: YzStompService }
|
|
100
|
-
];
|
|
93
|
+
`,
|
|
94
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
95
|
+
},] }
|
|
96
|
+
];
|
|
97
|
+
YzLayoutBasicComponent.ctorParameters = () => [
|
|
98
|
+
{ type: CacheService },
|
|
99
|
+
{ type: YzStompService }
|
|
100
|
+
];
|
|
101
101
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95ei5iYXNpYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUc1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFtRXBELE1BQU0sT0FBTyxzQkFBc0I7SUFVakMsWUFBb0IsWUFBMEIsRUFBVSxjQUE4QjtRQUFsRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVR0RixZQUFPLEdBQXlCO1lBQzlCLFlBQVksRUFBRSx3QkFBd0I7WUFDdEMsYUFBYSxFQUFFLG1CQUFtQjtTQUNuQyxDQUFDO1FBRUYsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBVyxFQUFFLENBQUM7SUFFdUUsQ0FBQztJQUUxRixRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbEYsTUFBTSxPQUFPLEdBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDO1FBQy9GLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1FBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OztZQTFGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0RFQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7OztZQXJFUSxZQUFZO1lBR1osY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBMYXlvdXREZWZhdWx0T3B0aW9ucyB9IGZyb20gJ0B5ZWxvbi90aGVtZS9sYXlvdXQtZGVmYXVsdCc7XG5cbmltcG9ydCB7IFl6U3RvbXBTZXJ2aWNlIH0gZnJvbSAnLi95ei5zdG9tcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXotbGF5b3V0LWJhc2ljJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bGF5b3V0LWRlZmF1bHQgW29wdGlvbnNdPVwib3B0aW9uc1wiIFthc2lkZVVzZXJdPVwiYXNpZGVVc2VyVHBsXCIgW2NvbnRlbnRdPVwiY29udGVudFRwbFwiPlxuICAgICAgPGxheW91dC1kZWZhdWx0LWhlYWRlci1pdGVtIGRpcmVjdGlvbj1cImxlZnRcIj5cbiAgICAgICAgPHl6LWhlYWRlci1hcHBsaWNhdGlvbj48L3l6LWhlYWRlci1hcHBsaWNhdGlvbj5cbiAgICAgIDwvbGF5b3V0LWRlZmF1bHQtaGVhZGVyLWl0ZW0+XG5cbiAgICAgIDxsYXlvdXQtZGVmYXVsdC1oZWFkZXItaXRlbSBkaXJlY3Rpb249XCJyaWdodFwiIGhpZGRlbj1cIm1vYmlsZVwiPlxuICAgICAgICA8eXotaGVhZGVyLW5vdGlmeT48L3l6LWhlYWRlci1ub3RpZnk+XG4gICAgICA8L2xheW91dC1kZWZhdWx0LWhlYWRlci1pdGVtPlxuXG4gICAgICA8bGF5b3V0LWRlZmF1bHQtaGVhZGVyLWl0ZW0gZGlyZWN0aW9uPVwicmlnaHRcIiBoaWRkZW49XCJtb2JpbGVcIj5cbiAgICAgICAgPHl6LWhlYWRlci10aGVtZS1idG4+PC95ei1oZWFkZXItdGhlbWUtYnRuPlxuICAgICAgPC9sYXlvdXQtZGVmYXVsdC1oZWFkZXItaXRlbT5cblxuICAgICAgPGxheW91dC1kZWZhdWx0LWhlYWRlci1pdGVtIGRpcmVjdGlvbj1cInJpZ2h0XCIgaGlkZGVuPVwibW9iaWxlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBsYXlvdXQtZGVmYXVsdC1oZWFkZXItaXRlbS10cmlnZ2VyXG4gICAgICAgICAgbnotZHJvcGRvd25cbiAgICAgICAgICBbbnpEcm9wZG93bk1lbnVdPVwic2V0dGluZ3NNZW51XCJcbiAgICAgICAgICBuelRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgICAgbnpQbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cInNldHRpbmdcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bnotZHJvcGRvd24tbWVudSAjc2V0dGluZ3NNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgICAgICA8ZGl2IG56LW1lbnUgc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCI+XG4gICAgICAgICAgICA8ZGl2IG56LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgPHl6LWhlYWRlci1mdWxsc2NyZWVuPjwveXotaGVhZGVyLWZ1bGxzY3JlZW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgbnotbWVudS1pdGVtPlxuICAgICAgICAgICAgICA8eXotaGVhZGVyLWNsZWFyLXN0b3JhZ2U+PC95ei1oZWFkZXItY2xlYXItc3RvcmFnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBuei1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgIDx5ei1oZWFkZXItaTE4bj48L3l6LWhlYWRlci1pMThuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgICAgIDwvbGF5b3V0LWRlZmF1bHQtaGVhZGVyLWl0ZW0+XG4gICAgICA8bGF5b3V0LWRlZmF1bHQtaGVhZGVyLWl0ZW0gZGlyZWN0aW9uPVwicmlnaHRcIj5cbiAgICAgICAgPHl6LWhlYWRlci11c2VyPjwveXotaGVhZGVyLXVzZXI+XG4gICAgICA8L2xheW91dC1kZWZhdWx0LWhlYWRlci1pdGVtPlxuICAgICAgPG5nLXRlbXBsYXRlICNhc2lkZVVzZXJUcGw+XG4gICAgICAgIDxkaXYgbnotZHJvcGRvd24gbnpUcmlnZ2VyPVwiY2xpY2tcIiBbbnpEcm9wZG93bk1lbnVdPVwidXNlck1lbnVcIiBjbGFzcz1cInl1bnphaS1kZWZhdWx0X19hc2lkZS11c2VyXCI+XG4gICAgICAgICAgPG56LWF2YXRhciBjbGFzcz1cInl1bnphaS1kZWZhdWx0X19hc2lkZS11c2VyLWF2YXRhclwiIFtuelNyY109XCJpY29uXCI+PC9uei1hdmF0YXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInl1bnphaS1kZWZhdWx0X19hc2lkZS11c2VyLWluZm9cIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGV4dCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYjBcIj57eyBpbnRybyB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuei1kcm9wZG93bi1tZW51ICN1c2VyTWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICAgICAgPHVsIG56LW1lbnU+XG4gICAgICAgICAgICA8bGkgbnotbWVudS1pdGVtIHJvdXRlckxpbms9XCIvXCI+e3sgJ21lbnUuYmFja3RvaG9tZScgfCBpMThuIH19PC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb250ZW50VHBsPlxuICAgICAgICA8cmV1c2UtdGFiICNyZXVzZVRhYj48L3JldXNlLXRhYj5cbiAgICAgICAgPHJvdXRlci1vdXRsZXQgKGFjdGl2YXRlKT1cInJldXNlVGFiLmFjdGl2YXRlKCRldmVudClcIj48L3JvdXRlci1vdXRsZXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGF5b3V0LWRlZmF1bHQ+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl6TGF5b3V0QmFzaWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIG9wdGlvbnM6IExheW91dERlZmF1bHRPcHRpb25zID0ge1xuICAgIGxvZ29FeHBhbmRlZDogYC4vYXNzZXRzL2xvZ28tZnVsbC5zdmdgLFxuICAgIGxvZ29Db2xsYXBzZWQ6IGAuL2Fzc2V0cy9sb2dvLnN2Z2BcbiAgfTtcblxuICBpbnRybzogc3RyaW5nID0gJyc7XG4gIHRleHQ6IHN0cmluZyA9ICcnO1xuICBpY29uOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLCBwcml2YXRlIHl6U3RvbXBTZXJ2aWNlOiBZelN0b21wU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50OiBOelNhZmVBbnkgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el9jdXJyZW50JywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgY29uc3QgcHJvamVjdDogTnpTYWZlQW55ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfcHJvamVjdF9pbmZvJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgdGhpcy50ZXh0ID0gY3VycmVudC50ZXh0ID8gY3VycmVudC50ZXh0IDogJ+W6lOeUqOWQjeensCc7XG4gICAgdGhpcy5pbnRybyA9IGN1cnJlbnQuaW50cm8gPyBjdXJyZW50LmludHJvIDogJ+W6lOeUqOaPj+i/sCc7XG4gICAgdGhpcy5pY29uID0gY3VycmVudC5pY29uID8gY3VycmVudC5pY29uIDogYC4vYXNzZXRzL3RtcC9pbWcvYXZhdGFyLmpwZ2A7XG4gICAgdGhpcy5vcHRpb25zLmxvZ29FeHBhbmRlZCA9IHByb2plY3QubWF4TG9nb1VybCA/IHByb2plY3QubWF4TG9nb1VybCA6IGAuL2Fzc2V0cy9sb2dvLWZ1bGwuc3ZnYDtcbiAgICB0aGlzLm9wdGlvbnMubG9nb0NvbGxhcHNlZCA9IHByb2plY3QubWluaUxvZ29VcmwgPyBwcm9qZWN0Lm1pbmlMb2dvVXJsIDogYC4vYXNzZXRzL2xvZ28uc3ZnYDtcbiAgICB0aGlzLnl6U3RvbXBTZXJ2aWNlLmxpc3RlbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy55elN0b21wU2VydmljZS51bkxpc3RlbigpO1xuICB9XG59XG4iXX0=
|