ng-prime-tools 1.0.17 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +5 -0
  2. package/esm2022/lib/enums/table-type.enum.mjs +3 -1
  3. package/esm2022/lib/models/card-config.model.mjs +1 -1
  4. package/esm2022/lib/models/form-text-field.model.mjs +1 -1
  5. package/esm2022/lib/models/table-column.model.mjs +1 -1
  6. package/esm2022/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.mjs +4 -3
  7. package/esm2022/lib/pt-card/pt-card.component.mjs +34 -12
  8. package/esm2022/lib/pt-page-skeleton/pt-page-skeleton.component.mjs +3 -1
  9. package/esm2022/lib/pt-side-bar-menu/pt-side-bar-menu.component.mjs +10 -7
  10. package/esm2022/lib/pt-text-input/pt-text-input.component.mjs +3 -3
  11. package/fesm2022/ng-prime-tools.mjs +51 -21
  12. package/fesm2022/ng-prime-tools.mjs.map +1 -1
  13. package/lib/enums/table-type.enum.d.ts +3 -1
  14. package/lib/enums/table-type.enum.d.ts.map +1 -1
  15. package/lib/models/card-config.model.d.ts +1 -0
  16. package/lib/models/card-config.model.d.ts.map +1 -1
  17. package/lib/models/form-text-field.model.d.ts +1 -0
  18. package/lib/models/form-text-field.model.d.ts.map +1 -1
  19. package/lib/models/table-column.model.d.ts +1 -0
  20. package/lib/models/table-column.model.d.ts.map +1 -1
  21. package/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.d.ts +2 -1
  22. package/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.d.ts.map +1 -1
  23. package/lib/pt-card/pt-card.component.d.ts +7 -4
  24. package/lib/pt-card/pt-card.component.d.ts.map +1 -1
  25. package/lib/pt-page-skeleton/pt-page-skeleton.component.d.ts.map +1 -1
  26. package/lib/pt-side-bar-menu/pt-side-bar-menu.component.d.ts.map +1 -1
  27. package/lib/pt-text-input/pt-text-input.component.d.ts.map +1 -1
  28. package/package.json +1 -1
@@ -88,12 +88,23 @@ export class PTCardComponent {
88
88
  return this.config.menuPosition || PTCardComponent.DEFAULT_MENU_POSITION;
89
89
  }
90
90
  getCardStyles() {
91
- const transparency = this.config.pattern?.transparencyPercentage
91
+ // Transparency for the background color
92
+ const backgroundTransparency = this.config.transparencyPercentage
93
+ ? parseFloat(this.config.transparencyPercentage) / 100
94
+ : 1;
95
+ // Transparency for the pattern image
96
+ const patternTransparency = this.config.pattern?.transparencyPercentage
92
97
  ? parseFloat(this.config.pattern.transparencyPercentage) / 100
93
98
  : 1;
94
- const imageUrl = this.config.pattern?.imageUrl || '';
95
- const backgroundColor = this.config.pattern?.backgroundColor ||
96
- PTCardComponent.DEFAULT_BACKGROUND_COLOR;
99
+ // Background color with transparency
100
+ const backgroundColor = this.config.backgroundColor && this.config.transparencyPercentage !== '0'
101
+ ? this.hexToRgba(this.config.backgroundColor, backgroundTransparency)
102
+ : 'transparent';
103
+ // Pattern image with transparency applied via linear-gradient
104
+ const backgroundImage = this.config.pattern?.imageUrl &&
105
+ this.config.pattern.transparencyPercentage !== '0'
106
+ ? `linear-gradient(rgba(255, 255, 255, ${1 - patternTransparency}), rgba(255, 255, 255, ${1 - patternTransparency})), url('${this.config.pattern.imageUrl}')`
107
+ : '';
97
108
  const patternWidth = this.config.pattern?.width || '100%';
98
109
  const patternHeight = this.config.pattern?.height || 'auto';
99
110
  // Determine background-repeat value
@@ -114,7 +125,11 @@ export class PTCardComponent {
114
125
  flexDirection: 'column',
115
126
  justifyContent, // Apply conditional vertical alignment
116
127
  alignItems, // Apply conditional horizontal alignment
117
- backgroundColor,
128
+ backgroundColor, // Background color with transparency
129
+ backgroundImage, // Pattern image with transparency
130
+ backgroundSize,
131
+ backgroundPosition,
132
+ backgroundRepeat,
118
133
  width: this.config.width || PTCardComponent.DEFAULT_WIDTH,
119
134
  height: this.config.height || PTCardComponent.DEFAULT_HEIGHT,
120
135
  border: this.config.noBorder
@@ -125,13 +140,18 @@ export class PTCardComponent {
125
140
  borderRadius: this.config.borderRadius || '8px',
126
141
  boxShadow: this.config.boxShadow || '0 2px 4px rgba(0, 0, 0, 0.1)',
127
142
  position: 'relative',
128
- backgroundImage: imageUrl ? `url(${imageUrl})` : 'none',
129
- backgroundSize,
130
- backgroundPosition,
131
- backgroundRepeat,
132
143
  zIndex: this.config.zIndex !== undefined ? this.config.zIndex : 'auto',
133
144
  };
134
145
  }
146
+ // Utility function to convert hex color to rgba
147
+ hexToRgba(hex, alpha) {
148
+ const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
149
+ hex = hex.replace(shorthandRegex, (_, r, g, b) => r + r + g + g + b + b);
150
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
151
+ return result
152
+ ? `rgba(${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(result[3], 16)}, ${alpha})`
153
+ : hex;
154
+ }
135
155
  getBodyStyles() {
136
156
  const justifyContent = this.config.alignBodyContent === 'center' ? 'center' : 'flex-start';
137
157
  const alignItems = this.config.alignBodyContent === 'center' ? 'center' : 'stretch';
@@ -144,6 +164,8 @@ export class PTCardComponent {
144
164
  maxWidth: '100%',
145
165
  padding: '16px', // Default padding for body
146
166
  boxSizing: 'border-box',
167
+ overflowX: this.isScrollableHorizontal() ? 'auto' : 'hidden',
168
+ overflowY: this.isScrollableVertical() ? 'auto' : 'hidden',
147
169
  };
148
170
  }
149
171
  getHeaderStyles() {
@@ -173,12 +195,12 @@ export class PTCardComponent {
173
195
  return this.config.alignHeaderContent === 'center' ? 'center-align' : '';
174
196
  }
175
197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTCardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
176
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTCardComponent, selector: "pt-card", inputs: { config: "config" }, ngImport: i0, template: "<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{display:flex;flex-direction:column;padding:16px;margin:0 auto;max-height:100vh;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card.center-align{justify-content:center;align-items:center}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none}.pt-card .card-body{display:flex;flex-direction:column;flex-grow:1;max-width:100%;z-index:1;padding:0;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card-body.center-align{justify-content:center;align-items:center}.pt-card .card-header{margin-bottom:16px;display:flex;position:relative;justify-content:flex-start;align-items:stretch}.pt-card .card-header.center-align{justify-content:center;align-items:center}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PTMenuComponent, selector: "pt-menu", inputs: ["config"] }] }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTCardComponent, selector: "pt-card", inputs: { config: "config" }, ngImport: i0, template: "<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{display:flex;flex-direction:column;padding:16px;margin:0 auto;max-height:100vh;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;justify-content:flex-start;align-items:stretch;background-color:transparent}.pt-card .card.center-align{justify-content:center;align-items:center}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none;background-color:var( --background-color, rgba(255, 255, 255, 0) );background-image:var( --background-image-url, none );opacity:var(--image-opacity, 1);z-index:-1}.pt-card .card-body{display:flex;flex-direction:column;flex-grow:1;max-width:100%;z-index:1;padding:0;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card-body.center-align{justify-content:center;align-items:center}.pt-card .card-header{margin-bottom:16px;display:flex;position:relative;justify-content:flex-start;align-items:stretch}.pt-card .card-header.center-align{justify-content:center;align-items:center}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PTMenuComponent, selector: "pt-menu", inputs: ["config"] }] }); }
177
199
  }
178
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTCardComponent, decorators: [{
179
201
  type: Component,
180
- args: [{ selector: 'pt-card', template: "<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{display:flex;flex-direction:column;padding:16px;margin:0 auto;max-height:100vh;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card.center-align{justify-content:center;align-items:center}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none}.pt-card .card-body{display:flex;flex-direction:column;flex-grow:1;max-width:100%;z-index:1;padding:0;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card-body.center-align{justify-content:center;align-items:center}.pt-card .card-header{margin-bottom:16px;display:flex;position:relative;justify-content:flex-start;align-items:stretch}.pt-card .card-header.center-align{justify-content:center;align-items:center}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"] }]
202
+ args: [{ selector: 'pt-card', template: "<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{display:flex;flex-direction:column;padding:16px;margin:0 auto;max-height:100vh;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;justify-content:flex-start;align-items:stretch;background-color:transparent}.pt-card .card.center-align{justify-content:center;align-items:center}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none;background-color:var( --background-color, rgba(255, 255, 255, 0) );background-image:var( --background-image-url, none );opacity:var(--image-opacity, 1);z-index:-1}.pt-card .card-body{display:flex;flex-direction:column;flex-grow:1;max-width:100%;z-index:1;padding:0;box-sizing:border-box;justify-content:flex-start;align-items:stretch}.pt-card .card-body.center-align{justify-content:center;align-items:center}.pt-card .card-header{margin-bottom:16px;display:flex;position:relative;justify-content:flex-start;align-items:stretch}.pt-card .card-header.center-align{justify-content:center;align-items:center}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"] }]
181
203
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
182
204
  type: Input
