@colijnit/product 258.1.4 → 258.1.6

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.
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RootStorageObject {
4
+ }
5
+ export class LocalStorageService {
6
+ constructor() {
7
+ this.storage = localStorage;
8
+ this._appRoot = "web-order";
9
+ this._storageObj = new RootStorageObject();
10
+ this._initLocalStorageObj();
11
+ }
12
+ save() {
13
+ this.storage.setItem(this._appRoot, JSON.stringify(this._storageObj));
14
+ }
15
+ clear() {
16
+ this.storage.clear();
17
+ }
18
+ set id(id) {
19
+ this._storageObj.id = id;
20
+ this.save();
21
+ }
22
+ get id() {
23
+ return this._storageObj ? this._storageObj.id : "";
24
+ }
25
+ _initLocalStorageObj() {
26
+ this._storageObj = JSON.parse(this.storage.getItem(this._appRoot)) || this._storageObj;
27
+ this.save();
28
+ }
29
+ }
30
+ LocalStorageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalStorageService_Factory() { return new LocalStorageService(); }, token: LocalStorageService, providedIn: "root" });
31
+ LocalStorageService.decorators = [
32
+ { type: Injectable, args: [{
33
+ providedIn: 'root'
34
+ },] }
35
+ ];
36
+ LocalStorageService.ctorParameters = () => [];
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9idW5kbGUvc2VydmljZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekMsTUFBTSxPQUFPLGlCQUFpQjtDQUU3QjtBQUtELE1BQU0sT0FBTyxtQkFBbUI7SUFPNUI7UUFOZ0IsWUFBTyxHQUFZLFlBQVksQ0FBQztRQUV0QyxhQUFRLEdBQVcsV0FBVyxDQUFDO1FBRS9CLGdCQUFXLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUcvRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsRUFBRSxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBVyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFUyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7Ozs7WUFsQ0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSb290U3RvcmFnZU9iamVjdCB7XHJcbiAgICBwdWJsaWMgaWQ6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlID0gbG9jYWxTdG9yYWdlO1xyXG5cclxuICAgIHByb3RlY3RlZCBfYXBwUm9vdDogc3RyaW5nID0gXCJ3ZWItb3JkZXJcIjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX3N0b3JhZ2VPYmo6IFJvb3RTdG9yYWdlT2JqZWN0ID0gbmV3IFJvb3RTdG9yYWdlT2JqZWN0KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5faW5pdExvY2FsU3RvcmFnZU9iaigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuX2FwcFJvb3QsIEpTT04uc3RyaW5naWZ5KHRoaXMuX3N0b3JhZ2VPYmopKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBpZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc3RvcmFnZU9iai5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RvcmFnZU9iaiA/IHRoaXMuX3N0b3JhZ2VPYmouaWQgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfaW5pdExvY2FsU3RvcmFnZU9iaigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zdG9yYWdlT2JqID0gSlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9hcHBSb290KSkgfHwgdGhpcy5fc3RvcmFnZU9iajtcclxuICAgICAgICB0aGlzLnNhdmUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,3 @@
1
- import { __awaiter } from "tslib";
2
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, ViewChild } from '@angular/core';
3
2
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
4
3
  import { ProductConnectorService } from '../../service/product-connector.service';
@@ -12,6 +11,7 @@ export class ImageCarouselComponent {
12
11
  this._appEventService = _appEventService;
13
12
  this._changeDetector = _changeDetector;
14
13
  this._domSanitizer = _domSanitizer;
14
+ this.isPopupOpen = false;
15
15
  this.showRefresh = false;
16
16
  this.resizing = false;
17
17
  this.imageViewModels = [];
@@ -41,6 +41,12 @@ export class ImageCarouselComponent {
41
41
  this._changeDetector.detectChanges();
42
42
  }));
43
43
  }
