tent-lib 1.14.7 → 1.14.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/components/atomic/dropdown/dropdown.component.mjs +12 -6
  2. package/esm2022/lib/components/core/guests-popup/guests-popup.component.mjs +13 -7
  3. package/esm2022/lib/components/core/hotel-about/hotel-about.component.mjs +7 -1
  4. package/esm2022/lib/components/core/location-map/location-map.component.mjs +12 -6
  5. package/esm2022/lib/components/core/modals/hotel-list-modal/hotel-list-modal.component.mjs +12 -6
  6. package/esm2022/lib/components/core/modals/menu-modal/menu-modal.component.mjs +18 -10
  7. package/esm2022/lib/components/core/motor/motor.component.mjs +3 -1
  8. package/esm2022/lib/components/core/offer-banner/offer-banner.component.mjs +13 -7
  9. package/esm2022/lib/components/core/smartvel/smartvel.component.mjs +3 -1
  10. package/esm2022/lib/components/core/tent-faq/tent-faq.component.mjs +31 -13
  11. package/esm2022/lib/components/core/tent-faq/tent-faq.interface.mjs +1 -1
  12. package/esm2022/lib/components/core/top-module/top-module.component.mjs +3 -1
  13. package/esm2022/lib/directives/lazy-background.directive.mjs +12 -5
  14. package/esm2022/services/dynamic-scripts/dynamic-scripts.service.mjs +14 -5
  15. package/fesm2022/tent-lib.mjs +120 -38
  16. package/fesm2022/tent-lib.mjs.map +1 -1
  17. package/lib/components/atomic/dropdown/dropdown.component.d.ts +2 -1
  18. package/lib/components/core/guests-popup/guests-popup.component.d.ts +4 -2
  19. package/lib/components/core/location-map/location-map.component.d.ts +3 -2
  20. package/lib/components/core/modals/hotel-list-modal/hotel-list-modal.component.d.ts +2 -1
  21. package/lib/components/core/modals/menu-modal/menu-modal.component.d.ts +2 -0
  22. package/lib/components/core/offer-banner/offer-banner.component.d.ts +3 -2
  23. package/lib/components/core/tent-faq/tent-faq.component.d.ts +4 -2
  24. package/lib/components/core/tent-faq/tent-faq.interface.d.ts +2 -0
  25. package/lib/directives/lazy-background.directive.d.ts +2 -1
  26. package/package.json +1 -1
  27. package/services/dynamic-scripts/dynamic-scripts.service.d.ts +2 -0
@@ -1,13 +1,17 @@
1
- import { Injectable } from '@angular/core';
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
2
3
  import * as i0 from "@angular/core";