183
205
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNhcmQvcHQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNhcmQvcHQtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7OztBQVF2QixNQUFNLE9BQU8sZUFBZTtJQUcxQix1Q0FBdUM7YUFDZix3QkFBbUIsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUM3Qiw0QkFBdUIsR0FBRyxPQUFPLEFBQVYsQ0FBVzthQUNsQyx1QkFBa0IsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUM1QiwyQkFBc0IsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUMvQiwwQkFBcUIsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUMvQiw2QkFBd0IsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUNsQyxrQkFBYSxHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3ZCLG1CQUFjLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDeEIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsMEJBQXFCLEdBQUcsT0FBTyxBQUFWLENBQVc7YUFDaEMseUJBQW9CLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDOUIseUJBQW9CLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDN0IseUJBQW9CLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDN0Isb0JBQWUsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUN6QixtQkFBYyxHQUFHLFFBQVEsQUFBWCxDQUFZO0lBRWxELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFB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biAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRDb25maWcsIEljb25TdHlsZSwgVGl0bGVTdHlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVENhcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBDYXJkQ29uZmlnID0ge307XG5cbiAgLy8gRGVmYXVsdCB2YWx1ZXMgYXMgcmVhZG9ubHkgdmFyaWFibGVzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVElUTEVfQ09MT1IgPSAnIzMzMyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVElUTEVfRk9OVF9TSVpFID0gJzEuNWVtJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9JQ09OX0NPTE9SID0gJyMzMzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fRk9OVF9TSVpFID0gJzFlbSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9QT1NJVElPTiA9ICdsZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyNmZmYnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1dJRFRIID0gJzEwMCUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFSUdIVCA9ICdhdXRvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9USVRMRV9QT1NJVElPTiA9ICdsZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NRU5VX1BPU0lUSU9OID0gJ3JpZ2h0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9CT1JERVJfQ09MT1IgPSAnI2RkZCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQk9SREVSX1dJRFRIID0gJzFweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVFJBTlNQQVJFTkNZID0gJzEwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUEFERElORyA9ICcxNnB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NQVJHSU4gPSAnMTZweCAwJztcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5sb2dQYXR0ZXJuVXJsKCk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1BhdHRlcm5VcmwoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhdHRlcm4/LmltYWdlVXJsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFtQVENhcmRDb21wb25lbnRdIElkZW50aWZpZXI6ICR7dGhpcy5jb25maWcuaWRlbnRpZmllcn0sIFBhdHRlcm4gVVJMOiAke3RoaXMuY29uZmlnLnBhdHRlcm4uaW1hZ2VVcmx9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpc1RpdGxlT2JqZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5jb25maWcudGl0bGUgPT09ICdvYmplY3QnO1xuICB9XG5cbiAgaGFzVGl0bGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRpdGxlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb25maWcudGl0bGUgIT09IG51bGw7XG4gIH1cblxuICBnZXRUaXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1RpdGxlT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUpLnRleHRcbiAgICAgIDogKHRoaXMuY29uZmlnLnRpdGxlIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRUaXRsZVN0eWxlcygpIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYWxpZ25NYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBsZWZ0OiAnZmxleC1zdGFydCcsXG4gICAgICBjZW50ZXI6ICdjZW50ZXInLFxuICAgICAgcmlnaHQ6ICdmbGV4LWVuZCcsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRpdGxlPy5jb2xvciB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9DT0xPUixcbiAgICAgIGZvbnRTaXplOiB0aXRsZT8uZm9udFNpemUgfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfVElUTEVfRk9OVF9TSVpFLFxuICAgICAgJy0tdGV4dC1hbGlnbic6XG4gICAgICAgIGFsaWduTWFwW3RpdGxlPy5wb3NpdGlvbiB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9QT1NJVElPTl0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHVwZGF0ZVN0eWxlcygpIHtcbiAgICAvLyBBZnRlciBkYXRhIGlzIGZldGNoZWQgb3IgdXBkYXRlZFxuICAgIHRoaXMuZ2V0Q2FyZFN0eWxlcygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSBBbmd1bGFyIHRvIGRldGVjdCB0aGUgY2hhbmdlc1xuICB9XG5cbiAgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGljb24gPSAodGhpcy5jb25maWcudGl0bGUgYXMgVGl0bGVTdHlsZSk/Lmljb247XG4gICAgcmV0dXJuIHR5cGVvZiBpY29uID09PSAnc3RyaW5nJyA/IGljb24gOiAoaWNvbiBhcyBJY29uU3R5bGUpPy5jb2RlIHx8IG51bGw7XG4gIH1cblxuICBnZXRJY29uU3R5bGVzKCkge1xuICAgIGNvbnN0IGljb24gPSAodGhpcy5jb25maWcudGl0bGUgYXMgVGl0bGVTdHlsZSk/Lmljb247XG4gICAgaWYgKHR5cGVvZiBpY29uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGljb24/LmNvbG9yIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOiBpY29uPy5mb250U2l6ZSB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVENhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SWNvblBvc2l0aW9uKCk6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsIHtcbiAgICBjb25zdCBpY29uID0gKHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUpPy5pY29uO1xuICAgIGlmICh0eXBlb2YgaWNvbiAhPT0gJ3N0cmluZycgJiYgaWNvbj8ucG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBpY29uLnBvc2l0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9QT1NJVElPTjtcbiAgfVxuXG4gIGdldE1lbnVQb3NpdGlvbigpOiAnbGVmdCcgfCAncmlnaHQnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubWVudVBvc2l0aW9uIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX01FTlVfUE9TSVRJT047XG4gIH1cblxuICBnZXRDYXJkU3R5bGVzKCkge1xuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2VcbiAgICAgID8gcGFyc2VGbG9hdCh0aGlzLmNvbmZpZy5wYXR0ZXJuLnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UpIC8gMTAwXG4gICAgICA6IDE7XG5cbiAgICBjb25zdCBpbWFnZVVybCA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LmltYWdlVXJsIHx8ICcnO1xuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9XG4gICAgICB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5iYWNrZ3JvdW5kQ29sb3IgfHxcbiAgICAgIFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1I7XG4gICAgY29uc3QgcGF0dGVybldpZHRoID0gdGhpcy5jb25maWcucGF0dGVybj8ud2lkdGggfHwgJzEwMCUnO1xuICAgIGNvbnN0IHBhdHRlcm5IZWlnaHQgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5oZWlnaHQgfHwgJ2F1dG8nO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhY2tncm91bmQtcmVwZWF0IHZhbHVlXG4gICAgY29uc3QgcmVwZWF0WCA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnJlcGVhdFggPyAncmVwZWF0JyA6ICduby1yZXBlYXQnO1xuICAgIGNvbnN0IHJlcGVhdFkgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRZID8gJ3JlcGVhdCcgOiAnbm8tcmVwZWF0JztcbiAgICBjb25zdCBiYWNrZ3JvdW5kUmVwZWF0ID0gYCR7cmVwZWF0WH0gJHtyZXBlYXRZfWA7XG5cbiAgICAvLyBBZGp1c3QgYmFja2dyb3VuZC1zaXplIGJhc2VkIG9uIHJlcGVhdENvdW50IGlmIHByb3ZpZGVkXG4gICAgY29uc3QgcmVwZWF0Q291bnQgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRDb3VudCB8fCAxO1xuICAgIGNvbnN0IGJhY2tncm91bmRTaXplID1cbiAgICAgIHJlcGVhdENvdW50ID4gMVxuICAgICAgICA/IGAke3BhdHRlcm5XaWR0aH0gJHtwYXR0ZXJuSGVpZ2h0fWBcbiAgICAgICAgOiBgJHtwYXR0ZXJuV2lkdGh9ICR7cGF0dGVybkhlaWdodH1gO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhY2tncm91bmQtcG9zaXRpb24gYmFzZWQgb24gdGhlIHBvc2l0aW9uIHBhcmFtZXRlclxuICAgIGNvbnN0IGJhY2tncm91bmRQb3NpdGlvbiA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnBvc2l0aW9uIHx8ICdjZW50ZXInO1xuXG4gICAgY29uc3QganVzdGlmeUNvbnRlbnQgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25Db250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnO1xuXG4gICAgY29uc3QgYWxpZ25JdGVtcyA9XG4gICAgICB0aGlzLmNvbmZpZy5hbGlnbkNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlcicgOiAnc3RyZXRjaCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBqdXN0aWZ5Q29udGVudCwgLy8gQXBwbHkgY29uZGl0aW9uYWwgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICBhbGlnbkl0ZW1zLCAvLyBBcHBseSBjb25kaXRpb25hbCBob3Jpem9udGFsIGFsaWdubWVudFxuICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMuY29uZmlnLndpZHRoIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX1dJRFRILFxuICAgICAgaGVpZ2h0OiB0aGlzLmNvbmZpZy5oZWlnaHQgfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfSEVJR0hULFxuICAgICAgYm9yZGVyOiB0aGlzLmNvbmZpZy5ub0JvcmRlclxuICAgICAgICA/ICdub25lJ1xuICAgICAgICA6IGBzb2xpZCAke1xuICAgICAgICAgICAgdGhpcy5jb25maWcuYm9yZGVyV2lkdGggfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfQk9SREVSX1dJRFRIXG4gICAgICAgICAgfSAke3RoaXMuY29uZmlnLmJvcmRlckNvbG9yIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0JPUkRFUl9DT0xPUn1gLFxuICAgICAgcGFkZGluZzogdGhpcy5jb25maWcucGFkZGluZyB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9QQURESU5HLFxuICAgICAgbWFyZ2luOiB0aGlzLmNvbmZpZy5tYXJnaW4gfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfTUFSR0lOLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmNvbmZpZy5ib3JkZXJSYWRpdXMgfHwgJzhweCcsXG4gICAgICBib3hTaGFkb3c6IHRoaXMuY29uZmlnLmJveFNoYWRvdyB8fCAnMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKScsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIGJhY2tncm91bmRJbWFnZTogaW1hZ2VVcmwgPyBgdXJsKCR7aW1hZ2VVcmx9KWAgOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kU2l6ZSxcbiAgICAgIGJhY2tncm91bmRQb3NpdGlvbixcbiAgICAgIGJhY2tncm91bmRSZXBlYXQsXG4gICAgICB6SW5kZXg6IHRoaXMuY29uZmlnLnpJbmRleCAhPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcuekluZGV4IDogJ2F1dG8nLFxuICAgIH07XG4gIH1cblxuICBnZXRCb2R5U3R5bGVzKCkge1xuICAgIGNvbnN0IGp1c3RpZnlDb250ZW50ID1cbiAgICAgIHRoaXMuY29uZmlnLmFsaWduQm9keUNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCc7XG4gICAgY29uc3QgYWxpZ25JdGVtcyA9XG4gICAgICB0aGlzLmNvbmZpZy5hbGlnbkJvZHlDb250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ3N0cmV0Y2gnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAganVzdGlmeUNvbnRlbnQsXG4gICAgICBhbGlnbkl0ZW1zLFxuICAgICAgZmxleEdyb3c6IDEsXG4gICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgcGFkZGluZzogJzE2cHgnLCAvLyBEZWZhdWx0IHBhZGRpbmcgZm9yIGJvZHlcbiAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIH07XG4gIH1cblxuICBnZXRIZWFkZXJTdHlsZXMoKSB7XG4gICAgY29uc3QganVzdGlmeUNvbnRlbnQgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25IZWFkZXJDb250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnO1xuICAgIGNvbnN0IGFsaWduSXRlbXMgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25IZWFkZXJDb250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ3N0cmV0Y2gnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50LFxuICAgICAgYWxpZ25JdGVtcyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzE2cHgnLCAvLyBEZWZhdWx0IG1hcmdpbiBmb3IgaGVhZGVyXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB9O1xuICB9XG5cbiAgaXNTY3JvbGxhYmxlSG9yaXpvbnRhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZy5zY3JvbGxhYmxlSG9yaXpvbnRhbDtcbiAgfVxuXG4gIGlzU2Nyb2xsYWJsZVZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29uZmlnLnNjcm9sbGFibGVWZXJ0aWNhbDtcbiAgfVxuXG4gIGdldENhcmRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYWxpZ25Db250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXItYWxpZ24nIDogJyc7XG4gIH1cblxuICBnZXRCb2R5Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFsaWduQm9keUNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlci1hbGlnbicgOiAnJztcbiAgfVxuXG4gIGdldEhlYWRlckNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbGlnbkhlYWRlckNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlci1hbGlnbicgOiAnJztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInB0LWNhcmQgY2FyZFwiXG4gIFtuZ0NsYXNzXT1cImdldENhcmRDbGFzcygpXCJcbiAgW2F0dHIuaWRdPVwiY29uZmlnLmlkZW50aWZpZXJcIlxuICBbbmdTdHlsZV09XCJnZXRDYXJkU3R5bGVzKClcIlxuPlxuICA8IS0tIENhcmQgSGVhZGVyIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJoYXNUaXRsZSgpXCJcbiAgICBjbGFzcz1cImNhcmQtaGVhZGVyXCJcbiAgICBbbmdDbGFzc109XCJnZXRIZWFkZXJDbGFzcygpXCJcbiAgICBbbmdTdHlsZV09XCJnZXRIZWFkZXJTdHlsZXMoKVwiXG4gID5cbiAgICA8aVxuICAgICAgKm5nSWY9XCJnZXRJY29uQ2xhc3MoKSAmJiBnZXRJY29uUG9zaXRpb24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcygpXCJcbiAgICAgIFtuZ1N0eWxlXT1cImdldEljb25TdHlsZXMoKVwiXG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyLWljb24tbGVmdFwiXG4gICAgPjwvaT5cbiAgICA8c3Bhbj57eyBnZXRUaXRsZVRleHQoKSB9fTwvc3Bhbj5cbiAgICA8aVxuICAgICAgKm5nSWY9XCJnZXRJY29uQ2xhc3MoKSAmJiBnZXRJY29uUG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoKVwiXG4gICAgICBbbmdTdHlsZV09XCJnZXRJY29uU3R5bGVzKClcIlxuICAgICAgY2xhc3M9XCJjYXJkLWhlYWRlci1pY29uLXJpZ2h0XCJcbiAgICA+PC9pPlxuICAgIDxwdC1tZW51XG4gICAgICAqbmdJZj1cImNvbmZpZy5tZW51XCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnLm1lbnVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbWVudS1sZWZ0JzogZ2V0TWVudVBvc2l0aW9uKCkgPT09ICdsZWZ0JyxcbiAgICAgICAgJ21lbnUtcmlnaHQnOiBnZXRNZW51UG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1xuICAgICAgfVwiXG4gICAgPjwvcHQtbWVudT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDYXJkIEJvZHkgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiBbbmdDbGFzc109XCJnZXRCb2R5Q2xhc3MoKVwiIFtuZ1N0eWxlXT1cImdldEJvZHlTdHlsZXMoKVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNhcmQvcHQtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWNhcmQvcHQtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7OztBQVF2QixNQUFNLE9BQU8sZUFBZTtJQUcxQix1Q0FBdUM7YUFDZix3QkFBbUIsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUM3Qiw0QkFBdUIsR0FBRyxPQUFPLEFBQVYsQ0FBVzthQUNsQyx1QkFBa0IsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUM1QiwyQkFBc0IsR0FBRyxLQUFLLEFBQVIsQ0FBUzthQUMvQiwwQkFBcUIsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUMvQiw2QkFBd0IsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUNsQyxrQkFBYSxHQUFHLE1BQU0sQUFBVCxDQUFVO2FBQ3ZCLG1CQUFjLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDeEIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsMEJBQXFCLEdBQUcsT0FBTyxBQUFWLENBQVc7YUFDaEMseUJBQW9CLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDOUIseUJBQW9CLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDN0IseUJBQW9CLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDN0Isb0JBQWUsR0FBRyxNQUFNLEFBQVQsQ0FBVTthQUN6QixtQkFBYyxHQUFHLFFBQVEsQUFBWCxDQUFZO0lBRWxELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFB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QWM7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDOytHQXBQVSxlQUFlO21HQUFmLGVBQWUsNkVDZjVCLDJtQ0F5Q0E7OzRGRDFCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFNBQVM7c0ZBS1YsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRDb25maWcsIEljb25TdHlsZSwgVGl0bGVTdHlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWNhcmQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVENhcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBDYXJkQ29uZmlnID0ge307XG5cbiAgLy8gRGVmYXVsdCB2YWx1ZXMgYXMgcmVhZG9ubHkgdmFyaWFibGVzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVElUTEVfQ09MT1IgPSAnIzMzMyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVElUTEVfRk9OVF9TSVpFID0gJzEuNWVtJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9JQ09OX0NPTE9SID0gJyMzMzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fRk9OVF9TSVpFID0gJzFlbSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9QT1NJVElPTiA9ICdsZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyNmZmYnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1dJRFRIID0gJzEwMCUnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFSUdIVCA9ICdhdXRvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9USVRMRV9QT1NJVElPTiA9ICdsZWZ0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NRU5VX1BPU0lUSU9OID0gJ3JpZ2h0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9CT1JERVJfQ09MT1IgPSAnI2RkZCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQk9SREVSX1dJRFRIID0gJzFweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVFJBTlNQQVJFTkNZID0gJzEwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUEFERElORyA9ICcxNnB4JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NQVJHSU4gPSAnMTZweCAwJztcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5sb2dQYXR0ZXJuVXJsKCk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1BhdHRlcm5VcmwoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhdHRlcm4/LmltYWdlVXJsKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFtQVENhcmRDb21wb25lbnRdIElkZW50aWZpZXI6ICR7dGhpcy5jb25maWcuaWRlbnRpZmllcn0sIFBhdHRlcm4gVVJMOiAke3RoaXMuY29uZmlnLnBhdHRlcm4uaW1hZ2VVcmx9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpc1RpdGxlT2JqZWN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5jb25maWcudGl0bGUgPT09ICdvYmplY3QnO1xuICB9XG5cbiAgaGFzVGl0bGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRpdGxlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb25maWcudGl0bGUgIT09IG51bGw7XG4gIH1cblxuICBnZXRUaXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc1RpdGxlT2JqZWN0KClcbiAgICAgID8gKHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUpLnRleHRcbiAgICAgIDogKHRoaXMuY29uZmlnLnRpdGxlIGFzIHN0cmluZyk7XG4gIH1cblxuICBnZXRUaXRsZVN0eWxlcygpIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYWxpZ25NYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBsZWZ0OiAnZmxleC1zdGFydCcsXG4gICAgICBjZW50ZXI6ICdjZW50ZXInLFxuICAgICAgcmlnaHQ6ICdmbGV4LWVuZCcsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRpdGxlPy5jb2xvciB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9DT0xPUixcbiAgICAgIGZvbnRTaXplOiB0aXRsZT8uZm9udFNpemUgfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfVElUTEVfRk9OVF9TSVpFLFxuICAgICAgJy0tdGV4dC1hbGlnbic6XG4gICAgICAgIGFsaWduTWFwW3RpdGxlPy5wb3NpdGlvbiB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9USVRMRV9QT1NJVElPTl0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHVwZGF0ZVN0eWxlcygpIHtcbiAgICAvLyBBZnRlciBkYXRhIGlzIGZldGNoZWQgb3IgdXBkYXRlZFxuICAgIHRoaXMuZ2V0Q2FyZFN0eWxlcygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSBBbmd1bGFyIHRvIGRldGVjdCB0aGUgY2hhbmdlc1xuICB9XG5cbiAgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGljb24gPSAodGhpcy5jb25maWcudGl0bGUgYXMgVGl0bGVTdHlsZSk/Lmljb247XG4gICAgcmV0dXJuIHR5cGVvZiBpY29uID09PSAnc3RyaW5nJyA/IGljb24gOiAoaWNvbiBhcyBJY29uU3R5bGUpPy5jb2RlIHx8IG51bGw7XG4gIH1cblxuICBnZXRJY29uU3R5bGVzKCkge1xuICAgIGNvbnN0IGljb24gPSAodGhpcy5jb25maWcudGl0bGUgYXMgVGl0bGVTdHlsZSk/Lmljb247XG4gICAgaWYgKHR5cGVvZiBpY29uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGljb24/LmNvbG9yIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICAgIGZvbnRTaXplOiBpY29uPy5mb250U2l6ZSB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVENhcmRDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SWNvblBvc2l0aW9uKCk6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsIHtcbiAgICBjb25zdCBpY29uID0gKHRoaXMuY29uZmlnLnRpdGxlIGFzIFRpdGxlU3R5bGUpPy5pY29uO1xuICAgIGlmICh0eXBlb2YgaWNvbiAhPT0gJ3N0cmluZycgJiYgaWNvbj8ucG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBpY29uLnBvc2l0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfSUNPTl9QT1NJVElPTjtcbiAgfVxuXG4gIGdldE1lbnVQb3NpdGlvbigpOiAnbGVmdCcgfCAncmlnaHQnIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubWVudVBvc2l0aW9uIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX01FTlVfUE9TSVRJT047XG4gIH1cblxuICBnZXRDYXJkU3R5bGVzKCkge1xuICAgIC8vIFRyYW5zcGFyZW5jeSBmb3IgdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICBjb25zdCBiYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gdGhpcy5jb25maWcudHJhbnNwYXJlbmN5UGVyY2VudGFnZVxuICAgICAgPyBwYXJzZUZsb2F0KHRoaXMuY29uZmlnLnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UpIC8gMTAwXG4gICAgICA6IDE7XG5cbiAgICAvLyBUcmFuc3BhcmVuY3kgZm9yIHRoZSBwYXR0ZXJuIGltYWdlXG4gICAgY29uc3QgcGF0dGVyblRyYW5zcGFyZW5jeSA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2VcbiAgICAgID8gcGFyc2VGbG9hdCh0aGlzLmNvbmZpZy5wYXR0ZXJuLnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UpIC8gMTAwXG4gICAgICA6IDE7XG5cbiAgICAvLyBCYWNrZ3JvdW5kIGNvbG9yIHdpdGggdHJhbnNwYXJlbmN5XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID1cbiAgICAgIHRoaXMuY29uZmlnLmJhY2tncm91bmRDb2xvciAmJiB0aGlzLmNvbmZpZy50cmFuc3BhcmVuY3lQZXJjZW50YWdlICE9PSAnMCdcbiAgICAgICAgPyB0aGlzLmhleFRvUmdiYSh0aGlzLmNvbmZpZy5iYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRUcmFuc3BhcmVuY3kpXG4gICAgICAgIDogJ3RyYW5zcGFyZW50JztcblxuICAgIC8vIFBhdHRlcm4gaW1hZ2Ugd2l0aCB0cmFuc3BhcmVuY3kgYXBwbGllZCB2aWEgbGluZWFyLWdyYWRpZW50XG4gICAgY29uc3QgYmFja2dyb3VuZEltYWdlID1cbiAgICAgIHRoaXMuY29uZmlnLnBhdHRlcm4/LmltYWdlVXJsICYmXG4gICAgICB0aGlzLmNvbmZpZy5wYXR0ZXJuLnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UgIT09ICcwJ1xuICAgICAgICA/IGBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAke1xuICAgICAgICAgICAgMSAtIHBhdHRlcm5UcmFuc3BhcmVuY3lcbiAgICAgICAgICB9KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAkezEgLSBwYXR0ZXJuVHJhbnNwYXJlbmN5fSkpLCB1cmwoJyR7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wYXR0ZXJuLmltYWdlVXJsXG4gICAgICAgICAgfScpYFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgcGF0dGVybldpZHRoID0gdGhpcy5jb25maWcucGF0dGVybj8ud2lkdGggfHwgJzEwMCUnO1xuICAgIGNvbnN0IHBhdHRlcm5IZWlnaHQgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5oZWlnaHQgfHwgJ2F1dG8nO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhY2tncm91bmQtcmVwZWF0IHZhbHVlXG4gICAgY29uc3QgcmVwZWF0WCA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnJlcGVhdFggPyAncmVwZWF0JyA6ICduby1yZXBlYXQnO1xuICAgIGNvbnN0IHJlcGVhdFkgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRZID8gJ3JlcGVhdCcgOiAnbm8tcmVwZWF0JztcbiAgICBjb25zdCBiYWNrZ3JvdW5kUmVwZWF0ID0gYCR7cmVwZWF0WH0gJHtyZXBlYXRZfWA7XG5cbiAgICAvLyBBZGp1c3QgYmFja2dyb3VuZC1zaXplIGJhc2VkIG9uIHJlcGVhdENvdW50IGlmIHByb3ZpZGVkXG4gICAgY29uc3QgcmVwZWF0Q291bnQgPSB0aGlzLmNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRDb3VudCB8fCAxO1xuICAgIGNvbnN0IGJhY2tncm91bmRTaXplID1cbiAgICAgIHJlcGVhdENvdW50ID4gMVxuICAgICAgICA/IGAke3BhdHRlcm5XaWR0aH0gJHtwYXR0ZXJuSGVpZ2h0fWBcbiAgICAgICAgOiBgJHtwYXR0ZXJuV2lkdGh9ICR7cGF0dGVybkhlaWdodH1gO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGJhY2tncm91bmQtcG9zaXRpb24gYmFzZWQgb24gdGhlIHBvc2l0aW9uIHBhcmFtZXRlclxuICAgIGNvbnN0IGJhY2tncm91bmRQb3NpdGlvbiA9IHRoaXMuY29uZmlnLnBhdHRlcm4/LnBvc2l0aW9uIHx8ICdjZW50ZXInO1xuXG4gICAgY29uc3QganVzdGlmeUNvbnRlbnQgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25Db250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnO1xuXG4gICAgY29uc3QgYWxpZ25JdGVtcyA9XG4gICAgICB0aGlzLmNvbmZpZy5hbGlnbkNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlcicgOiAnc3RyZXRjaCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBqdXN0aWZ5Q29udGVudCwgLy8gQXBwbHkgY29uZGl0aW9uYWwgdmVydGljYWwgYWxpZ25tZW50XG4gICAgICBhbGlnbkl0ZW1zLCAvLyBBcHBseSBjb25kaXRpb25hbCBob3Jpem9udGFsIGFsaWdubWVudFxuICAgICAgYmFja2dyb3VuZENvbG9yLCAvLyBCYWNrZ3JvdW5kIGNvbG9yIHdpdGggdHJhbnNwYXJlbmN5XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2UsIC8vIFBhdHRlcm4gaW1hZ2Ugd2l0aCB0cmFuc3BhcmVuY3lcbiAgICAgIGJhY2tncm91bmRTaXplLFxuICAgICAgYmFja2dyb3VuZFBvc2l0aW9uLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdCxcbiAgICAgIHdpZHRoOiB0aGlzLmNvbmZpZy53aWR0aCB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9XSURUSCxcbiAgICAgIGhlaWdodDogdGhpcy5jb25maWcuaGVpZ2h0IHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0hFSUdIVCxcbiAgICAgIGJvcmRlcjogdGhpcy5jb25maWcubm9Cb3JkZXJcbiAgICAgICAgPyAnbm9uZSdcbiAgICAgICAgOiBgc29saWQgJHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmJvcmRlcldpZHRoIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX0JPUkRFUl9XSURUSFxuICAgICAgICAgIH0gJHt0aGlzLmNvbmZpZy5ib3JkZXJDb2xvciB8fCBQVENhcmRDb21wb25lbnQuREVGQVVMVF9CT1JERVJfQ09MT1J9YCxcbiAgICAgIHBhZGRpbmc6IHRoaXMuY29uZmlnLnBhZGRpbmcgfHwgUFRDYXJkQ29tcG9uZW50LkRFRkFVTFRfUEFERElORyxcbiAgICAgIG1hcmdpbjogdGhpcy5jb25maWcubWFyZ2luIHx8IFBUQ2FyZENvbXBvbmVudC5ERUZBVUxUX01BUkdJTixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy5jb25maWcuYm9yZGVyUmFkaXVzIHx8ICc4cHgnLFxuICAgICAgYm94U2hhZG93OiB0aGlzLmNvbmZpZy5ib3hTaGFkb3cgfHwgJzAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSknLFxuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB6SW5kZXg6IHRoaXMuY29uZmlnLnpJbmRleCAhPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcuekluZGV4IDogJ2F1dG8nLFxuICAgIH07XG4gIH1cblxuICAvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNvbnZlcnQgaGV4IGNvbG9yIHRvIHJnYmFcbiAgcHJpdmF0ZSBoZXhUb1JnYmEoaGV4OiBzdHJpbmcsIGFscGhhOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNob3J0aGFuZFJlZ2V4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcbiAgICBoZXggPSBoZXgucmVwbGFjZShzaG9ydGhhbmRSZWdleCwgKF8sIHIsIGcsIGIpID0+IHIgKyByICsgZyArIGcgKyBiICsgYik7XG4gICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgcmV0dXJuIHJlc3VsdFxuICAgICAgPyBgcmdiYSgke3BhcnNlSW50KHJlc3VsdFsxXSwgMTYpfSwgJHtwYXJzZUludChcbiAgICAgICAgICByZXN1bHRbMl0sXG4gICAgICAgICAgMTZcbiAgICAgICAgKX0sICR7cGFyc2VJbnQocmVzdWx0WzNdLCAxNil9LCAke2FscGhhfSlgXG4gICAgICA6IGhleDtcbiAgfVxuXG4gIGdldEJvZHlTdHlsZXMoKSB7XG4gICAgY29uc3QganVzdGlmeUNvbnRlbnQgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25Cb2R5Q29udGVudCA9PT0gJ2NlbnRlcicgPyAnY2VudGVyJyA6ICdmbGV4LXN0YXJ0JztcbiAgICBjb25zdCBhbGlnbkl0ZW1zID1cbiAgICAgIHRoaXMuY29uZmlnLmFsaWduQm9keUNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlcicgOiAnc3RyZXRjaCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBqdXN0aWZ5Q29udGVudCxcbiAgICAgIGFsaWduSXRlbXMsXG4gICAgICBmbGV4R3JvdzogMSxcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBwYWRkaW5nOiAnMTZweCcsIC8vIERlZmF1bHQgcGFkZGluZyBmb3IgYm9keVxuICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICBvdmVyZmxvd1g6IHRoaXMuaXNTY3JvbGxhYmxlSG9yaXpvbnRhbCgpID8gJ2F1dG8nIDogJ2hpZGRlbicsXG4gICAgICBvdmVyZmxvd1k6IHRoaXMuaXNTY3JvbGxhYmxlVmVydGljYWwoKSA/ICdhdXRvJyA6ICdoaWRkZW4nLFxuICAgIH07XG4gIH1cblxuICBnZXRIZWFkZXJTdHlsZXMoKSB7XG4gICAgY29uc3QganVzdGlmeUNvbnRlbnQgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25IZWFkZXJDb250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnO1xuICAgIGNvbnN0IGFsaWduSXRlbXMgPVxuICAgICAgdGhpcy5jb25maWcuYWxpZ25IZWFkZXJDb250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogJ3N0cmV0Y2gnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50LFxuICAgICAgYWxpZ25JdGVtcyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzE2cHgnLCAvLyBEZWZhdWx0IG1hcmdpbiBmb3IgaGVhZGVyXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB9O1xuICB9XG5cbiAgaXNTY3JvbGxhYmxlSG9yaXpvbnRhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZy5zY3JvbGxhYmxlSG9yaXpvbnRhbDtcbiAgfVxuXG4gIGlzU2Nyb2xsYWJsZVZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29uZmlnLnNjcm9sbGFibGVWZXJ0aWNhbDtcbiAgfVxuXG4gIGdldENhcmRDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYWxpZ25Db250ZW50ID09PSAnY2VudGVyJyA/ICdjZW50ZXItYWxpZ24nIDogJyc7XG4gIH1cblxuICBnZXRCb2R5Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmFsaWduQm9keUNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlci1hbGlnbicgOiAnJztcbiAgfVxuXG4gIGdldEhlYWRlckNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbGlnbkhlYWRlckNvbnRlbnQgPT09ICdjZW50ZXInID8gJ2NlbnRlci1hbGlnbicgOiAnJztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInB0LWNhcmQgY2FyZFwiXG4gIFtuZ0NsYXNzXT1cImdldENhcmRDbGFzcygpXCJcbiAgW2F0dHIuaWRdPVwiY29uZmlnLmlkZW50aWZpZXJcIlxuICBbbmdTdHlsZV09XCJnZXRDYXJkU3R5bGVzKClcIlxuPlxuICA8IS0tIENhcmQgSGVhZGVyIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJoYXNUaXRsZSgpXCJcbiAgICBjbGFzcz1cImNhcmQtaGVhZGVyXCJcbiAgICBbbmdDbGFzc109XCJnZXRIZWFkZXJDbGFzcygpXCJcbiAgICBbbmdTdHlsZV09XCJnZXRIZWFkZXJTdHlsZXMoKVwiXG4gID5cbiAgICA8aVxuICAgICAgKm5nSWY9XCJnZXRJY29uQ2xhc3MoKSAmJiBnZXRJY29uUG9zaXRpb24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcygpXCJcbiAgICAgIFtuZ1N0eWxlXT1cImdldEljb25TdHlsZXMoKVwiXG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyLWljb24tbGVmdFwiXG4gICAgPjwvaT5cbiAgICA8c3Bhbj57eyBnZXRUaXRsZVRleHQoKSB9fTwvc3Bhbj5cbiAgICA8aVxuICAgICAgKm5nSWY9XCJnZXRJY29uQ2xhc3MoKSAmJiBnZXRJY29uUG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoKVwiXG4gICAgICBbbmdTdHlsZV09XCJnZXRJY29uU3R5bGVzKClcIlxuICAgICAgY2xhc3M9XCJjYXJkLWhlYWRlci1pY29uLXJpZ2h0XCJcbiAgICA+PC9pPlxuICAgIDxwdC1tZW51XG4gICAgICAqbmdJZj1cImNvbmZpZy5tZW51XCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnLm1lbnVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnbWVudS1sZWZ0JzogZ2V0TWVudVBvc2l0aW9uKCkgPT09ICdsZWZ0JyxcbiAgICAgICAgJ21lbnUtcmlnaHQnOiBnZXRNZW51UG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1xuICAgICAgfVwiXG4gICAgPjwvcHQtbWVudT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDYXJkIEJvZHkgLS0+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiBbbmdDbGFzc109XCJnZXRCb2R5Q2xhc3MoKVwiIFtuZ1N0eWxlXT1cImdldEJvZHlTdHlsZXMoKVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -38,6 +38,8 @@ export class PTPageSkeletonComponent {
38
38
  noBorder: this.pageSkeletonConfig.contentCardConfig?.noBorder ?? false,
39
39
  backgroundColor: this.pageSkeletonConfig.contentCardConfig?.backgroundColor || '#f0f0f0',
40
40
  padding: this.pageSkeletonConfig.contentCardConfig?.padding || '15px',
41
+ scrollableVertical: true,
42
+ scrollableHorizontal: true,
41
43
  ...this.pageSkeletonConfig.contentCardConfig,
42
44
  };