44
+ // Close on ESC
45
+ onEsc() {
46
+ if (this.isPopupOpen) {
47
+ this.closePopup();
48
+ }
49
+ }
44
50
  set images(value) {
45
51
  if (value && value.length > 0) {
46
52
  this._images = this._filterValidImages(value);
@@ -87,15 +93,16 @@ export class ImageCarouselComponent {
87
93
  }
88
94
  handleShowImage(imageViewModel) {
89
95
  if (imageViewModel && imageViewModel.originalSource) {
90
- let popupWindow = window.open('', 'Image zoom', 'width=600,height=400');
91
- // Set the content of the popup window
92
- popupWindow.document.write('<html><head><title>Image zoom</title></head><body>');
93
- popupWindow.document.write(`<img src=${imageViewModel.originalSource} alt="Image" style="width:100%; height:auto;">`);
94
- popupWindow.document.write('</body></html>');
95
- // Close the document to render the popup window
96
- popupWindow.document.close();
96
+ this.selectedImage = imageViewModel;
97
+ this.isPopupOpen = true;
98
+ this._changeDetector.markForCheck();
97
99
  }
98
100
  }
101
+ closePopup() {
102
+ this.isPopupOpen = false;
103
+ this.selectedImage = undefined;
104
+ this._changeDetector.markForCheck();
105
+ }
99
106
  _filterValidImages(value) {
100
107
  if (!value) {
101
108
  return [];
@@ -138,38 +145,54 @@ export class ImageCarouselComponent {
138
145
  }
139
146
  _resizeAndSanitizeSource(source, imageViewModel) {
140
147
  const resizeCanvas = document.createElement('canvas');
141
- const resizeCanvasContext = resizeCanvas.getContext('2d');
142
- const resizeImage = document.createElement('img');
143
- resizeImage.crossOrigin = 'anonymous';
144
- resizeImage.onload = () => __awaiter(this, void 0, void 0, function* () {
145
- resizeCanvasContext.imageSmoothingEnabled = true;
146
- resizeCanvasContext.imageSmoothingQuality = 'high';
147
- // Get the original image dimensions
148
- const originalWidth = resizeImage.width;
149
- const originalHeight = resizeImage.height;
150
- // Calculate the aspect ratio
151
- const aspectRatio = originalWidth / originalHeight;
152
- // Calculate the new width and height while maintaining the aspect ratio
153
- let newWidth = this._resizeCanvasHeight;
154
- let newHeight = this._resizeCanvasHeight;
155
- if (originalWidth > originalHeight) {
156
- newHeight = this._resizeCanvasHeight / aspectRatio;
148
+ const ctx = resizeCanvas.getContext('2d');
149
+ const img = document.createElement('img');
150
+ img.crossOrigin = 'anonymous';
151
+ img.onload = () => {
152
+ ctx.imageSmoothingEnabled = true;
153
+ ctx.imageSmoothingQuality = 'high';
154
+ const ow = img.width;
155
+ const oh = img.height;
156
+ const aspect = ow / oh;
157
+ let newW = this._resizeCanvasHeight;
158
+ let newH = this._resizeCanvasHeight;
159
+ if (ow > oh) {
160
+ newH = this._resizeCanvasHeight / aspect;
157
161
  }
158
162
  else {
159
- newWidth = this._resizeCanvasHeight * aspectRatio;
163
+ newW = this._resizeCanvasHeight * aspect;
160
164
  }
161
- // Set the canvas size to the new width and height
162
- resizeCanvas.width = newWidth;
163
- resizeCanvas.height = newHeight;
164
- const imageWidth = this._resizeCanvasHeight * (resizeImage.height / resizeImage.width);
165
- resizeCanvasContext.drawImage(resizeImage, 0, 0, newWidth, newHeight);
166
- const resizedSource = resizeCanvas.toDataURL('image/jpeg');
165
+ resizeCanvas.width = Math.round(newW);
166
+ resizeCanvas.height = Math.round(newH);
167
+ // Ensure transparent background before drawing
168
+ ctx.clearRect(0, 0, resizeCanvas.width, resizeCanvas.height);
169
+ ctx.drawImage(img, 0, 0, resizeCanvas.width, resizeCanvas.height);
170
+ const mime = this._detectPreferredMime(source);
171
+ const resizedSource = mime === 'image/jpeg'
172
+ ? resizeCanvas.toDataURL('image/jpeg', 0.92) // only if original was JPEG
173
+ : resizeCanvas.toDataURL(mime); // PNG/WebP keep alpha
167
174
  imageViewModel.source = this._domSanitizer.bypassSecurityTrustUrl(resizedSource);
168
175
  imageViewModel.originalSource = source;
169
176
  this._changeDetector.detectChanges();
170
- });
171
- // @ts-ignore
172
- resizeImage.src = source;
177
+ };
178
+ img.src = source;
179
+ }
180
+ _detectPreferredMime(source) {
181
+ // Data URI check
182
+ const m = source.match(/^data:(image\/[a-zA-Z+.-]+);base64,/);
183
+ if (m) {
184
+ const t = m[1].toLowerCase();
185
+ if (t === 'image/png' || t === 'image/webp' || t === 'image/jpeg')
186
+ return t;
187
+ }
188
+ const lower = source.toLowerCase();
189
+ if (lower.endsWith('.png'))
190
+ return 'image/png';
191
+ if (lower.endsWith('.webp'))
192
+ return 'image/webp';
193
+ if (lower.endsWith('.jpg') || lower.endsWith('.jpeg'))
194
+ return 'image/jpeg';
195
+ return 'image/png';
173
196
  }
174
197
  _scrollCarouselToIndex() {
175
198
  if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
@@ -219,9 +242,31 @@ ImageCarouselComponent.decorators = [
219
242
  </co-scroll-container>
220
243
  </div>
221
244
  </div>
245
+ <!-- Modal (real popup) -->
246
+ <div
247
+ class="image-modal"
248
+ *ngIf="isPopupOpen"
249
+ (click)="closePopup()"
250
+ role="dialog"
251
+ aria-modal="true"
252
+ aria-label="Image preview"
253
+ >
254
+ <div class="image-modal__content" (click)="$event.stopPropagation()">
255
+ <button
256
+ class="image-modal__close"
257
+ type="button"
258
+ aria-label="Close"
259
+ (click)="closePopup()"
260
+ >
261
+ ×
262
+ </button>
263
+
264
+ <img [src]="selectedImage?.originalSource" alt="Image preview" />
265
+ </div>
266
+ </div>
222
267
  `,
223
268
  changeDetection: ChangeDetectionStrategy.OnPush,
224
- styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
269
+ styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}.image-modal{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;z-index:1000}.image-modal__content{position:relative;max-width:90vw;max-height:90vh}.image-modal__content img{max-width:90vw;max-height:90vh;-o-object-fit:contain;object-fit:contain;display:block}.image-modal__close{position:fixed;top:15px;right:30px;background:transparent;border:none;color:#fff;font-size:60px;line-height:1;cursor:pointer}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
225
270
  },] }
226
271
  ];
227
272
  ImageCarouselComponent.ctorParameters = () => [
@@ -232,6 +277,7 @@ ImageCarouselComponent.ctorParameters = () => [
232
277
  ];
233
278
  ImageCarouselComponent.propDecorators = {
234
279
  carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
280
+ onEsc: [{ type: HostListener, args: ['document:keydown.escape',] }],
235
281
  showRefresh: [{ type: Input }],
236
282
  images: [{ type: Input }],
237
283
  handleWindowResize: [{ type: HostListener, args: ['window:resize',] }],
@@ -239,4 +285,4 @@ ImageCarouselComponent.propDecorators = {
239
285
  gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
240
286
  resizing: [{ type: HostBinding, args: ['class.resizing',] }]
241
287
  };
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ltYWdlLWNhcm91c2VsL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUdoRSxNQUFNLE9BQU8sY0FBYztDQUkxQjtBQXdDRCxNQUFNLE9BQU8sc0JBQXNCO0lBa0VqQyxZQUNVLEtBQThCLEVBQzlCLGdCQUFxQyxFQUNyQyxlQUFrQyxFQUNsQyxhQUEyQjtRQUgzQixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQWpFOUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFpRDdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHM0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0Isd0JBQW1CLEdBQVcs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUVoRDs7O1lBbERPLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFYekIsaUJBQWlCO1lBY1gsWUFBWTs7O3VCQWdEakIsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7MEJBR3hDLEtBQUs7cUJBR0wsS0FBSztpQ0FhTCxZQUFZLFNBQUMsZUFBZTs0QkFVNUIsWUFBWSxTQUFDLFdBQVc7NEJBS3hCLFlBQVksU0FBQyxZQUFZO3VCQWtCekIsV0FBVyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcbmltcG9ydCB7UHJvZHVjdENvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQge1Byb2R1Y3RFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7SWNvbkVudW19IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7RG9jdW1lbnRDb250ZW50fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9kb2N1bWVudC1jb250ZW50JztcblxuZXhwb3J0IGNsYXNzIEltYWdlVmlld01vZGVsIHtcbiAgcHVibGljIGltYWdlOiBDb0RvY3VtZW50IHwgc3RyaW5nO1xuICBwdWJsaWMgc291cmNlOiBTYWZlVXJsO1xuICBwdWJsaWMgb3JpZ2luYWxTb3VyY2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWltYWdlLWNhcm91c2VsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgaWQ9XCJwcm9kdWN0X3BhZ2VfY2Fyb3VzZWxcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwicHJvZHVjdF9wYWdlX2Nhcm91c2VsX2l0ZW1zXCI+XG4gICAgICAgICAgICAgIDxjby1sb2FkZXIgW2lzU2hvd25dPVwidHJ1ZVwiICpuZ0lmPVwic2hvd0xvYWRlclwiPjwvY28tbG9hZGVyPlxuICAgICAgICAgICAgICA8ZGl2ICNjYXJvdXNlbCBjbGFzcz1cImlubmVyLWNhcm91c2VsXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaGFzIGJlZW4gdGFrZW4gb3V0IG9mIHRoZSBmb3IgbG9vcCB0byBwcmV2ZW50IGZsYXNoaW5nIGltYWdlcyB3aGVuIHVwZGF0aW5nLiAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZVZpZXdNb2RlbHNbMF1cIiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbaWRdPVwiJ3NsaWRlLTAnXCIgW2NsYXNzLmFjdGl2ZV09XCJpc0N1cnJlbnRJbmRleCgwKVwiIChjbGljayk9XCJoYW5kbGVTaG93SW1hZ2UoaW1hZ2VWaWV3TW9kZWxzWzBdKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVZpZXdNb2RlbHNbMF0uc291cmNlXCI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltYWdlVmlld01vZGVsIG9mIGltYWdlVmlld01vZGVscy5zbGljZSgxKTsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3NsaWRlLScgKyAoaW5kZXggKyAxKVwiIFtjbGFzcy5hY3RpdmVdPVwiaXNDdXJyZW50SW5kZXgoKGluZGV4ICsgMSkpXCIgKGNsaWNrKT1cImhhbmRsZVNob3dJbWFnZShpbWFnZVZpZXdNb2RlbClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VWaWV3TW9kZWwuc291cmNlXCI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1zY3JvbGxlci1sYXllclwiICpuZ0lmPVwiaW1hZ2VWaWV3TW9kZWxzICYmIGltYWdlVmlld01vZGVscy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0tc2Nyb2xsZXIgcHJldlwiIChjbGljayk9XCJnb3RvUHJldlNsaWRlKClcIiAqbmdJZj1cImN1cnJlbnRJbmRleCA+IDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbS1zY3JvbGxlciBuZXh0XCIgKGNsaWNrKT1cImdvdG9OZXh0U2xpZGUoKVwiICpuZ0lmPVwiY3VycmVudEluZGV4IDwgaW1hZ2VzLmxlbmd0aCAtIDFcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwic2VsZWN0b3ItdHlwZS1pY29uIHJlZnJlc2gtYnV0dG9uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZS5nZXRJY29uKGljb25zLlJlZnJlc2gpXCIgKGNsaWNrKT1cIm9uRm9yY2VSZW5kZXJJbWFnZSgpXCIgW2NsYXNzLmxvYWRpbmddPVwic2hvd0xvYWRlclwiICpuZ0lmPVwic2hvd1JlZnJlc2hcIj48L2NvLWljb24+XG4gICAgICAgICAgICAgIC0tPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbF90aHVtYnNcIj5cbiAgICAgICAgICAgICAgPGNvLXNjcm9sbC1jb250YWluZXIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgKm5nSWY9XCJpbWFnZVZpZXdNb2RlbHMgJiYgaW1hZ2VWaWV3TW9kZWxzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGltYWdlVmlld01vZGVsIG9mIGltYWdlVmlld01vZGVsczsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImNhcm91c2VsLXRodW1iXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpbmRleCA9PT0gY3VycmVudEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlVmlld01vZGVsLnNvdXJjZVwiIChjbGljayk9XCJoYW5kbGVUaHVtYkNsaWNrKGluZGV4KVwiLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2NvLXNjcm9sbC1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2Nhcm91c2VsJywge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICBwdWJsaWMgY2Fyb3VzZWw6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dSZWZyZXNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbWFnZXModmFsdWU6IChDb0RvY3VtZW50IHwgc3RyaW5nKVtdKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2ltYWdlcyA9IHRoaXMuX2ZpbHRlclZhbGlkSW1hZ2VzKHZhbHVlKTtcbiAgICAgIHRoaXMuX2xvYWRBbmRSZXNjYWxlSW1hZ2VzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbWFnZXMoKTogKENvRG9jdW1lbnQgfCBzdHJpbmcpW10ge1xuICAgIHJldHVybiB0aGlzLl9pbWFnZXM7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zY3JvbGxDYXJvdXNlbFRvSW5kZXgoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVzaXplVGltZXIpO1xuICAgIHRoaXMuX3Jlc2l6ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3N3aXBlbGVmdCcpXG4gIHB1YmxpYyBnb3RvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEluZGV4Kys7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzd2lwZXJpZ2h0JylcbiAgcHVibGljIGdvdG9QcmV2U2xpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50SW5kZXgtLTtcbiAgfVxuXG4gIHB1YmxpYyBpc0N1cnJlbnRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4ID09PSBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jdXJyZW50SW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLl9zY3JvbGxDYXJvdXNlbFRvSW5kZXgoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVzaXppbmcnKVxuICBwdWJsaWMgcmVzaXppbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgaW1hZ2VWaWV3TW9kZWxzOiBJbWFnZVZpZXdNb2RlbFtdID0gW107XG4gIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcmVzaXplVGltZXI6IGFueTtcbiAgcHJpdmF0ZSBfY3VycmVudEluZGV4ID0gMDtcbiAgcHJpdmF0ZSBfaW1hZ2VzOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSA9IFtdO1xuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgX3Jlc2l6ZUNhbnZhc0hlaWdodDogbnVtYmVyID0gNTAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2lvbmU6IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uUmVuZGVyU3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMTAwMDApO1xuICAgICAgfSksXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25EcmFmdFJlbmRlckltYWdlUmVjZWl2ZWQuc3Vic2NyaWJlKChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRldGFpbCkge1xuICAgICAgICAgIGlmICh0aGlzLl9pbWFnZXNbMF0gaW5zdGFuY2VvZiBDb0RvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9pbWFnZXMudW5zaGlmdChldmVudC5kZXRhaWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbWFnZXNbMF0gPSBldmVudC5kZXRhaWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2xvYWRBbmRSZXNjYWxlSW1hZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2Fyb3VzZWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVUaHVtYkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICB9XG5cbiAgcHVibGljIG9uRm9yY2VSZW5kZXJJbWFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25Gb3JjZVJlbmRlckltYWdlLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTaG93SW1hZ2UoaW1hZ2VWaWV3TW9kZWw6IEltYWdlVmlld01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGltYWdlVmlld01vZGVsICYmIGltYWdlVmlld01vZGVsLm9yaWdpbmFsU291cmNlKSB7XG4gICAgICBsZXQgcG9wdXBXaW5kb3c6IFdpbmRvdyA9IHdpbmRvdy5vcGVuKCcnLCAnSW1hZ2Ugem9vbScsICd3aWR0aD02MDAsaGVpZ2h0PTQwMCcpO1xuICAgICAgLy8gU2V0IHRoZSBjb250ZW50IG9mIHRoZSBwb3B1cCB3aW5kb3dcbiAgICAgIHBvcHVwV2luZG93LmRvY3VtZW50LndyaXRlKCc8aHRtbD48aGVhZD48dGl0bGU+SW1hZ2Ugem9vbTwvdGl0bGU+PC9oZWFkPjxib2R5PicpO1xuICAgICAgcG9wdXBXaW5kb3cuZG9jdW1lbnQud3JpdGUoYDxpbWcgc3JjPSR7aW1hZ2VWaWV3TW9kZWwub3JpZ2luYWxTb3VyY2V9IGFsdD1cIkltYWdlXCIgc3R5bGU9XCJ3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bztcIj5gKTtcbiAgICAgIHBvcHVwV2luZG93LmRvY3VtZW50LndyaXRlKCc8L2JvZHk+PC9odG1sPicpO1xuICAgICAgLy8gQ2xvc2UgdGhlIGRvY3VtZW50IHRvIHJlbmRlciB0aGUgcG9wdXAgd2luZG93XG4gICAgICBwb3B1cFdpbmRvdy5kb2N1bWVudC5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlclZhbGlkSW1hZ2VzKHZhbHVlOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSk6IChDb0RvY3VtZW50IHwgc3RyaW5nKVtdIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoKGRvYzogQ29Eb2N1bWVudCB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGF0dGVybiA9IC9cXC4oanBnfGpwZWd8cG5nfGdpZnxibXB8dGlmZnx3ZWJwKSQvaTtcbiAgICAgIHJldHVybiB0eXBlb2YgZG9jID09PSAnc3RyaW5nJyB8fCAocGF0dGVybi50ZXN0KGRvYy5maWxlTmFtZSkgfHwgISFkb2MuZmlsZVBhdGgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZEFuZFJlc2NhbGVJbWFnZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZVZpZXdNb2RlbHMubGVuZ3RoID0gMDtcbiAgICBpZiAodGhpcy5faW1hZ2VzKSB7XG4gICAgICB0aGlzLl9pbWFnZXMuZm9yRWFjaCgoaTogQ29Eb2N1bWVudCB8IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgaW1hZ2VWaWV3TW9kZWwgPSBuZXcgSW1hZ2VWaWV3TW9kZWwoKTtcbiAgICAgICAgaW1hZ2VWaWV3TW9kZWwuaW1hZ2UgPSBpO1xuICAgICAgICBpZiAodHlwZW9mIGkgPT09ICdzdHJpbmcnKSB7IC8vIGlzIGEgcmVuZGVyZWQgaW1hZ2UgY29taW5nIGZyb20gY29uZmlndXJhdG9yXG4gICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaSwgaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpLmZpbGVQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShpLmZpbGVQYXRoLCBpbWFnZVZpZXdNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpLmRvY3VtZW50Qm9keSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaS5kb2N1bWVudEJvZHlBc0RhdGFVcmksIGltYWdlVmlld01vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW9uZS5nZXREb2N1bWVudENvbnRlbnQoaS5kb2N1bWVudElkLCBmYWxzZSkudGhlbigoY29udGVudDogRG9jdW1lbnRDb250ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgaS5kb2N1bWVudEJvZHkgPSBjb250ZW50LmRvY3VtZW50Q29udGVudDtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShpLmRvY3VtZW50Qm9keUFzRGF0YVVyaSwgaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW1hZ2VWaWV3TW9kZWxzLnB1c2goaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShzb3VyY2U6IHN0cmluZywgaW1hZ2VWaWV3TW9kZWw6IEltYWdlVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgcmVzaXplQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IHJlc2l6ZUNhbnZhc0NvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IHJlc2l6ZUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHJlc2l6ZUltYWdlOiBIVE1MSW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgcmVzaXplSW1hZ2UuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICByZXNpemVJbWFnZS5vbmxvYWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICByZXNpemVDYW52YXNDb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IHRydWU7XG4gICAgICByZXNpemVDYW52YXNDb250ZXh0LmltYWdlU21vb3RoaW5nUXVhbGl0eSA9ICdoaWdoJztcbiAgICAgIC8vIEdldCB0aGUgb3JpZ2luYWwgaW1hZ2UgZGltZW5zaW9uc1xuICAgICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IHJlc2l6ZUltYWdlLndpZHRoO1xuICAgICAgY29uc3Qgb3JpZ2luYWxIZWlnaHQgPSByZXNpemVJbWFnZS5oZWlnaHQ7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYXNwZWN0IHJhdGlvXG4gICAgICBjb25zdCBhc3BlY3RSYXRpbyA9IG9yaWdpbmFsV2lkdGggLyBvcmlnaW5hbEhlaWdodDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXcgd2lkdGggYW5kIGhlaWdodCB3aGlsZSBtYWludGFpbmluZyB0aGUgYXNwZWN0IHJhdGlvXG4gICAgICBsZXQgbmV3V2lkdGg6IG51bWJlciA9IHRoaXMuX3Jlc2l6ZUNhbnZhc0hlaWdodDtcbiAgICAgIGxldCBuZXdIZWlnaHQ6IG51bWJlciA9IHRoaXMuX3Jlc2l6ZUNhbnZhc0hlaWdodDtcblxuICAgICAgaWYgKG9yaWdpbmFsV2lkdGggPiBvcmlnaW5hbEhlaWdodCkge1xuICAgICAgICBuZXdIZWlnaHQgPSB0aGlzLl9yZXNpemVDYW52YXNIZWlnaHQgLyBhc3BlY3RSYXRpbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1dpZHRoID0gdGhpcy5fcmVzaXplQ2FudmFzSGVpZ2h0ICogYXNwZWN0UmF0aW87XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCB0aGUgY2FudmFzIHNpemUgdG8gdGhlIG5ldyB3aWR0aCBhbmQgaGVpZ2h0XG4gICAgICByZXNpemVDYW52YXMud2lkdGggPSBuZXdXaWR0aDtcbiAgICAgIHJlc2l6ZUNhbnZhcy5oZWlnaHQgPSBuZXdIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGltYWdlV2lkdGg6IG51bWJlciA9IHRoaXMuX3Jlc2l6ZUNhbnZhc0hlaWdodCAqIChyZXNpemVJbWFnZS5oZWlnaHQgLyByZXNpemVJbWFnZS53aWR0aCk7XG4gICAgICByZXNpemVDYW52YXNDb250ZXh0LmRyYXdJbWFnZShyZXNpemVJbWFnZSwgMCwgMCwgbmV3V2lkdGgsIG5ld0hlaWdodCk7XG4gICAgICBjb25zdCByZXNpemVkU291cmNlID0gcmVzaXplQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuXG4gICAgICBpbWFnZVZpZXdNb2RlbC5zb3VyY2UgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChyZXNpemVkU291cmNlKTtcbiAgICAgIGltYWdlVmlld01vZGVsLm9yaWdpbmFsU291cmNlID0gc291cmNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlc2l6ZUltYWdlLnNyYyA9IHNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Njcm9sbENhcm91c2VsVG9JbmRleCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPiAtMSAmJiB0aGlzLmN1cnJlbnRJbmRleCA8PSB0aGlzLmltYWdlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1vdmVQeDogbnVtYmVyID0gdGhpcy5jdXJyZW50SW5kZXggKiB0aGlzLmNhcm91c2VsLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICBpZiAodGhpcy5jYXJvdXNlbCAmJiB0aGlzLmNhcm91c2VsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jYXJvdXNlbC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBtb3ZlUHg7XG4gICAgICAgIC8vIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgIC8vICAgbGVmdDogbW92ZVB4LFxuICAgICAgICAvLyAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICAvLyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ltYWdlLWNhcm91c2VsL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFHeEUsT0FBTyxFQUFDLFlBQVksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBR2hFLE1BQU0sT0FBTyxjQUFjO0NBSTFCO0FBOERELE1BQU0sT0FBTyxzQkFBc0I7SUE2RWpDLFlBQ1UsS0FBOEIsRUFDOUIsZ0JBQXFDLEVBQ3JDLGVBQWtDLEVBQ2xDLGFBQTJCO1FBSDNCLFVBQUssR0FBTCxLQUFLLENBQXlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBN0U5QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVlwQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQWlEN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixvQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDdkMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUczQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN0QyxVQUFLLEdBQW1CLEVB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QW1CO1lBWHpCLGlCQUFpQjtZQWNYLFlBQVk7Ozt1QkFzRWpCLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO29CQU94QyxZQUFZLFNBQUMseUJBQXlCOzBCQU90QyxLQUFLO3FCQUdMLEtBQUs7aUNBYUwsWUFBWSxTQUFDLGVBQWU7NEJBVTVCLFlBQVksU0FBQyxXQUFXOzRCQUt4QixZQUFZLFNBQUMsWUFBWTt1QkFrQnpCLFdBQVcsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9kdWN0RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ljb25FbnVtfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0RvY3VtZW50Q29udGVudH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZG9jdW1lbnQtY29udGVudCc7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZVZpZXdNb2RlbCB7XG4gIHB1YmxpYyBpbWFnZTogQ29Eb2N1bWVudCB8IHN0cmluZztcbiAgcHVibGljIHNvdXJjZTogU2FmZVVybDtcbiAgcHVibGljIG9yaWdpbmFsU291cmNlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbWFnZS1jYXJvdXNlbCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IGlkPVwicHJvZHVjdF9wYWdlX2Nhcm91c2VsXCI+XG4gICAgICAgICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbF9pdGVtc1wiPlxuICAgICAgICAgICAgICA8Y28tbG9hZGVyIFtpc1Nob3duXT1cInRydWVcIiAqbmdJZj1cInNob3dMb2FkZXJcIj48L2NvLWxvYWRlcj5cbiAgICAgICAgICAgICAgPGRpdiAjY2Fyb3VzZWwgY2xhc3M9XCJpbm5lci1jYXJvdXNlbFwiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGhhcyBiZWVuIHRha2VuIG91dCBvZiB0aGUgZm9yIGxvb3AgdG8gcHJldmVudCBmbGFzaGluZyBpbWFnZXMgd2hlbiB1cGRhdGluZy4gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW1hZ2VWaWV3TW9kZWxzWzBdXCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2lkXT1cIidzbGlkZS0wJ1wiIFtjbGFzcy5hY3RpdmVdPVwiaXNDdXJyZW50SW5kZXgoMClcIiAoY2xpY2spPVwiaGFuZGxlU2hvd0ltYWdlKGltYWdlVmlld01vZGVsc1swXSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VWaWV3TW9kZWxzWzBdLnNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZVZpZXdNb2RlbCBvZiBpbWFnZVZpZXdNb2RlbHMuc2xpY2UoMSk7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidzbGlkZS0nICsgKGluZGV4ICsgMSlcIiBbY2xhc3MuYWN0aXZlXT1cImlzQ3VycmVudEluZGV4KChpbmRleCArIDEpKVwiIChjbGljayk9XCJoYW5kbGVTaG93SW1hZ2UoaW1hZ2VWaWV3TW9kZWwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlVmlld01vZGVsLnNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtc2Nyb2xsZXItbGF5ZXJcIiAqbmdJZj1cImltYWdlVmlld01vZGVscyAmJiBpbWFnZVZpZXdNb2RlbHMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtLXNjcm9sbGVyIHByZXZcIiAoY2xpY2spPVwiZ290b1ByZXZTbGlkZSgpXCIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0tc2Nyb2xsZXIgbmV4dFwiIChjbGljayk9XCJnb3RvTmV4dFNsaWRlKClcIiAqbmdJZj1cImN1cnJlbnRJbmRleCA8IGltYWdlcy5sZW5ndGggLSAxXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNlbGVjdG9yLXR5cGUtaWNvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29ucy5SZWZyZXNoKVwiIChjbGljayk9XCJvbkZvcmNlUmVuZGVySW1hZ2UoKVwiIFtjbGFzcy5sb2FkaW5nXT1cInNob3dMb2FkZXJcIiAqbmdJZj1cInNob3dSZWZyZXNoXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgICAtLT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgaWQ9XCJwcm9kdWN0X3BhZ2VfY2Fyb3VzZWxfdGh1bWJzXCI+XG4gICAgICAgICAgICAgIDxjby1zY3JvbGwtY29udGFpbmVyIGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiICpuZ0lmPVwiaW1hZ2VWaWV3TW9kZWxzICYmIGltYWdlVmlld01vZGVscy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZVZpZXdNb2RlbCBvZiBpbWFnZVZpZXdNb2RlbHM7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC10aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVZpZXdNb2RlbC5zb3VyY2VcIiAoY2xpY2spPVwiaGFuZGxlVGh1bWJDbGljayhpbmRleClcIi8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jby1zY3JvbGwtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIE1vZGFsIChyZWFsIHBvcHVwKSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJpbWFnZS1tb2RhbFwiXG4gICAgICAgICpuZ0lmPVwiaXNQb3B1cE9wZW5cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VQb3B1cCgpXCJcbiAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkltYWdlIHByZXZpZXdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtbW9kYWxfX2NvbnRlbnRcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1tb2RhbF9fY2xvc2VcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgw5dcbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZEltYWdlPy5vcmlnaW5hbFNvdXJjZVwiIGFsdD1cIkltYWdlIHByZXZpZXdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY2Fyb3VzZWwnLCB7cmVhZDogRWxlbWVudFJlZn0pXG4gIHB1YmxpYyBjYXJvdXNlbDogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgaXNQb3B1cE9wZW4gPSBmYWxzZTtcbiAgcHVibGljIHNlbGVjdGVkSW1hZ2U/OiBJbWFnZVZpZXdNb2RlbDtcblxuICAvLyBDbG9zZSBvbiBFU0NcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzYygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1BvcHVwT3Blbikge1xuICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dSZWZyZXNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbWFnZXModmFsdWU6IChDb0RvY3VtZW50IHwgc3RyaW5nKVtdKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2ltYWdlcyA9IHRoaXMuX2ZpbHRlclZhbGlkSW1hZ2VzKHZhbHVlKTtcbiAgICAgIHRoaXMuX2xvYWRBbmRSZXNjYWxlSW1hZ2VzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbWFnZXMoKTogKENvRG9jdW1lbnQgfCBzdHJpbmcpW10ge1xuICAgIHJldHVybiB0aGlzLl9pbWFnZXM7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zY3JvbGxDYXJvdXNlbFRvSW5kZXgoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVzaXplVGltZXIpO1xuICAgIHRoaXMuX3Jlc2l6ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3N3aXBlbGVmdCcpXG4gIHB1YmxpYyBnb3RvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEluZGV4Kys7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzd2lwZXJpZ2h0JylcbiAgcHVibGljIGdvdG9QcmV2U2xpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50SW5kZXgtLTtcbiAgfVxuXG4gIHB1YmxpYyBpc0N1cnJlbnRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4ID09PSBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRJbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jdXJyZW50SW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLl9zY3JvbGxDYXJvdXNlbFRvSW5kZXgoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVzaXppbmcnKVxuICBwdWJsaWMgcmVzaXppbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgaW1hZ2VWaWV3TW9kZWxzOiBJbWFnZVZpZXdNb2RlbFtdID0gW107XG4gIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcmVzaXplVGltZXI6IGFueTtcbiAgcHJpdmF0ZSBfY3VycmVudEluZGV4ID0gMDtcbiAgcHJpdmF0ZSBfaW1hZ2VzOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSA9IFtdO1xuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHByaXZhdGUgX3Jlc2l6ZUNhbnZhc0hlaWdodDogbnVtYmVyID0gNTAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2lvbmU6IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uUmVuZGVyU3RhcnRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMTAwMDApO1xuICAgICAgfSksXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25EcmFmdFJlbmRlckltYWdlUmVjZWl2ZWQuc3Vic2NyaWJlKChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRldGFpbCkge1xuICAgICAgICAgIGlmICh0aGlzLl9pbWFnZXNbMF0gaW5zdGFuY2VvZiBDb0RvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9pbWFnZXMudW5zaGlmdChldmVudC5kZXRhaWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbWFnZXNbMF0gPSBldmVudC5kZXRhaWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2xvYWRBbmRSZXNjYWxlSW1hZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2Fyb3VzZWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVUaHVtYkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICB9XG5cbiAgcHVibGljIG9uRm9yY2VSZW5kZXJJbWFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25Gb3JjZVJlbmRlckltYWdlLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTaG93SW1hZ2UoaW1hZ2VWaWV3TW9kZWw6IEltYWdlVmlld01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGltYWdlVmlld01vZGVsICYmIGltYWdlVmlld01vZGVsLm9yaWdpbmFsU291cmNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBpbWFnZVZpZXdNb2RlbDtcbiAgICAgIHRoaXMuaXNQb3B1cE9wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BvcHVwT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlclZhbGlkSW1hZ2VzKHZhbHVlOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSk6IChDb0RvY3VtZW50IHwgc3RyaW5nKVtdIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoKGRvYzogQ29Eb2N1bWVudCB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGF0dGVybiA9IC9cXC4oanBnfGpwZWd8cG5nfGdpZnxibXB8dGlmZnx3ZWJwKSQvaTtcbiAgICAgIHJldHVybiB0eXBlb2YgZG9jID09PSAnc3RyaW5nJyB8fCAocGF0dGVybi50ZXN0KGRvYy5maWxlTmFtZSkgfHwgISFkb2MuZmlsZVBhdGgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZEFuZFJlc2NhbGVJbWFnZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZVZpZXdNb2RlbHMubGVuZ3RoID0gMDtcbiAgICBpZiAodGhpcy5faW1hZ2VzKSB7XG4gICAgICB0aGlzLl9pbWFnZXMuZm9yRWFjaCgoaTogQ29Eb2N1bWVudCB8IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgaW1hZ2VWaWV3TW9kZWwgPSBuZXcgSW1hZ2VWaWV3TW9kZWwoKTtcbiAgICAgICAgaW1hZ2VWaWV3TW9kZWwuaW1hZ2UgPSBpO1xuICAgICAgICBpZiAodHlwZW9mIGkgPT09ICdzdHJpbmcnKSB7IC8vIGlzIGEgcmVuZGVyZWQgaW1hZ2UgY29taW5nIGZyb20gY29uZmlndXJhdG9yXG4gICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaSwgaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpLmZpbGVQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShpLmZpbGVQYXRoLCBpbWFnZVZpZXdNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpLmRvY3VtZW50Qm9keSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaS5kb2N1bWVudEJvZHlBc0RhdGFVcmksIGltYWdlVmlld01vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW9uZS5nZXREb2N1bWVudENvbnRlbnQoaS5kb2N1bWVudElkLCBmYWxzZSkudGhlbigoY29udGVudDogRG9jdW1lbnRDb250ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgaS5kb2N1bWVudEJvZHkgPSBjb250ZW50LmRvY3VtZW50Q29udGVudDtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShpLmRvY3VtZW50Qm9keUFzRGF0YVVyaSwgaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW1hZ2VWaWV3TW9kZWxzLnB1c2goaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXNpemVBbmRTYW5pdGl6ZVNvdXJjZShzb3VyY2U6IHN0cmluZywgaW1hZ2VWaWV3TW9kZWw6IEltYWdlVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgcmVzaXplQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IHJlc2l6ZUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcbiAgICBjb25zdCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcblxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGN0eC5pbWFnZVNtb290aGluZ1F1YWxpdHkgPSAnaGlnaCc7XG5cbiAgICAgIGNvbnN0IG93ID0gaW1nLndpZHRoO1xuICAgICAgY29uc3Qgb2ggPSBpbWcuaGVpZ2h0O1xuICAgICAgY29uc3QgYXNwZWN0ID0gb3cgLyBvaDtcblxuICAgICAgbGV0IG5ld1cgPSB0aGlzLl9yZXNpemVDYW52YXNIZWlnaHQ7XG4gICAgICBsZXQgbmV3SCA9IHRoaXMuX3Jlc2l6ZUNhbnZhc0hlaWdodDtcbiAgICAgIGlmIChvdyA+IG9oKSB7XG4gICAgICAgIG5ld0ggPSB0aGlzLl9yZXNpemVDYW52YXNIZWlnaHQgLyBhc3BlY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdXID0gdGhpcy5fcmVzaXplQ2FudmFzSGVpZ2h0ICogYXNwZWN0O1xuICAgICAgfVxuXG4gICAgICByZXNpemVDYW52YXMud2lkdGggPSBNYXRoLnJvdW5kKG5ld1cpO1xuICAgICAgcmVzaXplQ2FudmFzLmhlaWdodCA9IE1hdGgucm91bmQobmV3SCk7XG5cbiAgICAgIC8vIEVuc3VyZSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGJlZm9yZSBkcmF3aW5nXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHJlc2l6ZUNhbnZhcy53aWR0aCwgcmVzaXplQ2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCByZXNpemVDYW52YXMud2lkdGgsIHJlc2l6ZUNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjb25zdCBtaW1lID0gdGhpcy5fZGV0ZWN0UHJlZmVycmVkTWltZShzb3VyY2UpO1xuICAgICAgY29uc3QgcmVzaXplZFNvdXJjZSA9XG4gICAgICAgIG1pbWUgPT09ICdpbWFnZS9qcGVnJ1xuICAgICAgICAgID8gcmVzaXplQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuOTIpIC8vIG9ubHkgaWYgb3JpZ2luYWwgd2FzIEpQRUdcbiAgICAgICAgICA6IHJlc2l6ZUNhbnZhcy50b0RhdGFVUkwobWltZSk7ICAgICAgICAgICAgICAvLyBQTkcvV2ViUCBrZWVwIGFscGhhXG5cbiAgICAgIGltYWdlVmlld01vZGVsLnNvdXJjZSA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJlc2l6ZWRTb3VyY2UpO1xuICAgICAgaW1hZ2VWaWV3TW9kZWwub3JpZ2luYWxTb3VyY2UgPSBzb3VyY2U7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGltZy5zcmMgPSBzb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RQcmVmZXJyZWRNaW1lKHNvdXJjZTogc3RyaW5nKTogJ2ltYWdlL3BuZycgfCAnaW1hZ2Uvd2VicCcgfCAnaW1hZ2UvanBlZycge1xuICAgIC8vIERhdGEgVVJJIGNoZWNrXG4gICAgY29uc3QgbSA9IHNvdXJjZS5tYXRjaCgvXmRhdGE6KGltYWdlXFwvW2EtekEtWisuLV0rKTtiYXNlNjQsLyk7XG4gICAgaWYgKG0pIHtcbiAgICAgIGNvbnN0IHQgPSBtWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodCA9PT0gJ2ltYWdlL3BuZycgfHwgdCA9PT0gJ2ltYWdlL3dlYnAnIHx8IHQgPT09ICdpbWFnZS9qcGVnJykgcmV0dXJuIHQgYXMgYW55O1xuICAgIH1cblxuICAgIGNvbnN0IGxvd2VyID0gc291cmNlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyLmVuZHNXaXRoKCcucG5nJykpIHJldHVybiAnaW1hZ2UvcG5nJztcbiAgICBpZiAobG93ZXIuZW5kc1dpdGgoJy53ZWJwJykpIHJldHVybiAnaW1hZ2Uvd2VicCc7XG4gICAgaWYgKGxvd2VyLmVuZHNXaXRoKCcuanBnJykgfHwgbG93ZXIuZW5kc1dpdGgoJy5qcGVnJykpIHJldHVybiAnaW1hZ2UvanBlZyc7XG5cbiAgICByZXR1cm4gJ2ltYWdlL3BuZyc7XG4gIH1cblxuICBwcml2YXRlIF9zY3JvbGxDYXJvdXNlbFRvSW5kZXgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID4gLTEgJiYgdGhpcy5jdXJyZW50SW5kZXggPD0gdGhpcy5pbWFnZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBtb3ZlUHg6IG51bWJlciA9IHRoaXMuY3VycmVudEluZGV4ICogdGhpcy5jYXJvdXNlbC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgaWYgKHRoaXMuY2Fyb3VzZWwgJiYgdGhpcy5jYXJvdXNlbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gbW92ZVB4O1xuICAgICAgICAvLyB0aGlzLmNhcm91c2VsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oe1xuICAgICAgICAvLyAgIGxlZnQ6IG1vdmVQeCxcbiAgICAgICAgLy8gICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgLy8gfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -60,12 +60,7 @@ export class ProductAddtocartComponent {
60
60
  }
61
61
  }
62
62
  else {
63
- const generatedGoodId = yield this._getGeneratedArtDirectly(this.article.goodId);
64
- if (generatedGoodId) {
65
- const articleFull = yield this._productConnectorAdapterService.getArticleFullObject(generatedGoodId, true);
66
- const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(articleFull);
67
- this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
68
- }
63
+ yield this._handleGeneratedArticleDirectly(quantity);
69
64
  }
70
65
  }
71
66
  else {
@@ -82,8 +77,15 @@ export class ProductAddtocartComponent {
82
77
  }
83
78
  }
84
79
  else {
85
- const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(this.article);
86
- this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
80
+ if (this.article.goodType === 'B') {
81
+ if (!this.article.isConfigurable) {
82
+ yield this._handleGeneratedArticleDirectly(quantity);
83
+ }
84
+ }
85
+ else {
86
+ const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(this.article);
87
+ this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
88
+ }
87
89
  }
88
90
  });
89
91
  }
@@ -92,6 +94,21 @@ export class ProductAddtocartComponent {
92
94
  this._appEventService.onAddToQuote.next(yield this._getJSONFromArticleObject({ article: this.article, quantity: quantity }));
93
95
  });
94
96
  }
97
+ _handleGeneratedArticleDirectly(quantity) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ const generatedGoodId = yield this._getGeneratedArtDirectly(this.article.goodId);
100
+ if (generatedGoodId) {
101
+ const articleFull = yield this._productConnectorAdapterService.getArticleFullObject(generatedGoodId, true);
102
+ const article = this._ioneControllerService.convertArticleFullObjectToArticleExtended(articleFull);
103
+ this._appEventService.onAddToCart.next({ article: article, quantity: quantity });
104
+ }
105
+ });
106
+ }
107
+ _getGeneratedArtDirectly(goodId) {
108
+ return __awaiter(this, void 0, void 0, function* () {
109
+ return yield this._ioneControllerService.getGeneratedArtDirectly(goodId, true);
110
+ });
111
+ }
95
112
  _getJSONFromArticleObject(article) {
96
113
  return __awaiter(this, void 0, void 0, function* () {
97
114
  const configuratorStatistics = new ConfiguratorStatisticsEnvironment();
@@ -104,11 +121,6 @@ export class ProductAddtocartComponent {
104
121
  return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, !!this.externalSource, true, configuratorStatistics);
105
122
  });
106
123
  }
107
- _getGeneratedArtDirectly(goodId) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- return yield this._ioneControllerService.getGeneratedArtDirectly(goodId, true);
110
- });
111
- }
112
124
  }
113
125
  ProductAddtocartComponent.decorators = [
114
126
  { type: Component, args: [{
@@ -170,4 +182,4 @@ ProductAddtocartComponent.propDecorators = {
170
182
  addToQuoteClick: [{ type: Output }],
171
183
  showRelatedPopup: [{ type: Output }]
172
184
  };
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hZGR0b2NhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtYWRkdG9jYXJ0L3Byb2R1Y3QtYWRkdG9jYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRzlFLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBcUMvRixNQUFNLE9BQU8seUJBQXlCO0lBaUVwQyxZQUNTLFNBQTJCLEVBQzFCLHNCQUErQyxFQUMvQyxnQkFBcUMsRUFDckMsZ0JBQXdDLEVBQ3hDLCtCQUErRDtRQUpoRSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXlCO1FBQy9DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4QyxvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWdDO1FBcEV6RCxTQUFJLEdBQW9CLFFBQVEsQ0FBQztRQVkxQyx3QkFBbUIsR0FBWSxJ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ZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvbkVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQgeyBBcnRpY2xlUXVhbnRpdHkgfSBmcm9tICcuLi8uLi9tb2RlbC9hcnRpY2xlLXF1YW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcnRpY2xlRnVsbE9iamVjdCB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtDb25maWd1cmF0b3JTdGF0aXN0aWNzRW52aXJvbm1lbnR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NvbmZpZ3VyYXRvci1zdGF0aXN0aWNzLWVudmlyb25tZW50JztcbmltcG9ydCB7UHJvZHVjdFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0LWV4dGVuZGVkLmJvJztcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS5ibyc7XG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1hZGR0b2NhcnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhdGMtd3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmV0dXJuXCI+XG4gICAgICAgIDxjby1udW1iZXItcGlja2VyICpuZ0lmPVwiIWNvbmZpZ3VyYWJsZSAmJiAhY29uZmlndXJpbmdcIiBjbGFzcz1cInF1YW50aXR5LXNlbGVjdFwiIFsobW9kZWwpXT1cInF1YW50aXR5XCIgW21pbl09XCItMTAwXCIgaG9yaXpvbnRhbD48L2NvLW51bWJlci1waWNrZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JldHVyblwiPlxuICAgICAgICA8Y28tbnVtYmVyLXBpY2tlciAqbmdJZj1cIiFjb25maWd1cmFibGUgJiYgIWNvbmZpZ3VyaW5nXCIgY2xhc3M9XCJxdWFudGl0eS1zZWxlY3RcIiBbKG1vZGVsKV09XCJxdWFudGl0eVwiIFttaW5dPVwiMVwiIGhvcml6b250YWw+PC9jby1udW1iZXItcGlja2VyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlclwiICpuZ0lmPVwiY29uZmlndXJhYmxlXCI+XG4gICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjb25maWd1cmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlLmdldEljb24oaWNvbi5NYWdpY1dhbmQpXCJcbiAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NPTkZJR1VSRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRDb25maWd1cmF0aW9uLmVtaXQoKVwiXG4gICAgICAgID48L2NvLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93QWRkVG9DYXJ0ICYmICFjb25maWd1cmFibGVcIj5cbiAgICAgICAgPGNvLWJ1dHRvbiAjYWRkdG9jYXJ0YnV0dG9uIGNsYXNzPVwiY2FydC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29uLkFkZFRvQ2FydERyb3ApXCJcbiAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NIT1BQSU5HX0NBUlRfSU4nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUFkZFRvQ2FydENsaWNrKHF1YW50aXR5KVwiXG4gICAgICAgID48L2NvLWJ1dHRvbj5cbiAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNhcnQtYnV0dG9uIHF1b3RlXCIgKm5nSWY9XCJzaG93UXVvdGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29uLlF1b3RlKVwiXG4gICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidRVU9UQVRJT04nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUFkZFRvUXVvdGVDbGljayhxdWFudGl0eSlcIlxuICAgICAgICA+PC9jby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1hZGR0b2NhcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0QWRkdG9jYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyByZWFkb25seSBpY29uOiB0eXBlb2YgSWNvbkVudW0gPSBJY29uRW51bTtcblxuICBAVmlld0NoaWxkKCdhZGR0b2NhcnRidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGFkZFRvQ2FydEJ1dHRvbjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3JlYXRlRnJvemVuQXJ0aWNsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maWd1cmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QWRkVG9DYXJ0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXNjcmVlbicpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmdWxsc2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBxdWFudGl0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNSZXR1cm4pIHtcbiAgICAgIGlmICh0aGlzLl9xdWFudGl0eSA9PT0gMSkge1xuICAgICAgICB0aGlzLl9xdWFudGl0eSA9IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVhbnRpdHkgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9xdWFudGl0eSA9IE1hdGgubWF4KDEsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1YW50aXR5O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGFydENvbmZpZ3VyYXRpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZFRvQ2FydENsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkVG9RdW90ZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2hvd1JlbGF0ZWRQb3B1cDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgcHVibGljIHNob3dRdW90ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3F1YW50aXR5ID0gMTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaWNvbkNhY2hlOiBJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2lvbmVDb250cm9sbGVyU2VydmljZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfYXBwRXZlbnRTZXJ2aWNlOiBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogUHJvZHVjdFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZVxuICAgICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFRvQ2FydEJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRUb0NhcnRDbGljayhxdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY3JlYXRlRnJvemVuQXJ0aWNsZSkge1xuICAgICAgaWYgKHRoaXMuYXJ0aWNsZS5nb29kVHlwZSA9PT0gJ0InKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJ0aWNsZS5pc0NvbmZpZ3VyYWJsZSkge1xuICAgICAgICAgIGNvbnN0IGFydGljbGUgPSBhd2FpdCB0aGlzLl9nZXRKU09ORnJvbUFydGljbGVPYmplY3Qoe2FydGljbGU6IHRoaXMuYXJ0aWNsZSwgcXVhbnRpdHk6IHF1YW50aXR5fSk7XG4gICAgICAgICAgaWYgKGFydGljbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5uZXh0KHthcnRpY2xlOiBhcnRpY2xlLCBxdWFudGl0eTogcXVhbnRpdHl9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZ2VuZXJhdGVkR29vZElkOiBudW1iZXIgPSBhd2FpdCB0aGlzLl9nZXRHZW5lcmF0ZWRBcnREaXJlY3RseSh0aGlzLmFydGljbGUuZ29vZElkKTtcbiAgICAgICAgICBpZiAoZ2VuZXJhdGVkR29vZElkKSB7XG4gICAgICAgICAgICBjb25zdCBhcnRpY2xlRnVsbDogQXJ0aWNsZUZ1bGxPYmplY3QgPSBhd2FpdCB0aGlzLl9wcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2UuZ2V0QXJ0aWNsZUZ1bGxPYmplY3QoZ2VuZXJhdGVkR29vZElkLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQgPSB0aGlzLl9pb25lQ29udHJvbGxlclNlcnZpY2UuY29udmVydEFydGljbGVGdWxsT2JqZWN0VG9BcnRpY2xlRXh0ZW5kZWQoYXJ0aWNsZUZ1bGwpO1xuICAgICAgICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uQWRkVG9DYXJ0Lm5leHQoe2FydGljbGU6IGFydGljbGUsIHF1YW50aXR5OiBxdWFudGl0eX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQgfCBzdHJpbmc7XG4gICAgICAgIGlmICghIXRoaXMuZXh0ZXJuYWxTb3VyY2UpIHtcbiAgICAgICAgICBhcnRpY2xlID0gYXdhaXQgdGhpcy5fZ2V0SlNPTkZyb21BcnRpY2xlT2JqZWN0KHthcnRpY2xlOiB0aGlzLmFydGljbGUsIHF1YW50aXR5OiBxdWFudGl0eX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFydGljbGUgPSB0aGlzLl9pb25lQ29udHJvbGxlclNlcnZpY2UuY29udmVydEFydGljbGVGdWxsT2JqZWN0VG9BcnRpY2xlRXh0ZW5kZWQodGhpcy5hcnRpY2xlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJ0aWNsZSkge1xuICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5uZXh0KHthcnRpY2xlOiBhcnRpY2xlLCBxdWFudGl0eTogcXVhbnRpdHl9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkID0gdGhpcy5faW9uZUNvbnRyb2xsZXJTZXJ2aWNlLmNvbnZlcnRBcnRpY2xlRnVsbE9iamVjdFRvQXJ0aWNsZUV4dGVuZGVkKHRoaXMuYXJ0aWNsZSk7XG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb0NhcnQubmV4dCh7IGFydGljbGU6IGFydGljbGUsIHF1YW50aXR5OiBxdWFudGl0eSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkVG9RdW90ZUNsaWNrKHF1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb1F1b3RlLm5leHQoYXdhaXQgdGhpcy5fZ2V0SlNPTkZyb21BcnRpY2xlT2JqZWN0KHthcnRpY2xlOiB0aGlzLmFydGljbGUsIHF1YW50aXR5OiBxdWFudGl0eX0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldEpTT05Gcm9tQXJ0aWNsZU9iamVjdChhcnRpY2xlOiBBcnRpY2xlUXVhbnRpdHkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MgPSBuZXcgQ29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50KCk7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy51c2VyVHlwZSA9ICdpT25lUHJvZHVjdFBhZ2UnO1xuICAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MudHJhbnNhY3Rpb25UeXBlID0gJ1NhbGVzJztcbiAgICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLmFjdGlvbkRvbWFpbiA9ICdidW5kbGUnO1xuICAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3Muc2Vzc2lvbklkID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlc3Npb24gPyB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vzc2lvbi5zZXNzaW9uSWQgOiAndW5rbm93bic7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy53ZWJIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy5idW5kbGVIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2lvbmVDb250cm9sbGVyU2VydmljZS5nZXRKc29uQXJ0aWNsZUZsYXRUcmVlKFxuICAgICAgICBhcnRpY2xlLmFydGljbGUuZ29vZElkLCBhcnRpY2xlLmFydGljbGUuZ29vZFR5cGUsIGFydGljbGUucXVhbnRpdHksICEhdGhpcy5leHRlcm5hbFNvdXJjZSwgdHJ1ZSwgY29uZmlndXJhdG9yU3RhdGlzdGljcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRHZW5lcmF0ZWRBcnREaXJlY3RseShnb29kSWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2lvbmVDb250cm9sbGVyU2VydmljZS5nZXRHZW5lcmF0ZWRBcnREaXJlY3RseShnb29kSWQsIHRydWUpO1xuICB9XG59XG4iXX0=
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1hZGR0b2NhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtYWRkdG9jYXJ0L3Byb2R1Y3QtYWRkdG9jYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRzlFLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBcUMvRixNQUFNLE9BQU8seUJBQXlCO0lBaUVwQyxZQUNTLFNBQTJCLEVBQzFCLHNCQUErQyxFQUMvQyxnQkFBcUMsRUFDckMsZ0JBQXdDLEVBQ3hDLCtCQUErRDtRQUpoRSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXlCO1FBQy9DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBcUI7UUFDckMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4QyxvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWdDO1FBcEV6RCxTQUFJLEdBQW9CLFFBQVEsQ0FBQztRQVkxQyx3QkFBbUIsR0FBWSxJ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QUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3NCQUdqRCxLQUFLOzZCQUdMLEtBQUs7a0NBR0wsS0FBSzsyQkFHTCxLQUFLOzBCQUdMLEtBQUs7NEJBR0wsS0FBSzt1QkFHTCxLQUFLO3lCQUdMLFdBQVcsU0FBQyxtQkFBbUIsY0FDL0IsS0FBSzt1QkFHTCxLQUFLO2lDQWlCTCxNQUFNOzZCQUdOLE1BQU07OEJBR04sTUFBTTsrQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvbkVudW0gfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQgeyBBcnRpY2xlUXVhbnRpdHkgfSBmcm9tICcuLi8uLi9tb2RlbC9hcnRpY2xlLXF1YW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFByb2R1Y3RDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcnRpY2xlRnVsbE9iamVjdCB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHtDb25maWd1cmF0b3JTdGF0aXN0aWNzRW52aXJvbm1lbnR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2NvbmZpZ3VyYXRvci1zdGF0aXN0aWNzLWVudmlyb25tZW50JztcbmltcG9ydCB7UHJvZHVjdFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0LWV4dGVuZGVkLmJvJztcbmltcG9ydCB7RXh0ZXJuYWxTb3VyY2V9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLXNvdXJjZS5ibyc7XG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWNvbm5lY3Rvci1hZGFwdGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1hZGR0b2NhcnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhdGMtd3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmV0dXJuXCI+XG4gICAgICAgIDxjby1udW1iZXItcGlja2VyICpuZ0lmPVwiIWNvbmZpZ3VyYWJsZSAmJiAhY29uZmlndXJpbmdcIiBjbGFzcz1cInF1YW50aXR5LXNlbGVjdFwiIFsobW9kZWwpXT1cInF1YW50aXR5XCIgW21pbl09XCItMTAwXCIgaG9yaXpvbnRhbD48L2NvLW51bWJlci1waWNrZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1JldHVyblwiPlxuICAgICAgICA8Y28tbnVtYmVyLXBpY2tlciAqbmdJZj1cIiFjb25maWd1cmFibGUgJiYgIWNvbmZpZ3VyaW5nXCIgY2xhc3M9XCJxdWFudGl0eS1zZWxlY3RcIiBbKG1vZGVsKV09XCJxdWFudGl0eVwiIFttaW5dPVwiMVwiIGhvcml6b250YWw+PC9jby1udW1iZXItcGlja2VyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlclwiICpuZ0lmPVwiY29uZmlndXJhYmxlXCI+XG4gICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjb25maWd1cmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlLmdldEljb24oaWNvbi5NYWdpY1dhbmQpXCJcbiAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NPTkZJR1VSRScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRDb25maWd1cmF0aW9uLmVtaXQoKVwiXG4gICAgICAgID48L2NvLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi13cmFwcGVyXCIgKm5nSWY9XCJzaG93QWRkVG9DYXJ0ICYmICFjb25maWd1cmFibGVcIj5cbiAgICAgICAgPGNvLWJ1dHRvbiAjYWRkdG9jYXJ0YnV0dG9uIGNsYXNzPVwiY2FydC1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29uLkFkZFRvQ2FydERyb3ApXCJcbiAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NIT1BQSU5HX0NBUlRfSU4nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUFkZFRvQ2FydENsaWNrKHF1YW50aXR5KVwiXG4gICAgICAgID48L2NvLWJ1dHRvbj5cbiAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNhcnQtYnV0dG9uIHF1b3RlXCIgKm5nSWY9XCJzaG93UXVvdGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29uLlF1b3RlKVwiXG4gICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidRVU9UQVRJT04nIHwgbG9jYWxpemVcIlxuICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUFkZFRvUXVvdGVDbGljayhxdWFudGl0eSlcIlxuICAgICAgICA+PC9jby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1hZGR0b2NhcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0QWRkdG9jYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyByZWFkb25seSBpY29uOiB0eXBlb2YgSWNvbkVudW0gPSBJY29uRW51bTtcblxuICBAVmlld0NoaWxkKCdhZGR0b2NhcnRidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGFkZFRvQ2FydEJ1dHRvbjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZUZ1bGxPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV4dGVybmFsU291cmNlOiBFeHRlcm5hbFNvdXJjZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3JlYXRlRnJvemVuQXJ0aWNsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maWd1cmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QWRkVG9DYXJ0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzUmV0dXJuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXNjcmVlbicpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmdWxsc2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBxdWFudGl0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNSZXR1cm4pIHtcbiAgICAgIGlmICh0aGlzLl9xdWFudGl0eSA9PT0gMSkge1xuICAgICAgICB0aGlzLl9xdWFudGl0eSA9IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVhbnRpdHkgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9xdWFudGl0eSA9IE1hdGgubWF4KDEsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1YW50aXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1YW50aXR5O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGFydENvbmZpZ3VyYXRpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZFRvQ2FydENsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkVG9RdW90ZUNsaWNrOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2hvd1JlbGF0ZWRQb3B1cDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG5cbiAgcHVibGljIHNob3dRdW90ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3F1YW50aXR5ID0gMTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaWNvbkNhY2hlOiBJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2lvbmVDb250cm9sbGVyU2VydmljZTogUHJvZHVjdENvbm5lY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfYXBwRXZlbnRTZXJ2aWNlOiBQcm9kdWN0RXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogUHJvZHVjdFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIF9wcm9kdWN0Q29ubmVjdG9yQWRhcHRlclNlcnZpY2U6IFByb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZVxuICAgICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFRvQ2FydEJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRUb0NhcnRDbGljayhxdWFudGl0eTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY3JlYXRlRnJvemVuQXJ0aWNsZSkge1xuICAgICAgaWYgKHRoaXMuYXJ0aWNsZS5nb29kVHlwZSA9PT0gJ0InKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJ0aWNsZS5pc0NvbmZpZ3VyYWJsZSkge1xuICAgICAgICAgIGNvbnN0IGFydGljbGUgPSBhd2FpdCB0aGlzLl9nZXRKU09ORnJvbUFydGljbGVPYmplY3Qoe2FydGljbGU6IHRoaXMuYXJ0aWNsZSwgcXVhbnRpdHk6IHF1YW50aXR5fSk7XG4gICAgICAgICAgaWYgKGFydGljbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5uZXh0KHthcnRpY2xlOiBhcnRpY2xlLCBxdWFudGl0eTogcXVhbnRpdHl9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlR2VuZXJhdGVkQXJ0aWNsZURpcmVjdGx5KHF1YW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGFydGljbGU6IEFydGljbGVMaXN0T2JqZWN0RXh0ZW5kZWQgfCBzdHJpbmc7XG4gICAgICAgIGlmICghIXRoaXMuZXh0ZXJuYWxTb3VyY2UpIHtcbiAgICAgICAgICBhcnRpY2xlID0gYXdhaXQgdGhpcy5fZ2V0SlNPTkZyb21BcnRpY2xlT2JqZWN0KHthcnRpY2xlOiB0aGlzLmFydGljbGUsIHF1YW50aXR5OiBxdWFudGl0eX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFydGljbGUgPSB0aGlzLl9pb25lQ29udHJvbGxlclNlcnZpY2UuY29udmVydEFydGljbGVGdWxsT2JqZWN0VG9BcnRpY2xlRXh0ZW5kZWQodGhpcy5hcnRpY2xlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJ0aWNsZSkge1xuICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5uZXh0KHthcnRpY2xlOiBhcnRpY2xlLCBxdWFudGl0eTogcXVhbnRpdHl9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hcnRpY2xlLmdvb2RUeXBlID09PSAnQicpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFydGljbGUuaXNDb25maWd1cmFibGUpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVHZW5lcmF0ZWRBcnRpY2xlRGlyZWN0bHkocXVhbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkID0gdGhpcy5faW9uZUNvbnRyb2xsZXJTZXJ2aWNlLmNvbnZlcnRBcnRpY2xlRnVsbE9iamVjdFRvQXJ0aWNsZUV4dGVuZGVkKHRoaXMuYXJ0aWNsZSk7XG4gICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvQ2FydC5uZXh0KHsgYXJ0aWNsZTogYXJ0aWNsZSwgcXVhbnRpdHk6IHF1YW50aXR5IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRUb1F1b3RlQ2xpY2socXVhbnRpdHk6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkFkZFRvUXVvdGUubmV4dChhd2FpdCB0aGlzLl9nZXRKU09ORnJvbUFydGljbGVPYmplY3Qoe2FydGljbGU6IHRoaXMuYXJ0aWNsZSwgcXVhbnRpdHk6IHF1YW50aXR5fSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlR2VuZXJhdGVkQXJ0aWNsZURpcmVjdGx5KHF1YW50aXR5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnZW5lcmF0ZWRHb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuX2dldEdlbmVyYXRlZEFydERpcmVjdGx5KHRoaXMuYXJ0aWNsZS5nb29kSWQpO1xuICAgIGlmIChnZW5lcmF0ZWRHb29kSWQpIHtcbiAgICAgIGNvbnN0IGFydGljbGVGdWxsOiBBcnRpY2xlRnVsbE9iamVjdCA9IGF3YWl0IHRoaXMuX3Byb2R1Y3RDb25uZWN0b3JBZGFwdGVyU2VydmljZS5nZXRBcnRpY2xlRnVsbE9iamVjdChnZW5lcmF0ZWRHb29kSWQsIHRydWUpO1xuICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCA9IHRoaXMuX2lvbmVDb250cm9sbGVyU2VydmljZS5jb252ZXJ0QXJ0aWNsZUZ1bGxPYmplY3RUb0FydGljbGVFeHRlbmRlZChhcnRpY2xlRnVsbCk7XG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25BZGRUb0NhcnQubmV4dCh7YXJ0aWNsZTogYXJ0aWNsZSwgcXVhbnRpdHk6IHF1YW50aXR5fSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0R2VuZXJhdGVkQXJ0RGlyZWN0bHkoZ29vZElkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9pb25lQ29udHJvbGxlclNlcnZpY2UuZ2V0R2VuZXJhdGVkQXJ0RGlyZWN0bHkoZ29vZElkLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldEpTT05Gcm9tQXJ0aWNsZU9iamVjdChhcnRpY2xlOiBBcnRpY2xlUXVhbnRpdHkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MgPSBuZXcgQ29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50KCk7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy51c2VyVHlwZSA9ICdpT25lUHJvZHVjdFBhZ2UnO1xuICAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3MudHJhbnNhY3Rpb25UeXBlID0gJ1NhbGVzJztcbiAgICBjb25maWd1cmF0b3JTdGF0aXN0aWNzLmFjdGlvbkRvbWFpbiA9ICdidW5kbGUnO1xuICAgIGNvbmZpZ3VyYXRvclN0YXRpc3RpY3Muc2Vzc2lvbklkID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNlc3Npb24gPyB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2Vzc2lvbi5zZXNzaW9uSWQgOiAndW5rbm93bic7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy53ZWJIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgY29uZmlndXJhdG9yU3RhdGlzdGljcy5idW5kbGVIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2lvbmVDb250cm9sbGVyU2VydmljZS5nZXRKc29uQXJ0aWNsZUZsYXRUcmVlKFxuICAgICAgICBhcnRpY2xlLmFydGljbGUuZ29vZElkLCBhcnRpY2xlLmFydGljbGUuZ29vZFR5cGUsIGFydGljbGUucXVhbnRpdHksICEhdGhpcy5leHRlcm5hbFNvdXJjZSwgdHJ1ZSwgY29uZmlndXJhdG9yU3RhdGlzdGljcyk7XG4gIH1cbn1cbiJdfQ==
@@ -26,7 +26,7 @@ export class ProductInfoTabsComponent {
26
26
  this.updateHeight(tabIndex);
27
27
  }
28
28
  updateHeight(tabIndex) {
29
- if (this.tabContent.nativeElement.children.length > 0) {
29
+ if (this.tabContent && this.tabContent.nativeElement.children.length > 0) {
30
30
  if (this.tabContent.nativeElement.children[tabIndex] !== undefined) {
31
31
  this.activeTabHeight = this.tabContent.nativeElement.children[tabIndex].offsetHeight;
32
32
  }
@@ -79,4 +79,4 @@ ProductInfoTabsComponent.propDecorators = {
79
79
  tabContent: [{ type: ViewChild, args: ['tabContent',] }],
80
80
  article: [{ type: Input }]
81
81
  };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1pbmZvLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtaW5mby10YWJzL3Byb2R1Y3QtaW5mby10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBNkIxRSxNQUFNLE9BQU8sd0JBQXdCO0lBdUJuQyxZQUNVLGdCQUFxQztRQUFyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBckJ4QyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUs1QixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBYWhCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBcEJELElBQ0ksT0FBTyxDQUFDLEtBQXdCO1FBQ2xDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBZUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFNBQVMsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ2xFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQzthQUN0RjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUN0QztJQUVILENBQUM7OztZQTFGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUOzthQUVGOzs7WUE1QlEsbUJBQW1COzs7eUJBa0N6QixTQUFTLFNBQUMsWUFBWTtzQkFPdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXJ0aWNsZUZ1bGxPYmplY3QgfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZ1bGwtb2JqZWN0JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvZHVjdEV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1Y3QtaW5mby10YWJzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1oZWFkZXJcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInRhYi1oZWFkZXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT09IGlcIiBbdGV4dENvbnRlbnRdPVwidGFiLnRpdGxlIHwgbG9jYWxpemVcIiAoY2xpY2spPVwidXBkYXRlVGFiKGkpXCI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICN0YWJDb250ZW50IFtzdHlsZS5oZWlnaHQucHhdPVwiKGFjdGl2ZVRhYkhlaWdodCA+IDAgPyBhY3RpdmVUYWJIZWlnaHQgOiAnJylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gaVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpID09PSAwXCI+XG4gICAgICAgICAgICA8YXBwLXByb2R1Y3QtYWRkaXRpb25hbC1pbmZvIGNsYXNzPVwiXCIgW2FydGljbGVdPVwiYXJ0aWNsZU9iamVjdFwiIFtzaG93TGFiZWxdPVwiZmFsc2VcIj48L2FwcC1wcm9kdWN0LWFkZGl0aW9uYWwtaW5mbz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA9PT0gMVwiPlxuICAgICAgICAgICAgPGFwcC1wcm9kdWN0LXByb3BlcnRpZXMgY2xhc3M9XCJcIiBbYXJ0aWNsZV09XCJhcnRpY2xlT2JqZWN0XCIgW3Nob3dMYWJlbF09XCJmYWxzZVwiPjwvYXBwLXByb2R1Y3QtcHJvcGVydGllcz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA9PT0gMlwiPlxuICAgICAgICAgICAgPGFwcC1wcm9kdWN0LWRvY3VtZW50cyBbc2hvd0xhYmVsXT1cImZhbHNlXCIgY2xhc3M9XCJcIiAqbmdJZj1cImFydGljbGVPYmplY3Q/LmRvY3VtZW50cyAmJiBhcnRpY2xlT2JqZWN0Py5kb2N1bWVudHMubGVuZ3RoID4gMFwiIFtkb2N1bWVudHNdPVwiYXJ0aWNsZU9iamVjdD8uZG9jdW1lbnRzXCI+PC9hcHAtcHJvZHVjdC1kb2N1bWVudHM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPT09IDNcIj5cbiAgICAgICAgICAgIDxhcHAtcHJvZHVjdC1zeW1ib2xzIGNsYXNzPVwiXCIgKm5nSWY9XCJhcnRpY2xlT2JqZWN0Py5zeW1ib2xzICYmIGFydGljbGVPYmplY3Q/LnN5bWJvbHMubGVuZ3RoID4gMFwiIFtzeW1ib2xzXT1cImFydGljbGVPYmplY3Q/LnN5bWJvbHNcIj48L2FwcC1wcm9kdWN0LXN5bWJvbHM+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtaW5mby10YWJzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdEluZm9UYWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgYWN0aXZlVGFiOiBudW1iZXI7XG4gIHB1YmxpYyBhY3RpdmVUYWJIZWlnaHQ6IG51bWJlciA9IDA7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudCcpXG4gIHB1YmxpYyB0YWJDb250ZW50OiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyB0YWJzOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBhcnRpY2xlT2JqZWN0OiBBcnRpY2xlRnVsbE9iamVjdDtcblxuICBASW5wdXQgKClcbiAgc2V0IGFydGljbGUodmFsdWU6IEFydGljbGVGdWxsT2JqZWN0KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmFydGljbGVPYmplY3QgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3NldHVwVGFicygpO1xuICAgICAgdGhpcy51cGRhdGVUYWIoMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9hcHBFdmVudFNlcnZpY2U6IFByb2R1Y3RFdmVudFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uVXBkYXRlUHJvZHVjdEluZm9UYWIuc3Vic2NyaWJlKChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVGFiKGluZGV4KTtcbiAgICAgICAgdGhpcy50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVRhYih0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJJbmRleDtcbiAgICB0aGlzLnVwZGF0ZUhlaWdodCh0YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSGVpZ2h0KHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMudGFiQ29udGVudC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RhYkluZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiSGVpZ2h0ID0gdGhpcy50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bdGFiSW5kZXhdLm9mZnNldEhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFRhYnMoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzLnB1c2goeyB0aXRsZTogJ0RFU0NSSVBUSU9OJyB9KTtcbiAgICB0aGlzLnRhYnMucHVzaCh7IHRpdGxlOiAnRkVBVFVSRVMnIH0pO1xuXG4gICAgaWYgKHRoaXMuYXJ0aWNsZU9iamVjdC5kb2N1bWVudHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFydGljbGVPYmplY3QuZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFicy5wdXNoKHsgdGl0bGU6ICdET1dOTE9BRFMnIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFydGljbGVPYmplY3Quc3ltYm9scyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYXJ0aWNsZU9iamVjdC5zeW1ib2xzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFicy5wdXNoKHsgdGl0bGU6ICdTWU1CT0xTJyB9KTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1pbmZvLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL3Byb2R1Y3QtaW5mby10YWJzL3Byb2R1Y3QtaW5mby10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBNkIxRSxNQUFNLE9BQU8sd0JBQXdCO0lBdUJuQyxZQUNVLGdCQUFxQztRQUFyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBckJ4QyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUs1QixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBYWhCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBcEJELElBQ0ksT0FBTyxDQUFDLEtBQXdCO1FBQ2xDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBZUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFNBQVMsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDbEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQ3RGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3RDO0lBRUgsQ0FBQzs7O1lBMUZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7O2FBRUY7OztZQTVCUSxtQkFBbUI7Ozt5QkFrQ3pCLFNBQVMsU0FBQyxZQUFZO3NCQU90QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcnRpY2xlRnVsbE9iamVjdCB9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9kdWN0RXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1pbmZvLXRhYnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWhlYWRlclwiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidGFiLWhlYWRlci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gaVwiIFt0ZXh0Q29udGVudF09XCJ0YWIudGl0bGUgfCBsb2NhbGl6ZVwiIChjbGljayk9XCJ1cGRhdGVUYWIoaSlcIj48L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgI3RhYkNvbnRlbnQgW3N0eWxlLmhlaWdodC5weF09XCIoYWN0aXZlVGFiSGVpZ2h0ID4gMCA/IGFjdGl2ZVRhYkhlaWdodCA6ICcnKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnQtaXRlbVwiICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09PSBpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgPT09IDBcIj5cbiAgICAgICAgICAgIDxhcHAtcHJvZHVjdC1hZGRpdGlvbmFsLWluZm8gY2xhc3M9XCJcIiBbYXJ0aWNsZV09XCJhcnRpY2xlT2JqZWN0XCIgW3Nob3dMYWJlbF09XCJmYWxzZVwiPjwvYXBwLXByb2R1Y3QtYWRkaXRpb25hbC1pbmZvPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpID09PSAxXCI+XG4gICAgICAgICAgICA8YXBwLXByb2R1Y3QtcHJvcGVydGllcyBjbGFzcz1cIlwiIFthcnRpY2xlXT1cImFydGljbGVPYmplY3RcIiBbc2hvd0xhYmVsXT1cImZhbHNlXCI+PC9hcHAtcHJvZHVjdC1wcm9wZXJ0aWVzPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpID09PSAyXCI+XG4gICAgICAgICAgICA8YXBwLXByb2R1Y3QtZG9jdW1lbnRzIFtzaG93TGFiZWxdPVwiZmFsc2VcIiBjbGFzcz1cIlwiICpuZ0lmPVwiYXJ0aWNsZU9iamVjdD8uZG9jdW1lbnRzICYmIGFydGljbGVPYmplY3Q/LmRvY3VtZW50cy5sZW5ndGggPiAwXCIgW2RvY3VtZW50c109XCJhcnRpY2xlT2JqZWN0Py5kb2N1bWVudHNcIj48L2FwcC1wcm9kdWN0LWRvY3VtZW50cz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSA9PT0gM1wiPlxuICAgICAgICAgICAgPGFwcC1wcm9kdWN0LXN5bWJvbHMgY2xhc3M9XCJcIiAqbmdJZj1cImFydGljbGVPYmplY3Q/LnN5bWJvbHMgJiYgYXJ0aWNsZU9iamVjdD8uc3ltYm9scy5sZW5ndGggPiAwXCIgW3N5bWJvbHNdPVwiYXJ0aWNsZU9iamVjdD8uc3ltYm9sc1wiPjwvYXBwLXByb2R1Y3Qtc3ltYm9scz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1pbmZvLXRhYnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0SW5mb1RhYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBhY3RpdmVUYWI6IG51bWJlcjtcbiAgcHVibGljIGFjdGl2ZVRhYkhlaWdodDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCd0YWJDb250ZW50JylcbiAgcHVibGljIHRhYkNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHVibGljIHRhYnM6IGFueVtdID0gW107XG5cbiAgcHVibGljIGFydGljbGVPYmplY3Q6IEFydGljbGVGdWxsT2JqZWN0O1xuXG4gIEBJbnB1dCAoKVxuICBzZXQgYXJ0aWNsZSh2YWx1ZTogQXJ0aWNsZUZ1bGxPYmplY3QpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuYXJ0aWNsZU9iamVjdCA9IHZhbHVlO1xuICAgICAgdGhpcy5fc2V0dXBUYWJzKCk7XG4gICAgICB0aGlzLnVwZGF0ZVRhYigwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogUHJvZHVjdEV2ZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uub25VcGRhdGVQcm9kdWN0SW5mb1RhYi5zdWJzY3JpYmUoKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWIoaW5kZXgpO1xuICAgICAgICB0aGlzLnRhYkNvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFiKHRhYkluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYkluZGV4O1xuICAgIHRoaXMudXBkYXRlSGVpZ2h0KHRhYkluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVIZWlnaHQodGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYkNvbnRlbnQgJiYgdGhpcy50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMudGFiQ29udGVudC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW3RhYkluZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiSGVpZ2h0ID0gdGhpcy50YWJDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bdGFiSW5kZXhdLm9mZnNldEhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cFRhYnMoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzLnB1c2goeyB0aXRsZTogJ0RFU0NSSVBUSU9OJyB9KTtcbiAgICB0aGlzLnRhYnMucHVzaCh7IHRpdGxlOiAnRkVBVFVSRVMnIH0pO1xuXG4gICAgaWYgKHRoaXMuYXJ0aWNsZU9iamVjdC5kb2N1bWVudHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmFydGljbGVPYmplY3QuZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFicy5wdXNoKHsgdGl0bGU6ICdET1dOTE9BRFMnIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFydGljbGVPYmplY3Quc3ltYm9scyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYXJ0aWNsZU9iamVjdC5zeW1ib2xzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFicy5wdXNoKHsgdGl0bGU6ICdTWU1CT0xTJyB9KTtcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=