ctt-puro 0.70.40 → 0.70.42

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.
@@ -3,9 +3,8 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/platform-browser";
5
5
  export class PuroIframeComponent {
6
- constructor(sanitizer, cdr) {
6
+ constructor(sanitizer) {
7
7
  this.sanitizer = sanitizer;
8
- this.cdr = cdr;
9
8
  this.safeUrl = null;
10
9
  this.isFourvenues = false;
11
10
  this.fourvenuesContainerId = 'fourvenues-iframe';
@@ -15,37 +14,60 @@ export class PuroIframeComponent {
15
14
  return;
16
15
  this.isFourvenues = this.frameUrl.includes('fourvenues');
17
16
  if (!this.isFourvenues) {
17
+ this.cleanupFourvenues();
18
18
  this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.frameUrl);
19
+ return;
19
20
  }
20
- else {
21
- this.loadFourvenuesScript();
22
- }
21
+ this.safeUrl = null;
22
+ this.loadFourvenuesScript();
23
+ }
24
+ ngOnDestroy() {
25
+ this.cleanupFourvenues();
23
26
  }
24
27
  loadFourvenuesScript() {
25
- if (typeof window === 'undefined')
26
- return;
27
- // evitar duplicados
28
- if (document.getElementById('fv-script'))
28
+ if (typeof window === 'undefined' || !this.frameUrl)
29
29
  return;
30
+ this.cleanupFourvenues();
31
+ const container = document.getElementById(this.fourvenuesContainerId);
32
+ if (container) {
33
+ container.innerHTML = '';
34
+ }
30
35
  const script = document.createElement('script');
31
36
  script.id = 'fv-script';
32
37
  script.src = this.frameUrl;
33
38
  script.async = true;
34
39
  document.body.appendChild(script);
35
- window.addEventListener('message', (event) => {
40
+ this.messageListener = (event) => {
36
41
  const data = event.data;
37
42
  if (data?.key === 'toTop') {
38
- return; // ignoramos
43
+ return;
39
44
  }
40
- });
45
+ };
46
+ window.addEventListener('message', this.messageListener);
47
+ }
48
+ cleanupFourvenues() {
49
+ if (typeof window === 'undefined')
50
+ return;
51
+ const oldScript = document.getElementById('fv-script');
52
+ if (oldScript) {
53
+ oldScript.remove();
54
+ }
55
+ const container = document.getElementById(this.fourvenuesContainerId);
56
+ if (container) {
57
+ container.innerHTML = '';
58
+ }
59
+ if (this.messageListener) {
60
+ window.removeEventListener('message', this.messageListener);
61
+ this.messageListener = undefined;
62
+ }
41
63
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
43
65
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroIframeComponent, isStandalone: true, selector: "lib-puro-iframe", inputs: { frameUrl: "frameUrl" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"iframe-container generalMargin\">\n @if (isFourvenues) {\n <div [id]=\"fourvenuesContainerId\"></div>\n } @else if (safeUrl) {\n <iframe [src]=\"safeUrl\" frameborder=\"0\" allowfullscreen></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}@media (max-width: 1024px){.generalMargin{padding-inline:2rem!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
66
  }
45
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroIframeComponent, decorators: [{
46
68
  type: Component,
47
69
  args: [{ selector: 'lib-puro-iframe', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"iframe-container generalMargin\">\n @if (isFourvenues) {\n <div [id]=\"fourvenuesContainerId\"></div>\n } @else if (safeUrl) {\n <iframe [src]=\"safeUrl\" frameborder=\"0\" allowfullscreen></iframe>\n }\n</div>\n", styles: [".iframe-container{display:flex;align-items:center;justify-content:center;overflow:hidden}.iframe-container iframe{width:100vw;height:140vh;border:none;scrollbar-width:none;-ms-overflow-style:none}.iframe-container iframe::-webkit-scrollbar{display:none}.s-list-exp .container{padding:0!important}@media (max-width: 1024px){.generalMargin{padding-inline:2rem!important}}\n"] }]
48
- }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { frameUrl: [{
70
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { frameUrl: [{
49
71
  type: Input
50
72
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFUixNQUFNLGVBQWUsQ0FBQzs7O0FBV3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDcUIsU0FBdUIsRUFDdkIsR0FBc0I7UUFEdEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQU4zQyxZQUFPLEdBQTJCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQiwwQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztJQUt6QyxDQUFDO0lBRUosV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQ3hELElBQUksQ0FBQyxRQUFRLENBQ2hCLENBQUM7U0FDTDthQUFNO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVztZQUFFLE9BQU87UUFFMUMsb0JBQW9CO1FBQ3BCLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPO1FBRWpELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXBCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRXhCLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxZQUFZO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTdDUSxtQkFBbUI7bUdBQW5CLG1CQUFtQixrSUNsQmhDLDBQQU9BLDRhRE1jLFlBQVk7OzRGQUtiLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDSSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBR04sdUJBQXVCLENBQUMsTUFBTTtpSEFHdEMsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1pZnJhbWUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8taWZyYW1lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1pZnJhbWUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvSWZyYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBmcmFtZVVybD86IHN0cmluZztcblxuICAgIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuICAgIGlzRm91cnZlbnVlcyA9IGZhbHNlO1xuICAgIGZvdXJ2ZW51ZXNDb250YWluZXJJZCA9ICdmb3VydmVudWVzLWlmcmFtZSc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mcmFtZVVybCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaXNGb3VydmVudWVzID0gdGhpcy5mcmFtZVVybC5pbmNsdWRlcygnZm91cnZlbnVlcycpO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0ZvdXJ2ZW51ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2FmZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1lVXJsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkRm91cnZlbnVlc1NjcmlwdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRm91cnZlbnVlc1NjcmlwdCgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG5cbiAgICAgICAgLy8gZXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmdi1zY3JpcHQnKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQuaWQgPSAnZnYtc2NyaXB0JztcbiAgICAgICAgc2NyaXB0LnNyYyA9IHRoaXMuZnJhbWVVcmwhO1xuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGE7XG5cbiAgICAgICAgICAgIGlmIChkYXRhPy5rZXkgPT09ICd0b1RvcCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIGlnbm9yYW1vc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lciBnZW5lcmFsTWFyZ2luXCI+XG4gICAgQGlmIChpc0ZvdXJ2ZW51ZXMpIHtcbiAgICAgICAgPGRpdiBbaWRdPVwiZm91cnZlbnVlc0NvbnRhaW5lcklkXCI+PC9kaXY+XG4gICAgfSBAZWxzZSBpZiAoc2FmZVVybCkge1xuICAgICAgICA8aWZyYW1lIFtzcmNdPVwic2FmZVVybFwiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1pZnJhbWUvcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHUixNQUFNLGVBQWUsQ0FBQzs7O0FBV3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFTNUIsWUFBNkIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQU5wRCxZQUFPLEdBQTJCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQiwwQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztJQUlXLENBQUM7SUFFeEQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQ3hELElBQUksQ0FBQyxRQUFRLENBQ2hCLENBQUM7WUFDRixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFNUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUN4QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDM0IsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRXhCLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU87YUFDVjtRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxpQkFBaUI7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQUUsT0FBTztRQUUxQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksU0FBUyxFQUFFO1lBQ1gsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQzsrR0E3RVEsbUJBQW1CO21HQUFuQixtQkFBbUIsa0lDbEJoQywwUEFPQSw0YURNYyxZQUFZOzs0RkFLYixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUdOLHVCQUF1QixDQUFDLE1BQU07aUZBR3RDLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWlmcmFtZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1pZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWlmcmFtZS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9JZnJhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZnJhbWVVcmw/OiBzdHJpbmc7XG5cbiAgICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcbiAgICBpc0ZvdXJ2ZW51ZXMgPSBmYWxzZTtcbiAgICBmb3VydmVudWVzQ29udGFpbmVySWQgPSAnZm91cnZlbnVlcy1pZnJhbWUnO1xuXG4gICAgcHJpdmF0ZSBtZXNzYWdlTGlzdGVuZXI/OiAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZyYW1lVXJsKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5pc0ZvdXJ2ZW51ZXMgPSB0aGlzLmZyYW1lVXJsLmluY2x1ZGVzKCdmb3VydmVudWVzJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRm91cnZlbnVlcykge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwRm91cnZlbnVlcygpO1xuICAgICAgICAgICAgdGhpcy5zYWZlVXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVVcmxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhZmVVcmwgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRGb3VydmVudWVzU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cEZvdXJ2ZW51ZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRGb3VydmVudWVzU2NyaXB0KCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXRoaXMuZnJhbWVVcmwpIHJldHVybjtcblxuICAgICAgICB0aGlzLmNsZWFudXBGb3VydmVudWVzKCk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5mb3VydmVudWVzQ29udGFpbmVySWQpO1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LmlkID0gJ2Z2LXNjcmlwdCc7XG4gICAgICAgIHNjcmlwdC5zcmMgPSB0aGlzLmZyYW1lVXJsO1xuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VMaXN0ZW5lciA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YTtcblxuICAgICAgICAgICAgaWYgKGRhdGE/LmtleSA9PT0gJ3RvVG9wJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFudXBGb3VydmVudWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgICAgICBjb25zdCBvbGRTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnYtc2NyaXB0Jyk7XG4gICAgICAgIGlmIChvbGRTY3JpcHQpIHtcbiAgICAgICAgICAgIG9sZFNjcmlwdC5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZm91cnZlbnVlc0NvbnRhaW5lcklkKTtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXIgZ2VuZXJhbE1hcmdpblwiPlxuICAgIEBpZiAoaXNGb3VydmVudWVzKSB7XG4gICAgICAgIDxkaXYgW2lkXT1cImZvdXJ2ZW51ZXNDb250YWluZXJJZFwiPjwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKHNhZmVVcmwpIHtcbiAgICAgICAgPGlmcmFtZSBbc3JjXT1cInNhZmVVcmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XG4gICAgfVxuPC9kaXY+XG4iXX0=