43
45
  }
@@ -52,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
52
54
  }], toggleSidebar: [{
53
55
  type: Output
54
56
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXBhZ2Utc2tlbGV0b24vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXBhZ2Utc2tlbGV0b24vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFRL0UsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU9ZLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdkUscUJBQWdCLEdBQVksSUFBSSxDQUFDO0tBb0NsQztJQWxDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELDhCQUE4QjtRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEdBQUc7WUFDN0MsVUFBVSxFQUFFLDZCQUE2QjtZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLFFBQVEsSUFBSSxJQUFJO1lBQ3hFLGVBQWUsRUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxJQUFJLE1BQU07WUFDekUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLElBQUksTUFBTTtZQUN4RSxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLE1BQU0sSUFBSSxNQUFNO1lBQ3RFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQjtTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVELGtFQUFrRTtJQUNsRSwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixHQUFHO1lBQzFDLFVBQVUsRUFBRSwwQkFBMEI7WUFDdEMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLElBQUksS0FBSztZQUN0RSxlQUFlLEVBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLGVBQWUsSUFBSSxTQUFTO1lBQ3pFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxJQUFJLE1BQU07WUFDckUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCO1NBQzdDLENBQUM7SUFDSixDQUFDOytHQXZDVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwySkNScEMsa3ZDQXdDQTs7NEZEaENhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0I7OEJBS25CLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFnZVNrZWxldG9uQ29uZmlnLCBDYXJkQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtcGFnZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1wYWdlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUUGFnZVNrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGFnZVNrZWxldG9uQ29uZmlnITogUGFnZVNrZWxldG9uQ29uZmlnO1xuICBAT3V0cHV0KCkgdG9nZ2xlU2lkZWJhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGlzU2lkZWJhclZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUJhY2tncm91bmRDYXJkQ29uZmlnKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudENhcmRDb25maWcoKTtcbiAgfVxuXG4gIG9uVG9nZ2xlU2lkZWJhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2lkZWJhclZpc2libGUgPSAhdGhpcy5pc1NpZGViYXJWaXNpYmxlO1xuICAgIHRoaXMudG9nZ2xlU2lkZWJhci5lbWl0KCk7XG4gIH1cblxuICAvLyBJbml0aWFsaXplIGJhY2tncm91bmRDYXJkQ29uZmlnIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgaW5pdGlhbGl6ZUJhY2tncm91bmRDYXJkQ29uZmlnKCkge1xuICAgIHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnID0ge1xuICAgICAgaWRlbnRpZmllcjogJ3B0LXBhZ2Utc2tlbGV0b24vYmFja2dyb3VuZCcsXG4gICAgICBub0JvcmRlcjogdGhpcy5wYWdlU2tlbGV0b25Db25maWcuYmFja2dyb3VuZENhcmRDb25maWc/Lm5vQm9yZGVyID8/IHRydWUsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6XG4gICAgICAgIHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnPy5iYWNrZ3JvdW5kQ29sb3IgfHwgJyNmZmYnLFxuICAgICAgcGFkZGluZzogdGhpcy5wYWdlU2tlbGV0b25Db25maWcuYmFja2dyb3VuZENhcmRDb25maWc/LnBhZGRpbmcgfHwgJzIwcHgnLFxuICAgICAgbWFyZ2luOiB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5iYWNrZ3JvdW5kQ2FyZENvbmZpZz8ubWFyZ2luIHx8ICcxMHB4JyxcbiAgICAgIC4uLnRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnLFxuICAgIH07XG4gIH1cblxuICAvLyBJbml0aWFsaXplIGNvbnRlbnRDYXJkQ29uZmlnIHdpdGggZGVmYXVsdCB2YWx1ZXMgKGlmIG5lY2Vzc2FyeSlcbiAgaW5pdGlhbGl6ZUNvbnRlbnRDYXJkQ29uZmlnKCkge1xuICAgIHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmNvbnRlbnRDYXJkQ29uZmlnID0ge1xuICAgICAgaWRlbnRpZmllcjogJ3B0LXBhZ2Utc2tlbGV0b24vY29udGVudCcsXG4gICAgICBub0JvcmRlcjogdGhpcy5wYWdlU2tlbGV0b25Db25maWcuY29udGVudENhcmRDb25maWc/Lm5vQm9yZGVyID8/IGZhbHNlLFxuICAgICAgYmFja2dyb3VuZENvbG9yOlxuICAgICAgICB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5jb250ZW50Q2FyZENvbmZpZz8uYmFja2dyb3VuZENvbG9yIHx8ICcjZjBmMGYwJyxcbiAgICAgIHBhZGRpbmc6IHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmNvbnRlbnRDYXJkQ29uZmlnPy5wYWRkaW5nIHx8ICcxNXB4JyxcbiAgICAgIC4uLnRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmNvbnRlbnRDYXJkQ29uZmlnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxwdC1jYXJkIFtjb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnIVwiPlxuICA8IS0tIE5hdmJhciAtLT5cbiAgPHB0LW5hdi1iYXItbWVudVxuICAgIFtuYXZCYXJNZW51Q29uZmlnXT1cInBhZ2VTa2VsZXRvbkNvbmZpZy5uYXZCYXJNZW51Q29uZmlnXCJcbiAgICAodG9nZ2xlU2lkZWJhcik9XCJvblRvZ2dsZVNpZGViYXIoKVwiXG4gID48L3B0LW5hdi1iYXItbWVudT5cblxuICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gICAgPCEtLSBTaWRlYmFyICh1c2UgKm5nSWYgdG8gdG9nZ2xlIHZpc2liaWxpdHkpIC0tPlxuICAgIDxwdC1zaWRlLWJhci1tZW51XG4gICAgICAqbmdJZj1cImlzU2lkZWJhclZpc2libGVcIlxuICAgICAgW21lbnVDb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLnNpZGVNZW51QmFyQ29uZmlnXCJcbiAgICAgIGNsYXNzPVwic2lkZWJhclwiXG4gICAgPjwvcHQtc2lkZS1iYXItbWVudT5cblxuICAgIDwhLS0gTWFpbiBWaWV3IEFyZWEgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtYXJlYVwiIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiAhaXNTaWRlYmFyVmlzaWJsZSB9XCI+XG4gICAgICA8IS0tIENvbnRlbnQgQ2FyZCBXcmFwcGVyIC0tPlxuICAgICAgPHB0LWNhcmQgW2NvbmZpZ109XCJwYWdlU2tlbGV0b25Db25maWcuY29udGVudENhcmRDb25maWdcIj5cbiAgICAgICAgPCEtLSBCcmVhZGNydW1iIC0tPlxuICAgICAgICA8cHQtYnJlYWQtY3J1bWJcbiAgICAgICAgICAqbmdJZj1cInBhZ2VTa2VsZXRvbkNvbmZpZy5icmVhZENydW1iQ29uZmlnXCJcbiAgICAgICAgICBbYnJlYWRDcnVtYkNvbmZpZ109XCJwYWdlU2tlbGV0b25Db25maWcuYnJlYWRDcnVtYkNvbmZpZ1wiXG4gICAgICAgICAgY2xhc3M9XCJicmVhZC1jcnVtYlwiXG4gICAgICAgID48L3B0LWJyZWFkLWNydW1iPlxuXG4gICAgICAgIDwhLS0gQmFja2dyb3VuZCBDYXJkIC0tPlxuXG4gICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDwvcHQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGb290ZXIgLS0+XG4gIDxwdC1mb290ZXJcbiAgICAqbmdJZj1cInBhZ2VTa2VsZXRvbkNvbmZpZy5mb290ZXJDb25maWdcIlxuICAgIFtmb290ZXJDb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLmZvb3RlckNvbmZpZ1wiXG4gICAgY2xhc3M9XCJwdC1mb290ZXJcIlxuICA+PC9wdC1mb290ZXI+XG48L3B0LWNhcmQ+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXBhZ2Utc2tlbGV0b24vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXBhZ2Utc2tlbGV0b24vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFRL0UsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU9ZLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdkUscUJBQWdCLEdBQVksSUFBSSxDQUFDO0tBc0NsQztJQXBDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELDhCQUE4QjtRQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEdBQUc7WUFDN0MsVUFBVSxFQUFFLDZCQUE2QjtZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLFFBQVEsSUFBSSxJQUFJO1lBQ3hFLGVBQWUsRUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxJQUFJLE1BQU07WUFDekUsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLElBQUksTUFBTTtZQUN4RSxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLE1BQU0sSUFBSSxNQUFNO1lBQ3RFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQjtTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVELGtFQUFrRTtJQUNsRSwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixHQUFHO1lBQzFDLFVBQVUsRUFBRSwwQkFBMEI7WUFDdEMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLElBQUksS0FBSztZQUN0RSxlQUFlLEVBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLGVBQWUsSUFBSSxTQUFTO1lBQ3pFLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxJQUFJLE1BQU07WUFDckUsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQjtTQUM3QyxDQUFDO0lBQ0osQ0FBQzsrR0F6Q1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsMkpDUnBDLGt2Q0F3Q0E7OzRGRGhDYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzhCQUtuQixrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2VTa2VsZXRvbkNvbmZpZywgQ2FyZENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LXBhZ2Utc2tlbGV0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtcGFnZS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LXBhZ2Utc2tlbGV0b24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVFBhZ2VTa2VsZXRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBhZ2VTa2VsZXRvbkNvbmZpZyE6IFBhZ2VTa2VsZXRvbkNvbmZpZztcbiAgQE91dHB1dCgpIHRvZ2dsZVNpZGViYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpc1NpZGViYXJWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVCYWNrZ3JvdW5kQ2FyZENvbmZpZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbnRlbnRDYXJkQ29uZmlnKCk7XG4gIH1cblxuICBvblRvZ2dsZVNpZGViYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NpZGViYXJWaXNpYmxlID0gIXRoaXMuaXNTaWRlYmFyVmlzaWJsZTtcbiAgICB0aGlzLnRvZ2dsZVNpZGViYXIuZW1pdCgpO1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZSBiYWNrZ3JvdW5kQ2FyZENvbmZpZyB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gIGluaXRpYWxpemVCYWNrZ3JvdW5kQ2FyZENvbmZpZygpIHtcbiAgICB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5iYWNrZ3JvdW5kQ2FyZENvbmZpZyA9IHtcbiAgICAgIGlkZW50aWZpZXI6ICdwdC1wYWdlLXNrZWxldG9uL2JhY2tncm91bmQnLFxuICAgICAgbm9Cb3JkZXI6IHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnPy5ub0JvcmRlciA/PyB0cnVlLFxuICAgICAgYmFja2dyb3VuZENvbG9yOlxuICAgICAgICB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5iYWNrZ3JvdW5kQ2FyZENvbmZpZz8uYmFja2dyb3VuZENvbG9yIHx8ICcjZmZmJyxcbiAgICAgIHBhZGRpbmc6IHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnPy5wYWRkaW5nIHx8ICcyMHB4JyxcbiAgICAgIG1hcmdpbjogdGhpcy5wYWdlU2tlbGV0b25Db25maWcuYmFja2dyb3VuZENhcmRDb25maWc/Lm1hcmdpbiB8fCAnMTBweCcsXG4gICAgICAuLi50aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5iYWNrZ3JvdW5kQ2FyZENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLy8gSW5pdGlhbGl6ZSBjb250ZW50Q2FyZENvbmZpZyB3aXRoIGRlZmF1bHQgdmFsdWVzIChpZiBuZWNlc3NhcnkpXG4gIGluaXRpYWxpemVDb250ZW50Q2FyZENvbmZpZygpIHtcbiAgICB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5jb250ZW50Q2FyZENvbmZpZyA9IHtcbiAgICAgIGlkZW50aWZpZXI6ICdwdC1wYWdlLXNrZWxldG9uL2NvbnRlbnQnLFxuICAgICAgbm9Cb3JkZXI6IHRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmNvbnRlbnRDYXJkQ29uZmlnPy5ub0JvcmRlciA/PyBmYWxzZSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjpcbiAgICAgICAgdGhpcy5wYWdlU2tlbGV0b25Db25maWcuY29udGVudENhcmRDb25maWc/LmJhY2tncm91bmRDb2xvciB8fCAnI2YwZjBmMCcsXG4gICAgICBwYWRkaW5nOiB0aGlzLnBhZ2VTa2VsZXRvbkNvbmZpZy5jb250ZW50Q2FyZENvbmZpZz8ucGFkZGluZyB8fCAnMTVweCcsXG4gICAgICBzY3JvbGxhYmxlVmVydGljYWw6IHRydWUsXG4gICAgICBzY3JvbGxhYmxlSG9yaXpvbnRhbDogdHJ1ZSxcbiAgICAgIC4uLnRoaXMucGFnZVNrZWxldG9uQ29uZmlnLmNvbnRlbnRDYXJkQ29uZmlnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxwdC1jYXJkIFtjb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLmJhY2tncm91bmRDYXJkQ29uZmlnIVwiPlxuICA8IS0tIE5hdmJhciAtLT5cbiAgPHB0LW5hdi1iYXItbWVudVxuICAgIFtuYXZCYXJNZW51Q29uZmlnXT1cInBhZ2VTa2VsZXRvbkNvbmZpZy5uYXZCYXJNZW51Q29uZmlnXCJcbiAgICAodG9nZ2xlU2lkZWJhcik9XCJvblRvZ2dsZVNpZGViYXIoKVwiXG4gID48L3B0LW5hdi1iYXItbWVudT5cblxuICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gICAgPCEtLSBTaWRlYmFyICh1c2UgKm5nSWYgdG8gdG9nZ2xlIHZpc2liaWxpdHkpIC0tPlxuICAgIDxwdC1zaWRlLWJhci1tZW51XG4gICAgICAqbmdJZj1cImlzU2lkZWJhclZpc2libGVcIlxuICAgICAgW21lbnVDb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLnNpZGVNZW51QmFyQ29uZmlnXCJcbiAgICAgIGNsYXNzPVwic2lkZWJhclwiXG4gICAgPjwvcHQtc2lkZS1iYXItbWVudT5cblxuICAgIDwhLS0gTWFpbiBWaWV3IEFyZWEgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtYXJlYVwiIFtuZ0NsYXNzXT1cInsgJ2Z1bGwtd2lkdGgnOiAhaXNTaWRlYmFyVmlzaWJsZSB9XCI+XG4gICAgICA8IS0tIENvbnRlbnQgQ2FyZCBXcmFwcGVyIC0tPlxuICAgICAgPHB0LWNhcmQgW2NvbmZpZ109XCJwYWdlU2tlbGV0b25Db25maWcuY29udGVudENhcmRDb25maWdcIj5cbiAgICAgICAgPCEtLSBCcmVhZGNydW1iIC0tPlxuICAgICAgICA8cHQtYnJlYWQtY3J1bWJcbiAgICAgICAgICAqbmdJZj1cInBhZ2VTa2VsZXRvbkNvbmZpZy5icmVhZENydW1iQ29uZmlnXCJcbiAgICAgICAgICBbYnJlYWRDcnVtYkNvbmZpZ109XCJwYWdlU2tlbGV0b25Db25maWcuYnJlYWRDcnVtYkNvbmZpZ1wiXG4gICAgICAgICAgY2xhc3M9XCJicmVhZC1jcnVtYlwiXG4gICAgICAgID48L3B0LWJyZWFkLWNydW1iPlxuXG4gICAgICAgIDwhLS0gQmFja2dyb3VuZCBDYXJkIC0tPlxuXG4gICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgIDwvcHQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBGb290ZXIgLS0+XG4gIDxwdC1mb290ZXJcbiAgICAqbmdJZj1cInBhZ2VTa2VsZXRvbkNvbmZpZy5mb290ZXJDb25maWdcIlxuICAgIFtmb290ZXJDb25maWddPVwicGFnZVNrZWxldG9uQ29uZmlnLmZvb3RlckNvbmZpZ1wiXG4gICAgY2xhc3M9XCJwdC1mb290ZXJcIlxuICA+PC9wdC1mb290ZXI+XG48L3B0LWNhcmQ+XG4iXX0=
@@ -18,15 +18,18 @@ export class PTSideBarMenuComponent {
18
18
  height: '100vh',
19
19
  scrollable: true,
20
20
  backgroundColor: 'white',
21
- fontColor: '#333', // Default main font color
22
- fontColorSubMenu: '#666', // Default submenu font color
23
- hoverColor: '#f1f1f1', // Default hover color for main menu
24
- hoverColorSubMenu: '#e0e0e0', // Default hover color for submenu
21
+ fontColor: '#333',
22
+ fontColorSubMenu: '#666',
23
+ hoverColor: '#f1f1f1',
24
+ hoverColorSubMenu: '#e0e0e0',
25
25
  };
26
26
  this.searchCardConfig = {
27
+ alignContent: 'center',
28
+ alignBodyContent: 'center',
27
29
  identifier: 'pt-side-bar-menu/search',
28
30
  backgroundColor: 'white',
29
31
  height: '72px',
32
+ padding: '0',
30
33
  };
31
34
  this.cardConfig = {
32
35
  identifier: 'pt-side-bar-menu',
@@ -198,12 +201,12 @@ export class PTSideBarMenuComponent {
198
201
  });
199
202
  }
200
203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-item-expanded .submenu-list{max-height:500px;padding-bottom:5px;padding-top:5px}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .search-input{margin-left:10px}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:50%;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-item:last-child:after{content:none}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-list{border-left:1px solid #e5e7eb;list-style-type:none;margin-left:23px;margin-top:5px;max-height:0;overflow:hidden;padding-left:25px;position:relative;transition:max-height .3s ease-out,padding .3s ease-out}.pt-side-bar-menu .submenu-list:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i4.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-item-expanded .submenu-list{max-height:500px;padding-bottom:5px;padding-top:5px}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:50%;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-item:last-child:after{content:none}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-list{border-left:1px solid #e5e7eb;list-style-type:none;margin-left:23px;margin-top:5px;max-height:0;overflow:hidden;padding-left:25px;position:relative;transition:max-height .3s ease-out,padding .3s ease-out}.pt-side-bar-menu .submenu-list:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i4.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
202
205
  }
203
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, decorators: [{
204
207
  type: Component,
205
- args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-item-expanded .submenu-list{max-height:500px;padding-bottom:5px;padding-top:5px}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .search-input{margin-left:10px}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:50%;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-item:last-child:after{content:none}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-list{border-left:1px solid #e5e7eb;list-style-type:none;margin-left:23px;margin-top:5px;max-height:0;overflow:hidden;padding-left:25px;position:relative;transition:max-height .3s ease-out,padding .3s ease-out}.pt-side-bar-menu .submenu-list:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"] }]
208
+ args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-item-expanded .submenu-list{max-height:500px;padding-bottom:5px;padding-top:5px}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:50%;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-item:last-child:after{content:none}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-list{border-left:1px solid #e5e7eb;list-style-type:none;margin-left:23px;margin-top:5px;max-height:0;overflow:hidden;padding-left:25px;position:relative;transition:max-height .3s ease-out,padding .3s ease-out}.pt-side-bar-menu .submenu-list:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"] }]
206
209
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { menuConfig: [{
207
210
  type: Input
208
211
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWR0RCxlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU0sRUFBRSwwQkFBMEI7WUFDN0MsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLDZCQUE2QjtZQUN2RCxVQUFVLEVBQUUsU0FBUyxFQUFFLG9DQUFvQztZQUMzRCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsa0NBQWtDO1NBQ2pFLENBQUM7UUFJRixxQkFBZ0IsR0FBZTtZQUM3QixVQUFVLEVBQUUseUJBQXlCO1lBQ3JD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QUcsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO29CQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7b0JBQ3pCLE1BQU0sQ0FDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBblBVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhGQ3ZCbkMsd2hGQW9GQTs7NEZEN0RhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxrQkFBa0I7dUdBS25CLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWVudSxcbiAgRm9ybVRleHRGaWVsZCxcbiAgU2lkZU1lbnVCYXJDb25maWcsXG4gIENhcmRDb25maWcsXG4gIEJhZGdlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFkZ2VUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LXNpZGUtYmFyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wdC1zaWRlLWJhci1tZW51LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRTaWRlQmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIG1lbnVDb25maWc6IFNpZGVNZW51QmFyQ29uZmlnID0ge1xuICAgIG1lbnVzOiBbXSxcbiAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICB3aWR0aDogJzI1MHB4JyxcbiAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgZm9udENvbG9yOiAnIzMzMycsIC8vIERlZmF1bHQgbWFpbiBmb250IGNvbG9yXG4gICAgZm9udENvbG9yU3ViTWVudTogJyM2NjYnLCAvLyBEZWZhdWx0IHN1Ym1lbnUgZm9udCBjb2xvclxuICAgIGhvdmVyQ29sb3I6ICcjZjFmMWYxJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3IgbWFpbiBtZW51XG4gICAgaG92ZXJDb2xvclN1Yk1lbnU6ICcjZTBlMGUwJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3Igc3VibWVudVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBzZWFyY2hDYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51L3NlYXJjaCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGhlaWdodDogJzcycHgnLFxuICB9O1xuXG4gIGNhcmRDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgd2lkdGg6ICcnLFxuICAgIGhlaWdodDogJycsXG4gICAgc2Nyb2xsYWJsZVZlcnRpY2FsOiBmYWxzZSxcbiAgfTtcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG5cbiAgc2VhcmNoRmllbGQ6IEZvcm1UZXh0RmllbGQgPSB7XG4gICAgbmFtZTogJ3NlYXJjaCcsXG4gICAgcGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLFxuICAgIGljb25DbGFzczogJ3BpIHBpLXNlYXJjaCcsXG4gIH07XG5cbiAgZmlsdGVyZWRNZW51czogTWVudVtdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXJkQ29uZmlnID0ge1xuICAgICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMubWVudUNvbmZpZy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5tZW51Q29uZmlnLmhlaWdodCxcbiAgICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogdGhpcy5tZW51Q29uZmlnLnNjcm9sbGFibGUsXG4gICAgICBwYXR0ZXJuOiB0aGlzLm1lbnVDb25maWcucGF0dGVybixcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5tZW51Q29uZmlnLm1lbnVzO1xuXG4gICAgY29uc3QgY2FyZFdpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoXG4gICAgICA/IHBhcnNlSW50KHRoaXMubWVudUNvbmZpZy53aWR0aClcbiAgICAgIDogMjUwO1xuICAgIHRoaXMuc2VhcmNoRmllbGQud2lkdGggPSBgJHtjYXJkV2lkdGggLSA2MH1weGA7XG4gICAgdGhpcy5zZWFyY2hDYXJkQ29uZmlnLndpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoO1xuICAgIHRoaXMuc2VhcmNoQ2FyZENvbmZpZy5wYXR0ZXJuID0gdGhpcy5tZW51Q29uZmlnLnBhdHRlcm47XG5cbiAgICBpZiAodGhpcy5tZW51Q29uZmlnLnNlYXJjaGFibGUpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwXG4gICAgICAgIC5nZXQoJ3NlYXJjaCcpXG4gICAgICAgID8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTWVudShpdGVtOiBNZW51LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXRDaGV2cm9uQ2xhc3MoaXRlbTogTWVudSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaXNFeHBhbmRlZCA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tcmlnaHQnO1xuICB9XG5cbiAgZ2V0QmFkZ2VTdHlsZXMoYmFkZ2U6IEJhZGdlKSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9ycyA9IHRoaXMuZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKFxuICAgICAgYmFkZ2UudHlwZSB8fCBCYWRnZVR5cGUuSW5mb1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGJhZGdlLmNvbG9yIHx8IGRlZmF1bHRDb2xvcnMuY29sb3IsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhZGdlLmJhY2tncm91bmRDb2xvciB8fCBkZWZhdWx0Q29sb3JzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIHBhZGRpbmc6ICcycHggOHB4JyxcbiAgICAgIGJvcmRlclJhZGl1czogJzVweCcsXG4gICAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0QmFkZ2VDb2xvcnModHlwZTogQmFkZ2VUeXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEJhZGdlVHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzE3YTJiOCcgfTtcbiAgICAgIGNhc2UgQmFkZ2VUeXBlLkRhbmdlcjpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNkYzM1NDUnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5XYXJuaW5nOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnI2ZmYzEwNycgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJyB9O1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMubWVudUNvbmZpZy5tZW51cztcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxNZW51cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2ggPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLm1lbnVDb25maWcubWVudXNcbiAgICAgICAgLm1hcCgobWVudSkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoeyAuLi5tZW51IH0sIGxvd2VyQ2FzZVNlYXJjaCkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgTWVudVtdO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEluTWVudShtZW51OiBNZW51LCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51IHwgbnVsbCB7XG4gICAgY29uc3QgaXNNYXRjaCA9IG1lbnUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcblxuICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBtYXRjaGluZ0NoaWxkcmVuID0gbWVudS5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoY2hpbGQsIHNlYXJjaFRlcm0pKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcblxuICAgICAgaWYgKG1hdGNoaW5nQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBtZW51LmNoaWxkcmVuID0gbWF0Y2hpbmdDaGlsZHJlbjtcbiAgICAgICAgbWVudS5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTWF0Y2ggPyBtZW51IDogbnVsbDtcbiAgfVxuXG4gIGNvbGxhcHNlQWxsTWVudXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Q29uZmlnLm1lbnVzLmZvckVhY2goKG1lbnUpID0+IHtcbiAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1TdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnLCAvLyBTZXQgZGVmYXVsdCBmb250IGNvbG9yIGlmIG5vdCBzcGVjaWZpZWQgaW4gY29uZmlnXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lbnVMaW5rU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJyxcbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiAnbm9uZScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICc4cHgnLFxuICAgICAgcGFkZGluZzogJzEwcHggMTVweCcsXG4gICAgICAnZm9udC1zaXplJzogJzE2cHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICc6aG92ZXInOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnLFxuICAgICAgICBjb2xvcjogJyMxMTEnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3ViTWVudUxpbmtTdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyM2NjYnLFxuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogJzVweCcsXG4gICAgICBwYWRkaW5nOiAnNXB4IDEwcHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICAnOmhvdmVyJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yU3ViTWVudSB8fCAnI2UwZTBlMCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlIb3ZlckVmZmVjdHMoKTtcbiAgfVxuXG4gIGFwcGx5SG92ZXJFZmZlY3RzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVMaW5rcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhLm1lbnUtbGluaycpO1xuICAgIGNvbnN0IHN1Yk1lbnVMaW5rcyA9XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5zdWJtZW51LWxpbmsnKTtcblxuICAgIC8vIEFwcGx5IGhvdmVyIGVmZmVjdHMgZm9yIG1haW4gbWVudSBsaW5rc1xuICAgIG1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fCAnd2hpdGUnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMydcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgaG92ZXIgZWZmZWN0cyBmb3Igc3VibWVudSBsaW5rc1xuICAgIHN1Yk1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvciB8fFxuICAgICAgICAgICAgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fFxuICAgICAgICAgICAgJyNmZmYnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHxcbiAgICAgICAgICAgICcjNjY2J1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1zaWRlLWJhci1tZW51XCI+XG4gIDxwdC1jYXJkXG4gICAgKm5nSWY9XCJtZW51Q29uZmlnLnNlYXJjaGFibGVcIlxuICAgIFtjb25maWddPVwic2VhcmNoQ2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgICA8cHQtdGV4dC1pbnB1dCBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtmb3JtRmllbGRdPVwic2VhcmNoRmllbGRcIj5cbiAgICAgIDwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9wdC1jYXJkPlxuXG4gIDxwdC1jYXJkXG4gICAgW2NvbmZpZ109XCJjYXJkQ29uZmlnXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLWhpZGRlbic6ICFtZW51Q29uZmlnLmlzVmlzaWJsZSB9XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cIm1lbnUtbGlzdFwiPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkTWVudXNcIlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21lbnUtaXRlbS1leHBhbmRlZCc6IGl0ZW0uaXNFeHBhbmRlZCB9XCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUl0ZW1TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gTWFpbiBtZW51IGl0ZW1zIHdpdGhvdXQgY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnVybFwiXG4gICAgICAgICAgY2xhc3M9XCJtZW51LWxpbmtcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhpdGVtLmJhZGdlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmJhZGdlLmNvdW50IH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPCEtLSBNZW51IGl0ZW1zIHdpdGggY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwibWVudS1saW5rXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRDaGV2cm9uQ2xhc3MoaXRlbSlcIiBjbGFzcz1cImNoZXZyb25cIj48L2k+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8IS0tIFN1Ym1lbnUgLS0+XG4gICAgICAgIDx1bCBjbGFzcz1cInN1Ym1lbnUtbGlzdFwiPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiIGNsYXNzPVwic3VibWVudS1pdGVtXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZC51cmxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1lbnUtbGlua1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN1Yk1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtdGl0bGVcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLmJhZGdlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhjaGlsZC5iYWRnZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY2hpbGQuYmFkZ2UuY291bnQgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvcHQtY2FyZD5cbjwvZGl2PlxuIl19
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWR0RCxlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU07WUFDakIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixVQUFVLEVBQUUsU0FBUztZQUNyQixpQkFBaUIsRUFBRSxTQUFTO1NBQzdCLENBQUM7UUFJRixxQkFBZ0IsR0FBZTtZQUM3QixZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLFVBQVUsRUFBRSx5QkFBeUI7WUFDckMsZUFB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QUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxFQUNKLE9BQU8sRUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtvQkFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO29CQUN6QixNQUFNLENBQ1QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXRQVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4RkN2Qm5DLHdoRkFvRkE7OzRGRDdEYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usa0JBQWtCO3VHQUtuQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1lbnUsXG4gIEZvcm1UZXh0RmllbGQsXG4gIFNpZGVNZW51QmFyQ29uZmlnLFxuICBDYXJkQ29uZmlnLFxuICBCYWRnZSxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEJhZGdlVHlwZSB9IGZyb20gJy4uL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtc2lkZS1iYXItbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1zaWRlLWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUU2lkZUJhck1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtZW51Q29uZmlnOiBTaWRlTWVudUJhckNvbmZpZyA9IHtcbiAgICBtZW51czogW10sXG4gICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgd2lkdGg6ICcyNTBweCcsXG4gICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgIHNjcm9sbGFibGU6IHRydWUsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGZvbnRDb2xvcjogJyMzMzMnLFxuICAgIGZvbnRDb2xvclN1Yk1lbnU6ICcjNjY2JyxcbiAgICBob3ZlckNvbG9yOiAnI2YxZjFmMScsXG4gICAgaG92ZXJDb2xvclN1Yk1lbnU6ICcjZTBlMGUwJyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgc2VhcmNoQ2FyZENvbmZpZzogQ2FyZENvbmZpZyA9IHtcbiAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGFsaWduQm9keUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51L3NlYXJjaCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGhlaWdodDogJzcycHgnLFxuICAgIHBhZGRpbmc6ICcwJyxcbiAgfTtcblxuICBjYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnLFxuICAgIHdpZHRoOiAnJyxcbiAgICBoZWlnaHQ6ICcnLFxuICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogZmFsc2UsXG4gIH07XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuXG4gIHNlYXJjaEZpZWxkOiBGb3JtVGV4dEZpZWxkID0ge1xuICAgIG5hbWU6ICdzZWFyY2gnLFxuICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyxcbiAgICBpY29uQ2xhc3M6ICdwaSBwaS1zZWFyY2gnLFxuICB9O1xuXG4gIGZpbHRlcmVkTWVudXM6IE1lbnVbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENvbmZpZyA9IHtcbiAgICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5tZW51Q29uZmlnLmJhY2tncm91bmRDb2xvcixcbiAgICAgIHdpZHRoOiB0aGlzLm1lbnVDb25maWcud2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMubWVudUNvbmZpZy5oZWlnaHQsXG4gICAgICBzY3JvbGxhYmxlVmVydGljYWw6IHRoaXMubWVudUNvbmZpZy5zY3JvbGxhYmxlLFxuICAgICAgcGF0dGVybjogdGhpcy5tZW51Q29uZmlnLnBhdHRlcm4sXG4gICAgfTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMubWVudUNvbmZpZy5tZW51cztcblxuICAgIGNvbnN0IGNhcmRXaWR0aCA9IHRoaXMubWVudUNvbmZpZy53aWR0aFxuICAgICAgPyBwYXJzZUludCh0aGlzLm1lbnVDb25maWcud2lkdGgpXG4gICAgICA6IDI1MDtcbiAgICB0aGlzLnNlYXJjaEZpZWxkLndpZHRoID0gYCR7Y2FyZFdpZHRoIC0gNjB9cHhgO1xuICAgIHRoaXMuc2VhcmNoQ2FyZENvbmZpZy53aWR0aCA9IHRoaXMubWVudUNvbmZpZy53aWR0aDtcbiAgICB0aGlzLnNlYXJjaENhcmRDb25maWcucGF0dGVybiA9IHRoaXMubWVudUNvbmZpZy5wYXR0ZXJuO1xuXG4gICAgaWYgKHRoaXMubWVudUNvbmZpZy5zZWFyY2hhYmxlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cFxuICAgICAgICAuZ2V0KCdzZWFyY2gnKVxuICAgICAgICA/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMub25TZWFyY2goc2VhcmNoVGVybSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZU1lbnUoaXRlbTogTWVudSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZDtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0Q2hldnJvbkNsYXNzKGl0ZW06IE1lbnUpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmlzRXhwYW5kZWQgPyAnZmEgZmEtY2hldnJvbi1kb3duJyA6ICdmYSBmYS1jaGV2cm9uLXJpZ2h0JztcbiAgfVxuXG4gIGdldEJhZGdlU3R5bGVzKGJhZGdlOiBCYWRnZSkge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvcnMgPSB0aGlzLmdldERlZmF1bHRCYWRnZUNvbG9ycyhcbiAgICAgIGJhZGdlLnR5cGUgfHwgQmFkZ2VUeXBlLkluZm9cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBiYWRnZS5jb2xvciB8fCBkZWZhdWx0Q29sb3JzLmNvbG9yLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWRnZS5iYWNrZ3JvdW5kQ29sb3IgfHwgZGVmYXVsdENvbG9ycy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBwYWRkaW5nOiAnMnB4IDhweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKHR5cGU6IEJhZGdlVHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBCYWRnZVR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyMxN2EyYjgnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5EYW5nZXI6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZGMzNTQ1JyB9O1xuICAgICAgY2FzZSBCYWRnZVR5cGUuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNmZmMxMDcnIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcgfTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoVGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLm1lbnVDb25maWcubWVudXM7XG4gICAgICB0aGlzLmNvbGxhcHNlQWxsTWVudXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5tZW51Q29uZmlnLm1lbnVzXG4gICAgICAgIC5tYXAoKG1lbnUpID0+IHRoaXMuc2VhcmNoSW5NZW51KHsgLi4ubWVudSB9LCBsb3dlckNhc2VTZWFyY2gpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hJbk1lbnUobWVudTogTWVudSwgc2VhcmNoVGVybTogc3RyaW5nKTogTWVudSB8IG51bGwge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSBtZW51LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG5cbiAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQpID0+IHRoaXMuc2VhcmNoSW5NZW51KGNoaWxkLCBzZWFyY2hUZXJtKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBNZW51W107XG5cbiAgICAgIGlmIChtYXRjaGluZ0NoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbWVudS5jaGlsZHJlbiA9IG1hdGNoaW5nQ2hpbGRyZW47XG4gICAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBtZW51O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc01hdGNoID8gbWVudSA6IG51bGw7XG4gIH1cblxuICBjb2xsYXBzZUFsbE1lbnVzKCk6IHZvaWQge1xuICAgIHRoaXMubWVudUNvbmZpZy5tZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICBtZW51LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1lbnVJdGVtU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJywgLy8gU2V0IGRlZmF1bHQgZm9udCBjb2xvciBpZiBub3Qgc3BlY2lmaWVkIGluIGNvbmZpZ1xuICAgIH07XG4gIH1cblxuICBnZXRNZW51TGlua1N0eWxlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMycsXG4gICAgICAndGV4dC1kZWNvcmF0aW9uJzogJ25vbmUnLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnOHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4IDE1cHgnLFxuICAgICAgJ2ZvbnQtc2l6ZSc6ICcxNnB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgJ2FsaWduLWl0ZW1zJzogJ2NlbnRlcicsXG4gICAgICAnOmhvdmVyJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yIHx8ICcjZjFmMWYxJyxcbiAgICAgICAgY29sb3I6ICcjMTExJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldFN1Yk1lbnVMaW5rU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yU3ViTWVudSB8fCB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjNjY2JyxcbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiAnbm9uZScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgICAgcGFkZGluZzogJzVweCAxMHB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvclN1Yk1lbnUgfHwgJyNlMGUwZTAnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5SG92ZXJFZmZlY3RzKCk7XG4gIH1cblxuICBhcHBseUhvdmVyRWZmZWN0cygpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51TGlua3MgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5tZW51LWxpbmsnKTtcbiAgICBjb25zdCBzdWJNZW51TGlua3MgPVxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Euc3VibWVudS1saW5rJyk7XG5cbiAgICAvLyBBcHBseSBob3ZlciBlZmZlY3RzIGZvciBtYWluIG1lbnUgbGlua3NcbiAgICBtZW51TGlua3MuZm9yRWFjaCgobGluazogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yIHx8ICcjZjFmMWYxJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3IgfHwgJ3doaXRlJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGxpbmssICdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGhvdmVyIGVmZmVjdHMgZm9yIHN1Ym1lbnUgbGlua3NcbiAgICBzdWJNZW51TGlua3MuZm9yRWFjaCgobGluazogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yU3ViTWVudSB8fFxuICAgICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHxcbiAgICAgICAgICAgICcjZjFmMWYxJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3IgfHxcbiAgICAgICAgICAgICcjZmZmJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGxpbmssICdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8XG4gICAgICAgICAgICAnIzY2NidcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHQtc2lkZS1iYXItbWVudVwiPlxuICA8cHQtY2FyZFxuICAgICpuZ0lmPVwibWVudUNvbmZpZy5zZWFyY2hhYmxlXCJcbiAgICBbY29uZmlnXT1cInNlYXJjaENhcmRDb25maWdcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NpZGViYXItaGlkZGVuJzogIW1lbnVDb25maWcuaXNWaXNpYmxlIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgPHB0LXRleHQtaW5wdXQgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbZm9ybUZpZWxkXT1cInNlYXJjaEZpZWxkXCI+XG4gICAgICA8L3B0LXRleHQtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvcHQtY2FyZD5cblxuICA8cHQtY2FyZFxuICAgIFtjb25maWddPVwiY2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8dWwgY2xhc3M9XCJtZW51LWxpc3RcIj5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE1lbnVzXCJcbiAgICAgICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdtZW51LWl0ZW0tZXhwYW5kZWQnOiBpdGVtLmlzRXhwYW5kZWQgfVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVJdGVtU3R5bGVzKClcIlxuICAgICAgPlxuICAgICAgICA8IS0tIE1haW4gbWVudSBpdGVtcyB3aXRob3V0IGNoaWxkcmVuIC0tPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIlxuICAgICAgICAgIGNsYXNzPVwibWVudS1saW5rXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDwhLS0gTWVudSBpdGVtcyB3aXRoIGNoaWxkcmVuIC0tPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cIm1lbnUtbGlua1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUxpbmtTdHlsZXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJhZGdlU3R5bGVzKGl0ZW0uYmFkZ2UpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0uYmFkZ2UuY291bnQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZ2V0Q2hldnJvbkNsYXNzKGl0ZW0pXCIgY2xhc3M9XCJjaGV2cm9uXCI+PC9pPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPCEtLSBTdWJtZW51IC0tPlxuICAgICAgICA8dWwgY2xhc3M9XCJzdWJtZW51LWxpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIiBjbGFzcz1cInN1Ym1lbnUtaXRlbVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiY2hpbGQudXJsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtZW51LWxpbmtcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdWJNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiY2hpbGQuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtZW51LXRpdGxlXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5iYWRnZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoY2hpbGQuYmFkZ2UpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNoaWxkLmJhZGdlLmNvdW50IH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3B0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==
@@ -89,14 +89,14 @@ export class PTTextInputComponent {
89
89
  return '';
90
90
  }
91
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTTextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTTextInputComponent, selector: "pt-text-input", inputs: { formGroup: "formGroup", formField: "formField" }, ngImport: i0, template: "<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n", styles: [".form-field{position:relative;margin-bottom:1rem}.form-field label{display:block;margin-bottom:.5rem;font-weight:700;font-size:1rem}.form-info-row{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.spacer{flex-grow:1}.character-counter{font-size:.8rem;color:#888;text-align:right;margin-left:auto}.p-error{font-size:.8rem;color:#f44336}input:focus{outline:none;box-shadow:none;border-color:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "component", type: i5.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }] }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTTextInputComponent, selector: "pt-text-input", inputs: { formGroup: "formGroup", formField: "formField" }, ngImport: i0, template: "<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n", styles: [".form-field{position:relative}.form-field label{display:block;margin-bottom:.5rem;font-weight:700;font-size:1rem}.form-info-row{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.spacer{flex-grow:1}.character-counter{font-size:.8rem;color:#888;text-align:right;margin-left:auto}.p-error{font-size:.8rem;color:#f44336}input:focus{outline:none;box-shadow:none;border-color:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "component", type: i5.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }] }); }
93
93
  }
94
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTTextInputComponent, decorators: [{
95
95
  type: Component,
96
- args: [{ selector: 'pt-text-input', template: "<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n", styles: [".form-field{position:relative;margin-bottom:1rem}.form-field label{display:block;margin-bottom:.5rem;font-weight:700;font-size:1rem}.form-info-row{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.spacer{flex-grow:1}.character-counter{font-size:.8rem;color:#888;text-align:right;margin-left:auto}.p-error{font-size:.8rem;color:#f44336}input:focus{outline:none;box-shadow:none;border-color:inherit}\n"] }]
96
+ args: [{ selector: 'pt-text-input', template: "<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n", styles: [".form-field{position:relative}.form-field label{display:block;margin-bottom:.5rem;font-weight:700;font-size:1rem}.form-info-row{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.spacer{flex-grow:1}.character-counter{font-size:.8rem;color:#888;text-align:right;margin-left:auto}.p-error{font-size:.8rem;color:#f44336}input:focus{outline:none;box-shadow:none;border-color:inherit}\n"] }]
97
97
  }], propDecorators: { formGroup: [{
98
98
  type: Input
99
99
  }], formField: [{
100
100
  type: Input
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtdGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXRleHQtaW5wdXQvcHQtdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXRleHQtaW5wdXQvcHQtdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBRUwsVUFBVSxHQUdYLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFPbEUsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNFLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO0tBcUY1QjtJQW5GQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7UUFDdkUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUss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LElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUsscUJBQXFCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxhQUFhLENBQUM7UUFDM0YsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxhQUFhLENBQUM7UUFDMUYsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssYUFBYSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBeEZVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGlIQ2hCakMsZzNEQWtFQTs7NEZEbERhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxlQUFlOzhCQUtoQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRpb25FbnVtIH0gZnJvbSAnLi4vZW51bXMvaW5wdXQtdmFsaWRhdGlvbi5lbnVtJztcbmltcG9ydCB7IEZvcm1UZXh0RmllbGQgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS10ZXh0LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1JbnB1dFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvZm9ybS1pbnB1dC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC10ZXh0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LXRleHQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wdC10ZXh0LWlucHV0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRUZXh0SW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZvcm1GaWVsZCE6IEZvcm1UZXh0RmllbGQ7XG5cbiAgY2hhcmFjdGVyQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXR1cENvbnRyb2woKTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJhY3RlckNvdW50KCk7XG4gIH1cblxuICBzZXR1cENvbnRyb2woKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1GaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUZpZWxkLmRpc2FibGVkKSB7XG4gICAgICAgICAgY29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcmFjdGVyQ291bnQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ2hhcmFjdGVyQ291bnQoKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1GaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDtcbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNoYXJhY3RlckNvdW50ID0gY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUubGVuZ3RoIDogMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaGFyYWN0ZXJDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRUeXBlKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmZvcm1GaWVsZC50eXBlKSB7XG4gICAgICBjYXNlIEZvcm1JbnB1dFR5cGVFbnVtLlBBU1NXT1JEOlxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcbiAgICAgIGNhc2UgRm9ybUlucHV0VHlwZUVudW0uTlVNQkVSOlxuICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkLnJlcXVpcmVkKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1GaWVsZC5taW5MZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMuZm9ybUZpZWxkLm1pbkxlbmd0aCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtRmllbGQubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmZvcm1GaWVsZC5tYXhMZW5ndGgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkLmlucHV0VmFsaWRhdGlvbikge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFxuICAgICAgICB0aGlzLnZhbGlkYXRlV2l0aElucHV0VmFsaWRhdGlvbih0aGlzLmZvcm1GaWVsZC5pbnB1dFZhbGlkYXRpb24pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVXaXRoSW5wdXRWYWxpZGF0aW9uKFxuICAgIGlucHV0VmFsaWRhdGlvbjogSW5wdXRWYWxpZGF0aW9uRW51bVxuICApOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKGlucHV0VmFsaWRhdGlvbikpO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1GaWVsZC5uYW1lKTtcbiAgICBpZiAoY29udHJvbD8uaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1GaWVsZC5sYWJlbH0gaXMgcmVxdWlyZWRgO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbD8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5mb3JtRmllbGQubGFiZWx9IG11c3QgYmUgYXQgbGVhc3QgJHt0aGlzLmZvcm1GaWVsZC5taW5MZW5ndGh9IGNoYXJhY3RlcnNgO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbD8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5mb3JtRmllbGQubGFiZWx9IG11c3QgYmUgYXQgbW9zdCAke3RoaXMuZm9ybUZpZWxkLm1heExlbmd0aH0gY2hhcmFjdGVyc2A7XG4gICAgfSBlbHNlIGlmIChjb250cm9sPy5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5mb3JtRmllbGQubGFiZWx9IGlzIGludmFsaWRgO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICBjbGFzcz1cImZvcm0tZmllbGRcIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgd2lkdGg6IGZvcm1GaWVsZC53aWR0aCB8fCAnMTAwJScsXG4gICAgaGVpZ2h0OiBmb3JtRmllbGQuaGVpZ2h0IHx8ICdhdXRvJ1xuICB9XCJcbiAgKm5nSWY9XCIhZm9ybUZpZWxkLmhpZGRlblwiXG4+XG4gIDxsYWJlbCAqbmdJZj1cImZvcm1GaWVsZC5sYWJlbFwiPnt7IGZvcm1GaWVsZC5sYWJlbCB9fTwvbGFiZWw+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1GaWVsZC5pY29uQ2xhc3M7IGVsc2Ugbm9JY29uXCI+XG4gICAgPHAtaWNvbkZpZWxkIFtpY29uUG9zaXRpb25dPVwiZm9ybUZpZWxkLmljb25Qb3NpdGlvbiB8fCAnbGVmdCdcIj5cbiAgICAgIDxwLWlucHV0SWNvblxuICAgICAgICAqbmdJZj1cImZvcm1GaWVsZC5pY29uQ2xhc3NcIlxuICAgICAgICBbc3R5bGVDbGFzc109XCJmb3JtRmllbGQuaWNvbkNsYXNzXCJcbiAgICAgID48L3AtaW5wdXRJY29uPlxuICAgICAgPGlucHV0XG4gICAgICAgIFt0eXBlXT1cImdldElucHV0VHlwZSgpXCJcbiAgICAgICAgcElucHV0VGV4dFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZvcm1GaWVsZC5uYW1lXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZvcm1GaWVsZC5wbGFjZWhvbGRlciA/PyAnJ1wiXG4gICAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJmb3JtRmllbGQubWluTGVuZ3RoXCJcbiAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cImZvcm1GaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IGZvcm1GaWVsZC53aWR0aCB8fCAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiBmb3JtRmllbGQuaGVpZ2h0IHx8ICdhdXRvJ1xuICAgICAgICB9XCJcbiAgICAgIC8+XG4gICAgPC9wLWljb25GaWVsZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNub0ljb24+XG4gICAgPGlucHV0XG4gICAgICBbdHlwZV09XCJnZXRJbnB1dFR5cGUoKVwiXG4gICAgICBwSW5wdXRUZXh0XG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZvcm1GaWVsZC5uYW1lXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJmb3JtRmllbGQucGxhY2Vob2xkZXIgPz8gJydcIlxuICAgICAgW2F0dHIubWlubGVuZ3RoXT1cImZvcm1GaWVsZC5taW5MZW5ndGhcIlxuICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cImZvcm1GaWVsZC5tYXhMZW5ndGhcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICB3aWR0aDogZm9ybUZpZWxkLndpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiBmb3JtRmllbGQuaGVpZ2h0IHx8ICdhdXRvJ1xuICAgICAgfVwiXG4gICAgLz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1pbmZvLXJvd1wiPlxuICAgIDxzbWFsbFxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgZm9ybUdyb3VwLmdldChmb3JtRmllbGQubmFtZSk/LmludmFsaWQgJiZcbiAgICAgICAgZm9ybUdyb3VwLmdldChmb3JtRmllbGQubmFtZSk/LnRvdWNoZWRcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cInAtZXJyb3JcIlxuICAgID5cbiAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XG4gICAgPC9zbWFsbD5cbiAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZm9ybUZpZWxkLmRpc2FibGVkICYmIGZvcm1GaWVsZC5tYXhMZW5ndGggIT09IHVuZGVmaW5lZFwiXG4gICAgICBjbGFzcz1cImNoYXJhY3Rlci1jb3VudGVyXCJcbiAgICA+XG4gICAgICB7eyBjaGFyYWN0ZXJDb3VudCB9fS97eyBmb3JtRmllbGQubWF4TGVuZ3RoIH19IGNoYXJhY3RlcnNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtdGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXRleHQtaW5wdXQvcHQtdGV4dC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXRleHQtaW5wdXQvcHQtdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBRUwsVUFBVSxHQUdYLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFRbEUsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNFLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO0tBcUY1QjtJQW5GQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7UUFDdkUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUss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LElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUsscUJBQXFCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxhQUFhLENBQUM7UUFDM0YsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxhQUFhLENBQUM7UUFDMUYsQ0FBQzthQUFNLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssYUFBYSxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7K0dBeEZVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGlIQ2pCakMsZzNEQWtFQTs7NEZEakRhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxlQUFlOzhCQUtoQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFZhbGlkYXRpb25FbnVtIH0gZnJvbSAnLi4vZW51bXMvaW5wdXQtdmFsaWRhdGlvbi5lbnVtJztcbmltcG9ydCB7IEZvcm1UZXh0RmllbGQgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS10ZXh0LWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZvcm1JbnB1dFR5cGVFbnVtIH0gZnJvbSAnLi4vZW51bXMvZm9ybS1pbnB1dC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ2FyZENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LXRleHQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtdGV4dC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LXRleHQtaW5wdXQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVFRleHRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZm9ybUZpZWxkITogRm9ybVRleHRGaWVsZDtcblxuICBjaGFyYWN0ZXJDb3VudDogbnVtYmVyID0gMDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHVwQ29udHJvbCgpO1xuICAgIHRoaXMudXBkYXRlQ2hhcmFjdGVyQ291bnQoKTtcbiAgfVxuXG4gIHNldHVwQ29udHJvbCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtRmllbGQuZGlzYWJsZWQpIHtcbiAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFyYWN0ZXJDb3VudCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDaGFyYWN0ZXJDb3VudCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUZpZWxkLm5hbWUpIGFzIEZvcm1Db250cm9sO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMuY2hhcmFjdGVyQ291bnQgPSBjb250cm9sLnZhbHVlID8gY29udHJvbC52YWx1ZS5sZW5ndGggOiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoYXJhY3RlckNvdW50ID0gMDtcbiAgICB9XG4gIH1cblxuICBnZXRJbnB1dFR5cGUoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuZm9ybUZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgRm9ybUlucHV0VHlwZUVudW0uUEFTU1dPUkQ6XG4gICAgICAgIHJldHVybiAncGFzc3dvcmQnO1xuICAgICAgY2FzZSBGb3JtSW5wdXRUeXBlRW51bS5OVU1CRVI6XG4gICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBpZiAodGhpcy5mb3JtRmllbGQucmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkLm1pbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5mb3JtRmllbGQubWluTGVuZ3RoKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1GaWVsZC5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuZm9ybUZpZWxkLm1heExlbmd0aCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtRmllbGQuaW5wdXRWYWxpZGF0aW9uKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goXG4gICAgICAgIHRoaXMudmFsaWRhdGVXaXRoSW5wdXRWYWxpZGF0aW9uKHRoaXMuZm9ybUZpZWxkLmlucHV0VmFsaWRhdGlvbilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdpdGhJbnB1dFZhbGlkYXRpb24oXG4gICAgaW5wdXRWYWxpZGF0aW9uOiBJbnB1dFZhbGlkYXRpb25FbnVtXG4gICk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKG5ldyBSZWdFeHAoaW5wdXRWYWxpZGF0aW9uKSk7XG4gIH1cblxuICBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUZpZWxkLm5hbWUpO1xuICAgIGlmIChjb250cm9sPy5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybUZpZWxkLmxhYmVsfSBpcyByZXF1aXJlZGA7XG4gICAgfSBlbHNlIGlmIChjb250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1GaWVsZC5sYWJlbH0gbXVzdCBiZSBhdCBsZWFzdCAke3RoaXMuZm9ybUZpZWxkLm1pbkxlbmd0aH0gY2hhcmFjdGVyc2A7XG4gICAgfSBlbHNlIGlmIChjb250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1GaWVsZC5sYWJlbH0gbXVzdCBiZSBhdCBtb3N0ICR7dGhpcy5mb3JtRmllbGQubWF4TGVuZ3RofSBjaGFyYWN0ZXJzYDtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2w/Lmhhc0Vycm9yKCdwYXR0ZXJuJykpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1GaWVsZC5sYWJlbH0gaXMgaW52YWxpZGA7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIiwiPGRpdlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gIGNsYXNzPVwiZm9ybS1maWVsZFwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICB3aWR0aDogZm9ybUZpZWxkLndpZHRoIHx8ICcxMDAlJyxcbiAgICBoZWlnaHQ6IGZvcm1GaWVsZC5oZWlnaHQgfHwgJ2F1dG8nXG4gIH1cIlxuICAqbmdJZj1cIiFmb3JtRmllbGQuaGlkZGVuXCJcbj5cbiAgPGxhYmVsICpuZ0lmPVwiZm9ybUZpZWxkLmxhYmVsXCI+e3sgZm9ybUZpZWxkLmxhYmVsIH19PC9sYWJlbD5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUZpZWxkLmljb25DbGFzczsgZWxzZSBub0ljb25cIj5cbiAgICA8cC1pY29uRmllbGQgW2ljb25Qb3NpdGlvbl09XCJmb3JtRmllbGQuaWNvblBvc2l0aW9uIHx8ICdsZWZ0J1wiPlxuICAgICAgPHAtaW5wdXRJY29uXG4gICAgICAgICpuZ0lmPVwiZm9ybUZpZWxkLmljb25DbGFzc1wiXG4gICAgICAgIFtzdHlsZUNsYXNzXT1cImZvcm1GaWVsZC5pY29uQ2xhc3NcIlxuICAgICAgPjwvcC1pbnB1dEljb24+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW3R5cGVdPVwiZ2V0SW5wdXRUeXBlKClcIlxuICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZm9ybUZpZWxkLm5hbWVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZm9ybUZpZWxkLnBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgW2F0dHIubWlubGVuZ3RoXT1cImZvcm1GaWVsZC5taW5MZW5ndGhcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwiZm9ybUZpZWxkLm1heExlbmd0aFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICB3aWR0aDogZm9ybUZpZWxkLndpZHRoIHx8ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6IGZvcm1GaWVsZC5oZWlnaHQgfHwgJ2F1dG8nXG4gICAgICAgIH1cIlxuICAgICAgLz5cbiAgICA8L3AtaWNvbkZpZWxkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI25vSWNvbj5cbiAgICA8aW5wdXRcbiAgICAgIFt0eXBlXT1cImdldElucHV0VHlwZSgpXCJcbiAgICAgIHBJbnB1dFRleHRcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZm9ybUZpZWxkLm5hbWVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImZvcm1GaWVsZC5wbGFjZWhvbGRlciA/PyAnJ1wiXG4gICAgICBbYXR0ci5taW5sZW5ndGhdPVwiZm9ybUZpZWxkLm1pbkxlbmd0aFwiXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwiZm9ybUZpZWxkLm1heExlbmd0aFwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIHdpZHRoOiBmb3JtRmllbGQud2lkdGggfHwgJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6IGZvcm1GaWVsZC5oZWlnaHQgfHwgJ2F1dG8nXG4gICAgICB9XCJcbiAgICAvPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWluZm8tcm93XCI+XG4gICAgPHNtYWxsXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBmb3JtR3JvdXAuZ2V0KGZvcm1GaWVsZC5uYW1lKT8uaW52YWxpZCAmJlxuICAgICAgICBmb3JtR3JvdXAuZ2V0KGZvcm1GaWVsZC5uYW1lKT8udG91Y2hlZFxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwicC1lcnJvclwiXG4gICAgPlxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cbiAgICA8L3NtYWxsPlxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiFmb3JtRmllbGQuZGlzYWJsZWQgJiYgZm9ybUZpZWxkLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkXCJcbiAgICAgIGNsYXNzPVwiY2hhcmFjdGVyLWNvdW50ZXJcIlxuICAgID5cbiAgICAgIHt7IGNoYXJhY3RlckNvdW50IH19L3t7IGZvcm1GaWVsZC5tYXhMZW5ndGggfX0gY2hhcmFjdGVyc1xuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19