3
4
  export class DynamicScriptService {
4
- constructor() {
5
+ constructor(platformId) {
6
+ this.platformId = platformId;
5
7
  this.loadedScripts = new Map();
6
8
  }
7
9
  /**
8
10
  * Carga un script desde una URL con atributos extra. Solo se carga una vez por `name`.
9
11
  */
10
12
  loadScriptByUrl(name, src, attributes = {}) {
13
+ if (!isPlatformBrowser(this.platformId))
14
+ return Promise.reject('No se puede cargar scripts en el servidor');
11
15
  // Si ya se está cargando o se cargó, reutiliza la promesa
12
16
  if (this.loadedScripts.has(name)) {
13
17
  return this.loadedScripts.get(name);
@@ -31,6 +35,8 @@ export class DynamicScriptService {
31
35
  * Ejecuta código JS en línea una sola vez.
32
36
  */
33
37
  executeInlineScript(name, code) {
38
+ if (!isPlatformBrowser(this.platformId))
39
+ return;
34
40
  if (this.loadedScripts.has(name))
35
41
  return;
36
42
  const script = document.createElement('script');
@@ -39,11 +45,14 @@ export class DynamicScriptService {
39
45
  document.body.appendChild(script);
40
46
  this.loadedScripts.set(name, Promise.resolve());
41
47
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicScriptService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicScriptService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
49
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicScriptService, providedIn: 'root' }); }
44
50
  }
45
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicScriptService, decorators: [{
46
52
  type: Injectable,
47
53
  args: [{ providedIn: 'root' }]
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zY3JpcHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW50L3NyYy9zZXJ2aWNlcy9keW5hbWljLXNjcmlwdHMvZHluYW1pYy1zY3JpcHRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVZLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7S0FnRDVEO0lBOUNHOztPQUVHO0lBQ0gsZUFBZSxDQUNYLElBQVksRUFDWixHQUFXLEVBQ1gsYUFBcUMsRUFBRTtRQUV2QywwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNqQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDbkM7WUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDZCQUE2QixJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBRXBFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0QyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUMxQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU87UUFFekMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDOytHQWhEUSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNTY3JpcHRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGxvYWRlZFNjcmlwdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxuICAgIC8qKlxuICAgICAqIENhcmdhIHVuIHNjcmlwdCBkZXNkZSB1bmEgVVJMIGNvbiBhdHJpYnV0b3MgZXh0cmEuIFNvbG8gc2UgY2FyZ2EgdW5hIHZleiBwb3IgYG5hbWVgLlxuICAgICAqL1xuICAgIGxvYWRTY3JpcHRCeVVybChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBzcmM6IHN0cmluZyxcbiAgICAgICAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIFNpIHlhIHNlIGVzdMOhIGNhcmdhbmRvIG8gc2UgY2FyZ8OzLCByZXV0aWxpemEgbGEgcHJvbWVzYVxuICAgICAgICBpZiAodGhpcy5sb2FkZWRTY3JpcHRzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkU2NyaXB0cy5nZXQobmFtZSkhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KGBFcnJvciBjYXJnYW5kbyBlbCBzY3JpcHQgXCIke25hbWV9XCJgKTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBHdWFyZGEgbGEgcHJvbWVzYSAoYXVucXVlIGVzdMOpIHBlbmRpZW50ZSlcbiAgICAgICAgdGhpcy5sb2FkZWRTY3JpcHRzLnNldChuYW1lLCBwcm9taXNlKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWplY3V0YSBjw7NkaWdvIEpTIGVuIGzDrW5lYSB1bmEgc29sYSB2ZXouXG4gICAgICovXG4gICAgZXhlY3V0ZUlubGluZVNjcmlwdChuYW1lOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2FkZWRTY3JpcHRzLmhhcyhuYW1lKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICBzY3JpcHQudGV4dCA9IGNvZGU7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgICAgICB0aGlzLmxvYWRlZFNjcmlwdHMuc2V0KG5hbWUsIFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICB9XG59XG4iXX0=
54
+ }], ctorParameters: () => [{ type: Object, decorators: [{
55
+ type: Inject,
56
+ args: [PLATFORM_ID]
57
+ }] }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1zY3JpcHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW50L3NyYy9zZXJ2aWNlcy9keW5hbWljLXNjcmlwdHMvZHluYW1pYy1zY3JpcHRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdoRSxNQUFNLE9BQU8sb0JBQW9CO0lBRzdCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFGbkQsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUVLLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxlQUFlLENBQ1gsSUFBWSxFQUNaLEdBQVcsRUFDWCxhQUFxQyxFQUFFO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3ZFLDBEQUEwRDtRQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7U0FDeEM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRXBCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNuQztZQUVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLElBQUksR0FBRyxDQUFDLENBQUM7WUFFcEUsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLElBQVksRUFBRSxJQUFZO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUNoRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU87UUFFekMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDOytHQXJEUSxvQkFBb0Isa0JBR1QsV0FBVzttSEFIdEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUlqQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1NjcmlwdFNlcnZpY2Uge1xuICAgIHByaXZhdGUgbG9hZGVkU2NyaXB0cyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHt9XG5cbiAgICAvKipcbiAgICAgKiBDYXJnYSB1biBzY3JpcHQgZGVzZGUgdW5hIFVSTCBjb24gYXRyaWJ1dG9zIGV4dHJhLiBTb2xvIHNlIGNhcmdhIHVuYSB2ZXogcG9yIGBuYW1lYC5cbiAgICAgKi9cbiAgICBsb2FkU2NyaXB0QnlVcmwoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgc3JjOiBzdHJpbmcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ05vIHNlIHB1ZWRlIGNhcmdhciBzY3JpcHRzIGVuIGVsIHNlcnZpZG9yJyk7XG4gICAgICAgIC8vIFNpIHlhIHNlIGVzdMOhIGNhcmdhbmRvIG8gc2UgY2FyZ8OzLCByZXV0aWxpemEgbGEgcHJvbWVzYVxuICAgICAgICBpZiAodGhpcy5sb2FkZWRTY3JpcHRzLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkU2NyaXB0cy5nZXQobmFtZSkhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KGBFcnJvciBjYXJnYW5kbyBlbCBzY3JpcHQgXCIke25hbWV9XCJgKTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBHdWFyZGEgbGEgcHJvbWVzYSAoYXVucXVlIGVzdMOpIHBlbmRpZW50ZSlcbiAgICAgICAgdGhpcy5sb2FkZWRTY3JpcHRzLnNldChuYW1lLCBwcm9taXNlKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWplY3V0YSBjw7NkaWdvIEpTIGVuIGzDrW5lYSB1bmEgc29sYSB2ZXouXG4gICAgICovXG4gICAgZXhlY3V0ZUlubGluZVNjcmlwdChuYW1lOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMubG9hZGVkU2NyaXB0cy5oYXMobmFtZSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgc2NyaXB0LnRleHQgPSBjb2RlO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiAgICAgICAgdGhpcy5sb2FkZWRTY3JpcHRzLnNldChuYW1lLCBQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgfVxufVxuIl19