sgh-navbar 0.0.43 → 0.0.50

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.
Files changed (30) hide show
  1. package/{esm2020 → esm2022}/lib/sgh-navbar.component.mjs +6 -6
  2. package/{esm2020 → esm2022}/lib/sgh-navbar.module.mjs +27 -27
  3. package/{esm2020 → esm2022}/lib/sgh-navbar.service.mjs +4 -4
  4. package/esm2022/lib/sidenav/menu-list-item/menu-list-item.component.mjs +46 -0
  5. package/esm2022/lib/sidenav/sidenav.component.mjs +112 -0
  6. package/esm2022/lib/sidenav/sublevel-menu.component.mjs +168 -0
  7. package/{esm2020 → esm2022}/lib/toolbar/noftification-list/noftification-list.component.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/toolbar/search.pipe.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/toolbar/sub-client-dialog/sub-client-dialog.component.mjs +5 -5
  10. package/esm2022/lib/toolbar/toolbar.component.mjs +214 -0
  11. package/{fesm2020 → fesm2022}/sgh-navbar.mjs +120 -120
  12. package/fesm2022/sgh-navbar.mjs.map +1 -0
  13. package/lib/sidenav/menu-list-item/menu-list-item.component.d.ts +1 -1
  14. package/lib/sidenav/sidenav.component.d.ts +1 -1
  15. package/lib/sidenav/sublevel-menu.component.d.ts +1 -1
  16. package/lib/toolbar/toolbar.component.d.ts +1 -1
  17. package/package.json +7 -13
  18. package/esm2020/lib/sidenav/menu-list-item/menu-list-item.component.mjs +0 -46
  19. package/esm2020/lib/sidenav/sidenav.component.mjs +0 -112
  20. package/esm2020/lib/sidenav/sublevel-menu.component.mjs +0 -168
  21. package/esm2020/lib/toolbar/toolbar.component.mjs +0 -214
  22. package/fesm2015/sgh-navbar.mjs +0 -837
  23. package/fesm2015/sgh-navbar.mjs.map +0 -1
  24. package/fesm2020/sgh-navbar.mjs.map +0 -1
  25. /package/{esm2020 → esm2022}/lib/sidenav/helper.mjs +0 -0
  26. /package/{esm2020 → esm2022}/lib/sidenav/nav-data.mjs +0 -0
  27. /package/{esm2020 → esm2022}/lib/sidenav/sidenav-data.mjs +0 -0
  28. /package/{esm2020 → esm2022}/lib/toolbar/toolbar-data.mjs +0 -0
  29. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  30. /package/{esm2020 → esm2022}/sgh-navbar.mjs +0 -0
@@ -1,168 +0,0 @@
1
- import { animate, state, style, transition, trigger } from '@angular/animations';
2
- import { Component, Input } from '@angular/core';
3
- import { fadeInOut } from './helper';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/router";
6
- import * as i2 from "@angular/common";
7
- export class SublevelMenuComponent {
8
- constructor(router) {
9
- this.router = router;
10
- this.data = {
11
- routeLink: '',
12
- icon: '',
13
- label: '',
14
- visible: true,
15
- items: []
16
- };
17
- this.collapsed = false;
18
- this.multiple = false;
19
- }
20
- ngOnInit() {
21
- }
22
- handleClick(item) {
23
- if (!this.multiple) {
24
- if (this.data.items && this.data.items.length > 0) {
25
- for (let modelItem of this.data.items) {
26
- if (item !== modelItem && modelItem.expanded) {
27
- modelItem.expanded = false;
28
- }
29
- }
30
- }
31
- }
32
- item.expanded = !item.expanded;
33
- }
34
- getActiveClass(item) {
35
- return item.expanded && this.router.url.includes(item.routeLink)
36
- ? 'active-sublevel'
37
- : '';
38
- }
39
- }
40
- SublevelMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SublevelMenuComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
41
- SublevelMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SublevelMenuComponent, selector: "app-sublevel-menu", inputs: { data: "data", collapsed: "collapsed", animating: "animating", expanded: "expanded", multiple: "multiple" }, ngImport: i0, template: `
42
- <ul *ngIf="collapsed && data.items && data.items.length > 0"
43
- [@submenu]="expanded
44
- ? {value: 'visible',
45
- params: {transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)', height: '*'}}
46
- : {value: 'hidden',
47
- params: {transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)', height: '0'}}"
48
- class="sublevel-nav"
49
- >
50
- <li *ngFor="let item of data.items" class="sublevel-nav-item">
51
- <a class="sublevel-nav-link"
52
- (click)="handleClick(item)"
53
- *ngIf="item.items && item.items.length > 0 && item.visible"
54
- [ngClass]="getActiveClass(item)"
55
- >
56
- <i class="sublevel-link-icon fa fa-circle"></i>
57
- <span class="sublevel-link-text" @fadeInOut
58
- *ngIf="collapsed">{{item.label}}</span>
59
- <i *ngIf="item.items && collapsed" class="menu-collapse-icon"
60
- [ngClass]="!item.expanded ? 'fal fa-angle-right' : 'fal fa-angle-down'"
61
- ></i>
62
- </a>
63
- <a class="sublevel-nav-link"
64
- *ngIf="(!item.items || (item.items && item.items.length === 0)) && item.visible"
65
- [routerLink]="[item.routeLink]"
66
- routerLinkActive="active-sublevel"
67
- [routerLinkActiveOptions]="{exact: true}"
68
- >
69
- <i class="sublevel-link-icon fa fa-circle"></i>
70
- <span class="sublevel-link-text" @fadeInOut
71
- *ngIf="collapsed">{{item.label}}</span>
72
- </a>
73
- <div *ngIf="item.items && item.items.length > 0">
74
- <app-sublevel-menu
75
- [data]="item"
76
- [collapsed]="collapsed"
77
- [multiple]="multiple"
78
- [expanded]="item.expanded"
79
- ></app-sublevel-menu>
80
- </div>
81
- </li>
82
- </ul>
83
- `, isInline: true, styles: [".sidebar_div a>div>i{padding-right:10px}.menu-wrapper{min-height:calc(100vh - 70px);overflow:auto;position:relative}.menu-wrapper .auth-info-wrp{position:absolute;bottom:0;width:100%;padding-top:5px;border-top:1px solid lightgrey;color:#005860;display:flex;flex-direction:column}.menu-wrapper .auth-info-wrp .client-info-wrp{display:flex;gap:10px;font-size:12px;font-weight:700}.menu-wrapper .auth-info-wrp .role-info-wrp{font-size:12px}.menu-wrapper .auth-info-wrp .role-info-wrp .role-info-text{font-weight:400}.menu-wrapper .auth-info-wrp .role-info-wrp .role-info-text.role{font-weight:700}.fa-size{font-size:1.6em;line-height:.75em;vertical-align:-15%}.sgh-sidebar{height:auto;max-height:calc(100vh - 60px);box-shadow:0 1px 0 -1px #0000,0 1px 1px #0003,0 1px 3px #0000001f;border-right:none;overflow-y:auto;padding:5px 0;font-size:12px;margin-right:10px;background:white;width:240px;display:flex;flex-direction:column;align-items:center;z-index:1}.sidebar_div{margin:0;padding:0;width:220px;overflow:hidden}.sidebar_div a{color:#005860;padding:10px 14px;text-decoration:none;margin:0 2px;display:flex;align-items:center;justify-content:space-between}.sidebar_div a.active{background-color:#006068;border-radius:13px}.sidebar_div a.active .text-wrap,.sidebar_div a.active .text-wrapper{color:#fff!important}.text-wrap{display:flex;justify-content:flex-start;width:100%}.text-wrap .icon-wrapper{width:15%}.sidebar_div a:hover:not(.active){background-color:#26787f;color:#fff;border-radius:12px}div.content{margin-left:200px;padding:1px 16px;height:1000px}@media screen and (max-width: 700px){.sidebar_div{height:auto;position:relative}div.content{margin-left:0}}@media screen and (max-width: 400px){.sidebar_div a{text-align:center;float:none}}.nav-list li a{text-decoration:none;display:block;padding:10px;cursor:pointer;border-bottom:1px solid #515151;color:#9d9d9d}.nav-list>li>a{color:#c4c4c4;font-size:14px;padding-left:15px;border-bottom:1px solid #585858}.nav-list>li>a:hover{background-color:#444}.sidenav-overlay{display:none;position:fixed;width:100%;height:100%;background-color:#00000063;left:0%;top:0;z-index:1;cursor:default}@media screen and (max-width: 600px){.sidebar_div{margin:0}.sgh-sidebar{position:fixed;background:white}.sidenav-overlay{display:block}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: SublevelMenuComponent, selector: "app-sublevel-menu", inputs: ["data", "collapsed", "animating", "expanded", "multiple"] }], animations: [
84
- fadeInOut,
85
- trigger('submenu', [
86
- state('hidden', style({
87
- height: '0',
88
- overflow: 'hidden'
89
- })),
90
- state('visible', style({
91
- height: '*'
92
- })),
93
- transition('visible <=> hidden', [style({ overflow: 'hidden' }),
94
- animate('{{transitionParams}}')]),
95
- transition('void => *', animate(0))
96
- ])
97
- ] });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SublevelMenuComponent, decorators: [{
99
- type: Component,
100
- args: [{ selector: 'app-sublevel-menu', template: `
101
- <ul *ngIf="collapsed && data.items && data.items.length > 0"
102
- [@submenu]="expanded
103
- ? {value: 'visible',
104
- params: {transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)', height: '*'}}
105
- : {value: 'hidden',
106
- params: {transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)', height: '0'}}"
107
- class="sublevel-nav"
108
- >
109
- <li *ngFor="let item of data.items" class="sublevel-nav-item">
110
- <a class="sublevel-nav-link"
111
- (click)="handleClick(item)"
112
- *ngIf="item.items && item.items.length > 0 && item.visible"
113
- [ngClass]="getActiveClass(item)"
114
- >
115
- <i class="sublevel-link-icon fa fa-circle"></i>
116
- <span class="sublevel-link-text" @fadeInOut
117
- *ngIf="collapsed">{{item.label}}</span>
118
- <i *ngIf="item.items && collapsed" class="menu-collapse-icon"
119
- [ngClass]="!item.expanded ? 'fal fa-angle-right' : 'fal fa-angle-down'"
120
- ></i>
121
- </a>
122
- <a class="sublevel-nav-link"
123
- *ngIf="(!item.items || (item.items && item.items.length === 0)) && item.visible"
124
- [routerLink]="[item.routeLink]"
125
- routerLinkActive="active-sublevel"
126
- [routerLinkActiveOptions]="{exact: true}"
127
- >
128
- <i class="sublevel-link-icon fa fa-circle"></i>
129
- <span class="sublevel-link-text" @fadeInOut
130
- *ngIf="collapsed">{{item.label}}</span>
131
- </a>
132
- <div *ngIf="item.items && item.items.length > 0">
133
- <app-sublevel-menu
134
- [data]="item"
135
- [collapsed]="collapsed"
136
- [multiple]="multiple"
137
- [expanded]="item.expanded"
138
- ></app-sublevel-menu>
139
- </div>
140
- </li>
141
- </ul>
142
- `, animations: [
143
- fadeInOut,
144
- trigger('submenu', [
145
- state('hidden', style({
146
- height: '0',
147
- overflow: 'hidden'
148
- })),
149
- state('visible', style({
150
- height: '*'
151
- })),
152
- transition('visible <=> hidden', [style({ overflow: 'hidden' }),
153
- animate('{{transitionParams}}')]),
154
- transition('void => *', animate(0))
155
- ])
156
- ], styles: [".sidebar_div a>div>i{padding-right:10px}.menu-wrapper{min-height:calc(100vh - 70px);overflow:auto;position:relative}.menu-wrapper .auth-info-wrp{position:absolute;bottom:0;width:100%;padding-top:5px;border-top:1px solid lightgrey;color:#005860;display:flex;flex-direction:column}.menu-wrapper .auth-info-wrp .client-info-wrp{display:flex;gap:10px;font-size:12px;font-weight:700}.menu-wrapper .auth-info-wrp .role-info-wrp{font-size:12px}.menu-wrapper .auth-info-wrp .role-info-wrp .role-info-text{font-weight:400}.menu-wrapper .auth-info-wrp .role-info-wrp .role-info-text.role{font-weight:700}.fa-size{font-size:1.6em;line-height:.75em;vertical-align:-15%}.sgh-sidebar{height:auto;max-height:calc(100vh - 60px);box-shadow:0 1px 0 -1px #0000,0 1px 1px #0003,0 1px 3px #0000001f;border-right:none;overflow-y:auto;padding:5px 0;font-size:12px;margin-right:10px;background:white;width:240px;display:flex;flex-direction:column;align-items:center;z-index:1}.sidebar_div{margin:0;padding:0;width:220px;overflow:hidden}.sidebar_div a{color:#005860;padding:10px 14px;text-decoration:none;margin:0 2px;display:flex;align-items:center;justify-content:space-between}.sidebar_div a.active{background-color:#006068;border-radius:13px}.sidebar_div a.active .text-wrap,.sidebar_div a.active .text-wrapper{color:#fff!important}.text-wrap{display:flex;justify-content:flex-start;width:100%}.text-wrap .icon-wrapper{width:15%}.sidebar_div a:hover:not(.active){background-color:#26787f;color:#fff;border-radius:12px}div.content{margin-left:200px;padding:1px 16px;height:1000px}@media screen and (max-width: 700px){.sidebar_div{height:auto;position:relative}div.content{margin-left:0}}@media screen and (max-width: 400px){.sidebar_div a{text-align:center;float:none}}.nav-list li a{text-decoration:none;display:block;padding:10px;cursor:pointer;border-bottom:1px solid #515151;color:#9d9d9d}.nav-list>li>a{color:#c4c4c4;font-size:14px;padding-left:15px;border-bottom:1px solid #585858}.nav-list>li>a:hover{background-color:#444}.sidenav-overlay{display:none;position:fixed;width:100%;height:100%;background-color:#00000063;left:0%;top:0;z-index:1;cursor:default}@media screen and (max-width: 600px){.sidebar_div{margin:0}.sgh-sidebar{position:fixed;background:white}.sidenav-overlay{display:block}}\n"] }]
157
- }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { data: [{
158
- type: Input
159
- }], collapsed: [{
160
- type: Input
161
- }], animating: [{
162
- type: Input
163
- }], expanded: [{
164
- type: Input
165
- }], multiple: [{
166
- type: Input
167
- }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibGV2ZWwtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZ2gtbmF2YmFyL3NyYy9saWIvc2lkZW5hdi9zdWJsZXZlbC1tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxVQUFVLENBQUM7Ozs7QUFnRWxELE1BQU0sT0FBTyxxQkFBcUI7SUFjaEMsWUFBbUIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFaeEIsU0FBSSxHQUFnQjtZQUMzQixTQUFTLEVBQUUsRUFBRTtZQUNiLElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQTtRQUNRLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsYUFBUSxHQUFZLEtBQUssQ0FBQztJQUVDLENBQUM7SUFFckMsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBUztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELEtBQUksSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ3BDLElBQUksSUFBSSxLQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO3dCQUMzQyxTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztxQkFDNUI7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDOUQsQ0FBQyxDQUFDLGlCQUFpQjtZQUNuQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1QsQ0FBQzs7bUhBcENVLHFCQUFxQjt1R0FBckIscUJBQXFCLCtLQTVEdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCwyakdBa0JVLHFCQUFxQixvSEFoQnBCO1FBQ1YsU0FBUztRQUNULE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDakIsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sRUFBRSxHQUFHO2dCQUNYLFFBQVEsRUFBRSxRQUFRO2FBQ25CLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsR0FBRzthQUNaLENBQUMsQ0FBQztZQUNILFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNuQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDO0tBQ0g7NEZBRVUscUJBQXFCO2tCQTlEakMsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxjQUVXO3dCQUNWLFNBQVM7d0JBQ1QsT0FBTyxDQUFDLFNBQVMsRUFBRTs0QkFDakIsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0NBQ3BCLE1BQU0sRUFBRSxHQUFHO2dDQUNYLFFBQVEsRUFBRSxRQUFROzZCQUNuQixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7Z0NBQ3JCLE1BQU0sRUFBRSxHQUFHOzZCQUNaLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUM7Z0NBQzNELE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7NEJBQ25DLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNwQyxDQUFDO3FCQUNIOzZGQUlRLElBQUk7c0JBQVosS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmYWRlSW5PdXQsIElOYXZiYXJEYXRhIH0gZnJvbSAnLi9oZWxwZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VibGV2ZWwtbWVudScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDx1bCAqbmdJZj1cImNvbGxhcHNlZCAmJiBkYXRhLml0ZW1zICYmIGRhdGEuaXRlbXMubGVuZ3RoID4gMFwiXHJcbiAgICBbQHN1Ym1lbnVdPVwiZXhwYW5kZWRcclxuICAgICAgPyB7dmFsdWU6ICd2aXNpYmxlJyxcclxuICAgICAgICAgIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknLCBoZWlnaHQ6ICcqJ319XHJcbiAgICAgIDoge3ZhbHVlOiAnaGlkZGVuJyxcclxuICAgICAgICAgIHBhcmFtczoge3RyYW5zaXRpb25QYXJhbXM6ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknLCBoZWlnaHQ6ICcwJ319XCJcclxuICAgICAgY2xhc3M9XCJzdWJsZXZlbC1uYXZcIlxyXG4gICAgPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS5pdGVtc1wiIGNsYXNzPVwic3VibGV2ZWwtbmF2LWl0ZW1cIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwic3VibGV2ZWwtbmF2LWxpbmtcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW0pXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCAmJiBpdGVtLnZpc2libGVcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRBY3RpdmVDbGFzcyhpdGVtKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwic3VibGV2ZWwtbGluay1pY29uIGZhIGZhLWNpcmNsZVwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJsZXZlbC1saW5rLXRleHRcIiBAZmFkZUluT3V0XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbGxhcHNlZFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaXRlbXMgJiYgY29sbGFwc2VkXCIgY2xhc3M9XCJtZW51LWNvbGxhcHNlLWljb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIiFpdGVtLmV4cGFuZGVkID8gJ2ZhbCBmYS1hbmdsZS1yaWdodCcgOiAnZmFsIGZhLWFuZ2xlLWRvd24nXCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxhIGNsYXNzPVwic3VibGV2ZWwtbmF2LWxpbmtcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIighaXRlbS5pdGVtcyB8fCAoaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkpICYmIGl0ZW0udmlzaWJsZVwiXHJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnJvdXRlTGlua11cIlxyXG4gICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlLXN1YmxldmVsXCJcclxuICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDogdHJ1ZX1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInN1YmxldmVsLWxpbmstaWNvbiBmYSBmYS1jaXJjbGVcIj48L2k+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VibGV2ZWwtbGluay10ZXh0XCIgQGZhZGVJbk91dFxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImNvbGxhcHNlZFwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxhcHAtc3VibGV2ZWwtbWVudVxyXG4gICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgIFtleHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkXCJcclxuICAgICAgICAgICAgPjwvYXBwLXN1YmxldmVsLW1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlbmF2LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgZmFkZUluT3V0LFxyXG4gICAgdHJpZ2dlcignc3VibWVudScsIFtcclxuICAgICAgc3RhdGUoJ2hpZGRlbicsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcwJyxcclxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcclxuICAgICAgICBoZWlnaHQ6ICcqJ1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPD0+IGhpZGRlbicsIFtzdHlsZSh7b3ZlcmZsb3c6ICdoaWRkZW4nfSksXHJcbiAgICAgICAgYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBhbmltYXRlKDApKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdWJsZXZlbE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBkYXRhOiBJTmF2YmFyRGF0YSA9IHtcclxuICAgIHJvdXRlTGluazogJycsXHJcbiAgICBpY29uOiAnJyxcclxuICAgIGxhYmVsOiAnJyxcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBpdGVtczogW11cclxuICB9XHJcbiAgQElucHV0KCkgY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYW5pbWF0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGV4cGFuZGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGljayhpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLml0ZW1zICYmIHRoaXMuZGF0YS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yKGxldCBtb2RlbEl0ZW0gb2YgdGhpcy5kYXRhLml0ZW1zKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT1tb2RlbEl0ZW0gJiYgbW9kZWxJdGVtLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgIG1vZGVsSXRlbS5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaXRlbS5leHBhbmRlZCA9ICFpdGVtLmV4cGFuZGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlQ2xhc3MoaXRlbTogSU5hdmJhckRhdGEpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGl0ZW0uZXhwYW5kZWQgJiYgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKGl0ZW0ucm91dGVMaW5rKVxyXG4gICAgICA/ICdhY3RpdmUtc3VibGV2ZWwnXHJcbiAgICAgIDogJyc7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=