barsa-develop-components 2.2.72 → 2.2.74
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/fesm2022/barsa-develop-components.mjs +212 -205
- package/fesm2022/barsa-develop-components.mjs.map +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/form-report-view/form-report-view.component.d.ts +1 -1
- package/lib/geographic-location/geographic-location.component.d.ts +1 -1
- package/lib/report-button-view/report-button-view.component.d.ts +1 -1
- package/lib/service-desk-header/service-desk-header.component.d.ts +3 -0
- package/package.json +3 -5
- package/esm2022/barsa-develop-components.mjs +0 -5
- package/esm2022/lib/accept-reject/accept-reject.component.mjs +0 -68
- package/esm2022/lib/avatar/avatar.component.mjs +0 -29
- package/esm2022/lib/barcode-format-pipe.mjs +0 -25
- package/esm2022/lib/barcode-reader/barcode-reader.component.mjs +0 -62
- package/esm2022/lib/barcode-reader-dialog/barcode-reader-dialog.component.mjs +0 -82
- package/esm2022/lib/barcode-reader-video/barcode-reader-video.component.mjs +0 -66
- package/esm2022/lib/barcode.service.mjs +0 -330
- package/esm2022/lib/barsa-develop-components.module.mjs +0 -292
- package/esm2022/lib/barsa-document-list-item/barsa-document-list-item.component.mjs +0 -104
- package/esm2022/lib/barsa-documents/barsa-documents.component.mjs +0 -159
- package/esm2022/lib/barsa-geographic-location/barsa-geographic-location.component.mjs +0 -173
- package/esm2022/lib/card-content-image-and-title/card-content-image-and-title.component.mjs +0 -50
- package/esm2022/lib/card-content-line-chart/card-content-line-chart.component.mjs +0 -36
- package/esm2022/lib/card-header-big-image-title-and-subtitle/card-header-big-image-title-and-subtitle.component.mjs +0 -19
- package/esm2022/lib/card-header-kpi/card-header-kpi.component.mjs +0 -40
- package/esm2022/lib/card-header-logo-title-subtitle/card-header-logo-title-subtitle.component.mjs +0 -45
- package/esm2022/lib/checkbox-button/checkbox-button.component.mjs +0 -23
- package/esm2022/lib/column-chip/column-chip.component.mjs +0 -44
- package/esm2022/lib/column-form-viewer/column-form-viewer.component.mjs +0 -88
- package/esm2022/lib/column-progressbar/column-progressbar.component.mjs +0 -87
- package/esm2022/lib/enum-info-micro-proccess-flow/enum-info-micro-proccess-flow.component.mjs +0 -18
- package/esm2022/lib/footer/footer.component.mjs +0 -43
- package/esm2022/lib/form-card/form-card.component.mjs +0 -17
- package/esm2022/lib/form-chart-content/form-chart-content.component.mjs +0 -36
- package/esm2022/lib/form-content-quick-view/form-content-quick-view.component.mjs +0 -102
- package/esm2022/lib/form-report-view/form-report-view.component.mjs +0 -25
- package/esm2022/lib/form-report-view-item/form-report-view-item.component.mjs +0 -45
- package/esm2022/lib/g4b-details/g4b-details.component.mjs +0 -28
- package/esm2022/lib/g4b-estelam/g4b-estelam.component.mjs +0 -30
- package/esm2022/lib/geographic-location/geographic-location.component.mjs +0 -88
- package/esm2022/lib/login-form/login-form.component.mjs +0 -55
- package/esm2022/lib/login-social-conncetions/login-social-conncetions.component.mjs +0 -30
- package/esm2022/lib/master-detail-card-form/master-detail-card-form.component.mjs +0 -17
- package/esm2022/lib/media-file-uploader/media-file-uploader.component.mjs +0 -238
- package/esm2022/lib/micro-proccess-flow/micro-proccess-flow.component.mjs +0 -52
- package/esm2022/lib/micro-process-flow-view/micro-process-flow-view.component.mjs +0 -24
- package/esm2022/lib/mo-info-micro-proccess-flow/mo-info-micro-proccess-flow.component.mjs +0 -23
- package/esm2022/lib/models/document-item.mjs +0 -2
- package/esm2022/lib/models/documents-setting.mjs +0 -2
- package/esm2022/lib/models/form-report-view-setting.mjs +0 -2
- package/esm2022/lib/models/index.mjs +0 -8
- package/esm2022/lib/models/micro-process-flow-view-setting.mjs +0 -2
- package/esm2022/lib/models/person.mjs +0 -2
- package/esm2022/lib/models/service-desk-view-of-services-setting.mjs +0 -2
- package/esm2022/lib/models/tab-process-view-setting.mjs +0 -2
- package/esm2022/lib/pipes/datasource-to-flow-item.mjs +0 -23
- package/esm2022/lib/pipes/index.mjs +0 -3
- package/esm2022/lib/pipes/mo-list-to-flow-item.pipe.mjs +0 -23
- package/esm2022/lib/query-string-form-observable/query-string-form-observable.component.mjs +0 -37
- package/esm2022/lib/query-string-observable/query-string-observable.component.mjs +0 -22
- package/esm2022/lib/report-button-view/report-button-view.component.mjs +0 -37
- package/esm2022/lib/report-line-chart-view/report-line-chart-view.component.mjs +0 -12
- package/esm2022/lib/report-tab-view/report-tab-view.component.mjs +0 -27
- package/esm2022/lib/resend-verification-code/resend-verification-code.component.mjs +0 -62
- package/esm2022/lib/service-desk-card-content-mojavezhay-akhz-shode/service-desk-card-content-mojavezhay-akhz-shode.component.mjs +0 -28
- package/esm2022/lib/service-desk-form-layout-content-mojavez/service-desk-form-layout-content-mojavez.component.mjs +0 -110
- package/esm2022/lib/service-desk-header/service-desk-header.component.mjs +0 -242
- package/esm2022/lib/service-desk-servcie-detail/service-desk-servcie-detail.component.mjs +0 -142
- package/esm2022/lib/service-desk-view-of-services/service-desk-view-of-services.component.mjs +0 -37
- package/esm2022/lib/setting-form/setting-form.component.mjs +0 -64
- package/esm2022/lib/subform-in-row-report/subform-in-row-report.component.mjs +0 -73
- package/esm2022/lib/tab-process-view/tab-process-view.component.mjs +0 -48
- package/esm2022/lib/table-view-vertical-columns/table-view-vertical-columns.component.mjs +0 -16
- package/esm2022/lib/timer-count-down/timer-count-down.component.mjs +0 -104
- package/esm2022/lib/token-report-view/token-report-view.component.mjs +0 -27
- package/esm2022/lib/ui-enum-segmented-button/ui-enum-segmented-button.component.mjs +0 -25
- package/esm2022/lib/ui-num-rate/ui-num-rate.component.mjs +0 -41
- package/esm2022/lib/ui-person/ui-person.component.mjs +0 -160
- package/esm2022/lib/ui-person/ui-person.pipe.mjs +0 -41
- package/esm2022/lib/ui-pictures-carousel/ui-pictures-carousel.component.mjs +0 -17
- package/esm2022/lib/ui-text-field-search/ui-text-field-search.component.mjs +0 -42
- package/esm2022/lib/ulv-context-menu-item-show-file-content/ulv-context-menu-item-show-file-content.component.mjs +0 -69
- package/esm2022/public-api.mjs +0 -64
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, ViewChild, ViewChildren, RendererStyleFlags2, Input } from '@angular/core';
|
|
2
|
-
import { takeUntil } from 'rxjs';
|
|
3
|
-
import { TabPanelComponent } from '@fundamental-ngx/core';
|
|
4
|
-
import { TilesViewerContainerComponent, TilesViewerService, TilesViewerGroupComponent } from 'barsa-tiles';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "barsa-novin-ray-core";
|
|
7
|
-
import * as i2 from "barsa-tiles";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/forms";
|
|
10
|
-
import * as i5 from "barsa-sap-ui";
|
|
11
|
-
import * as i6 from "@fundamental-ngx/core/input-group";
|
|
12
|
-
import * as i7 from "@fundamental-ngx/core/tabs";
|
|
13
|
-
import * as i8 from "@fundamental-ngx/core/toolbar";
|
|
14
|
-
export class ServiceDeskHeaderComponent extends TilesViewerContainerComponent {
|
|
15
|
-
constructor(_portalService, _tilesService, _tilesViewerService, _renderer, _viewportScroller, _cdr) {
|
|
16
|
-
super(_portalService, _tilesService, _tilesViewerService);
|
|
17
|
-
this._portalService = _portalService;
|
|
18
|
-
this._tilesService = _tilesService;
|
|
19
|
-
this._tilesViewerService = _tilesViewerService;
|
|
20
|
-
this._renderer = _renderer;
|
|
21
|
-
this._viewportScroller = _viewportScroller;
|
|
22
|
-
this._cdr = _cdr;
|
|
23
|
-
this.selectedTabIndex = 0;
|
|
24
|
-
this.heightOfSpaceHolder = 66;
|
|
25
|
-
this.searchTerm = '';
|
|
26
|
-
this._enableScroll = false;
|
|
27
|
-
this._stickyTopPosition = 66;
|
|
28
|
-
this.observerList = [];
|
|
29
|
-
this.appGroups = [];
|
|
30
|
-
const root = document.documentElement;
|
|
31
|
-
root.style.setProperty('--absolute-page-top', this._stickyTopPosition + 'px');
|
|
32
|
-
}
|
|
33
|
-
ngOnInit() {
|
|
34
|
-
super.ngOnInit();
|
|
35
|
-
this._portalService.searchTerm$.pipe(takeUntil(this._onDestroy$)).subscribe((term) => {
|
|
36
|
-
this.searchTerm = term;
|
|
37
|
-
this._cdr.detectChanges();
|
|
38
|
-
});
|
|
39
|
-
this.appTileGroups$.subscribe((appTileGroups) => {
|
|
40
|
-
appTileGroups.forEach((c) => this._tilesViewerService.loadAppGroup(c));
|
|
41
|
-
this.appGroups = appTileGroups;
|
|
42
|
-
});
|
|
43
|
-
this._renderer.setStyle(this.navHolder.nativeElement, 'top', this._stickyTopPosition + 'px');
|
|
44
|
-
this.setGridTemplateRows(this.heightOfSpaceHolder);
|
|
45
|
-
this.deviceSize$ = this._portalService.deviceSize$;
|
|
46
|
-
this._portalService.deviceSize$.subscribe((c) => {
|
|
47
|
-
let newHeight = this.heightOfSpaceHolder;
|
|
48
|
-
this.tabSize = c;
|
|
49
|
-
if (c === 's') {
|
|
50
|
-
newHeight = 66;
|
|
51
|
-
}
|
|
52
|
-
else if (c === 'm') {
|
|
53
|
-
newHeight = 220;
|
|
54
|
-
}
|
|
55
|
-
else if (c === 'l') {
|
|
56
|
-
newHeight = 250;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
newHeight = 325;
|
|
60
|
-
}
|
|
61
|
-
newHeight = 66;
|
|
62
|
-
if (this.heightOfSpaceHolder !== newHeight) {
|
|
63
|
-
this.heightOfSpaceHolder = newHeight;
|
|
64
|
-
this.setGridTemplateRows(newHeight);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
ngAfterViewInit() {
|
|
69
|
-
const deviceSize = this._portalService.deviceSize;
|
|
70
|
-
let stickyTopPosition = 20;
|
|
71
|
-
if (deviceSize === 's') {
|
|
72
|
-
stickyTopPosition = 60;
|
|
73
|
-
}
|
|
74
|
-
this._stickyDom(this.aboveSearch.nativeElement, this.searchHolder.nativeElement, -stickyTopPosition, 'sticky');
|
|
75
|
-
this._stickyDom(this.aboveContent.nativeElement, this.navHolder.nativeElement, -this._stickyTopPosition, 'sticky');
|
|
76
|
-
this._stickyDom(this.aboveContent.nativeElement, this.bgOuterHolder.nativeElement, -this._stickyTopPosition, 'sticky', () => {
|
|
77
|
-
this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', this._stickyTopPosition + 'px');
|
|
78
|
-
}, () => {
|
|
79
|
-
this._renderer.setStyle(this.bgOuterHolder.nativeElement, 'height', '100%');
|
|
80
|
-
});
|
|
81
|
-
this._stickyDom(this.aboveSearch.nativeElement, this.contentAndNav.nativeElement, -stickyTopPosition, 'navAndContent_tb', () => {
|
|
82
|
-
this._renderer.removeAttribute(this.contentAndNav.nativeElement, 'first');
|
|
83
|
-
}, () => {
|
|
84
|
-
this._renderer.setAttribute(this.contentAndNav.nativeElement, 'first', 'true');
|
|
85
|
-
});
|
|
86
|
-
setTimeout(() => {
|
|
87
|
-
this._enableScroll = true;
|
|
88
|
-
}, 1000);
|
|
89
|
-
this._portalService.navigationStart$.pipe(takeUntil(this._onDestroy$)).subscribe((event) => {
|
|
90
|
-
this._lastScrollPos = window.scrollY;
|
|
91
|
-
if (event === null) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (event?.url !== '/servicedesk' &&
|
|
95
|
-
event?.url !== '/' &&
|
|
96
|
-
event?.url.split('appgroupdialog').length < 2 &&
|
|
97
|
-
!this._disableIntersection) {
|
|
98
|
-
this.prepareForm();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
this._portalService.navigationEnd$.pipe(takeUntil(this._onDestroy$)).subscribe((event) => {
|
|
102
|
-
if (event !== null &&
|
|
103
|
-
(event?.url === '/servicedesk' || event?.url === '/' || event.urlAfterRedirects === '/servicedesk')) {
|
|
104
|
-
this.unPrepareForm();
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
onSearchSubmit() {
|
|
109
|
-
this._router.navigateByUrl('servicedesk/search?term=' + this.searchTerm);
|
|
110
|
-
// var searchMo = BarsaApi.Bw.RunBlMethod('GetSearchMo', this.searchTerm);
|
|
111
|
-
// BarsaApi.Bw.Form.Show({ Mo: searchMo });
|
|
112
|
-
}
|
|
113
|
-
prepareForm() {
|
|
114
|
-
this._disableIntersection = true;
|
|
115
|
-
this._cdr.detach();
|
|
116
|
-
this.disconnectIntersctionObserverList();
|
|
117
|
-
this._renderer.addClass(this.searchHolder.nativeElement, 'sticky');
|
|
118
|
-
this._renderer.addClass(this.contentAndNav.nativeElement, 'hide');
|
|
119
|
-
this.visibleContent(false);
|
|
120
|
-
const flags = RendererStyleFlags2.Important;
|
|
121
|
-
this._renderer.setStyle(document.body, 'overflow', 'hidden', flags);
|
|
122
|
-
this.scrollToTop();
|
|
123
|
-
}
|
|
124
|
-
unPrepareForm() {
|
|
125
|
-
// this.setHeightSearchHolder(this.heightOfSpaceHolder);
|
|
126
|
-
this.visibleContent(true);
|
|
127
|
-
// this._renderer.removeClass(this.searchHolder.nativeElement, 'sticky');
|
|
128
|
-
this._renderer.removeClass(this.searchHolder.nativeElement, 'hide');
|
|
129
|
-
this._renderer.removeClass(this.contentAndNav.nativeElement, 'hide');
|
|
130
|
-
const flags = RendererStyleFlags2.Important;
|
|
131
|
-
this._renderer.setStyle(document.body, 'overflow', 'auto', flags);
|
|
132
|
-
this.scrollToTop();
|
|
133
|
-
this._cdr.markForCheck();
|
|
134
|
-
this._cdr.reattach();
|
|
135
|
-
this._disableIntersection = false;
|
|
136
|
-
this.connectIntersctionObserverList();
|
|
137
|
-
}
|
|
138
|
-
setHeightSearchHolder(height) {
|
|
139
|
-
this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
|
|
140
|
-
}
|
|
141
|
-
visibleContent(visible) {
|
|
142
|
-
this._renderer.setStyle(this.contentAndNav.nativeElement, 'display', visible ? 'flex' : 'none');
|
|
143
|
-
}
|
|
144
|
-
setGridTemplateRows(height) {
|
|
145
|
-
this._renderer.setStyle(this.headerGrid.nativeElement, 'grid-template-rows', `minmax(78px, 15%) 46px 32px 1fr auto 12%; height:${height}px`);
|
|
146
|
-
// this._renderer.setStyle(this.headerGrid.nativeElement, 'background-color', `red`);
|
|
147
|
-
this._renderer.setStyle(this.headerSpaceHolder.nativeElement, 'height', `${height}px`);
|
|
148
|
-
}
|
|
149
|
-
onSelectedTabChange3(selectedTab) {
|
|
150
|
-
const tablistCmp = selectedTab._tabsComponent;
|
|
151
|
-
if (tablistCmp) {
|
|
152
|
-
tablistCmp._disableScrollSpy = true;
|
|
153
|
-
}
|
|
154
|
-
this.scrollToTop();
|
|
155
|
-
if (selectedTab.id === '0') {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const elementRefOfselectedTileGroup = this.tilesViewerGroupElList.get(Number(selectedTab.id))?.nativeElement;
|
|
159
|
-
elementRefOfselectedTileGroup.scrollIntoView({
|
|
160
|
-
block: 'start'
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
scrollToLastPos() {
|
|
164
|
-
this._viewportScroller.scrollToPosition([0, this._lastScrollPos]);
|
|
165
|
-
}
|
|
166
|
-
scrollToTop() {
|
|
167
|
-
if (this._enableScroll) {
|
|
168
|
-
this._viewportScroller.scrollToPosition([0, this.heightOfSpaceHolder - this._stickyTopPosition]);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
disconnectIntersctionObserverList() {
|
|
172
|
-
this.observerList.forEach((c) => c.observer.disconnect());
|
|
173
|
-
}
|
|
174
|
-
connectIntersctionObserverList() {
|
|
175
|
-
this.observerList.forEach((c) => c.observer.observe(c.el));
|
|
176
|
-
}
|
|
177
|
-
_stickyDom(above, holder, marginTop, className, visibleCallback, hiddenCallBack) {
|
|
178
|
-
const handler = (entries) => {
|
|
179
|
-
if (this._disableIntersection) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
if (!entries[0].isIntersecting) {
|
|
183
|
-
this._renderer.addClass(holder, className);
|
|
184
|
-
if (typeof visibleCallback === 'function') {
|
|
185
|
-
visibleCallback();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
this._renderer.removeClass(holder, className);
|
|
190
|
-
if (typeof hiddenCallBack === 'function') {
|
|
191
|
-
hiddenCallBack();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
const options = {
|
|
196
|
-
rootMargin: `${marginTop}px 0px 0px 0px`,
|
|
197
|
-
threshold: 0.1
|
|
198
|
-
};
|
|
199
|
-
const observer = new window.IntersectionObserver(handler, options);
|
|
200
|
-
observer.observe(above);
|
|
201
|
-
this.observerList.push({ el: above, observer });
|
|
202
|
-
}
|
|
203
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskHeaderComponent, deps: [{ token: i1.PortalService }, { token: i2.TilesService }, { token: i2.TilesViewerService }, { token: i0.Renderer2 }, { token: i3.ViewportScroller }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ServiceDeskHeaderComponent, selector: "bdc-service-desk-header", inputs: { settings: "settings" }, providers: [TilesViewerService], viewQueries: [{ propertyName: "headerSpaceHolder", first: true, predicate: ["headerSpaceHolder"], descendants: true, static: true }, { propertyName: "headerGrid", first: true, predicate: ["headerGrid"], descendants: true, static: true }, { propertyName: "aboveSearch", first: true, predicate: ["aboveSearch"], descendants: true, static: true }, { propertyName: "searchHolder", first: true, predicate: ["searchHolder"], descendants: true, static: true }, { propertyName: "navHolder", first: true, predicate: ["navHolder"], descendants: true, static: true }, { propertyName: "aboveContent", first: true, predicate: ["aboveContent"], descendants: true, static: true }, { propertyName: "bgOuterHolder", first: true, predicate: ["bgOuterHolder"], descendants: true, static: true }, { propertyName: "contentAndNav", first: true, predicate: ["contentAndNav"], descendants: true, static: true }, { propertyName: "tilesViewerGroupElList", predicate: TilesViewerGroupComponent, descendants: true, read: ElementRef }, { propertyName: "tabPanelComponents", predicate: TabPanelComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav fillEmptySpace [setMinHeight]=\"true\">\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav content-feed\" #navHolder [style.display]=\"settings?.HideTileGroupsNav ? 'none' : null\">\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index;) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index,isLast=$last) {\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize$ | async\"\r\n [attr.islast]=\"isLast\"\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed!important;top:0;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none;height:66px}bt-shellbar .fd-shellbar__product{display:none}bt-shellbar button{background-color:transparent}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__head .fd-title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px;width:100%}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky,#searchHolder{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:100%}}@media (min-width: 1244px){.nav-container,.content-feed{width:89.3rem}#searchHolder.sticky .input-search{width:690px}}#contentHolderAndNav.mode2{background-color:#f7f2ef;background-image:url(https://craftohtml.themezaa.com/images/demo-blogger-home-leaf-03.png)}#contentHolderAndNav.mode2[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:none}#contentHolderAndNav.mode2.navAndContent_tb{background-color:#f7f2ef;background-image:url(https://craftohtml.themezaa.com/images/demo-blogger-home-leaf-03.png)}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "component", type: i2.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize", "isLast"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "component", type: i6.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i7.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i7.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
205
|
-
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceDeskHeaderComponent, decorators: [{
|
|
207
|
-
type: Component,
|
|
208
|
-
args: [{ selector: 'bdc-service-desk-header', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div id=\"headerGrid\" style=\"grid-template-rows: minmax(1px, 15%) 48px 32px 1fr auto 12%; height: 148px\" #headerGrid>\r\n <div class=\"companyLogoHolder_aboveSearch\" #aboveSearch></div>\r\n <div id=\"searchHolder\" style=\"grid-row: 2\" #searchHolder>\r\n <fd-input-group\r\n [style.display]=\"settings?.HideSearch ? 'none' : null\"\r\n class=\"input-search\"\r\n contentDensity=\"cozy\"\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </div>\r\n</div>\r\n<div id=\"headerSpaceHolder\" #headerSpaceHolder>\r\n <div id=\"bgOuterHolder\" #bgOuterHolder>\r\n <div id=\"bgInnerHolder\" style=\"height: 100vh\">\r\n <div class=\"backgroundImage\" id=\"backgroundImage\">\r\n <img class=\"picture\" src=\"/assets/back.jpg\" loading=\"lazy\" />\r\n <span id=\"backgroundImageOverlay\" class=\"overlay\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"contentHolderAndNav\" first=\"true\" #contentAndNav fillEmptySpace [setMinHeight]=\"true\">\r\n <div class=\"aboveContent\" #aboveContent></div>\r\n <div id=\"contentHolder\">\r\n <div class=\"nav content-feed\" #navHolder [style.display]=\"settings?.HideTileGroupsNav ? 'none' : null\">\r\n <div class=\"nav-container\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderTabs; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"nav_surrogate\"></div>\r\n <div class=\"content-feed\">\r\n <ng-container\r\n *ngTemplateOutlet=\"renderGroups; context: { $implicit: (appTileGroups$ | async)!! }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #renderTabs let-appTileGroups>\r\n <fd-tab-list\r\n [size]=\"tabSize\"\r\n [collapseOverflow]=\"tabSize === 's' || appTileGroups.length > 5\"\r\n [expandOverflowText]=\"'More' | bbbTranslate\"\r\n (selectedTabChange)=\"onSelectedTabChange3($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index;) {\r\n <fd-tab [id]=\"'' + i\" [title]=\"appTileGroup.navigatorTitle\"> </fd-tab>\r\n }\r\n </fd-tab-list>\r\n</ng-template>\r\n<ng-template #renderGroups let-appTileGroups>\r\n @for (appTileGroup of appTileGroups; track appTileGroup; let i = $index,isLast=$last) {\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize$ | async\"\r\n [attr.islast]=\"isLast\"\r\n [attr.index]=\"i\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"false\"\r\n [stackContent]=\"true\"\r\n [isAppTileSubGroup]=\"false\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n ></bt-tiles-viewer-group>\r\n }\r\n</ng-template>\r\n", styles: ["html{scroll-behavior:smooth}body{overflow-y:auto!important;overflow-x:hidden!important}bt-shellbar{position:fixed!important;top:0;width:100%;z-index:6}bt-shellbar .fd-shellbar{background:transparent;box-shadow:none;height:66px}bt-shellbar .fd-shellbar__product{display:none}bt-shellbar button{background-color:transparent}bdc-service-desk-header{display:block}bdc-service-desk-header #headerGrid{display:grid;justify-items:center;position:absolute;top:0;width:100%}bdc-service-desk-header #headerSpaceHolder{transition:height .3s ease-out 0s;width:100%}bdc-service-desk-header #searchHolder{z-index:302}bdc-service-desk-header #searchHolder.sticky{position:fixed;top:15px;will-change:transform}bdc-service-desk-header #contentHolderAndNav{align-items:center;background:#00000051;display:flex;flex-direction:column;position:relative;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list{background-color:transparent!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav fd-tab-list fd-tab,bdc-service-desk-header #contentHolderAndNav fd-tab-list .fd-tabs{background-color:transparent!important;box-shadow:none!important;transition:background-color .3s ease-out 0s}bdc-service-desk-header #contentHolderAndNav[first=true] span.fd-tabs__tag{color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:#fff!important}bdc-service-desk-header #contentHolderAndNav[first=true] .fd-layout-panel__head .fd-title{color:#fff!important}bdc-service-desk-header #contentHolderAndNav.navAndContent_tb{background:#f7f7f7}bdc-service-desk-header #contentHolder{align-items:center;display:flex;flex-direction:column}bdc-service-desk-header .nav-container{align-items:center;display:flex;gap:5px;width:100%}bdc-service-desk-header .nav-container fd-tab-list{width:100%}bdc-service-desk-header .nav_surrogate{height:1px}bdc-service-desk-header .nav{display:flex;height:50px;justify-content:center;z-index:500}bdc-service-desk-header .nav ul{height:auto;overflow:hidden;list-style:none;padding-inline:0px 15px;margin:0;display:inline-flex;align-items:center}bdc-service-desk-header .nav ul li{display:inline;list-style:none;padding:0 16px;color:#fff}bdc-service-desk-header .nav.sticky{background:#f7f7f7;position:fixed;will-change:transform}bt-tiles-viewer-group:first-child fd-layout-panel-header{display:none!important}bt-tiles-viewer-group:first-child .fd-panel__content{border-bottom:none}.content-feed{padding:0}.input-search{display:block}@media (max-width: 480px){.nav-container,.content-feed{width:100%}.nav-container .fd-tabs,.content-feed .fd-tabs{padding:0}#searchHolder.sticky,#searchHolder{display:none}#searchHolder .input-search{width:250px}}@media (min-width: 481px) and (max-width: 935px){#searchHolder .input-search{width:360px}}@media (min-width: 936px) and (max-width: 1250px){#searchHolder .input-search{width:480px}}@media (min-width: 1251px){#searchHolder .input-search{width:690px}}@media (max-width: 1180){div#searchHolder.sticky .input-search{width:280px!important}}@media (min-width: 480px) and (max-width: 935px){.nav-container,.content-feed{width:100%}}@media (min-width: 1244px){.nav-container,.content-feed{width:89.3rem}#searchHolder.sticky .input-search{width:690px}}#contentHolderAndNav.mode2{background-color:#f7f2ef;background-image:url(https://craftohtml.themezaa.com/images/demo-blogger-home-leaf-03.png)}#contentHolderAndNav.mode2[first=true] .fd-tabs__link.is-selected>span.fd-tabs__tag:after{background-color:none}#contentHolderAndNav.mode2.navAndContent_tb{background-color:#f7f2ef;background-image:url(https://craftohtml.themezaa.com/images/demo-blogger-home-leaf-03.png)}\n"] }]
|
|
209
|
-
}], ctorParameters: () => [{ type: i1.PortalService }, { type: i2.TilesService }, { type: i2.TilesViewerService }, { type: i0.Renderer2 }, { type: i3.ViewportScroller }, { type: i0.ChangeDetectorRef }], propDecorators: { headerSpaceHolder: [{
|
|
210
|
-
type: ViewChild,
|
|
211
|
-
args: ['headerSpaceHolder', { static: true }]
|
|
212
|
-
}], headerGrid: [{
|
|
213
|
-
type: ViewChild,
|
|
214
|
-
args: ['headerGrid', { static: true }]
|
|
215
|
-
}], aboveSearch: [{
|
|
216
|
-
type: ViewChild,
|
|
217
|
-
args: ['aboveSearch', { static: true }]
|
|
218
|
-
}], searchHolder: [{
|
|
219
|
-
type: ViewChild,
|
|
220
|
-
args: ['searchHolder', { static: true }]
|
|
221
|
-
}], navHolder: [{
|
|
222
|
-
type: ViewChild,
|
|
223
|
-
args: ['navHolder', { static: true }]
|
|
224
|
-
}], aboveContent: [{
|
|
225
|
-
type: ViewChild,
|
|
226
|
-
args: ['aboveContent', { static: true }]
|
|
227
|
-
}], bgOuterHolder: [{
|
|
228
|
-
type: ViewChild,
|
|
229
|
-
args: ['bgOuterHolder', { static: true }]
|
|
230
|
-
}], contentAndNav: [{
|
|
231
|
-
type: ViewChild,
|
|
232
|
-
args: ['contentAndNav', { static: true }]
|
|
233
|
-
}], tilesViewerGroupElList: [{
|
|
234
|
-
type: ViewChildren,
|
|
235
|
-
args: [TilesViewerGroupComponent, { read: ElementRef }]
|
|
236
|
-
}], tabPanelComponents: [{
|
|
237
|
-
type: ViewChildren,
|
|
238
|
-
args: [TabPanelComponent]
|
|
239
|
-
}], settings: [{
|
|
240
|
-
type: Input
|
|
241
|
-
}] } });
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXNrLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1kZXZlbG9wLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlLWRlc2staGVhZGVyL3NlcnZpY2UtZGVzay1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtZGV2ZWxvcC1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZS1kZXNrLWhlYWRlci9zZXJ2aWNlLWRlc2staGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUVqQixVQUFVLEVBQ1YsU0FBUyxFQUVULFlBQVksRUFHWixtQkFBbUIsRUFDbkIsS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFZLE1BQU0sdUJBQXVCLENBQUM7QUFFcEUsT0FBTyxFQUNILDZCQUE2QixFQUM3QixrQkFBa0IsRUFFbEIseUJBQXlCLEVBQzVCLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7O0FBV3JCLE1BQU0sT0FBTywwQkFBMkIsU0FBUSw2QkFBNkI7SUE0QnpFLFlBQ2MsY0FBNkIsRUFDN0IsYUFBMkIsRUFDM0IsbUJBQXVDLEVBQ3ZDLFNBQW9CLEVBQ3RCLGlCQUFtQyxFQUNuQyxJQUF1QjtRQUUvQixLQUFLLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBUGhELG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN0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QyxpQkFBaUI7Z0JBQ3RCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgT25Jbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBSZW5kZXJlclN0eWxlRmxhZ3MyLFxyXG4gICAgSW5wdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmlld3BvcnRTY3JvbGxlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUYWJQYW5lbENvbXBvbmVudCwgVGFiU2l6ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5pbXBvcnQgeyBNZXRhb2JqZWN0RGF0YU1vZGVsLCBQb3J0YWxTZXJ2aWNlLCBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBUaWxlc1ZpZXdlckNvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIFRpbGVzVmlld2VyU2VydmljZSxcclxuICAgIFRpbGVzU2VydmljZSxcclxuICAgIFRpbGVzVmlld2VyR3JvdXBDb21wb25lbnRcclxufSBmcm9tICdiYXJzYS10aWxlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmRjLXNlcnZpY2UtZGVzay1oZWFkZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlcnZpY2UtZGVzay1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1kZXNrLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbVGlsZXNWaWV3ZXJTZXJ2aWNlXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGVza0hlYWRlckNvbXBvbmVudCBleHRlbmRzIFRpbGVzVmlld2VyQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlclNwYWNlSG9sZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgaGVhZGVyU3BhY2VIb2xkZXI6IEVsZW1lbnRSZWY8YW55PjtcclxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlckdyaWQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBoZWFkZXJHcmlkOiBFbGVtZW50UmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKCdhYm92ZVNlYXJjaCcsIHsgc3RhdGljOiB0cnVlIH0pIGFib3ZlU2VhcmNoOiBFbGVtZW50UmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKCdzZWFyY2hIb2xkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hIb2xkZXI6IEVsZW1lbnRSZWY8YW55PjtcclxuICAgIEBWaWV3Q2hpbGQoJ25hdkhvbGRlcicsIHsgc3RhdGljOiB0cnVlIH0pIG5hdkhvbGRlcjogRWxlbWVudFJlZjxhbnk+O1xyXG4gICAgQFZpZXdDaGlsZCgnYWJvdmVDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSkgYWJvdmVDb250ZW50OiBFbGVtZW50UmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKCdiZ091dGVySG9sZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgYmdPdXRlckhvbGRlcjogRWxlbWVudFJlZjxhbnk+O1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGVudEFuZE5hdicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnRBbmROYXY6IEVsZW1lbnRSZWY8YW55PjtcclxuICAgIEBWaWV3Q2hpbGRyZW4oVGlsZXNWaWV3ZXJHcm91cENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHRpbGVzVmlld2VyR3JvdXBFbExpc3Q6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICAgIC8vIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS1jb250ZW50JykgcGFnZUNvbnRlbnRDbGFzcyA9IHRydWU7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xyXG4gICAgQElucHV0KCkgc2V0dGluZ3M6IFNlcnZpY2VEZXNrSGVhZGVyU2V0dGluZztcclxuICAgIHNlbGVjdGVkVGFiSW5kZXggPSAwO1xyXG4gICAgaGVpZ2h0T2ZTcGFjZUhvbGRlciA9IDY2O1xyXG4gICAgdGFiU2l6ZTogVGFiU2l6ZXM7XHJcbiAgICBzZWFyY2hUZXJtJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8QWJicmV2YXRpb25EZXZpY2VTaXplPjtcclxuICAgIHByaXZhdGUgX2VuYWJsZVNjcm9sbCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfZGlzYWJsZUludGVyc2VjdGlvbjogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX2lzRm9ybU9wZW5lZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX3N0aWNreVRvcFBvc2l0aW9uID0gNjY7XHJcbiAgICBwcml2YXRlIG9ic2VydmVyTGlzdDogeyBlbDogYW55OyBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfVtdID0gW107XHJcbiAgICBwcml2YXRlIF9sYXN0U2Nyb2xsUG9zOiBudW1iZXI7XHJcbiAgICBhcHBHcm91cHM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdGlsZXNTZXJ2aWNlOiBUaWxlc1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF90aWxlc1ZpZXdlclNlcnZpY2U6IFRpbGVzVmlld2VyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBfdmlld3BvcnRTY3JvbGxlcjogVmlld3BvcnRTY3JvbGxlcixcclxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfcG9ydGFsU2VydmljZSwgX3RpbGVzU2VydmljZSwgX3RpbGVzVmlld2VyU2VydmljZSk7XHJcbiAgICAgICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLWFic29sdXRlLXBhZ2UtdG9wJywgdGhpcy5fc3RpY2t5VG9wUG9zaXRpb24gKyAncHgnKTtcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZWFyY2hUZXJtJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHRlcm07XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJC5zdWJzY3JpYmUoKGFwcFRpbGVHcm91cHMpID0+IHtcclxuICAgICAgICAgICAgYXBwVGlsZUdyb3Vwcy5mb3JFYWNoKChjKSA9PiB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UubG9hZEFwcEdyb3VwKGMpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBHcm91cHMgPSBhcHBUaWxlR3JvdXBzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF2SG9sZGVyLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCB0aGlzLl9zdGlja3lUb3BQb3NpdGlvbiArICdweCcpO1xyXG5cclxuICAgICAgICB0aGlzLnNldEdyaWRUZW1wbGF0ZVJvd3ModGhpcy5oZWlnaHRPZlNwYWNlSG9sZGVyKTtcclxuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJDtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbmV3SGVpZ2h0ID0gdGhpcy5oZWlnaHRPZlNwYWNlSG9sZGVyO1xyXG4gICAgICAgICAgICB0aGlzLnRhYlNpemUgPSBjO1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gJ3MnKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdIZWlnaHQgPSA2NjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjID09PSAnbScpIHtcclxuICAgICAgICAgICAgICAgIG5ld0hlaWdodCA9IDIyMDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjID09PSAnbCcpIHtcclxuICAgICAgICAgICAgICAgIG5ld0hlaWdodCA9IDI1MDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5ld0hlaWdodCA9IDMyNTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXdIZWlnaHQgPSA2NjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0T2ZTcGFjZUhvbGRlciAhPT0gbmV3SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodE9mU3BhY2VIb2xkZXIgPSBuZXdIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEdyaWRUZW1wbGF0ZVJvd3MobmV3SGVpZ2h0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRldmljZVNpemUgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemU7XHJcbiAgICAgICAgbGV0IHN0aWNreVRvcFBvc2l0aW9uID0gMjA7XHJcbiAgICAgICAgaWYgKGRldmljZVNpemUgPT09ICdzJykge1xyXG4gICAgICAgICAgICBzdGlja3lUb3BQb3NpdGlvbiA9IDYwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zdGlja3lEb20odGhpcy5hYm92ZVNlYXJjaC5uYXRpdmVFbGVtZW50LCB0aGlzLnNlYXJjaEhvbGRlci5uYXRpdmVFbGVtZW50LCAtc3RpY2t5VG9wUG9zaXRpb24sICdzdGlja3knKTtcclxuICAgICAgICB0aGlzLl9zdGlja3lEb20oXHJcbiAgICAgICAgICAgIHRoaXMuYWJvdmVDb250ZW50Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIHRoaXMubmF2SG9sZGVyLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIC10aGlzLl9zdGlja3lUb3BQb3NpdGlvbixcclxuICAgICAgICAgICAgJ3N0aWNreSdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX3N0aWNreURvbShcclxuICAgICAgICAgICAgdGhpcy5hYm92ZUNvbnRlbnQubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgdGhpcy5iZ091dGVySG9sZGVyLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIC10aGlzLl9zdGlja3lUb3BQb3NpdGlvbixcclxuICAgICAgICAgICAgJ3N0aWNreScsXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmdPdXRlckhvbGRlci5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgdGhpcy5fc3RpY2t5VG9wUG9zaXRpb24gKyAncHgnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iZ091dGVySG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9zdGlja3lEb20oXHJcbiAgICAgICAgICAgIHRoaXMuYWJvdmVTZWFyY2gubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50QW5kTmF2Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIC1zdGlja3lUb3BQb3NpdGlvbixcclxuICAgICAgICAgICAgJ25hdkFuZENvbnRlbnRfdGInLFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5jb250ZW50QW5kTmF2Lm5hdGl2ZUVsZW1lbnQsICdmaXJzdCcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5jb250ZW50QW5kTmF2Lm5hdGl2ZUVsZW1lbnQsICdmaXJzdCcsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lbmFibGVTY3JvbGwgPSB0cnVlO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UubmF2aWdhdGlvblN0YXJ0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9sYXN0U2Nyb2xsUG9zID0gd2luZG93LnNjcm9sbFk7XHJcbiAgICAgICAgICAgIGlmIChldmVudCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGV2ZW50Py51cmwgIT09ICcvc2VydmljZWRlc2snICYmXHJcbiAgICAgICAgICAgICAgICBldmVudD8udXJsICE9PSAnLycgJiZcclxuICAgICAgICAgICAgICAgIGV2ZW50Py51cmwuc3BsaXQoJ2FwcGdyb3VwZGlhbG9nJykubGVuZ3RoIDwgMiAmJlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuX2Rpc2FibGVJbnRlcnNlY3Rpb25cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVGb3JtKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLm5hdmlnYXRpb25FbmQkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGV2ZW50ICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQ/LnVybCA9PT0gJy9zZXJ2aWNlZGVzaycgfHwgZXZlbnQ/LnVybCA9PT0gJy8nIHx8IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzID09PSAnL3NlcnZpY2VkZXNrJylcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVuUHJlcGFyZUZvcm0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25TZWFyY2hTdWJtaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3NlcnZpY2VkZXNrL3NlYXJjaD90ZXJtPScgKyB0aGlzLnNlYXJjaFRlcm0pO1xyXG4gICAgICAgIC8vIHZhciBzZWFyY2hNbyA9IEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kKCdHZXRTZWFyY2hNbycsIHRoaXMuc2VhcmNoVGVybSk7XHJcbiAgICAgICAgLy8gQmFyc2FBcGkuQncuRm9ybS5TaG93KHsgTW86IHNlYXJjaE1vIH0pO1xyXG4gICAgfVxyXG4gICAgcHJlcGFyZUZvcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZUludGVyc2VjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGFjaCgpO1xyXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdEludGVyc2N0aW9uT2JzZXJ2ZXJMaXN0KCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5zZWFyY2hIb2xkZXIubmF0aXZlRWxlbWVudCwgJ3N0aWNreScpO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuY29udGVudEFuZE5hdi5uYXRpdmVFbGVtZW50LCAnaGlkZScpO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZUNvbnRlbnQoZmFsc2UpO1xyXG4gICAgICAgIGNvbnN0IGZsYWdzID0gUmVuZGVyZXJTdHlsZUZsYWdzMi5JbXBvcnRhbnQ7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93JywgJ2hpZGRlbicsIGZsYWdzKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XHJcbiAgICB9XHJcbiAgICB1blByZXBhcmVGb3JtKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuc2V0SGVpZ2h0U2VhcmNoSG9sZGVyKHRoaXMuaGVpZ2h0T2ZTcGFjZUhvbGRlcik7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlQ29udGVudCh0cnVlKTtcclxuICAgICAgICAvLyB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnNlYXJjaEhvbGRlci5uYXRpdmVFbGVtZW50LCAnc3RpY2t5Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuc2VhcmNoSG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdoaWRlJyk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5jb250ZW50QW5kTmF2Lm5hdGl2ZUVsZW1lbnQsICdoaWRlJyk7XHJcbiAgICAgICAgY29uc3QgZmxhZ3MgPSBSZW5kZXJlclN0eWxlRmxhZ3MyLkltcG9ydGFudDtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnLCAnYXV0bycsIGZsYWdzKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XHJcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIHRoaXMuX2Nkci5yZWF0dGFjaCgpO1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVJbnRlcnNlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RJbnRlcnNjdGlvbk9ic2VydmVyTGlzdCgpO1xyXG4gICAgfVxyXG4gICAgc2V0SGVpZ2h0U2VhcmNoSG9sZGVyKGhlaWdodCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuaGVhZGVyU3BhY2VIb2xkZXIubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgfVxyXG4gICAgdmlzaWJsZUNvbnRlbnQodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGVudEFuZE5hdi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsIHZpc2libGUgPyAnZmxleCcgOiAnbm9uZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEdyaWRUZW1wbGF0ZVJvd3MoaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJHcmlkLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgICdncmlkLXRlbXBsYXRlLXJvd3MnLFxyXG4gICAgICAgICAgICBgbWlubWF4KDc4cHgsIDE1JSkgNDZweCAzMnB4IDFmciBhdXRvIDEyJTsgaGVpZ2h0OiR7aGVpZ2h0fXB4YFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5oZWFkZXJHcmlkLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWNvbG9yJywgYHJlZGApO1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuaGVhZGVyU3BhY2VIb2xkZXIubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xyXG4gICAgfVxyXG4gICAgb25TZWxlY3RlZFRhYkNoYW5nZTMoc2VsZWN0ZWRUYWI6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGFibGlzdENtcCA9IChzZWxlY3RlZFRhYiBhcyBhbnkpLl90YWJzQ29tcG9uZW50O1xyXG4gICAgICAgIGlmICh0YWJsaXN0Q21wKSB7XHJcbiAgICAgICAgICAgIHRhYmxpc3RDbXAuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkVGFiLmlkID09PSAnMCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBlbGVtZW50UmVmT2ZzZWxlY3RlZFRpbGVHcm91cDogSFRNTEVsZW1lbnQgPSB0aGlzLnRpbGVzVmlld2VyR3JvdXBFbExpc3QuZ2V0KFxyXG4gICAgICAgICAgICBOdW1iZXIoc2VsZWN0ZWRUYWIuaWQpXHJcbiAgICAgICAgKT8ubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgZWxlbWVudFJlZk9mc2VsZWN0ZWRUaWxlR3JvdXAuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgICBibG9jazogJ3N0YXJ0J1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0xhc3RQb3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb1Bvc2l0aW9uKFswLCB0aGlzLl9sYXN0U2Nyb2xsUG9zXSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9lbmFibGVTY3JvbGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb1Bvc2l0aW9uKFswLCB0aGlzLmhlaWdodE9mU3BhY2VIb2xkZXIgLSB0aGlzLl9zdGlja3lUb3BQb3NpdGlvbl0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgZGlzY29ubmVjdEludGVyc2N0aW9uT2JzZXJ2ZXJMaXN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXJMaXN0LmZvckVhY2goKGMpID0+IGMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgY29ubmVjdEludGVyc2N0aW9uT2JzZXJ2ZXJMaXN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXJMaXN0LmZvckVhY2goKGMpID0+IGMub2JzZXJ2ZXIub2JzZXJ2ZShjLmVsKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc3RpY2t5RG9tKFxyXG4gICAgICAgIGFib3ZlLFxyXG4gICAgICAgIGhvbGRlcixcclxuICAgICAgICBtYXJnaW5Ub3AsXHJcbiAgICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICAgIHZpc2libGVDYWxsYmFjaz86ICgpID0+IHZvaWQsXHJcbiAgICAgICAgaGlkZGVuQ2FsbEJhY2s/OiAoKSA9PiB2b2lkXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGVudHJpZXMpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVJbnRlcnNlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWVudHJpZXNbMF0uaXNJbnRlcnNlY3RpbmcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKGhvbGRlciwgY2xhc3NOYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmlzaWJsZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhob2xkZXIsIGNsYXNzTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhpZGRlbkNhbGxCYWNrID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgcm9vdE1hcmdpbjogYCR7bWFyZ2luVG9wfXB4IDBweCAwcHggMHB4YCxcclxuICAgICAgICAgICAgdGhyZXNob2xkOiAwLjFcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVyLCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShhYm92ZSk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlckxpc3QucHVzaCh7IGVsOiBhYm92ZSwgb2JzZXJ2ZXIgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBTZXJ2aWNlRGVza0hlYWRlclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIEhpZGVTZWFyY2g6IGJvb2xlYW47XHJcbiAgICBIaWRlVGFiczogYm9vbGVhbjtcclxufVxyXG4iLCI8ZGl2IGlkPVwiaGVhZGVyR3JpZFwiIHN0eWxlPVwiZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMXB4LCAxNSUpIDQ4cHggMzJweCAxZnIgYXV0byAxMiU7IGhlaWdodDogMTQ4cHhcIiAjaGVhZGVyR3JpZD5cclxuICAgIDxkaXYgY2xhc3M9XCJjb21wYW55TG9nb0hvbGRlcl9hYm92ZVNlYXJjaFwiICNhYm92ZVNlYXJjaD48L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJzZWFyY2hIb2xkZXJcIiBzdHlsZT1cImdyaWQtcm93OiAyXCIgI3NlYXJjaEhvbGRlcj5cclxuICAgICAgICA8ZmQtaW5wdXQtZ3JvdXBcclxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2V0dGluZ3M/LkhpZGVTZWFyY2ggPyAnbm9uZScgOiBudWxsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1zZWFyY2hcIlxyXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eT1cImNvenlcIlxyXG4gICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgIGdseXBoPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cIidTZWFyY2gnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWFyY2gnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJvblNlYXJjaFN1Ym1pdCgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBpZD1cImhlYWRlclNwYWNlSG9sZGVyXCIgI2hlYWRlclNwYWNlSG9sZGVyPlxyXG4gICAgPGRpdiBpZD1cImJnT3V0ZXJIb2xkZXJcIiAjYmdPdXRlckhvbGRlcj5cclxuICAgICAgICA8ZGl2IGlkPVwiYmdJbm5lckhvbGRlclwiIHN0eWxlPVwiaGVpZ2h0OiAxMDB2aFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltYWdlXCIgaWQ9XCJiYWNrZ3JvdW5kSW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwaWN0dXJlXCIgc3JjPVwiL2Fzc2V0cy9iYWNrLmpwZ1wiIGxvYWRpbmc9XCJsYXp5XCIgLz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwiYmFja2dyb3VuZEltYWdlT3ZlcmxheVwiIGNsYXNzPVwib3ZlcmxheVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgaWQ9XCJjb250ZW50SG9sZGVyQW5kTmF2XCIgZmlyc3Q9XCJ0cnVlXCIgI2NvbnRlbnRBbmROYXYgZmlsbEVtcHR5U3BhY2UgW3NldE1pbkhlaWdodF09XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWJvdmVDb250ZW50XCIgI2Fib3ZlQ29udGVudD48L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJjb250ZW50SG9sZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdiBjb250ZW50LWZlZWRcIiAjbmF2SG9sZGVyICAgIFtzdHlsZS5kaXNwbGF5XT1cInNldHRpbmdzPy5IaWRlVGlsZUdyb3Vwc05hdiA/ICdub25lJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlbmRlclRhYnM7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAoYXBwVGlsZUdyb3VwcyQgfCBhc3luYykhISB9XCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdl9zdXJyb2dhdGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mZWVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyR3JvdXBzOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogKGFwcFRpbGVHcm91cHMkIHwgYXN5bmMpISEgfVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNyZW5kZXJUYWJzIGxldC1hcHBUaWxlR3JvdXBzPlxyXG4gICAgPGZkLXRhYi1saXN0XHJcbiAgICAgICAgW3NpemVdPVwidGFiU2l6ZVwiXHJcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidGFiU2l6ZSA9PT0gJ3MnIHx8IGFwcFRpbGVHcm91cHMubGVuZ3RoID4gNVwiXHJcbiAgICAgICAgW2V4cGFuZE92ZXJmbG93VGV4dF09XCInTW9yZScgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlMygkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgICBAZm9yIChhcHBUaWxlR3JvdXAgb2YgYXBwVGlsZUdyb3VwczsgdHJhY2sgYXBwVGlsZUdyb3VwOyBsZXQgaSA9ICRpbmRleDspIHtcclxuICAgICAgICA8ZmQtdGFiIFtpZF09XCInJyArIGlcIiBbdGl0bGVdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlXCI+IDwvZmQtdGFiPlxyXG4gICAgICAgIH1cclxuICAgIDwvZmQtdGFiLWxpc3Q+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjcmVuZGVyR3JvdXBzIGxldC1hcHBUaWxlR3JvdXBzPlxyXG4gICAgQGZvciAoYXBwVGlsZUdyb3VwIG9mIGFwcFRpbGVHcm91cHM7IHRyYWNrIGFwcFRpbGVHcm91cDsgbGV0IGkgPSAkaW5kZXgsaXNMYXN0PSRsYXN0KSB7XHJcbiAgICA8YnQtdGlsZXMtdmlld2VyLWdyb3VwXHJcbiAgICAgICAgW2NsYXNzXT1cImRldmljZVNpemUkIHwgYXN5bmNcIlxyXG4gICAgICAgIFthdHRyLmlzbGFzdF09XCJpc0xhc3RcIlxyXG4gICAgICAgIFthdHRyLmluZGV4XT1cImlcIlxyXG4gICAgICAgIFthcHBUaWxlR3JvdXBdPVwiYXBwVGlsZUdyb3VwXCJcclxuICAgICAgICBbZWRpdF09XCJmYWxzZVwiXHJcbiAgICAgICAgW3N0YWNrQ29udGVudF09XCJ0cnVlXCJcclxuICAgICAgICBbaXNBcHBUaWxlU3ViR3JvdXBdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcclxuICAgID48L2J0LXRpbGVzLXZpZXdlci1ncm91cD5cclxuICAgIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|