barsa-tiles 2.2.57 → 2.2.58

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.
@@ -1,16 +1,17 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, inject, signal, ViewChild, ViewContainerRef } from '@angular/core';
2
2
  import { ActivatedRoute, Router } from '@angular/router';
3
- import { BarsaApi, BaseComponent, getDeviceIsMobile, LogService, LocalStorageService, BreadcrumbService, RoutingService, PortalService } from 'barsa-novin-ray-core';
3
+ import { BarsaApi, BaseComponent, getDeviceIsMobile, LogService, LocalStorageService, BreadcrumbService, RoutingService, PortalService, SortDirection } from 'barsa-novin-ray-core';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "@angular/cdk/scrolling";
7
7
  import * as i3 from "@fundamental-ngx/core/breadcrumb";
8
8
  import * as i4 from "@fundamental-ngx/core/button";
9
9
  import * as i5 from "@fundamental-ngx/core/dynamic-page";
10
- import * as i6 from "@fundamental-ngx/core/toolbar";
11
- import * as i7 from "barsa-sap-ui";
12
- import * as i8 from "../tile-renderer.directive";
13
- import * as i9 from "barsa-novin-ray-core";
10
+ import * as i6 from "@fundamental-ngx/core/panel";
11
+ import * as i7 from "@fundamental-ngx/core/toolbar";
12
+ import * as i8 from "barsa-sap-ui";
13
+ import * as i9 from "../tile-renderer.directive";
14
+ import * as i10 from "barsa-novin-ray-core";
14
15
  export class BarsaTileGroupPageComponent extends BaseComponent {
15
16
  constructor() {
16
17
  super(...arguments);
@@ -26,6 +27,12 @@ export class BarsaTileGroupPageComponent extends BaseComponent {
26
27
  this._breadCrumbService = inject(BreadcrumbService);
27
28
  this._portalService = inject(PortalService);
28
29
  this.loading = signal(false);
30
+ this.sortSettingA = {
31
+ Name: 'AppGroup',
32
+ SortDirection: SortDirection.ASC,
33
+ IsGrouped: true
34
+ };
35
+ this.sortSetting = signal([this.sortSettingA]);
29
36
  }
30
37
  ngOnInit() {
31
38
  super.ngOnInit();
@@ -42,6 +49,13 @@ export class BarsaTileGroupPageComponent extends BaseComponent {
42
49
  Parameters: [id],
43
50
  Method: 'GetTileGroupApps',
44
51
  SuccessFn: (e) => {
52
+ if (e.MoDataList.length) {
53
+ const key = Object.keys(e.MoDataList[0]).filter((c) => c.indexOf('AppTileGroup') > 0);
54
+ if (key) {
55
+ this.sortSettingA.Name = key[0];
56
+ this.sortSetting.set([this.sortSettingA]);
57
+ }
58
+ }
45
59
  this.moList.set(e.MoDataList);
46
60
  },
47
61
  FailFn: (e) => {
@@ -56,11 +70,11 @@ export class BarsaTileGroupPageComponent extends BaseComponent {
56
70
  this._router.navigate(['../']);
57
71
  }
58
72
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileGroupPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTileGroupPageComponent, selector: "bt-barsa-tile-group-page", host: { properties: { "style.position": "this._position" } }, providers: [RoutingService], viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-gap-1 tw-flex-wrap\">\r\n @for(app of moList();track app.Id){\r\n <ng-container *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize }\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #tile let-app let-listMode=\"listMode\" let-navigateBack=\"navigateBack\" let-deviceSize=\"deviceSize\">\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i6.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i7.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "directive", type: i8.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i9.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BarsaTileGroupPageComponent, selector: "bt-barsa-tile-group-page", host: { properties: { "style.position": "this._position" } }, providers: [RoutingService], viewQueries: [{ propertyName: "_containerRef", first: true, predicate: ["containerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-flex-col tw-gap-4\">\r\n @for(appGroup of moList() | multipleGroupBy: sortSetting();track appGroup.$Group || appGroup.Id) {\r\n @if(appGroup.$Group) {\r\n <fd-panel [fixed]=\"true\">\r\n <h2 fd-panel-title>\r\n {{ appGroup.$Group !== 'undefined' ? appGroup.$Group : '' }}\r\n </h2>\r\n <div\r\n fd-panel-content\r\n [class.small-size]=\"deviceSize === 's'\"\r\n class=\"tw-flex tw-gap-2 tw-flex-wrap tw-p-4 !tw-border-b-0\"\r\n >\r\n @for(app of appGroup.$Children;track app.Id;let i=$index){\r\n <ng-container\r\n *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize, index: i }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n </fd-panel>\r\n } }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #tile\r\n let-app\r\n let-listMode=\"listMode\"\r\n let-navigateBack=\"navigateBack\"\r\n let-deviceSize=\"deviceSize\"\r\n let-index=\"index\"\r\n>\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [style.margin-right]=\"rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [style.margin-left]=\"!rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i6.PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded"], outputs: ["expandedChange"] }, { kind: "directive", type: i6.PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "id"] }, { kind: "directive", type: i6.PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i8.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i8.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "directive", type: i9.TileRendererDirective, selector: "[tileRenderer]", inputs: ["component", "data", "edit", "deviceSize", "setToStorage", "listMode", "navigateBackOnClick"], outputs: ["hideClick", "renameClick"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i10.MultipleGroupByPipe, name: "multipleGroupBy" }, { kind: "pipe", type: i10.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
74
  }
61
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BarsaTileGroupPageComponent, decorators: [{
62
76
  type: Component,
63
- args: [{ selector: 'bt-barsa-tile-group-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-gap-1 tw-flex-wrap\">\r\n @for(app of moList();track app.Id){\r\n <ng-container *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize }\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n<ng-template #tile let-app let-listMode=\"listMode\" let-navigateBack=\"navigateBack\" let-deviceSize=\"deviceSize\">\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
77
+ args: [{ selector: 'bt-barsa-tile-group-page', changeDetection: ChangeDetectionStrategy.OnPush, providers: [RoutingService], standalone: false, template: "@if(!isSimple ){\r\n<fd-dynamic-page [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header\r\n [class.simple-title]=\"true\"\r\n [title]=\"title | bbbTranslate\"\r\n [class.p-b0]=\"true\"\r\n [class.hide-title]=\"false\"\r\n >\r\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\r\n <fd-breadcrumb>\r\n @if (breadcrumbs$ | async; as breadCrumbs) { @for ( breadCrumb of breadCrumbs | slice:\r\n 0:breadCrumbs.length; track breadCrumb.url; let i = $index; let last = $last) {\r\n <fd-breadcrumb-item>\r\n <bsu-breadcrumb\r\n [index]=\"i\"\r\n [isLast]=\"last\"\r\n [breadCrumb]=\"breadCrumb\"\r\n [allBreadCrumb]=\"breadCrumbs\"\r\n ></bsu-breadcrumb>\r\n </fd-breadcrumb-item>\r\n } }\r\n </fd-breadcrumb>\r\n </fd-dynamic-page-breadcrumb>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"onClose()\" title=\"Close\">\r\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fd-dynamic-page-content cdkScrollable>\r\n <ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n </fd-dynamic-page-content>\r\n</fd-dynamic-page>\r\n} @else {\r\n<ng-container *ngTemplateOutlet=\"tilesTpl\"> </ng-container>\r\n}\r\n<ng-template #loadingTpl>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n<ng-template #tilesTpl>\r\n <div class=\"tw-flex tw-flex-col tw-gap-4\">\r\n @for(appGroup of moList() | multipleGroupBy: sortSetting();track appGroup.$Group || appGroup.Id) {\r\n @if(appGroup.$Group) {\r\n <fd-panel [fixed]=\"true\">\r\n <h2 fd-panel-title>\r\n {{ appGroup.$Group !== 'undefined' ? appGroup.$Group : '' }}\r\n </h2>\r\n <div\r\n fd-panel-content\r\n [class.small-size]=\"deviceSize === 's'\"\r\n class=\"tw-flex tw-gap-2 tw-flex-wrap tw-p-4 !tw-border-b-0\"\r\n >\r\n @for(app of appGroup.$Children;track app.Id;let i=$index){\r\n <ng-container\r\n *ngTemplateOutlet=\"tile; context: { $implicit: app, deviceSize: deviceSize, index: i }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n </fd-panel>\r\n } }\r\n </div>\r\n</ng-template>\r\n<ng-template\r\n #tile\r\n let-app\r\n let-listMode=\"listMode\"\r\n let-navigateBack=\"navigateBack\"\r\n let-deviceSize=\"deviceSize\"\r\n let-index=\"index\"\r\n>\r\n <span\r\n [dynamicCommand]=\"app.DynamicCommand\"\r\n [style.margin-right]=\"rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [style.margin-left]=\"!rtl ? (index === 0 ? '-0.5rem' : null) : null\"\r\n [setToStorage]=\"false\"\r\n [listMode]=\"false\"\r\n [navigateBackOnClick]=\"listMode ? false : isSimple ? true : false\"\r\n [enableCommand]=\"app.Component\"\r\n tileRenderer\r\n [data]=\"app\"\r\n [edit]=\"false\"\r\n [deviceSize]=\"deviceSize\"\r\n [component]=\"app.Component\"\r\n >\r\n </span>\r\n</ng-template>\r\n", styles: [":host{width:100%;display:block}.app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
64
78
  }], propDecorators: { _containerRef: [{
65
79
  type: ViewChild,
66
80
  args: ['containerRef', { read: ViewContainerRef }]
@@ -68,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
68
82
  type: HostBinding,
69
83
  args: ['style.position']
70
84
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZS1ncm91cC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvYmFyc2EtdGlsZS1ncm91cC1wYWdlL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS9iYXJzYS10aWxlLWdyb3VwLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsY0FBYyxFQUVkLGFBQWEsRUFFaEIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFZOUIsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGFBQWE7SUFSOUQ7O1FBVW1DLGNBQVMsR0FBRyxVQUFVLENBQUM7UUFDdEQsV0FBTSxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsUUFBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBS3pCLGdCQUFXLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFLakQsWUFBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQWdDM0I7SUE5QkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFFekQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUNyRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLGtCQUFrQjtZQUMxQixTQUFTLEVBQUUsQ0FBQyxDQUFtQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFvQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU87UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0FwRFEsMkJBQTJCO21HQUEzQiwyQkFBMkIsaUhBSHpCLENBQUMsY0FBYyxDQUFDLG9IQUlRLGdCQUFnQix5RUN4Q3ZELDJxRkFnRUE7OzRGRHpCYSwyQkFBMkI7a0JBUnZDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsY0FBYyxDQUFDLGNBQ2YsS0FBSzs4QkFHc0MsYUFBYTtzQkFBbkUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3RCLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIGluamVjdCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIHNpZ25hbCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIGdldERldmljZUlzTW9iaWxlLFxyXG4gICAgTG9nU2VydmljZSxcclxuICAgIExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgQnJlYWRjcnVtYlNlcnZpY2UsXHJcbiAgICBCcmVhZENydW1iSW5mbyxcclxuICAgIFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemVcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IEJhc2VUaWxlU2V0dGluZyB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdidC1iYXJzYS10aWxlLWdyb3VwLXBhZ2UnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYXJzYS10aWxlLWdyb3VwLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbUm91dGluZ1NlcnZpY2VdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhcnNhVGlsZUdyb3VwUGFnZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIF9jb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvc2l0aW9uJykgX3Bvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIG1vTGlzdCA9IHNpZ25hbDxCYXNlVGlsZVNldHRpbmdbXT4oW10pO1xyXG4gICAgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgcnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bDtcclxuICAgIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgICBwYXJhbWV0ZXJzOiBCYXJzYVRpbGVHcm91cFBhZ2VTZXR0aW5ncztcclxuICAgIHNldHRpbmdzOiBCYXJzYVRpbGVHcm91cFBhZ2VTZXR0aW5ncztcclxuICAgIHByb3RlY3RlZCBfbG9nU2VydmljZTogTG9nU2VydmljZSA9IGluamVjdChMb2dTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgcHJvdGVjdGVkIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIHByb3RlY3RlZCBfbG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIF9icmVhZENydW1iU2VydmljZSA9IGluamVjdChCcmVhZGNydW1iU2VydmljZSk7XHJcbiAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2UgPSBpbmplY3QoUG9ydGFsU2VydmljZSk7XHJcbiAgICBpc1NpbXBsZTogYm9vbGVhbjtcclxuICAgIGxpc3RNb2RlOiBib29sZWFuO1xyXG4gICAgYnJlYWRjcnVtYnMkOiBPYnNlcnZhYmxlPEJyZWFkQ3J1bWJJbmZvW10+O1xyXG4gICAgcmVwb3J0SWQ6IHN0cmluZztcclxuICAgIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJDtcclxuXHJcbiAgICAgICAgdGhpcy50aXRsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBY3RpdmVUaWxlJyk7XHJcbiAgICAgICAgdGhpcy5pc1NpbXBsZSA9IHRoaXMucGFyYW1ldGVycz8uSXNTaW1wbGUgfHwgdGhpcy5zZXR0aW5ncz8uSXNTaW1wbGU7XHJcbiAgICAgICAgdGhpcy5saXN0TW9kZSA9IHRoaXMucGFyYW1ldGVycz8uTGlzdE1vZGUgfHwgdGhpcy5zZXR0aW5ncz8uTGlzdE1vZGU7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTaW1wbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldmljZVNpemUgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemU7XHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcblxyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbaWRdLFxyXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRUaWxlR3JvdXBBcHBzJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb0xpc3Quc2V0KGUuTW9EYXRhTGlzdCBhcyBBcnJheTxCYXNlVGlsZVNldHRpbmc+KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgRmFpbEZuOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xyXG4gICAgfVxyXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSk7XHJcbiAgICB9XHJcbn1cclxuaW50ZXJmYWNlIEJhcnNhVGlsZUdyb3VwUGFnZVNldHRpbmdzIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XHJcbiAgICBJc1NpbXBsZTogYm9vbGVhbjtcclxuICAgIExpc3RNb2RlOiBib29sZWFuO1xyXG59XHJcbiIsIkBpZighaXNTaW1wbGUgKXtcclxuPGZkLWR5bmFtaWMtcGFnZSBbYXV0b1Jlc3BvbnNpdmVdPVwidHJ1ZVwiPlxyXG4gICAgPGZkLWR5bmFtaWMtcGFnZS1oZWFkZXJcclxuICAgICAgICBbY2xhc3Muc2ltcGxlLXRpdGxlXT1cInRydWVcIlxyXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZSB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2NsYXNzLnAtYjBdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGUtdGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYiBbY2xhc3MuaGlkZV09XCJpc01vYmlsZVwiPlxyXG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYj5cclxuICAgICAgICAgICAgICAgIEBpZiAoYnJlYWRjcnVtYnMkIHwgYXN5bmM7IGFzIGJyZWFkQ3J1bWJzKSB7IEBmb3IgKCBicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6XHJcbiAgICAgICAgICAgICAgICAwOmJyZWFkQ3J1bWJzLmxlbmd0aDsgdHJhY2sgYnJlYWRDcnVtYi51cmw7IGxldCBpID0gJGluZGV4OyBsZXQgbGFzdCA9ICRsYXN0KSB7XHJcbiAgICAgICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWxsQnJlYWRDcnVtYl09XCJicmVhZENydW1ic1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cclxuICAgICAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYj5cclxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxyXG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIiB0aXRsZT1cIkNsb3NlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidzYXAtaWNvbi0tJyArIChpc01vYmlsZSA/IChydGwgPyAnYXJyb3ctcmlnaHQnIDogJ2Fycm93LWxlZnQnKSA6ICdkZWNsaW5lJylcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBjZGtTY3JvbGxhYmxlPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlc1RwbFwiPiA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XHJcbjwvZmQtZHluYW1pYy1wYWdlPlxyXG59IEBlbHNlIHtcclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpbGVzVHBsXCI+IDwvbmctY29udGFpbmVyPlxyXG59XHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cclxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI3RpbGVzVHBsPlxyXG4gICAgPGRpdiBjbGFzcz1cInR3LWZsZXggdHctZ2FwLTEgdHctZmxleC13cmFwXCI+XHJcbiAgICAgICAgQGZvcihhcHAgb2YgbW9MaXN0KCk7dHJhY2sgYXBwLklkKXtcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGlsZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGFwcCwgZGV2aWNlU2l6ZTogZGV2aWNlU2l6ZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjdGlsZSBsZXQtYXBwIGxldC1saXN0TW9kZT1cImxpc3RNb2RlXCIgbGV0LW5hdmlnYXRlQmFjaz1cIm5hdmlnYXRlQmFja1wiIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiPlxyXG4gICAgPHNwYW5cclxuICAgICAgICBbZHluYW1pY0NvbW1hbmRdPVwiYXBwLkR5bmFtaWNDb21tYW5kXCJcclxuICAgICAgICBbc2V0VG9TdG9yYWdlXT1cImZhbHNlXCJcclxuICAgICAgICBbbGlzdE1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtuYXZpZ2F0ZUJhY2tPbkNsaWNrXT1cImxpc3RNb2RlID8gZmFsc2UgOiBpc1NpbXBsZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgW2VuYWJsZUNvbW1hbmRdPVwiYXBwLkNvbXBvbmVudFwiXHJcbiAgICAgICAgdGlsZVJlbmRlcmVyXHJcbiAgICAgICAgW2RhdGFdPVwiYXBwXCJcclxuICAgICAgICBbZWRpdF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2NvbXBvbmVudF09XCJhcHAuQ29tcG9uZW50XCJcclxuICAgID5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlsZS1ncm91cC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvYmFyc2EtdGlsZS1ncm91cC1wYWdlL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS9iYXJzYS10aWxlLWdyb3VwLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsUUFBUSxFQUNSLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsY0FBYyxFQUVkLGFBQWEsRUFFYixhQUFhLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7OztBQVk5QixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsYUFBYTtJQVI5RDs7UUFVbUMsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQUN0RCxXQUFNLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQixRQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFLekIsZ0JBQVcsR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENB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QyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBakVRLDJCQUEyQjttR0FBM0IsMkJBQTJCLGlIQUh6QixDQUFDLGNBQWMsQ0FBQyxvSEFJUSxnQkFBZ0IseUVDekN2RCxza0hBeUZBOzs0RkRqRGEsMkJBQTJCO2tCQVJ2QyxTQUFTOytCQUNJLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsQ0FBQyxjQUNmLEtBQUs7OEJBR3NDLGFBQWE7c0JBQW5FLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUN0QixTQUFTO3NCQUF2QyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBpbmplY3QsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBzaWduYWwsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBCYXJzYUFwaSxcclxuICAgIEJhc2VDb21wb25lbnQsXHJcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcclxuICAgIExvZ1NlcnZpY2UsXHJcbiAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxyXG4gICAgQnJlYWRDcnVtYkluZm8sXHJcbiAgICBSb3V0aW5nU2VydmljZSxcclxuICAgIE1vRm9yUmVwb3J0TW9kZWwsXHJcbiAgICBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxyXG4gICAgU29ydERpcmVjdGlvblxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQmFzZVRpbGVTZXR0aW5nIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LWJhcnNhLXRpbGUtZ3JvdXAtcGFnZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2EtdGlsZS1ncm91cC1wYWdlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRpbGUtZ3JvdXAtcGFnZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtSb3V0aW5nU2VydmljZV0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFyc2FUaWxlR3JvdXBQYWdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgICBAVmlld0NoaWxkKCdjb250YWluZXJSZWYnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUucG9zaXRpb24nKSBfcG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgbW9MaXN0ID0gc2lnbmFsPEJhc2VUaWxlU2V0dGluZ1tdPihbXSk7XHJcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICBydGwgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsO1xyXG4gICAgdGl0bGU6IHN0cmluZyB8IG51bGw7XHJcbiAgICBkaWFsb2dSZWY6IGFueTtcclxuICAgIHBhcmFtZXRlcnM6IEJhcnNhVGlsZUdyb3VwUGFnZVNldHRpbmdzO1xyXG4gICAgc2V0dGluZ3M6IEJhcnNhVGlsZUdyb3VwUGFnZVNldHRpbmdzO1xyXG4gICAgcHJvdGVjdGVkIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlID0gaW5qZWN0KExvZ1NlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICBwcm90ZWN0ZWQgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcm90ZWN0ZWQgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgcHJvdGVjdGVkIF9sb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XHJcbiAgICBwcm90ZWN0ZWQgX2JyZWFkQ3J1bWJTZXJ2aWNlID0gaW5qZWN0KEJyZWFkY3J1bWJTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBfcG9ydGFsU2VydmljZSA9IGluamVjdChQb3J0YWxTZXJ2aWNlKTtcclxuICAgIGlzU2ltcGxlOiBib29sZWFuO1xyXG4gICAgbGlzdE1vZGU6IGJvb2xlYW47XHJcbiAgICBicmVhZGNydW1icyQ6IE9ic2VydmFibGU8QnJlYWRDcnVtYkluZm9bXT47XHJcbiAgICByZXBvcnRJZDogc3RyaW5nO1xyXG4gICAgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XHJcbiAgICBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XHJcbiAgICBzb3J0U2V0dGluZ0EgPSB7XHJcbiAgICAgICAgTmFtZTogJ0FwcEdyb3VwJyxcclxuICAgICAgICBTb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uLkFTQyxcclxuICAgICAgICBJc0dyb3VwZWQ6IHRydWVcclxuICAgIH07XHJcbiAgICBzb3J0U2V0dGluZyA9IHNpZ25hbChbdGhpcy5zb3J0U2V0dGluZ0FdKTtcclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLl9icmVhZENydW1iU2VydmljZS5icmVhZGNydW1icyQ7XHJcblxyXG4gICAgICAgIHRoaXMudGl0bGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQWN0aXZlVGlsZScpO1xyXG4gICAgICAgIHRoaXMuaXNTaW1wbGUgPSB0aGlzLnBhcmFtZXRlcnM/LklzU2ltcGxlIHx8IHRoaXMuc2V0dGluZ3M/LklzU2ltcGxlO1xyXG4gICAgICAgIHRoaXMubGlzdE1vZGUgPSB0aGlzLnBhcmFtZXRlcnM/Lkxpc3RNb2RlIHx8IHRoaXMuc2V0dGluZ3M/Lkxpc3RNb2RlO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU2ltcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gJ3JlbGF0aXZlJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplO1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xyXG5cclxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcclxuICAgICAgICAgICAgUGFyYW1ldGVyczogW2lkXSxcclxuICAgICAgICAgICAgTWV0aG9kOiAnR2V0VGlsZUdyb3VwQXBwcycsXHJcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLk1vRGF0YUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZS5Nb0RhdGFMaXN0WzBdKS5maWx0ZXIoKGMpID0+IGMuaW5kZXhPZignQXBwVGlsZUdyb3VwJykgPiAwKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydFNldHRpbmdBLk5hbWUgPSBrZXlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydFNldHRpbmcuc2V0KFt0aGlzLnNvcnRTZXR0aW5nQV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubW9MaXN0LnNldChlLk1vRGF0YUxpc3QgYXMgQXJyYXk8QmFzZVRpbGVTZXR0aW5nPik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIG9uQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnLi4vJ10pO1xyXG4gICAgfVxyXG59XHJcbmludGVyZmFjZSBCYXJzYVRpbGVHcm91cFBhZ2VTZXR0aW5ncyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgSXNTaW1wbGU6IGJvb2xlYW47XHJcbiAgICBMaXN0TW9kZTogYm9vbGVhbjtcclxufVxyXG4iLCJAaWYoIWlzU2ltcGxlICl7XHJcbjxmZC1keW5hbWljLXBhZ2UgW2F1dG9SZXNwb25zaXZlXT1cInRydWVcIj5cclxuICAgIDxmZC1keW5hbWljLXBhZ2UtaGVhZGVyXHJcbiAgICAgICAgW2NsYXNzLnNpbXBsZS10aXRsZV09XCJ0cnVlXCJcclxuICAgICAgICBbdGl0bGVdPVwidGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtjbGFzcy5wLWIwXT1cInRydWVcIlxyXG4gICAgICAgIFtjbGFzcy5oaWRlLXRpdGxlXT1cImZhbHNlXCJcclxuICAgID5cclxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWJyZWFkY3J1bWIgW2NsYXNzLmhpZGVdPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGJyZWFkY3J1bWJzJCB8IGFzeW5jOyBhcyBicmVhZENydW1icykgeyBAZm9yICggYnJlYWRDcnVtYiBvZiBicmVhZENydW1icyB8IHNsaWNlOlxyXG4gICAgICAgICAgICAgICAgMDpicmVhZENydW1icy5sZW5ndGg7IHRyYWNrIGJyZWFkQ3J1bWIudXJsOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICAgICAgICAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICA8YnN1LWJyZWFkY3J1bWJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXN0XT1cImxhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnJlYWRDcnVtYl09XCJicmVhZENydW1iXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbEJyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2JzdS1icmVhZGNydW1iPlxyXG4gICAgICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICB9IH1cclxuICAgICAgICAgICAgPC9mZC1icmVhZGNydW1iPlxyXG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cclxuICAgICAgICAgICAgPGZkLXRvb2xiYXIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwib25DbG9zZSgpXCIgdGl0bGU9XCJDbG9zZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInc2FwLWljb24tLScgKyAoaXNNb2JpbGUgPyAocnRsID8gJ2Fycm93LXJpZ2h0JyA6ICdhcnJvdy1sZWZ0JykgOiAnZGVjbGluZScpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cclxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cclxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWhlYWRlcj5cclxuXHJcbiAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgY2RrU2Nyb2xsYWJsZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGlsZXNUcGxcIj4gPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG48L2ZkLWR5bmFtaWMtcGFnZT5cclxufSBAZWxzZSB7XHJcbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlc1RwbFwiPiA8L25nLWNvbnRhaW5lcj5cclxufVxyXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XHJcbiAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICN0aWxlc1RwbD5cclxuICAgIDxkaXYgY2xhc3M9XCJ0dy1mbGV4IHR3LWZsZXgtY29sIHR3LWdhcC00XCI+XHJcbiAgICAgICAgQGZvcihhcHBHcm91cCBvZiBtb0xpc3QoKSB8IG11bHRpcGxlR3JvdXBCeTogc29ydFNldHRpbmcoKTt0cmFjayBhcHBHcm91cC4kR3JvdXAgfHwgYXBwR3JvdXAuSWQpIHtcclxuICAgICAgICBAaWYoYXBwR3JvdXAuJEdyb3VwKSB7XHJcbiAgICAgICAgPGZkLXBhbmVsIFtmaXhlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxoMiBmZC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgIHt7IGFwcEdyb3VwLiRHcm91cCAhPT0gJ3VuZGVmaW5lZCcgPyBhcHBHcm91cC4kR3JvdXAgOiAnJyB9fVxyXG4gICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBmZC1wYW5lbC1jb250ZW50XHJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc21hbGwtc2l6ZV09XCJkZXZpY2VTaXplID09PSAncydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LWdhcC0yIHR3LWZsZXgtd3JhcCB0dy1wLTQgIXR3LWJvcmRlci1iLTBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAZm9yKGFwcCBvZiBhcHBHcm91cC4kQ2hpbGRyZW47dHJhY2sgYXBwLklkO2xldCBpPSRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYXBwLCBkZXZpY2VTaXplOiBkZXZpY2VTaXplLCBpbmRleDogaSB9XCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mZC1wYW5lbD5cclxuICAgICAgICB9IH1cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGVcclxuICAgICN0aWxlXHJcbiAgICBsZXQtYXBwXHJcbiAgICBsZXQtbGlzdE1vZGU9XCJsaXN0TW9kZVwiXHJcbiAgICBsZXQtbmF2aWdhdGVCYWNrPVwibmF2aWdhdGVCYWNrXCJcclxuICAgIGxldC1kZXZpY2VTaXplPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICBsZXQtaW5kZXg9XCJpbmRleFwiXHJcbj5cclxuICAgIDxzcGFuXHJcbiAgICAgICAgW2R5bmFtaWNDb21tYW5kXT1cImFwcC5EeW5hbWljQ29tbWFuZFwiXHJcbiAgICAgICAgW3N0eWxlLm1hcmdpbi1yaWdodF09XCJydGwgPyAoaW5kZXggPT09IDAgPyAnLTAuNXJlbScgOiBudWxsKSA6IG51bGxcIlxyXG4gICAgICAgIFtzdHlsZS5tYXJnaW4tbGVmdF09XCIhcnRsID8gKGluZGV4ID09PSAwID8gJy0wLjVyZW0nIDogbnVsbCkgOiBudWxsXCJcclxuICAgICAgICBbc2V0VG9TdG9yYWdlXT1cImZhbHNlXCJcclxuICAgICAgICBbbGlzdE1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIFtuYXZpZ2F0ZUJhY2tPbkNsaWNrXT1cImxpc3RNb2RlID8gZmFsc2UgOiBpc1NpbXBsZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgW2VuYWJsZUNvbW1hbmRdPVwiYXBwLkNvbXBvbmVudFwiXHJcbiAgICAgICAgdGlsZVJlbmRlcmVyXHJcbiAgICAgICAgW2RhdGFdPVwiYXBwXCJcclxuICAgICAgICBbZWRpdF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgW2NvbXBvbmVudF09XCJhcHAuQ29tcG9uZW50XCJcclxuICAgID5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19