ng-easycommerce-v18 0.3.20-beta.1 → 0.3.20

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 (50) hide show
  1. package/README.md +1 -12
  2. package/esm2022/lib/constants/api.constants.service.mjs +15 -19
  3. package/esm2022/lib/constants/core.constants.service.mjs +5 -5
  4. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -17
  5. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +16 -26
  6. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +21 -25
  7. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +16 -4
  8. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +6 -31
  9. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +21 -29
  10. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +7 -12
  11. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +9 -18
  12. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +6 -12
  13. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -6
  14. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  15. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -10
  16. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +18 -17
  17. package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
  18. package/esm2022/lib/ec-services/index.mjs +1 -3
  19. package/esm2022/lib/interceptors/index.mjs +1 -2
  20. package/esm2022/lib/interfaces/environment.mjs +1 -1
  21. package/esm2022/lib/interfaces/filter.mjs +1 -1
  22. package/esm2022/lib/interfaces/index.mjs +1 -2
  23. package/esm2022/lib/interfaces/options.mjs +1 -1
  24. package/esm2022/lib/providers/index.mjs +1 -2
  25. package/fesm2022/ng-easycommerce-v18.mjs +208 -694
  26. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  27. package/lib/constants/api.constants.service.d.ts +0 -1
  28. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
  29. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
  30. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +4 -12
  31. package/lib/ec-services/analytics/google-analytics.service.d.ts +1 -1
  32. package/lib/ec-services/analytics/gtm.service.d.ts +2 -2
  33. package/lib/ec-services/index.d.ts +0 -2
  34. package/lib/interceptors/index.d.ts +0 -1
  35. package/lib/interfaces/environment.d.ts +0 -1
  36. package/lib/interfaces/filter.d.ts +0 -1
  37. package/lib/interfaces/index.d.ts +0 -1
  38. package/lib/interfaces/options.d.ts +0 -2
  39. package/lib/providers/index.d.ts +0 -1
  40. package/package.json +1 -1
  41. package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
  42. package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -190
  43. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +0 -41
  44. package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
  45. package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -42
  46. package/lib/ec-services/base-api.service.d.ts +0 -64
  47. package/lib/ec-services/runtime-config.service.d.ts +0 -63
  48. package/lib/interceptors/runtime-config.interceptor.d.ts +0 -7
  49. package/lib/interfaces/runtime-config.d.ts +0 -22
  50. package/lib/providers/provideRuntimeConfig.d.ts +0 -13
@@ -70,34 +70,30 @@ export class PasswordResetEcComponent extends ComponentHelper {
70
70
  };
71
71
  sendToLogin = () => this.router.navigateByUrl('/auth/login');
72
72
  showPassword = () => {
73
- if (typeof document !== 'undefined') {
74
- const passwordInput = document.getElementById('contraseña1');
75
- const showIcon = document.getElementById('show1');
76
- const hideIcon = document.getElementById('hide1');
77
- if (passwordInput && passwordInput.type === 'password') {
78
- passwordInput.type = 'text';
79
- }
80
- else if (passwordInput) {
81
- passwordInput.type = 'password';
82
- }
83
- showIcon?.classList.toggle('d-none');
84
- hideIcon?.classList.toggle('d-none');
73
+ const passwordInput = document.getElementById('contraseña1');
74
+ const showIcon = document.getElementById('show1');
75
+ const hideIcon = document.getElementById('hide1');
76
+ if (passwordInput.type === 'password') {
77
+ passwordInput.type = 'text';
85
78
  }
79
+ else {
80
+ passwordInput.type = 'password';
81
+ }
82
+ showIcon?.classList.toggle('d-none');
83
+ hideIcon?.classList.toggle('d-none');
86
84
  };
87
85
  showPassword2 = () => {
88
- if (typeof document !== 'undefined') {
89
- const passwordInput = document.getElementById('contraseña2');
90
- const showIcon = document.getElementById('show2');
91
- const hideIcon = document.getElementById('hide2');
92
- if (passwordInput && passwordInput.type === 'password') {
93
- passwordInput.type = 'text';
94
- }
95
- else if (passwordInput) {
96
- passwordInput.type = 'password';
97
- }
98
- showIcon?.classList.toggle('d-none');
99
- hideIcon?.classList.toggle('d-none');
86
+ const passwordInput = document.getElementById('contraseña2');
87
+ const showIcon = document.getElementById('show2');
88
+ const hideIcon = document.getElementById('hide2');
89
+ if (passwordInput.type === 'password') {
90
+ passwordInput.type = 'text';
91
+ }
92
+ else {
93
+ passwordInput.type = 'password';
100
94
  }
95
+ showIcon?.classList.toggle('d-none');
96
+ hideIcon?.classList.toggle('d-none');
101
97
  };
102
98
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PasswordResetEcComponent, deps: [{ token: i1.AuthService }, { token: i1.ToastService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
103
99
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PasswordResetEcComponent, isStandalone: true, selector: "app-password-reset-ec", usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\n <div class=\"row justify-content-center py-5\">\n <div class=\"col-12 col-md-6 col-lg-4\">\n @if(!ready){\n <form [formGroup]=\"formGroup\" (submit)=\"sendNewPassword($event)\">\n <div class=\"mb-4 text-center\">\n <h3>{{ 'set-new-password' | translate }}</h3>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{ 'set-password' | translate }}</label>\n <div class=\"input-group\">\n <input type=\"password\" formControlName=\"first\" class=\"form-control\" id=\"contrase\u00F1a1\" />\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword()\">\n <i id=\"show1\" class=\"fas fa-eye i-show-password\"></i>\n <i id=\"hide1\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\n </button>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{ 'repeat-password' | translate }}</label>\n <div class=\"input-group\">\n <input type=\"password\" formControlName=\"second\" class=\"form-control\" id=\"contrase\u00F1a2\" />\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword2()\">\n <i id=\"show2\" class=\"fas fa-eye i-show-password\"></i>\n <i id=\"hide2\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\n </button>\n </div>\n </div>\n <div class=\"mt-4 text-center\">\n <button type=\"submit\" class=\"comprar w-100\">{{ 'update' | translate }}</button>\n </div>\n @if(loading){\n <app-loading-inline-ec></app-loading-inline-ec>\n }\n </form>\n }@else {<div class=\"row justify-content-center mt-5 mb-5\">\n <div class=\"text-center\">\n <div class=\"mb-4\">\n <h3>{{ 'updated-password' | translate }}</h3>\n </div>\n <div class=\"mb-4\">\n <h5>{{ 'updated-password-detail' | translate }}</h5>\n </div>\n <button class=\"comprar\" (click)=\"sendToLogin()\">{{ 'login' | translate }}</button>\n </div>\n </div>}\n\n\n\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
@@ -106,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
106
102
  type: Component,
107
103
  args: [{ selector: 'app-password-reset-ec', imports: [TranslateModule, LoadingInlineEcComponent, ReactiveFormsModule], standalone: true, template: "<div class=\"container\">\n <div class=\"row justify-content-center py-5\">\n <div class=\"col-12 col-md-6 col-lg-4\">\n @if(!ready){\n <form [formGroup]=\"formGroup\" (submit)=\"sendNewPassword($event)\">\n <div class=\"mb-4 text-center\">\n <h3>{{ 'set-new-password' | translate }}</h3>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{ 'set-password' | translate }}</label>\n <div class=\"input-group\">\n <input type=\"password\" formControlName=\"first\" class=\"form-control\" id=\"contrase\u00F1a1\" />\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword()\">\n <i id=\"show1\" class=\"fas fa-eye i-show-password\"></i>\n <i id=\"hide1\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\n </button>\n </div>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{ 'repeat-password' | translate }}</label>\n <div class=\"input-group\">\n <input type=\"password\" formControlName=\"second\" class=\"form-control\" id=\"contrase\u00F1a2\" />\n <button class=\"btn btn-outline-secondary btn-password\" type=\"button\" (click)=\"showPassword2()\">\n <i id=\"show2\" class=\"fas fa-eye i-show-password\"></i>\n <i id=\"hide2\" class=\"fas fa-eye-slash d-none i-show-password\"></i>\n </button>\n </div>\n </div>\n <div class=\"mt-4 text-center\">\n <button type=\"submit\" class=\"comprar w-100\">{{ 'update' | translate }}</button>\n </div>\n @if(loading){\n <app-loading-inline-ec></app-loading-inline-ec>\n }\n </form>\n }@else {<div class=\"row justify-content-center mt-5 mb-5\">\n <div class=\"text-center\">\n <div class=\"mb-4\">\n <h3>{{ 'updated-password' | translate }}</h3>\n </div>\n <div class=\"mb-4\">\n <h5>{{ 'updated-password-detail' | translate }}</h5>\n </div>\n <button class=\"comprar\" (click)=\"sendToLogin()\">{{ 'login' | translate }}</button>\n </div>\n </div>}\n\n\n\n </div>\n </div>\n</div>" }]
108
104
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i1.ToastService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.FormBuilder }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYXV0aC1lYy9wYXNzd29yZC1yZXNldC1lYy9wYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3Bhc3N3b3JkLXJlc2V0LWVjL3Bhc3N3b3JkLXJlc2V0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUEwQixVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7QUFRNUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUFRbEM7SUFBb0M7SUFBZ0M7SUFDOUU7SUFBMEI7SUFQL0IsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNYLEtBQUssQ0FBcUI7SUFDN0IsU0FBUyxDQUFhO0lBRTdCLFlBQXNCLFdBQXdCLEVBQVksTUFBb0IsRUFBWSxZQUE0QixFQUMxRyxNQUFjLEVBQVksV0FBd0I7UUFDekQsS0FBSyxFQUFFLENBQUM7UUFGUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFZLFdBQU0sR0FBTixNQUFN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LENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNOLENBQUMsQ0FBQTt3R0F6Rk8sd0JBQXdCOzRGQUF4Qix3QkFBd0Isd0dDZHJDLHlwRkFtRE0seUREeENTLGVBQWUsNEZBQUUsd0JBQXdCLG1GQUFFLG1CQUFtQjs7NEZBR2hFLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDSyx1QkFBdUIsV0FHeEIsQ0FBQyxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLENBQUMsY0FDN0QsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ0lubGluZUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy1lYyc7XG5AQ29tcG9uZW50KHtcbiAgICAgc2VsZWN0b3I6ICdhcHAtcGFzc3dvcmQtcmVzZXQtZWMnLFxuICAgICB0ZW1wbGF0ZVVybDogJ3Bhc3N3b3JkLXJlc2V0LWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICAgc3R5bGVVcmxzOiBbJ3Bhc3N3b3JkLXJlc2V0LWVjLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIExvYWRpbmdJbmxpbmVFY0NvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRSZXNldEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgICBwdWJsaWMgZW1haWwgPSBcIlwiO1xuICAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICAgICBwdWJsaWMgcmVhZHkgPSBmYWxzZTtcbiAgICAgcHJvdGVjdGVkIHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgIHB1YmxpYyBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG5cbiAgICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLCBwcm90ZWN0ZWQgYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgIH1cblxuICAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdGhpcy5hY3RpdmVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3Rva2VuJ107XG4gICAgICAgICAgIXRoaXMudG9rZW4gJiYgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICBmaXJzdDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgIHNlY29uZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5lY09uSW5pdCgpXG5cbiAgICAgfVxuXG4gICAgIHNlbmROZXdQYXNzd29yZCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICh0aGlzLmludmFsaWRGb3JtKCkpIHJldHVybjtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucGFzc3dvcmRSZXNldCh0aGlzLmZvcm1Hcm91cC52YWx1ZS5maXJzdCwgdGhpcy50b2tlbiA/PyAnJykudG9Qcm9taXNlKClcbiAgICAgICAgICAgICAgIC50aGVuKHRoaXMucHJvY2Vzc09rKVxuICAgICAgICAgICAgICAgLmNhdGNoKHRoaXMucHJvY2Vzc0Vycm9yKTtcbiAgICAgfVxuXG4gICAgIGludmFsaWRGb3JtID0gKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgICAgY29uc3QgcGFzc3dvcmRzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgICAgICAgICAgICBpZiAocGFzc3dvcmRzLmZpcnN0ID09IHBhc3N3b3Jkcy5zZWNvbmQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdHIuc2hvdygncGFzc3dvcmQtZG9lc250LW1hdGNoJyk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICB9XG5cbiAgICAgcHJvY2Vzc09rID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcbiAgICAgfVxuXG4gICAgIHByb2Nlc3NFcnJvciA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgKCFyZXNwb25zZSB8fCByZXNwb25zZS5lcnJvcilcbiAgICAgICAgICAgICAgID8gdGhpcy50b2FzdHIuc2hvdygnb3BlcmF0aW9uLWVycm9yJylcbiAgICAgICAgICAgICAgIDogdGhpcy50b2FzdHIuc2hvdyhyZXNwb25zZS5lcnJvcik7XG4gICAgIH1cblxuICAgICBzZW5kVG9Mb2dpbiA9ICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hdXRoL2xvZ2luJyk7XG5cbiAgICAgc2hvd1Bhc3N3b3JkID0gKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICBjb25zdCBwYXNzd29yZElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRyYXNlw7FhMScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAgICBjb25zdCBzaG93SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG93MScpO1xuICAgICAgICAgICAgICAgY29uc3QgaGlkZUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZTEnKTtcblxuICAgICAgICAgICAgICAgaWYgKHBhc3N3b3JkSW5wdXQgJiYgcGFzc3dvcmRJbnB1dC50eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFzc3dvcmRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZElucHV0LnR5cGUgPSAncGFzc3dvcmQnO1xuICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICBzaG93SWNvbj8uY2xhc3NMaXN0LnRvZ2dsZSgnZC1ub25lJyk7XG4gICAgICAgICAgICAgICBoaWRlSWNvbj8uY2xhc3NMaXN0LnRvZ2dsZSgnZC1ub25lJyk7XG4gICAgICAgICAgfVxuICAgICB9XG5cbiAgICAgc2hvd1Bhc3N3b3JkMiA9ICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgY29uc3QgcGFzc3dvcmRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250cmFzZcOxYTInKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgICAgY29uc3Qgc2hvd0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvdzInKTtcbiAgICAgICAgICAgICAgIGNvbnN0IGhpZGVJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGUyJyk7XG5cbiAgICAgICAgICAgICAgIGlmIChwYXNzd29yZElucHV0ICYmIHBhc3N3b3JkSW5wdXQudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZElucHV0LnR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhc3N3b3JkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgc2hvd0ljb24/LmNsYXNzTGlzdC50b2dnbGUoJ2Qtbm9uZScpO1xuICAgICAgICAgICAgICAgaGlkZUljb24/LmNsYXNzTGlzdC50b2dnbGUoJ2Qtbm9uZScpO1xuICAgICAgICAgIH1cbiAgICAgfVxufSIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgcHktNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IGNvbC1sZy00XCI+XG4gICAgICAgICAgICBAaWYoIXJlYWR5KXtcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKHN1Ym1pdCk9XCJzZW5kTmV3UGFzc3dvcmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnc2V0LW5ldy1wYXNzd29yZCcgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAnc2V0LXBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvbnRyYXNlw7FhMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tcGFzc3dvcmRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNob3dQYXNzd29yZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJzaG93MVwiIGNsYXNzPVwiZmFzIGZhLWV5ZSBpLXNob3ctcGFzc3dvcmRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJoaWRlMVwiIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaCBkLW5vbmUgaS1zaG93LXBhc3N3b3JkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eyAncmVwZWF0LXBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInNlY29uZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250cmFzZcOxYTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXBhc3N3b3JkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93UGFzc3dvcmQyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cInNob3cyXCIgY2xhc3M9XCJmYXMgZmEtZXllIGktc2hvdy1wYXNzd29yZFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cImhpZGUyXCIgY2xhc3M9XCJmYXMgZmEtZXllLXNsYXNoIGQtbm9uZSBpLXNob3ctcGFzc3dvcmRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJjb21wcmFyIHctMTAwXCI+e3sgJ3VwZGF0ZScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBAaWYobG9hZGluZyl7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbG9hZGluZy1pbmxpbmUtZWM+PC9hcHAtbG9hZGluZy1pbmxpbmUtZWM+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgfUBlbHNlIHs8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtNSBtYi01XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+e3sgJ3VwZGF0ZWQtcGFzc3dvcmQnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+e3sgJ3VwZGF0ZWQtcGFzc3dvcmQtZGV0YWlsJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29tcHJhclwiIChjbGljayk9XCJzZW5kVG9Mb2dpbigpXCI+e3sgJ2xvZ2luJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+fVxuXG5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYXV0aC1lYy9wYXNzd29yZC1yZXNldC1lYy9wYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3Bhc3N3b3JkLXJlc2V0LWVjL3Bhc3N3b3JkLXJlc2V0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUEwQixVQUFVLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7QUFRNUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUFRbEM7SUFBb0M7SUFBZ0M7SUFDOUU7SUFBMEI7SUFQL0IsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNYLEtBQUssQ0FBcUI7SUFDN0IsU0FBUyxDQUFhO0lBRTdCLFlBQXNCLFdBQXdCLEVBQVksTUFBb0IsRUFBWSxZQUE0QixFQUMxRyxNQUFjLEVBQVksV0FBd0I7UUFDekQsS0FBSyxFQUFFLENBQUM7UUFGUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFZLFdBQU0sR0FBTixNQUFN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LHVCQUF1QixXQUd4QixDQUFDLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsQ0FBQyxjQUM3RCxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2FkaW5nSW5saW5lRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcbkBDb21wb25lbnQoe1xuICAgICBzZWxlY3RvcjogJ2FwcC1wYXNzd29yZC1yZXNldC1lYycsXG4gICAgIHRlbXBsYXRlVXJsOiAncGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFsncGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LnNjc3MnXSxcbiAgICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTG9hZGluZ0lubGluZUVjQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFJlc2V0RWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgIHB1YmxpYyBlbWFpbCA9IFwiXCI7XG4gICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gICAgIHB1YmxpYyByZWFkeSA9IGZhbHNlO1xuICAgICBwcm90ZWN0ZWQgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgcHVibGljIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcblxuICAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcm90ZWN0ZWQgdG9hc3RyOiBUb2FzdFNlcnZpY2UsIHByb3RlY3RlZCBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICAgfVxuXG4gICAgIG5nT25Jbml0KCkge1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmFjdGl2ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sndG9rZW4nXTtcbiAgICAgICAgICAhdGhpcy50b2tlbiAmJiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgIGZpcnN0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgc2Vjb25kOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgICB9XG5cbiAgICAgc2VuZE5ld1Bhc3N3b3JkID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKHRoaXMuaW52YWxpZEZvcm0oKSkgcmV0dXJuO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wYXNzd29yZFJlc2V0KHRoaXMuZm9ybUdyb3VwLnZhbHVlLmZpcnN0LCB0aGlzLnRva2VuID8/ICcnKS50b1Byb21pc2UoKVxuICAgICAgICAgICAgICAgLnRoZW4odGhpcy5wcm9jZXNzT2spXG4gICAgICAgICAgICAgICAuY2F0Y2godGhpcy5wcm9jZXNzRXJyb3IpO1xuICAgICB9XG5cbiAgICAgaW52YWxpZEZvcm0gPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICAgICAgICAgICBjb25zdCBwYXNzd29yZHMgPSB0aGlzLmZvcm1Hcm91cC52YWx1ZTtcbiAgICAgICAgICAgICAgIGlmIChwYXNzd29yZHMuZmlyc3QgPT0gcGFzc3dvcmRzLnNlY29uZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvYXN0ci5zaG93KCdwYXNzd29yZC1kb2VzbnQtbWF0Y2gnKTtcbiAgICAgICAgICB9IGVsc2UgdGhpcy50b2FzdHIuc2hvdygnaW52YWxpZC1mb3JtJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgIH1cblxuICAgICBwcm9jZXNzT2sgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xuICAgICB9XG5cbiAgICAgcHJvY2Vzc0Vycm9yID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmVycm9yKVxuICAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0ci5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxuICAgICAgICAgICAgICAgOiB0aGlzLnRvYXN0ci5zaG93KHJlc3BvbnNlLmVycm9yKTtcbiAgICAgfVxuXG4gICAgIHNlbmRUb0xvZ2luID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2F1dGgvbG9naW4nKTtcblxuICAgICBzaG93UGFzc3dvcmQgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFzc3dvcmRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250cmFzZcOxYTEnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgIGNvbnN0IHNob3dJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3cxJyk7XG4gICAgICAgICAgY29uc3QgaGlkZUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZTEnKTtcblxuICAgICAgICAgIGlmIChwYXNzd29yZElucHV0LnR5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICAgICAgIHBhc3N3b3JkSW5wdXQudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzaG93SWNvbj8uY2xhc3NMaXN0LnRvZ2dsZSgnZC1ub25lJyk7XG4gICAgICAgICAgaGlkZUljb24/LmNsYXNzTGlzdC50b2dnbGUoJ2Qtbm9uZScpO1xuICAgICB9XG5cbiAgICAgc2hvd1Bhc3N3b3JkMiA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXNzd29yZElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRyYXNlw7FhMicpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgY29uc3Qgc2hvd0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvdzInKTtcbiAgICAgICAgICBjb25zdCBoaWRlSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRlMicpO1xuXG4gICAgICAgICAgaWYgKHBhc3N3b3JkSW5wdXQudHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgICAgcGFzc3dvcmRJbnB1dC50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICBwYXNzd29yZElucHV0LnR5cGUgPSAncGFzc3dvcmQnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNob3dJY29uPy5jbGFzc0xpc3QudG9nZ2xlKCdkLW5vbmUnKTtcbiAgICAgICAgICBoaWRlSWNvbj8uY2xhc3NMaXN0LnRvZ2dsZSgnZC1ub25lJyk7XG4gICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB5LTVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBjb2wtbGctNFwiPlxuICAgICAgICAgICAgQGlmKCFyZWFkeSl7XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChzdWJtaXQpPVwic2VuZE5ld1Bhc3N3b3JkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+e3sgJ3NldC1uZXctcGFzc3dvcmQnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ3NldC1wYXNzd29yZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb250cmFzZcOxYTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXBhc3N3b3JkXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93UGFzc3dvcmQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwic2hvdzFcIiBjbGFzcz1cImZhcyBmYS1leWUgaS1zaG93LXBhc3N3b3JkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiaGlkZTFcIiBjbGFzcz1cImZhcyBmYS1leWUtc2xhc2ggZC1ub25lIGktc2hvdy1wYXNzd29yZFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgJ3JlcGVhdC1wYXNzd29yZCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWNvbmRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udHJhc2XDsWEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1wYXNzd29yZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkMigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJzaG93MlwiIGNsYXNzPVwiZmFzIGZhLWV5ZSBpLXNob3ctcGFzc3dvcmRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJoaWRlMlwiIGNsYXNzPVwiZmFzIGZhLWV5ZS1zbGFzaCBkLW5vbmUgaS1zaG93LXBhc3N3b3JkXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiY29tcHJhciB3LTEwMFwiPnt7ICd1cGRhdGUnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgQGlmKGxvYWRpbmcpe1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctaW5saW5lLWVjPjwvYXBwLWxvYWRpbmctaW5saW5lLWVjPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIH1AZWxzZSB7PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTUgbWItNVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICd1cGRhdGVkLXBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7ICd1cGRhdGVkLXBhc3N3b3JkLWRldGFpbCcgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbXByYXJcIiAoY2xpY2spPVwic2VuZFRvTG9naW4oKVwiPnt7ICdsb2dpbicgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2Pn1cblxuXG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, PLATFORM_ID, signal } from '@angular/core';
2
2
  import { BlockEcComponent } from '../../abstractions-components';
3
3
  import { AnalyticsService } from '../../../ec-services';
4
- import { CommonModule, isPlatformBrowser } from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
5
  // import function to register Swiper custom elements
6
6
  import { register } from 'swiper/element/bundle';
7
7
  import { ProductEcComponent } from "../../product-ec/product-ec.component";
@@ -78,12 +78,24 @@ export class BlockProductsEcComponent extends BlockEcComponent {
78
78
  * Esta función puede ser movida al componente base para reutilización.
79
79
  */
80
80
  initializeSwiperWithCustomNavigation() {
81
- if (!isPlatformBrowser(this.platformId) || typeof document === 'undefined')
82
- return;
83
81
  const prevButton = document.getElementById(`${this.meta?.code}-prev`);
84
82
  const nextButton = document.getElementById(`${this.meta?.code}-next`);
85
83
  const swiperElement = document.getElementById(this.meta?.code);
86
84
  if (prevButton && nextButton && swiperElement) {
85
+ // console.log('Configurando navegación personalizada para:', this.meta?.code);
86
+ const swiperConfig = this.getSwiperConfiguration();
87
+ // Verificar si el Swiper ya está inicializado
88
+ if (!swiperElement.swiper) {
89
+ this.initializeNewSwiper(swiperElement, swiperConfig);
90
+ }
91
+ else {
92
+ this.updateExistingSwiper(swiperElement);
93
+ }
94
+ // Configurar los event listeners para los botones
95
+ this.setupNavigationEventListeners(prevButton, nextButton, swiperElement);
96
+ // console.log('Event listeners configurados para los botones de navegación');
97
+ }
98
+ else {
87
99
  // console.log('No se pudieron encontrar los elementos:', {
88
100
  // prevButton: !!prevButton,
89
101
  // nextButton: !!nextButton,
@@ -204,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
204
216
  required: true
205
217
  }]
206
218
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvZHVjdHMtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1wcm9kdWN0cy1lYy9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLHFEQUFxRDtBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFtQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7QUFFM0UsUUFBUSxFQUFFLENBQUE7QUFDVjs7OztHQUlHO0FBU0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCwrQ0FBK0M7SUFDaEQseUVBQXlFO0lBQ2hFLGNBQWMsQ0FBVSxDQUFDLG1DQUFtQztJQUM1RCxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7SUFDNUQsYUFBYSxHQUFXLEdBQUcsQ0FBQztJQUM1QixhQUFh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WUFDMUMsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsMkNBQTJDO1lBQzNDLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMxQixhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7d0dBdkxXLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHNUQ3ZCckMsbTdGQW9FYyx5RERsREgsWUFBWSxvU0FBRSxrQkFBa0I7OzRGQUs5Qix3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0MsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxXQUdsQyxDQUFDLHNCQUFzQixDQUFDO3dEQUt4QixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQVlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUgsUUFBUTtzQkFGVixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQU1FLElBQUk7c0JBRk4sS0FBSzt1QkFBQzt3QkFDTixRQUFRLEVBQUUsSUFBSTtxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QsIElucHV0LCBQTEFURk9STV9JRCwgc2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmxvY2tFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy1jb21wb25lbnRzJztcbmltcG9ydCB7IFN3aXBlck9wdGlvbnMgfSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuLy8gaW1wb3J0IGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIFN3aXBlciBjdXN0b20gZWxlbWVudHNcbmltcG9ydCB7IHJlZ2lzdGVyLCBTd2lwZXJDb250YWluZXIgfSBmcm9tICdzd2lwZXIvZWxlbWVudC9idW5kbGUnO1xuaW1wb3J0IHsgUHJvZHVjdEVjQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3Byb2R1Y3QtZWMvcHJvZHVjdC1lYy5jb21wb25lbnRcIjtcblxucmVnaXN0ZXIoKVxuLyoqXG4gKiBDb21wb25lbiBwYXJhIG1hbmVqYXIgbG9zIGJsb3F1ZXMgZGUgcHJvZHVjdG9zLlxuICogQGV4dGVuZHMge0Jsb2NrRWNDb21wb25lbnR9XG4gKiBAY2xhc3MgQmxvY2tQcm9kdWN0c0VjQ29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1wcm9kdWN0cy1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFByb2R1Y3RFY0NvbXBvbmVudF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQuc2NzcycsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja1Byb2R1Y3RzRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdFx0Ly8gUGVyc29uYWxpemFjacOzbiBkZSBsYXMgZmxlY2hhcyBkZSBuYXZlZ2FjacOzblxuXHQvLyBQb3IgZGVmZWN0byB1c2Egc8OtbWJvbG9zIGRlIHRleHRvLCBwZXJvIHNlIHB1ZWRlbiBlc3BlY2lmaWNhciBpbcOhZ2VuZXNcblx0QElucHV0KCkgcHJldkFycm93SW1hZ2U/OiBzdHJpbmc7IC8vIHVuZGVmaW5lZCA9IHVzYSBzw61tYm9sbyBkZSB0ZXh0b1xuXHRASW5wdXQoKSBuZXh0QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXG5cdEBJbnB1dCgpIHByZXZBcnJvd1RleHQ6IHN0cmluZyA9ICc8Jztcblx0QElucHV0KCkgbmV4dEFycm93VGV4dDogc3RyaW5nID0gJz4nO1xuXHQvKipcblx0ICogU2VydmljaW8gZGUgQW5hbHl0aWNzXG5cdCAqL1xuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSlcblx0LyoqXG5cdCAqIFNpZ25hbCB1dGxpemFkbyBwYXJhIGd1YXJkYSBlbCBjb250ZW5lZG9yIGRlbCBjYXJydXNlbFxuXHQgKi9cblx0c3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKVxuXHQvKipcblx0ICogSW5wdXQgcXVlIHJlY2liZSB1biB0ZW1wbGF0ZSBwYXJhIGVsIHByb2R1Y3RvLlxuXHQgKi9cblx0QElucHV0KCkgYXBwUHJvZHVjdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblx0LyoqXG5cdCAqIENvbGVjY2nDs24gZGUgcHJvZHVjdG9zLlxuXHQgKi9cblx0QElucHV0KHtcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KSBwcm9kdWN0czogYW55OyAvLyBQcm9kdWN0W107XG5cdC8qKlxuXHQgKiBCbG9xdWUgcHJpbmNpcGFsIHF1ZSBjb250aWVuZSBsb3MgcHJvZHVjdG9zXG5cdCAqL1xuXHRASW5wdXQoe1xuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pIG1ldGE6IGFueTtcblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5zZXR1cFN3aXBlck5hdmlnYXRpb24oKTtcblx0fVxuXHRcblx0cHJpdmF0ZSBkb2N1bWVudD86IERvY3VtZW50O1xuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcblxuXHQvKipcblx0ICogRWplY3V0YSBlbCBtw6l0b2RvIGBhZnRlck5leHRSZW5kZXJgcGFyYSBjYXJnYXIgbGFzIGNvbmZpZ3VyYWNpb25lcyBuZWNlc2FyaWFzIFxuXHQgKiBwYXJhIGVsIGNhcnJ1c2VsIGRlbCBiYW5uZXJzLiBFc3RvIGRlYmUgc2VyIGFzaSBkZWJpZG8gYSBxdWUgeWEgZGViZSBlc3RhciBwcmVzZW50ZVxuXHQgKiBlbiBlbCBEb20gZWwgZWxlbWVudCBgPHN3aXBlci1jb250YWluZXI+YCBwYXJhIHBvZGVyIGNvbmZpZ3VyYXJsby5cblx0ICovXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKClcblx0fVxuXHQvKipcblx0ICogQXBsaWNhIGVsIGV2ZW50byBgc2VsZWN0X3Byb21vdGlvbmAganVudG8gY29uIGVsIGJhbm5lciBxdWUgaW50ZXJhY3R1YS5cblx0ICogQHBhcmFtIGJhbm5lciBcblx0ICovXG5cdHNlbGVjdFByb21vdGlvbihpdGVtOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdzZWxlY3RfcHJvbW90aW9uJywgaXRlbSlcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmEgbGEgbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBkZWwgU3dpcGVyLlxuXHQgKiBFc3RhIGZ1bmNpw7NuIGVzdMOhIGRpc2XDsWFkYSBwYXJhIHNlciBtb3ZpZGEgYWwgY29tcG9uZW50ZSBiYXNlIEJsb2NrUHJvZHVjdHNFY0NvbXBvbmVudC5cblx0ICogUGVybWl0ZSBwZXJzb25hbGl6YWNpw7NuIGRlIGxhcyBpbcOhZ2VuZXMgZGUgbGFzIGZsZWNoYXMgbWVkaWFudGUgQElucHV0LlxuXHQgKi9cblx0cHJpdmF0ZSBzZXR1cFN3aXBlck5hdmlnYXRpb24oKSB7XG5cdFx0aWYgKHRoaXMubWV0YT8uc3R5bGVzPy5jYXJyb3VzZWwgIT09IGZhbHNlKSB7XG5cdFx0XHQvLyBVc2FyIHNldFRpbWVvdXQgcGFyYSBhc2VndXJhciBxdWUgZWwgc3dpcGVyIGVzdMOpIGluaWNpYWxpemFkb1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5pdGlhbGl6ZVN3aXBlcldpdGhDdXN0b21OYXZpZ2F0aW9uKCk7XG5cdFx0XHR9LCAyMDApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbmljaWFsaXphIGVsIFN3aXBlciBjb24gbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYS5cblx0ICogRXN0YSBmdW5jacOzbiBwdWVkZSBzZXIgbW92aWRhIGFsIGNvbXBvbmVudGUgYmFzZSBwYXJhIHJldXRpbGl6YWNpw7NuLlxuXHQgKi9cblx0cHJpdmF0ZSBpbml0aWFsaXplU3dpcGVyV2l0aEN1c3RvbU5hdmlnYXRpb24oKSB7XG5cdFx0aWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuXHRcdGNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLm1ldGE/LmNvZGV9LXByZXZgKTtcblx0XHRjb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1uZXh0YCk7XG5cdFx0Y29uc3Qgc3dpcGVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWV0YT8uY29kZSkgYXMgYW55O1xuXG5cdFx0aWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnTm8gc2UgcHVkaWVyb24gZW5jb250cmFyIGxvcyBlbGVtZW50b3M6Jywge1xuXHRcdFx0Ly8gXHRwcmV2QnV0dG9uOiAhIXByZXZCdXR0b24sXG5cdFx0XHQvLyBcdG5leHRCdXR0b246ICEhbmV4dEJ1dHRvbixcblx0XHRcdC8vIFx0c3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XG5cdFx0XHQvLyB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBiYXNlIGRlbCBTd2lwZXIuXG5cdCAqIEVzdGEgY29uZmlndXJhY2nDs24gcHVlZGUgc2VyIHBlcnNvbmFsaXphZGEgZW4gZWwgZnV0dXJvIG1lZGlhbnRlIEBJbnB1dC5cblx0ICovXG5cdHByaXZhdGUgZ2V0U3dpcGVyQ29uZmlndXJhdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2xpZGVzUGVyVmlldzogJ2F1dG8nLFxuXHRcdFx0c3BhY2VCZXR3ZWVuOiAxNixcblx0XHRcdHNsaWRlc1Blckdyb3VwOiAxLCAvLyBJbXBvcnRhbnRlOiBtb3ZlcnNlIGRlIHVubyBlbiB1bm9cblx0XHRcdG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xuXHRcdFx0cGFnaW5hdGlvbjogZmFsc2UsXG5cdFx0XHRsb29wOiB0cnVlLFxuXHRcdFx0Z3JhYkN1cnNvcjogdHJ1ZSxcblx0XHRcdGF1dG9wbGF5OiB0cnVlLFxuXHRcdFx0YnJlYWtwb2ludHM6IHtcblx0XHRcdFx0MzIwOiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogMSxcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDgsXG5cdFx0XHRcdFx0c2xpZGVzUGVyR3JvdXA6IDFcblx0XHRcdFx0fSxcblx0XHRcdFx0NTc2OiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogMixcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDEyLFxuXHRcdFx0XHRcdHNsaWRlc1Blckdyb3VwOiAxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdDc2ODoge1xuXHRcdFx0XHRcdHNsaWRlc1BlclZpZXc6IDMsXG5cdFx0XHRcdFx0c3BhY2VCZXR3ZWVuOiAxNixcblx0XHRcdFx0XHRzbGlkZXNQZXJHcm91cDogMVxuXHRcdFx0XHR9LFxuXHRcdFx0XHQxMDI0OiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogNCxcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDE2LFxuXHRcdFx0XHRcdHNsaWRlc1Blckdyb3VwOiAxXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaWNpYWxpemEgdW4gbnVldm8gU3dpcGVyIGNvbiBsYSBjb25maWd1cmFjacOzbiBwcm9wb3JjaW9uYWRhLlxuXHQgKi9cblx0cHJpdmF0ZSBpbml0aWFsaXplTmV3U3dpcGVyKHN3aXBlckVsZW1lbnQ6IGFueSwgY29uZmlnOiBhbnkpIHtcblx0XHQvLyBBc2lnbmFyIGNvbmZpZ3VyYWNpw7NuIGFsIGVsZW1lbnRvXG5cdFx0T2JqZWN0LmFzc2lnbihzd2lwZXJFbGVtZW50LCBjb25maWcpO1xuXHRcdFxuXHRcdC8vIEluaWNpYWxpemFyIGVsIFN3aXBlclxuXHRcdHN3aXBlckVsZW1lbnQuaW5pdGlhbGl6ZSgpO1xuXHRcdFxuXHRcdC8vIGNvbnNvbGUubG9nKCdTd2lwZXIgaW5pY2lhbGl6YWRvIGNvbiBjb25maWd1cmFjacOzbiBwZXJzb25hbGl6YWRhJyk7XG5cdH1cblxuXHQvKipcblx0ICogQWN0dWFsaXphIHVuIFN3aXBlciBleGlzdGVudGUgcGFyYSBhc2VndXJhciBsYSBjb25maWd1cmFjacOzbiBjb3JyZWN0YS5cblx0ICovXG5cdHByaXZhdGUgdXBkYXRlRXhpc3RpbmdTd2lwZXIoc3dpcGVyRWxlbWVudDogYW55KSB7XG5cdFx0Ly8gY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgZXhpc3RlbnRlJyk7XG5cdFx0XG5cdFx0Ly8gRm9yemFyIHNsaWRlc1Blckdyb3VwIGEgMVxuXHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCA9IDE7XG5cdFx0c3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xuXHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gdHJ1ZTtcblx0XHRcblx0XHQvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXG5cdFx0aWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykge1xuXHRcdFx0T2JqZWN0LmtleXMoc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLmJyZWFrcG9pbnRzKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRcblx0XHRzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuLlxuXHQgKi9cblx0cHJpdmF0ZSBzZXR1cE5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpIHtcblx0XHRwcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnQ2xpY2sgZW4gYm90w7NuIGFudGVyaW9yJyk7XG5cdFx0XHRpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcblx0XHRcdFx0c3dpcGVyRWxlbWVudC5zd2lwZXIuc2xpZGVQcmV2KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRuZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnQ2xpY2sgZW4gYm90w7NuIHNpZ3VpZW50ZScpO1xuXHRcdFx0aWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XG5cdFx0XHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhLmNvZGUpICsgJyBjb250YWluZXItZmx1aWQnXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmxvY2tQcm9kdWN0IGJsb2NrLXByb2R1Y3RcIj5cbiAgICAgICAgQGlmKG1ldGEubmFtZSl7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxoMiAgY2xhc3M9XCJmb250LXdlaWdodC1ub3JtYWwgZm9udC1nZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21ldGEubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuXG4gICAgICAgIEBpZihtZXRhLnN0eWxlcyAmJiBtZXRhLnN0eWxlcy5jYXJyb3VzZWwgPT0gZmFsc2Upe1xuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxuICAgICAgICAgICAgQGZvciAocHJvZHVjdCBvZiBwcm9kdWN0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbSAnKyAnIGNvbC0nKyAobWV0YS5zdHlsZXMuaXRlbXM/LnNtKSArICcgY29sLW1kLScgKyAobWV0YS5zdHlsZXMuaXRlbXM/Lm1kKSAgKyAnIGNvbC1sZy0nICsgKG1ldGEuc3R5bGVzLml0ZW1zPy5sZykgICsgJyBweC0yJ1wiIFtpZF09XCIkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8IS0tIHZlcmlmaWNhIHF1ZSBzaSB2aWVuZW4gdW4gdGVtcGxhdGUgcGFyYSB1biBjdXN0b20gYXBwUHJvZHVjdCBsbGFtYWRvIFwiYXBwUHJvZHVjdFwiIGNvbiB1biBvYmpldG8gXCJwcm9kdWN0XCItIHNpbm8gdXNhIHBvciBkZWZlY3RvIGVsIGRlbCBjb3JlIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBQcm9kdWN0ID8gYXBwUHJvZHVjdCA6IGRlZmF1bHRBcHBQcm9kdWN0OyBjb250ZXh0OiB7cHJvZHVjdDpwcm9kdWN0fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPHN3aXBlci1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgaW5pdD1cImZhbHNlXCIgXG4gICAgICAgICAgICAgICAgW2lkXT1cIm1ldGE/LmNvZGVcIlxuICAgICAgICAgICAgICAgIHNsaWRlcy1wZXItdmlldz1cImF1dG9cIlxuICAgICAgICAgICAgICAgIHNwYWNlLWJldHdlZW49XCIxNlwiXG4gICAgICAgICAgICAgICAgc2xpZGVzLXBlci1ncm91cD1cIjFcIlxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb249XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBsb29wPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwcm9kdWN0IG9mIHByb2R1Y3RzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGlkPVwic3dpcGVyLXNsaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwUHJvZHVjdCA/IGFwcFByb2R1Y3QgOiBkZWZhdWx0QXBwUHJvZHVjdDsgY29udGV4dDoge3Byb2R1Y3Q6cHJvZHVjdH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gQm90b25lcyBkZSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRvcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItYnV0dG9uLXByZXZcIiBbaWRdPVwibWV0YT8uY29kZSArICctcHJldidcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmKHByZXZBcnJvd0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicHJldkFycm93SW1hZ2VcIiBhbHQ9XCJBbnRlcmlvclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy10ZXh0XCI+e3twcmV2QXJyb3dUZXh0fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpcGVyLWJ1dHRvbi1uZXh0XCIgW2lkXT1cIm1ldGE/LmNvZGUgKyAnLW5leHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZihuZXh0QXJyb3dJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm5leHRBcnJvd0ltYWdlXCIgYWx0PVwiU2lndWllbnRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93LXRleHRcIj57e25leHRBcnJvd1RleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG5cblxuPCEtLSBjb21wb25lbnRlIHBvciBkZWZlY3RvICh0b21hcmEgY29tbyBwcm9kdWN0byBlbCBjb250ZXh0byBwYXNhZG8gY29tbyBcInByb2R1Y3RcIikgLS0+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRBcHBQcm9kdWN0IGxldC1wcm9kdWN0PVwicHJvZHVjdFwiPlxuICAgIDxhcHAtcHJvZHVjdC1lYyBbcHJvZHVjdF09XCJwcm9kdWN0XCI+PC9hcHAtcHJvZHVjdC1lYz5cbjwvbmctdGVtcGxhdGU+Il19
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvZHVjdHMtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjL2Jsb2NrLXByb2R1Y3RzLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1wcm9kdWN0cy1lYy9ibG9jay1wcm9kdWN0cy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRTNFLFFBQVEsRUFBRSxDQUFBO0FBQ1Y7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFDNUQsK0NBQStDO0lBQ2hELHlFQUF5RTtJQUNoRSxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7SUFDNUQsY0FBYyxDQUFVLENBQUMsbUNBQW1DO0lBQzVELGFBQWEsR0FBVyxHQUFHLENBQUM7SUFDNUIsYUFBYSxHQUFXLEdBQUcs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QUFsQixLQUFLO2dCQU1ILFFBQVE7c0JBRlYsS0FBSzt1QkFBQzt3QkFDTixRQUFRLEVBQUUsSUFBSTtxQkFDZDtnQkFNRSxJQUFJO3NCQUZOLEtBQUs7dUJBQUM7d0JBQ04sUUFBUSxFQUFFLElBQUk7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIHNpZ25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJsb2NrRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTd2lwZXJPcHRpb25zIH0gZnJvbSAnc3dpcGVyL3R5cGVzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbi8vIGltcG9ydCBmdW5jdGlvbiB0byByZWdpc3RlciBTd2lwZXIgY3VzdG9tIGVsZW1lbnRzXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcbmltcG9ydCB7IFByb2R1Y3RFY0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50XCI7XG5cbnJlZ2lzdGVyKClcbi8qKlxuICogQ29tcG9uZW4gcGFyYSBtYW5lamFyIGxvcyBibG9xdWVzIGRlIHByb2R1Y3Rvcy5cbiAqIEBleHRlbmRzIHtCbG9ja0VjQ29tcG9uZW50fVxuICogQGNsYXNzIEJsb2NrUHJvZHVjdHNFY0NvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtYmxvY2stcHJvZHVjdHMtZWMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQcm9kdWN0RWNDb21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vYmxvY2stcHJvZHVjdHMtZWMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vYmxvY2stcHJvZHVjdHMtZWMuY29tcG9uZW50LnNjc3MnLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tQcm9kdWN0c0VjQ29tcG9uZW50IGV4dGVuZHMgQmxvY2tFY0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRcdC8vIFBlcnNvbmFsaXphY2nDs24gZGUgbGFzIGZsZWNoYXMgZGUgbmF2ZWdhY2nDs25cblx0Ly8gUG9yIGRlZmVjdG8gdXNhIHPDrW1ib2xvcyBkZSB0ZXh0bywgcGVybyBzZSBwdWVkZW4gZXNwZWNpZmljYXIgaW3DoWdlbmVzXG5cdEBJbnB1dCgpIHByZXZBcnJvd0ltYWdlPzogc3RyaW5nOyAvLyB1bmRlZmluZWQgPSB1c2Egc8OtbWJvbG8gZGUgdGV4dG9cblx0QElucHV0KCkgbmV4dEFycm93SW1hZ2U/OiBzdHJpbmc7IC8vIHVuZGVmaW5lZCA9IHVzYSBzw61tYm9sbyBkZSB0ZXh0b1xuXHRASW5wdXQoKSBwcmV2QXJyb3dUZXh0OiBzdHJpbmcgPSAnPCc7XG5cdEBJbnB1dCgpIG5leHRBcnJvd1RleHQ6IHN0cmluZyA9ICc+Jztcblx0LyoqXG5cdCAqIFNlcnZpY2lvIGRlIEFuYWx5dGljc1xuXHQgKi9cblx0cHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpXG5cdC8qKlxuXHQgKiBTaWduYWwgdXRsaXphZG8gcGFyYSBndWFyZGEgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcblx0ICovXG5cdHN3aXBlckVsZW1lbnQgPSBzaWduYWw8U3dpcGVyQ29udGFpbmVyIHwgbnVsbD4obnVsbClcblx0LyoqXG5cdCAqIElucHV0IHF1ZSByZWNpYmUgdW4gdGVtcGxhdGUgcGFyYSBlbCBwcm9kdWN0by5cblx0ICovXG5cdEBJbnB1dCgpIGFwcFByb2R1Y3Q6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cdC8qKlxuXHQgKiBDb2xlY2Npw7NuIGRlIHByb2R1Y3Rvcy5cblx0ICovXG5cdEBJbnB1dCh7XG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSkgcHJvZHVjdHM6IGFueTsgLy8gUHJvZHVjdFtdO1xuXHQvKipcblx0ICogQmxvcXVlIHByaW5jaXBhbCBxdWUgY29udGllbmUgbG9zIHByb2R1Y3Rvc1xuXHQgKi9cblx0QElucHV0KHtcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KSBtZXRhOiBhbnk7XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuc2V0dXBTd2lwZXJOYXZpZ2F0aW9uKCk7XG5cdH1cblx0XG5cdHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXG5cblx0LyoqXG5cdCAqIEVqZWN1dGEgZWwgbcOpdG9kbyBgYWZ0ZXJOZXh0UmVuZGVyYHBhcmEgY2FyZ2FyIGxhcyBjb25maWd1cmFjaW9uZXMgbmVjZXNhcmlhcyBcblx0ICogcGFyYSBlbCBjYXJydXNlbCBkZWwgYmFubmVycy4gRXN0byBkZWJlIHNlciBhc2kgZGViaWRvIGEgcXVlIHlhIGRlYmUgZXN0YXIgcHJlc2VudGVcblx0ICogZW4gZWwgRG9tIGVsIGVsZW1lbnQgYDxzd2lwZXItY29udGFpbmVyPmAgcGFyYSBwb2RlciBjb25maWd1cmFybG8uXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpXG5cdH1cblx0LyoqXG5cdCAqIEFwbGljYSBlbCBldmVudG8gYHNlbGVjdF9wcm9tb3Rpb25gIGp1bnRvIGNvbiBlbCBiYW5uZXIgcXVlIGludGVyYWN0dWEuXG5cdCAqIEBwYXJhbSBiYW5uZXIgXG5cdCAqL1xuXHRzZWxlY3RQcm9tb3Rpb24oaXRlbTogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2VsZWN0X3Byb21vdGlvbicsIGl0ZW0pXG5cdH1cblxuXHQvKipcblx0ICogQ29uZmlndXJhIGxhIG5hdmVnYWNpw7NuIHBlcnNvbmFsaXphZGEgZGVsIFN3aXBlci5cblx0ICogRXN0YSBmdW5jacOzbiBlc3TDoSBkaXNlw7FhZGEgcGFyYSBzZXIgbW92aWRhIGFsIGNvbXBvbmVudGUgYmFzZSBCbG9ja1Byb2R1Y3RzRWNDb21wb25lbnQuXG5cdCAqIFBlcm1pdGUgcGVyc29uYWxpemFjacOzbiBkZSBsYXMgaW3DoWdlbmVzIGRlIGxhcyBmbGVjaGFzIG1lZGlhbnRlIEBJbnB1dC5cblx0ICovXG5cdHByaXZhdGUgc2V0dXBTd2lwZXJOYXZpZ2F0aW9uKCkge1xuXHRcdGlmICh0aGlzLm1ldGE/LnN0eWxlcz8uY2Fycm91c2VsICE9PSBmYWxzZSkge1xuXHRcdFx0Ly8gVXNhciBzZXRUaW1lb3V0IHBhcmEgYXNlZ3VyYXIgcXVlIGVsIHN3aXBlciBlc3TDqSBpbmljaWFsaXphZG9cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmluaXRpYWxpemVTd2lwZXJXaXRoQ3VzdG9tTmF2aWdhdGlvbigpO1xuXHRcdFx0fSwgMjAwKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSW5pY2lhbGl6YSBlbCBTd2lwZXIgY29uIG5hdmVnYWNpw7NuIHBlcnNvbmFsaXphZGEuXG5cdCAqIEVzdGEgZnVuY2nDs24gcHVlZGUgc2VyIG1vdmlkYSBhbCBjb21wb25lbnRlIGJhc2UgcGFyYSByZXV0aWxpemFjacOzbi5cblx0ICovXG5cdHByaXZhdGUgaW5pdGlhbGl6ZVN3aXBlcldpdGhDdXN0b21OYXZpZ2F0aW9uKCkge1xuXHRcdGNvbnN0IHByZXZCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLm1ldGE/LmNvZGV9LXByZXZgKTtcblx0XHRjb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1uZXh0YCk7XG5cdFx0Y29uc3Qgc3dpcGVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWV0YT8uY29kZSkgYXMgYW55O1xuXG5cdFx0aWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnQ29uZmlndXJhbmRvIG5hdmVnYWNpw7NuIHBlcnNvbmFsaXphZGEgcGFyYTonLCB0aGlzLm1ldGE/LmNvZGUpO1xuXHRcdFx0XG5cdFx0XHRjb25zdCBzd2lwZXJDb25maWcgPSB0aGlzLmdldFN3aXBlckNvbmZpZ3VyYXRpb24oKTtcblxuXHRcdFx0Ly8gVmVyaWZpY2FyIHNpIGVsIFN3aXBlciB5YSBlc3TDoSBpbmljaWFsaXphZG9cblx0XHRcdGlmICghc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcblx0XHRcdFx0dGhpcy5pbml0aWFsaXplTmV3U3dpcGVyKHN3aXBlckVsZW1lbnQsIHN3aXBlckNvbmZpZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZUV4aXN0aW5nU3dpcGVyKHN3aXBlckVsZW1lbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb25maWd1cmFyIGxvcyBldmVudCBsaXN0ZW5lcnMgcGFyYSBsb3MgYm90b25lc1xuXHRcdFx0dGhpcy5zZXR1cE5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uLCBuZXh0QnV0dG9uLCBzd2lwZXJFbGVtZW50KTtcblx0XHRcdFxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ0V2ZW50IGxpc3RlbmVycyBjb25maWd1cmFkb3MgcGFyYSBsb3MgYm90b25lcyBkZSBuYXZlZ2FjacOzbicpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnTm8gc2UgcHVkaWVyb24gZW5jb250cmFyIGxvcyBlbGVtZW50b3M6Jywge1xuXHRcdFx0Ly8gXHRwcmV2QnV0dG9uOiAhIXByZXZCdXR0b24sXG5cdFx0XHQvLyBcdG5leHRCdXR0b246ICEhbmV4dEJ1dHRvbixcblx0XHRcdC8vIFx0c3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XG5cdFx0XHQvLyB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBiYXNlIGRlbCBTd2lwZXIuXG5cdCAqIEVzdGEgY29uZmlndXJhY2nDs24gcHVlZGUgc2VyIHBlcnNvbmFsaXphZGEgZW4gZWwgZnV0dXJvIG1lZGlhbnRlIEBJbnB1dC5cblx0ICovXG5cdHByaXZhdGUgZ2V0U3dpcGVyQ29uZmlndXJhdGlvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0c2xpZGVzUGVyVmlldzogJ2F1dG8nLFxuXHRcdFx0c3BhY2VCZXR3ZWVuOiAxNixcblx0XHRcdHNsaWRlc1Blckdyb3VwOiAxLCAvLyBJbXBvcnRhbnRlOiBtb3ZlcnNlIGRlIHVubyBlbiB1bm9cblx0XHRcdG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xuXHRcdFx0cGFnaW5hdGlvbjogZmFsc2UsXG5cdFx0XHRsb29wOiB0cnVlLFxuXHRcdFx0Z3JhYkN1cnNvcjogdHJ1ZSxcblx0XHRcdGF1dG9wbGF5OiB0cnVlLFxuXHRcdFx0YnJlYWtwb2ludHM6IHtcblx0XHRcdFx0MzIwOiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogMSxcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDgsXG5cdFx0XHRcdFx0c2xpZGVzUGVyR3JvdXA6IDFcblx0XHRcdFx0fSxcblx0XHRcdFx0NTc2OiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogMixcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDEyLFxuXHRcdFx0XHRcdHNsaWRlc1Blckdyb3VwOiAxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdDc2ODoge1xuXHRcdFx0XHRcdHNsaWRlc1BlclZpZXc6IDMsXG5cdFx0XHRcdFx0c3BhY2VCZXR3ZWVuOiAxNixcblx0XHRcdFx0XHRzbGlkZXNQZXJHcm91cDogMVxuXHRcdFx0XHR9LFxuXHRcdFx0XHQxMDI0OiB7XG5cdFx0XHRcdFx0c2xpZGVzUGVyVmlldzogNCxcblx0XHRcdFx0XHRzcGFjZUJldHdlZW46IDE2LFxuXHRcdFx0XHRcdHNsaWRlc1Blckdyb3VwOiAxXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaWNpYWxpemEgdW4gbnVldm8gU3dpcGVyIGNvbiBsYSBjb25maWd1cmFjacOzbiBwcm9wb3JjaW9uYWRhLlxuXHQgKi9cblx0cHJpdmF0ZSBpbml0aWFsaXplTmV3U3dpcGVyKHN3aXBlckVsZW1lbnQ6IGFueSwgY29uZmlnOiBhbnkpIHtcblx0XHQvLyBBc2lnbmFyIGNvbmZpZ3VyYWNpw7NuIGFsIGVsZW1lbnRvXG5cdFx0T2JqZWN0LmFzc2lnbihzd2lwZXJFbGVtZW50LCBjb25maWcpO1xuXHRcdFxuXHRcdC8vIEluaWNpYWxpemFyIGVsIFN3aXBlclxuXHRcdHN3aXBlckVsZW1lbnQuaW5pdGlhbGl6ZSgpO1xuXHRcdFxuXHRcdC8vIGNvbnNvbGUubG9nKCdTd2lwZXIgaW5pY2lhbGl6YWRvIGNvbiBjb25maWd1cmFjacOzbiBwZXJzb25hbGl6YWRhJyk7XG5cdH1cblxuXHQvKipcblx0ICogQWN0dWFsaXphIHVuIFN3aXBlciBleGlzdGVudGUgcGFyYSBhc2VndXJhciBsYSBjb25maWd1cmFjacOzbiBjb3JyZWN0YS5cblx0ICovXG5cdHByaXZhdGUgdXBkYXRlRXhpc3RpbmdTd2lwZXIoc3dpcGVyRWxlbWVudDogYW55KSB7XG5cdFx0Ly8gY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgZXhpc3RlbnRlJyk7XG5cdFx0XG5cdFx0Ly8gRm9yemFyIHNsaWRlc1Blckdyb3VwIGEgMVxuXHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCA9IDE7XG5cdFx0c3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xuXHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gdHJ1ZTtcblx0XHRcblx0XHQvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXG5cdFx0aWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykge1xuXHRcdFx0T2JqZWN0LmtleXMoc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLmJyZWFrcG9pbnRzKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRcblx0XHRzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuLlxuXHQgKi9cblx0cHJpdmF0ZSBzZXR1cE5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpIHtcblx0XHRwcmV2QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnQ2xpY2sgZW4gYm90w7NuIGFudGVyaW9yJyk7XG5cdFx0XHRpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcblx0XHRcdFx0c3dpcGVyRWxlbWVudC5zd2lwZXIuc2xpZGVQcmV2KCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRuZXh0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnQ2xpY2sgZW4gYm90w7NuIHNpZ3VpZW50ZScpO1xuXHRcdFx0aWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XG5cdFx0XHRcdHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhLmNvZGUpICsgJyBjb250YWluZXItZmx1aWQnXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmxvY2tQcm9kdWN0IGJsb2NrLXByb2R1Y3RcIj5cbiAgICAgICAgQGlmKG1ldGEubmFtZSl7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDxoMiAgY2xhc3M9XCJmb250LXdlaWdodC1ub3JtYWwgZm9udC1nZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e21ldGEubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuXG4gICAgICAgIEBpZihtZXRhLnN0eWxlcyAmJiBtZXRhLnN0eWxlcy5jYXJyb3VzZWwgPT0gZmFsc2Upe1xuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxuICAgICAgICAgICAgQGZvciAocHJvZHVjdCBvZiBwcm9kdWN0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbSAnKyAnIGNvbC0nKyAobWV0YS5zdHlsZXMuaXRlbXM/LnNtKSArICcgY29sLW1kLScgKyAobWV0YS5zdHlsZXMuaXRlbXM/Lm1kKSAgKyAnIGNvbC1sZy0nICsgKG1ldGEuc3R5bGVzLml0ZW1zPy5sZykgICsgJyBweC0yJ1wiIFtpZF09XCIkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8IS0tIHZlcmlmaWNhIHF1ZSBzaSB2aWVuZW4gdW4gdGVtcGxhdGUgcGFyYSB1biBjdXN0b20gYXBwUHJvZHVjdCBsbGFtYWRvIFwiYXBwUHJvZHVjdFwiIGNvbiB1biBvYmpldG8gXCJwcm9kdWN0XCItIHNpbm8gdXNhIHBvciBkZWZlY3RvIGVsIGRlbCBjb3JlIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBQcm9kdWN0ID8gYXBwUHJvZHVjdCA6IGRlZmF1bHRBcHBQcm9kdWN0OyBjb250ZXh0OiB7cHJvZHVjdDpwcm9kdWN0fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPHN3aXBlci1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgaW5pdD1cImZhbHNlXCIgXG4gICAgICAgICAgICAgICAgW2lkXT1cIm1ldGE/LmNvZGVcIlxuICAgICAgICAgICAgICAgIHNsaWRlcy1wZXItdmlldz1cImF1dG9cIlxuICAgICAgICAgICAgICAgIHNwYWNlLWJldHdlZW49XCIxNlwiXG4gICAgICAgICAgICAgICAgc2xpZGVzLXBlci1ncm91cD1cIjFcIlxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb249XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbj1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBsb29wPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwcm9kdWN0IG9mIHByb2R1Y3RzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGlkPVwic3dpcGVyLXNsaWRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwUHJvZHVjdCA/IGFwcFByb2R1Y3QgOiBkZWZhdWx0QXBwUHJvZHVjdDsgY29udGV4dDoge3Byb2R1Y3Q6cHJvZHVjdH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gQm90b25lcyBkZSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRvcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItYnV0dG9uLXByZXZcIiBbaWRdPVwibWV0YT8uY29kZSArICctcHJldidcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmKHByZXZBcnJvd0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicHJldkFycm93SW1hZ2VcIiBhbHQ9XCJBbnRlcmlvclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy10ZXh0XCI+e3twcmV2QXJyb3dUZXh0fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpcGVyLWJ1dHRvbi1uZXh0XCIgW2lkXT1cIm1ldGE/LmNvZGUgKyAnLW5leHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZihuZXh0QXJyb3dJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm5leHRBcnJvd0ltYWdlXCIgYWx0PVwiU2lndWllbnRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93LXRleHRcIj57e25leHRBcnJvd1RleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG5cblxuPCEtLSBjb21wb25lbnRlIHBvciBkZWZlY3RvICh0b21hcmEgY29tbyBwcm9kdWN0byBlbCBjb250ZXh0byBwYXNhZG8gY29tbyBcInByb2R1Y3RcIikgLS0+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRBcHBQcm9kdWN0IGxldC1wcm9kdWN0PVwicHJvZHVjdFwiPlxuICAgIDxhcHAtcHJvZHVjdC1lYyBbcHJvZHVjdF09XCJwcm9kdWN0XCI+PC9hcHAtcHJvZHVjdC1lYz5cbjwvbmctdGVtcGxhdGU+Il19
@@ -122,9 +122,7 @@ export class FiltersEcComponent {
122
122
  });
123
123
  }
124
124
  // close = () => {
125
- // if (typeof document !== 'undefined') {
126
- // this.document.getElementById("filtros").classList.remove('in');
127
- // }
125
+ // this.document.getElementById("filtros").classList.remove('in');
128
126
  // return true;
129
127
  // };
130
128
  close = () => {
@@ -157,36 +155,13 @@ export class FiltersEcComponent {
157
155
  }) ?? false;
158
156
  }
159
157
  /**
160
- * Verifica si una categoría tiene la propiedad isVisible y está marcada como visible
161
- * @param category - La categoría a verificar
162
- * @returns true si la categoría es visible, false en caso contrario
163
- */
158
+ * Verifica si una categoría tiene la propiedad isVisible y está marcada como visible
159
+ * @param category - La categoría a verificar
160
+ * @returns true si la categoría es visible, false en caso contrario
161
+ */
164
162
  hasVisibleProperty(category) {
165
163
  return category.isVisible === true;
166
164
  }
167
- /** Lista visible (filtra recursivo por isVisible) */
168
- getVisibleData(filter) {
169
- if (!filter)
170
- return [];
171
- return this.filterVisibleTree(filter.data);
172
- }
173
- /** Children visibles de un nodo */
174
- getVisibleChildren(node) {
175
- return this.filterVisibleTree(node?.children ?? []);
176
- }
177
- /** Tiene hijos visibles? */
178
- hasVisibleChildren(node) {
179
- return this.getVisibleChildren(node).length > 0;
180
- }
181
- /** Utilidad recursiva */
182
- filterVisibleTree(list = []) {
183
- return (list ?? [])
184
- .filter(n => n.isVisible === true)
185
- .map(n => ({
186
- ...n,
187
- children: this.filterVisibleTree(n.children ?? [])
188
- }));
189
- }
190
165
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FiltersEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
191
166
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FiltersEcComponent, isStandalone: true, selector: "lib-filters-ec", inputs: { setSelect: "setSelect" }, ngImport: i0, template: "<p>filters-ec works!</p>\n", styles: [""] });
192
167
  }
@@ -196,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
196
171
  }], ctorParameters: () => [], propDecorators: { setSelect: [{
197
172
  type: Input
198
173
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9maWx0ZXJzLWVjL2ZpbHRlcnMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvZmlsdGVycy1lYy9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBeUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBVW5FLE1BQU0sT0FBTyxrQkFBa0I7SUFFbkIsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1RCxVQUFVLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFD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U0FDckQsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO3dHQW5OUSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw4R0NsQi9CLDRCQUNBOzs0RkRpQmEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixjQUNkLElBQUksV0FDUCxFQUFFO3dEQW1CRixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSwgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcbmltcG9ydCB7IEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUsIFBhZ2luYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvY2hhbm5lbC5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1maWx0ZXJzLWVjJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZmlsdGVycy1lYy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyc0VjQ29tcG9uZW50IHtcblxuICAgIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKTtcbiAgICBwcml2YXRlIF9wcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwdWJsaWMgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgICBwdWJsaWMgZmlsdGVyJCA9IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmZpbHRlcnMkO1xuICAgIHB1YmxpYyBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xuICAgIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgQElucHV0KCkgc2V0U2VsZWN0OiBhbnk7XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJzU2VydmljZS5maWx0ZXJzJC5zdWJzY3JpYmUoKGZpbHRlcnM6IEZpbHRlcltdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycztcbiAgICAgICAgICAgIHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIDEpIFBhcmEgY3VhbmRvIG1lIHBpZGVuICdwcmljZV9yYW5nZScsIGRldnVlbHZvIFByaWNlUmFuZ2VGaWx0ZXIgKi9cbiAgICBwdWJsaWMgZ2V0U3BlY2lmaWNGaWx0ZXIodHlwZTogJ3ByaWNlX3JhbmdlJyk6IFByaWNlUmFuZ2VGaWx0ZXIgfCBudWxsO1xuXG4gICAgLyoqIDIpIFBhcmEgY3VhbHF1aWVyIG90cm8gRmlsdGVyVHlwZSwgZGV2dWVsdm8gRmlsdGVyICovXG4gICAgcHVibGljIGdldFNwZWNpZmljRmlsdGVyKHR5cGU6IEZpbHRlclR5cGUpOiBGaWx0ZXIgfCBudWxsO1xuICAgIHB1YmxpYyBnZXRTcGVjaWZpY0ZpbHRlcih0eXBlOiBGaWx0ZXJUeXBlKTogRmlsdGVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVycy5maW5kKGYgPT4gZi50eXBlKCkgPT09IHR5cGUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ3ByaWNlX3JhbmdlJyAmJiBmaWx0ZXIgJiYgIShmaWx0ZXIgaW5zdGFuY2VvZiBGaWx0ZXIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFeHBlY3RlZCBhIEZpbHRlciBpbnN0YW5jZSBidXQgZ290YCwgZmlsdGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyIHx8IG51bGw7XG4gICAgfVxuXG4gICAgLypPYnRpZW5lIGVsIGZpbHRybyBlbGVnaWRvIGVuIGVsIHNlbGVjdCwgbG8gcGFzYSBhbCBzZXRTZWxlY3RcbiAgICBwYXJhIHF1ZSBzZSBtYXJxdWUgc2VsZWNjaW9uYWRvKi9cbiAgICBvblNlbGVjdChldmVudDogYW55LCBmaWx0ZXI6IEZpbHRlckVsZW1lbnRbXSB8IG51bGwpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coZmlsdGVyKVxuICAgICAgICAvKiAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBmaWx0ZXJcbiAgICAgICAgICAgICAuZmxhdE1hcChjYXRlZ29yeSA9PiBjYXRlZ29yeS5jaGlsZHJlbilcbiAgICAgICAgICAgICAuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24/LmNvZGUgPT09IGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAucG9wKClcbiAgICAgICAgIHNlbGVjdGVkT3B0aW9uICYmIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLnNldEZpbHRlclNlbGVjdGVkKHRoaXMuZmlsdGVyc1swXSwgc2VsZWN0ZWRPcHRpb24pICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuZWphIGVsIGNsaWNrIHNvYnJlIHVuIGVsZW1lbnRvIGRlIGZpbHRybyAoY2F0ZWdvcsOtYSwgYXRyaWJ1dG8sIGV0Yy4pLlxuICAgICAqXG4gICAgICogLSBQYXJhIGNhdGVnb3LDrWFzOiBuYXZlZ2EgYSBsYSBVUkwgZGUgbGEgY2F0ZWdvcsOtYS5cbiAgICAgKiAtIFBhcmEgYXRyaWJ1dG9zOiBhY3R1YWxpemEgbGEgcXVlcnkgc3RyaW5nIGRlIGxhIFVSTCBjb24gYGF0dHJpYnV0ZUNvZGVzYC5cbiAgICAgKiAtIFBhcmEgb3Ryb3MgZmlsdHJvczogZGVsZWdhIGVuIEZpbHRlcnNTZXJ2aWNlIHBhcmEgbWFyY2FyIHNlbGVjY2lvbmFkby5cbiAgICAgKlxuICAgICAqIExhIGlkZWEgZXMgcXVlICoqbGEgVVJMIHNpZW1wcmUgcmVwcmVzZW50ZSBsb3MgZmlsdHJvcyBhcGxpY2Fkb3MqKixcbiAgICAgKiBkZSBtb2RvIHF1ZTpcbiAgICAgKiAgIC0gYWwgaGFjZXIgRjUgbm8gc2UgcGllcmRhbiBsb3MgZmlsdHJvcyxcbiAgICAgKiAgIC0gbG9zIGxpbmtzIHNlYW4gY29tcGFydGlibGVzIChkZWVwIGxpbmtpbmcpLlxuICAgICAqL1xuICAgIHNldFNlbGVjdGVkKGZpbHRlcjogRmlsdGVyIHwgbnVsbCwgc2VsZWN0ZWQ6IEZpbHRlckVsZW1lbnQgfCBudWxsKSB7XG4gICAgICAgIGlmICghZmlsdGVyIHx8ICFzZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgZWwgZWxlbWVudG8gZXN0w6EgbWFyY2FkbyBjb21vIG5vIHZpc2libGUsIG5vIGhhY2Vtb3MgbmFkYVxuICAgICAgICBpZiAoKHNlbGVjdGVkIGFzIGFueSkuaXNWaXNpYmxlID09PSBmYWxzZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0eXBlb2YgKGZpbHRlciBhcyBhbnkpLnNldFNlbGVjdGVkICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlKCkgPT09ICdjYXRlZ29yaWVzJykge1xuICAgICAgICAgICAgICAgIC8vIFBhcmEgY2F0ZWdvcsOtYXMgdXNhbW9zIG5hdmVnYWNpw7NuIHBvciBwYXRoIChlajogL2NvbGxlY3Rpb24vY2F0ZWdvcmllcy9jYW1hcy1lbGFzdGljYXMpXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkLnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3NlbGVjdGVkLnBhdGhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlKCkgPT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICAgICAgICAgIC8vIEVsIGJhY2tlbmQgZXNwZXJhIHF1ZSBsZSBtYW5kZW1vcyBlbCBcImNvZGVcIiBkZWwgYXRyaWJ1dG8gZW4gZWwgcXVlcnkgcGFyYW1cbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0gKHNlbGVjdGVkIGFzIGFueSkuY29kZSB8fCAoc2VsZWN0ZWQgYXMgYW55KS52YWx1ZSB8fCBudWxsO1xuXG4gICAgICAgICAgICAgICAgLy8gQWN0dWFsaXphbW9zIGxhIFVSTCBtYW50ZW5pZW5kbyBsYSBydXRhLCBwZXJvIGFncmVnYW5kbyBgYXR0cmlidXRlQ29kZXNgXG4gICAgICAgICAgICAgICAgLy8gRWplbXBsbyBkZSByZXN1bHRhZG86XG4gICAgICAgICAgICAgICAgLy8gICAvY29sbGVjdGlvbi9jYXRlZ29yaWVzL2NhbWFzLWVsYXN0aWNhcz9hdHRyaWJ1dGVDb2Rlcz1BQkMxMjMmLi4uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBUYW1iacOpbiByZXNldGVhbW9zIGxhIHDDoWdpbmEgYSBudWxsIHBhcmEgcXVlIHZ1ZWx2YSBhIGxhIHByaW1lcmEgcMOhZ2luYVxuICAgICAgICAgICAgICAgIC8vIGN1YW5kbyBzZSBhcGxpY2EgdW4gbnVldm8gZmlsdHJvLlxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVDb2RlczogY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZmlsdGVyc1NlcnZpY2Uuc2V0RmlsdGVyU2VsZWN0ZWQoZmlsdGVyLCBzZWxlY3RlZCk7XG5cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIHNlbGVjdGVkIGZpbHRlcjpcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5pcXVlU2VsZWN0aW9uKGZpbHRlcjogeyBkYXRhOiBhbnlbXTsgfSwgZmlsdGVyQ2hpbGQ6IGFueSkge1xuICAgICAgICAvLyBCdXNjYXIgc2kgaGF5IHVuIGZpbHRybyBkZSB0aXBvIFByaWNlUmFuZ2VGaWx0ZXIgZW4gbGEgbGlzdGEgZGUgZmlsdHJvc1xuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoZiA9PiBmIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcik7XG5cbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcbiAgICAgICAgICAgIHByaWNlUmFuZ2VGaWx0ZXIucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXIuZGF0YS5mb3JFYWNoKGZpbHRlckVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlckVsZW1lbnQuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJFbGVtZW50LnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJFbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGZpbHRlckNoaWxkcmVuOiBGaWx0ZXJFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckNoaWxkcmVuICE9IGZpbHRlckNoaWxkICYmIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckNoaWxkcmVuLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICBjbG9zZSA9ICgpID0+IHtcbiAgICAvLyAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vICAgICAgICAgdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZpbHRyb3NcIikuY2xhc3NMaXN0LnJlbW92ZSgnaW4nKTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgICAgcmV0dXJuIHRydWU7XG4gICAgLy8gIH07XG5cblxuICAgIGNsb3NlID0gKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNvbnN0cy5tb2JpbGUoKVxuICAgICAgICAvLyAgICAgID8gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFjY29yZGlvbkV4YW1wbGVcIikuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpXG4gICAgICAgIC8vICAgICAgOiB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFjY29yZGlvbl9pZCkuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG5cbiAgICBzY3JvbGxVcCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG5cblxuXG5cbiAgICBoYXNBcHBsaWVkRmlsdGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycz8uc29tZSgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZT8uKCkgPT09ICdwcmljZV9yYW5nZScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5TZXQgPSBmaWx0ZXIuY3VycmVudE1pblByaWNlICE9PSBudWxsICYmIGZpbHRlci5jdXJyZW50TWluUHJpY2UgIT09IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4U2V0ID0gZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPT0gbnVsbCAmJiBmaWx0ZXIuY3VycmVudE1heFByaWNlICE9PSBmaWx0ZXIubWF4UHJpY2U7XG4gICAgICAgICAgICAgICAgaWYgKG1pblNldCB8fCBtYXhTZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLmRhdGE/LnNvbWUoKGZpbHRlckVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlckVsZW1lbnQuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJFbGVtZW50LmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckVsZW1lbnQuc2VsZWN0ZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkgPz8gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZlcmlmaWNhIHNpIHVuYSBjYXRlZ29yw61hIHRpZW5lIGxhIHByb3BpZWRhZCBpc1Zpc2libGUgeSBlc3TDoSBtYXJjYWRhIGNvbW8gdmlzaWJsZVxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSAtIExhIGNhdGVnb3LDrWEgYSB2ZXJpZmljYXJcbiAgICAgKiBAcmV0dXJucyB0cnVlIHNpIGxhIGNhdGVnb3LDrWEgZXMgdmlzaWJsZSwgZmFsc2UgZW4gY2FzbyBjb250cmFyaW9cbiAgICAgKi9cbiAgICBoYXNWaXNpYmxlUHJvcGVydHkoY2F0ZWdvcnk6IEZpbHRlckVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChjYXRlZ29yeSBhcyBhbnkpLmlzVmlzaWJsZSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogTGlzdGEgdmlzaWJsZSAoZmlsdHJhIHJlY3Vyc2l2byBwb3IgaXNWaXNpYmxlKSAqL1xuICAgIHB1YmxpYyBnZXRWaXNpYmxlRGF0YShmaWx0ZXI6IEZpbHRlciB8IG51bGwpOiBGaWx0ZXJFbGVtZW50W10ge1xuICAgICAgICBpZiAoIWZpbHRlcikgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJWaXNpYmxlVHJlZShmaWx0ZXIuZGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIENoaWxkcmVuIHZpc2libGVzIGRlIHVuIG5vZG8gKi9cbiAgICBwdWJsaWMgZ2V0VmlzaWJsZUNoaWxkcmVuKG5vZGU/OiBGaWx0ZXJFbGVtZW50KTogRmlsdGVyRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyVmlzaWJsZVRyZWUobm9kZT8uY2hpbGRyZW4gPz8gW10pO1xuICAgIH1cblxuICAgIC8qKiBUaWVuZSBoaWpvcyB2aXNpYmxlcz8gKi9cbiAgICBwdWJsaWMgaGFzVmlzaWJsZUNoaWxkcmVuKG5vZGU/OiBGaWx0ZXJFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZpc2libGVDaGlsZHJlbihub2RlKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKiBVdGlsaWRhZCByZWN1cnNpdmEgKi9cbiAgICBwcml2YXRlIGZpbHRlclZpc2libGVUcmVlKGxpc3Q6IEZpbHRlckVsZW1lbnRbXSA9IFtdKTogRmlsdGVyRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIChsaXN0ID8/IFtdKVxuICAgICAgICAgICAgLmZpbHRlcihuID0+IChuIGFzIGFueSkuaXNWaXNpYmxlID09PSB0cnVlKVxuICAgICAgICAgICAgLm1hcChuID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubixcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5maWx0ZXJWaXNpYmxlVHJlZShuLmNoaWxkcmVuID8/IFtdKVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cbn1cbiIsIjxwPmZpbHRlcnMtZWMgd29ya3MhPC9wPlxuIl19
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9maWx0ZXJzLWVjL2ZpbHRlcnMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvZmlsdGVycy1lYy9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBeUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUcsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBVW5FLE1BQU0sT0FBTyxrQkFBa0I7SUFFbkIsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLEdBQW9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1RCxVQUFVLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFD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QUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztnQkFDRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUNMOzs7O1NBSUs7SUFDRCxrQkFBa0IsQ0FBQyxRQUF1QjtRQUN0QyxPQUFRLFFBQWdCLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztJQUNoRCxDQUFDO3dHQXZMUSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw4R0NsQi9CLDRCQUNBOzs0RkRpQmEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixjQUNkLElBQUksV0FDUCxFQUFFO3dEQW1CRixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSAsIEF1dGhTZXJ2aWNlfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcbmltcG9ydCB7IEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUsIFBhZ2luYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvY2hhbm5lbC5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1maWx0ZXJzLWVjJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJzLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZmlsdGVycy1lYy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyc0VjQ29tcG9uZW50IHtcblxuICAgIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKTtcbiAgICBwcml2YXRlIF9wcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwdWJsaWMgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgICBwdWJsaWMgZmlsdGVyJCA9IHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLmZpbHRlcnMkO1xuICAgIHB1YmxpYyBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLl9hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICBwdWJsaWMgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIEBJbnB1dCgpIHNldFNlbGVjdDogYW55O1xuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyc1NlcnZpY2UuZmlsdGVycyQuc3Vic2NyaWJlKChmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxTZXJ2aWNlKS5jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyA9ICEhY2hhbm5lbC5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XG4gICAgICAgICAgICB0aGlzLmhpZGVQcmljZXMgPSAhIWNoYW5uZWwuaGlkZVByaWNlcztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKiAxKSBQYXJhIGN1YW5kbyBtZSBwaWRlbiAncHJpY2VfcmFuZ2UnLCBkZXZ1ZWx2byBQcmljZVJhbmdlRmlsdGVyICovXG4gICAgcHVibGljIGdldFNwZWNpZmljRmlsdGVyKHR5cGU6ICdwcmljZV9yYW5nZScpOiBQcmljZVJhbmdlRmlsdGVyIHwgbnVsbDtcblxuICAgIC8qKiAyKSBQYXJhIGN1YWxxdWllciBvdHJvIEZpbHRlclR5cGUsIGRldnVlbHZvIEZpbHRlciAqL1xuICAgIHB1YmxpYyBnZXRTcGVjaWZpY0ZpbHRlcih0eXBlOiBGaWx0ZXJUeXBlKTogRmlsdGVyIHwgbnVsbDtcbiAgICBwdWJsaWMgZ2V0U3BlY2lmaWNGaWx0ZXIodHlwZTogRmlsdGVyVHlwZSk6IEZpbHRlciB8IG51bGwge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYudHlwZSgpID09PSB0eXBlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdwcmljZV9yYW5nZScgJiYgZmlsdGVyICYmICEoZmlsdGVyIGluc3RhbmNlb2YgRmlsdGVyKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXhwZWN0ZWQgYSBGaWx0ZXIgaW5zdGFuY2UgYnV0IGdvdGAsIGZpbHRlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlciB8fCBudWxsO1xuICAgIH1cblxuICAgIC8qT2J0aWVuZSBlbCBmaWx0cm8gZWxlZ2lkbyBlbiBlbCBzZWxlY3QsIGxvIHBhc2EgYWwgc2V0U2VsZWN0XG4gICAgcGFyYSBxdWUgc2UgbWFycXVlIHNlbGVjY2lvbmFkbyovXG4gICAgb25TZWxlY3QoZXZlbnQ6IGFueSwgZmlsdGVyOiBGaWx0ZXJFbGVtZW50W10gfCBudWxsKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGZpbHRlcilcbiAgICAgICAgLyogIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gZmlsdGVyXG4gICAgICAgICAgICAgLmZsYXRNYXAoY2F0ZWdvcnkgPT4gY2F0ZWdvcnkuY2hpbGRyZW4pXG4gICAgICAgICAgICAgLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uPy5jb2RlID09PSBldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgLnBvcCgpXG4gICAgICAgICBzZWxlY3RlZE9wdGlvbiAmJiB0aGlzLl9maWx0ZXJzU2VydmljZS5zZXRGaWx0ZXJTZWxlY3RlZCh0aGlzLmZpbHRlcnNbMF0sIHNlbGVjdGVkT3B0aW9uKSAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmVqYSBlbCBjbGljayBzb2JyZSB1biBlbGVtZW50byBkZSBmaWx0cm8gKGNhdGVnb3LDrWEsIGF0cmlidXRvLCBldGMuKS5cbiAgICAgKlxuICAgICAqIC0gUGFyYSBjYXRlZ29yw61hczogbmF2ZWdhIGEgbGEgVVJMIGRlIGxhIGNhdGVnb3LDrWEuXG4gICAgICogLSBQYXJhIGF0cmlidXRvczogYWN0dWFsaXphIGxhIHF1ZXJ5IHN0cmluZyBkZSBsYSBVUkwgY29uIGBhdHRyaWJ1dGVDb2Rlc2AuXG4gICAgICogLSBQYXJhIG90cm9zIGZpbHRyb3M6IGRlbGVnYSBlbiBGaWx0ZXJzU2VydmljZSBwYXJhIG1hcmNhciBzZWxlY2Npb25hZG8uXG4gICAgICpcbiAgICAgKiBMYSBpZGVhIGVzIHF1ZSAqKmxhIFVSTCBzaWVtcHJlIHJlcHJlc2VudGUgbG9zIGZpbHRyb3MgYXBsaWNhZG9zKiosXG4gICAgICogZGUgbW9kbyBxdWU6XG4gICAgICogICAtIGFsIGhhY2VyIEY1IG5vIHNlIHBpZXJkYW4gbG9zIGZpbHRyb3MsXG4gICAgICogICAtIGxvcyBsaW5rcyBzZWFuIGNvbXBhcnRpYmxlcyAoZGVlcCBsaW5raW5nKS5cbiAgICAgKi9cbiAgICBzZXRTZWxlY3RlZChmaWx0ZXI6IEZpbHRlciB8IG51bGwsIHNlbGVjdGVkOiBGaWx0ZXJFbGVtZW50IHwgbnVsbCkge1xuICAgICAgICBpZiAoIWZpbHRlciB8fCAhc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGVsIGVsZW1lbnRvIGVzdMOhIG1hcmNhZG8gY29tbyBubyB2aXNpYmxlLCBubyBoYWNlbW9zIG5hZGFcbiAgICAgICAgaWYgKChzZWxlY3RlZCBhcyBhbnkpLmlzVmlzaWJsZSA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBpZiAodHlwZW9mIChmaWx0ZXIgYXMgYW55KS5zZXRTZWxlY3RlZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSgpID09PSAnY2F0ZWdvcmllcycpIHtcbiAgICAgICAgICAgICAgICAvLyBQYXJhIGNhdGVnb3LDrWFzIHVzYW1vcyBuYXZlZ2FjacOzbiBwb3IgcGF0aCAoZWo6IC9jb2xsZWN0aW9uL2NhdGVnb3JpZXMvY2FtYXMtZWxhc3RpY2FzKVxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZC5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtzZWxlY3RlZC5wYXRoXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSgpID09PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgICAgICAgICAvLyBFbCBiYWNrZW5kIGVzcGVyYSBxdWUgbGUgbWFuZGVtb3MgZWwgXCJjb2RlXCIgZGVsIGF0cmlidXRvIGVuIGVsIHF1ZXJ5IHBhcmFtXG4gICAgICAgICAgICAgICAgY29uc3QgY29kZSA9IChzZWxlY3RlZCBhcyBhbnkpLmNvZGUgfHwgKHNlbGVjdGVkIGFzIGFueSkudmFsdWUgfHwgbnVsbDtcblxuICAgICAgICAgICAgICAgIC8vIEFjdHVhbGl6YW1vcyBsYSBVUkwgbWFudGVuaWVuZG8gbGEgcnV0YSwgcGVybyBhZ3JlZ2FuZG8gYGF0dHJpYnV0ZUNvZGVzYFxuICAgICAgICAgICAgICAgIC8vIEVqZW1wbG8gZGUgcmVzdWx0YWRvOlxuICAgICAgICAgICAgICAgIC8vICAgL2NvbGxlY3Rpb24vY2F0ZWdvcmllcy9jYW1hcy1lbGFzdGljYXM/YXR0cmlidXRlQ29kZXM9QUJDMTIzJi4uLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gVGFtYmnDqW4gcmVzZXRlYW1vcyBsYSBww6FnaW5hIGEgbnVsbCBwYXJhIHF1ZSB2dWVsdmEgYSBsYSBwcmltZXJhIHDDoWdpbmFcbiAgICAgICAgICAgICAgICAvLyBjdWFuZG8gc2UgYXBsaWNhIHVuIG51ZXZvIGZpbHRyby5cbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlQ29kZXM6IGNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLnNldEZpbHRlclNlbGVjdGVkKGZpbHRlciwgc2VsZWN0ZWQpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBzZWxlY3RlZCBmaWx0ZXI6XCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuaXF1ZVNlbGVjdGlvbihmaWx0ZXI6IHsgZGF0YTogYW55W107IH0sIGZpbHRlckNoaWxkOiBhbnkpIHtcbiAgICAgICAgLy8gQnVzY2FyIHNpIGhheSB1biBmaWx0cm8gZGUgdGlwbyBQcmljZVJhbmdlRmlsdGVyIGVuIGxhIGxpc3RhIGRlIGZpbHRyb3NcbiAgICAgICAgY29uc3QgcHJpY2VSYW5nZUZpbHRlciA9IHRoaXMuZmlsdGVycy5maW5kKGYgPT4gZiBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIpO1xuXG4gICAgICAgIGlmIChwcmljZVJhbmdlRmlsdGVyKSB7XG4gICAgICAgICAgICBwcmljZVJhbmdlRmlsdGVyLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyLmRhdGEuZm9yRWFjaChmaWx0ZXJFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJFbGVtZW50LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyRWxlbWVudC5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyRWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChmaWx0ZXJDaGlsZHJlbjogRmlsdGVyRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJDaGlsZHJlbiAhPSBmaWx0ZXJDaGlsZCAmJiBmaWx0ZXJDaGlsZHJlbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJDaGlsZHJlbi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAgY2xvc2UgPSAoKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImZpbHRyb3NcIikuY2xhc3NMaXN0LnJlbW92ZSgnaW4nKTtcbiAgICAvLyAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyAgfTtcblxuXG4gICAgY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuY29uc3RzLm1vYmlsZSgpXG4gICAgICAgIC8vICAgICAgPyB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWNjb3JkaW9uRXhhbXBsZVwiKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93JylcbiAgICAgICAgLy8gICAgICA6IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWNjb3JkaW9uX2lkKS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cblxuICAgIHNjcm9sbFVwID0gKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cblxuXG5cblxuICAgIGhhc0FwcGxpZWRGaWx0ZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzPy5zb21lKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlPy4oKSA9PT0gJ3ByaWNlX3JhbmdlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pblNldCA9IGZpbHRlci5jdXJyZW50TWluUHJpY2UgIT09IG51bGwgJiYgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPT0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhTZXQgPSBmaWx0ZXIuY3VycmVudE1heFByaWNlICE9PSBudWxsICYmIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgIT09IGZpbHRlci5tYXhQcmljZTtcbiAgICAgICAgICAgICAgICBpZiAobWluU2V0IHx8IG1heFNldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIuZGF0YT8uc29tZSgoZmlsdGVyRWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyRWxlbWVudC5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckVsZW1lbnQuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyRWxlbWVudC5zZWxlY3RlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSA/PyBmYWxzZTtcbiAgICB9XG4vKipcbiAgICogVmVyaWZpY2Egc2kgdW5hIGNhdGVnb3LDrWEgdGllbmUgbGEgcHJvcGllZGFkIGlzVmlzaWJsZSB5IGVzdMOhIG1hcmNhZGEgY29tbyB2aXNpYmxlXG4gICAqIEBwYXJhbSBjYXRlZ29yeSAtIExhIGNhdGVnb3LDrWEgYSB2ZXJpZmljYXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBsYSBjYXRlZ29yw61hIGVzIHZpc2libGUsIGZhbHNlIGVuIGNhc28gY29udHJhcmlvXG4gICAqL1xuICAgIGhhc1Zpc2libGVQcm9wZXJ0eShjYXRlZ29yeTogRmlsdGVyRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKGNhdGVnb3J5IGFzIGFueSkuaXNWaXNpYmxlID09PSB0cnVlO1xuICAgIH1cbn1cbiIsIjxwPmZpbHRlcnMtZWMgd29ya3MhPC9wPlxuIl19
@@ -77,21 +77,17 @@ export class HeaderEcComponent extends MenuEcComponent {
77
77
  });
78
78
  }
79
79
  onWindowScroll() {
80
- if (isPlatformBrowser(this.platformId)) {
81
- const scrollTop = window.scrollY;
82
- this.isScrolled = scrollTop > 80;
83
- }
80
+ const scrollTop = window.scrollY;
81
+ this.isScrolled = scrollTop > 80;
84
82
  }
85
83
  isHomeFunction() {
86
- if (isPlatformBrowser(this.platformId) && typeof document !== 'undefined') {
87
- const headerElement = document.querySelector('header');
88
- if (headerElement) {
89
- if (this.router.url !== '/home') {
90
- headerElement.classList.add('show-menu');
91
- }
92
- else {
93
- headerElement.classList.remove('show-menu');
94
- }
84
+ const headerElement = document.querySelector('header');
85
+ if (headerElement) {
86
+ if (this.router.url !== '/home') {
87
+ headerElement.classList.add('show-menu');
88
+ }
89
+ else {
90
+ headerElement.classList.remove('show-menu');
95
91
  }
96
92
  }
97
93
  }
@@ -115,22 +111,20 @@ export class HeaderEcComponent extends MenuEcComponent {
115
111
  }
116
112
  };
117
113
  borrarInput(inputId) {
118
- if (isPlatformBrowser(this.platformId) && typeof document !== 'undefined') {
119
- if (inputId) {
120
- const input = document.getElementById(inputId);
114
+ if (inputId) {
115
+ const input = document.getElementById(inputId);
116
+ if (input) {
117
+ input.value = '';
118
+ }
119
+ }
120
+ else {
121
+ const inputs = ['searchInput1'];
122
+ inputs.forEach((id) => {
123
+ const input = document.getElementById(id);
121
124
  if (input) {
122
125
  input.value = '';
123
126
  }
124
- }
125
- else {
126
- const inputs = ['searchInput1'];
127
- inputs.forEach((id) => {
128
- const input = document.getElementById(id);
129
- if (input) {
130
- input.value = '';
131
- }
132
- });
133
- }
127
+ });
134
128
  }
135
129
  this.searchValue = '';
136
130
  this.coreConstantsService.searchValue = '';
@@ -181,8 +175,6 @@ export class HeaderEcComponent extends MenuEcComponent {
181
175
  });
182
176
  }
183
177
  setupSearchInputs() {
184
- if (!isPlatformBrowser(this.platformId) || typeof document === 'undefined')
185
- return;
186
178
  const inputs = ['searchInput1', 'searchInput2'];
187
179
  inputs.forEach(id => {
188
180
  const input = document.getElementById(id);
@@ -249,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
249
241
  type: HostListener,
250
242
  args: ['window:scroll', []]
251
243
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2hlYWRlci1lYy9oZWFkZXItZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvaGVhZGVyLWVjL2hlYWRlci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFvQixZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFcEQ7O0dBRUc7QUFRSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUM3QyxPQUFPLENBQXFCO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDaEMsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixNQUFNLEdBQVksS0FB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SyxhQUFhLEVBQUUsQ0FBQzt3QkFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDekIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO3dHQS9QVSxpQkFBaUI7NEZBQWpCLGlCQUFpQiw4SkN0QjlCLDJCQUNBLHlERGlCWSxZQUFZOzs0RkFJWCxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7d0RBOEV6RixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENvbXBvbmVudCwgaW5qZWN0LCBQTEFURk9STV9JRCwgSW5qZWN0b3IsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZUNhc2VQaXBlLCBBc3luY1BpcGUsIEpzb25QaXBlLCBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWVudUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UsIFRlc3RTZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCwgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBxdWUgc2UgZW5jYXJnYSBkZSBtYW5lamFyIGxhIGZ1bmNpb25hbGlkYWQgZGVsIEhlYWRlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlci1lYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRpdGxlQ2FzZVBpcGUsIEFzeW5jUGlwZSwgSnNvblBpcGUsIFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2hlYWRlci1lYy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyRWNDb21wb25lbnQgZXh0ZW5kcyBNZW51RWNDb21wb25lbnQge1xuICBwdWJsaWMgY2hhbm5lbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICB0cmFuc3BhcmVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0hvbWU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gTnVldmEgdmFyaWFibGUgcGFyYSB2ZXJpZmljYXIgc2kgZXN0YW1vcyBlbiAvaG9tZVxuICBpc1Njcm9sbGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xuICBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBfX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSlcbiAgcHVibGljIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xuICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwdWJsaWMgYXBwUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHB1YmxpYyBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICBtb2JpbGVEcm9wZG93bk9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBpc01lbnVPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuXG4gIC8vIE9ic2VydmFibGUgZGVsIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzblxuICBwdWJsaWMgbG9nZ2VkJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQkID0gdGhpcy5fX2F1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NoYW5uZWxTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShjZmcgPT4ge1xuICAgICAgdGhpcy5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnMgPSAhIWNmZy5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XG4gICAgICB0aGlzLmhpZGVQcmljZXMgPSAhIWNmZy5oaWRlUHJpY2VzO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTsgLy8gSW55ZWN0YW1vcyBDaGFuZ2VEZXRlY3RvclJlZiBwYXJhIGZvcnphciBsYSBhY3R1YWxpemFjacOzblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbm5lbCA9IHRoaXMuY29yZUNvbnN0YW50c1NlcnZpY2UuZ2V0Q2hhbm5lbCgpO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSB0aGlzLmNvcmVDb25zdGFudHNTZXJ2aWNlLnNlYXJjaFZhbHVlIHx8ICcnO1xuICAgIHRoaXMub25XaW5kb3dTY3JvbGwoKTtcbiAgICB0aGlzLmRldGVjdFJvdXRlQ2hhbmdlKCk7IC8vIExsYW1hbW9zIGEgbGEgZnVuY2nDs24gcXVlIGRldGVjdGEgZWwgY2FtYmlvIGRlIHJ1dGFcbiAgICAvLyBVc2FyIGVsIE9ic2VydmFibGUgZGVsIEF1dGhTZXJ2aWNlXG4gICAgdGhpcy5sb2dnZWQkID0gdGhpcy5fX2F1dGhTZXJ2aWNlLmxvZ2dlZEluJDtcblxuICAgIC8vIFN1c2NyaWJpcnNlIGFsIE9ic2VydmFibGUgeSBmb3J6YXIgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGN1YW5kbyBzZWEgbmVjZXNhcmlvXG4gICAgdGhpcy5sb2dnZWQkLnN1YnNjcmliZShpc0xvZ2dlZEluID0+IHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLmFwcFJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2dCA9PiB7XG4gICAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgLy8gRm9yemFyIGRldGVjY2nDs24gZGUgY2FtYmlvcyBkZXNwdcOpcyBkZSBuYXZlZ2FjacOzblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwTW9iaWxlTWVudSgpOyAvLyBJbmljaWFsaXphbW9zIGVsIG1lbsO6IG3Ds3ZpbFxuICAgIHRoaXMuc2V0dXBTZWFyY2hJbnB1dHMoKTsgLy8gSW5pY2lhbGl6YW1vcyBsb3MgaW5wdXRzIGRlIGLDunNxdWVkYSAgIFxuICAgIHRoaXMuaXNIb21lRnVuY3Rpb24oKTtcbiAgfVxuICAvKipcbiAgICogRGV0ZWN0YSBjdWFuZG8gY2FtYmlhIGxhIHJ1dGEgeSBhY3R1YWxpemEgbGEgY2xhc2UgZGVsIGhlYWRlclxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlY3RSb3V0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5pc0hvbWUgPSB0aGlzLnJvdXRlci51cmwgPT09ICcvaG9tZSc7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gRm9yemFtb3MgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIHBhcmEgYWN0dWFsaXphciBsYSB2aXN0YVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICBvbldpbmRvd1Njcm9sbCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICB0aGlzLmlzU2Nyb2xsZWQgPSBzY3JvbGxUb3AgPiA4MDtcbiAgICB9XG4gIH1cblxuICBpc0hvbWVGdW5jdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBoZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XG4gICAgICBpZiAoaGVhZGVyRWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5yb3V0ZXIudXJsICE9PSAnL2hvbWUnKSB7XG4gICAgICAgICAgaGVhZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdzaG93LW1lbnUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3ctbWVudScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVXJsVHJhbnNwYXJlbnQgPSAodXJsVHJhbnNwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB1cmxUcmFuc3BhcmVudDtcbiAgfTtcblxuXG4gIGdldENvbGxlY3Rpb25TZWFyY2ggPSAoKSA9PiB7XG4gICAgdGhpcy5jb3JlQ29uc3RhbnRzU2VydmljZS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWU7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2NvbGxlY3Rpb24/c2VhcmNoPScgKyB0aGlzLnNlYXJjaFZhbHVlKTtcbiAgfTtcblxuICBzZXRTZWFyY2hWYWx1ZSA9IChldmVudDogRXZlbnQsIGFmdGVyU2VhcmNoPzogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgLy8gdGhpcy5nZXRDb2xsZWN0aW9uU2VhcmNoKCk7XG4gICAgaWYgKGFmdGVyU2VhcmNoKSB7XG4gICAgICBhZnRlclNlYXJjaCguLi5hcmdzKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH07XG5cbiAgYm9ycmFySW5wdXQoaW5wdXRJZD86IHN0cmluZykge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChpbnB1dElkKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5wdXRzID0gWydzZWFyY2hJbnB1dDEnXTtcbiAgICAgICAgaW5wdXRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgdGhpcy5jb3JlQ29uc3RhbnRzU2VydmljZS5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIFxuICAgIC8vIEVuIGx1Z2FyIGRlIHJlbGFuemFyIGxhIGLDunNxdWVkYSBjb24gc3RyaW5nIHZhY8OtbyxcbiAgICAvLyBhY3R1YWxpemFtb3MgbGEgVVJMIHBhcmEgcXVpdGFyIGVsIHF1ZXJ5IHBhcmFtIGBzZWFyY2hgIHkgcmVzZXRlYXIgbGEgcGFnaW5hY2nDs24uXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY29sbGVjdGlvbiddLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBzZWFyY2g6IG51bGwsXG4gICAgICAgIHBhZ2U6IG51bGxcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gIH1cbiAgc2V0dXBNb2JpbGVNZW51KCkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgY29uc3QgbWVudU1vYmlsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tZW51TW9iaWxlJyk7XG4gICAgaWYgKCEobWVudU1vYmlsZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IG9wZW5CdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYWJyZU1lbnVNb2JpbGUgLmFicmUnKTtcbiAgICBjb25zdCBjbG9zZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hYnJlTWVudU1vYmlsZSAuY2xvc2UnKTtcbiAgICBjb25zdCBpY29uTWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY01lbnUnKTtcbiAgICBjb25zdCBzZWFyY2hNb2JpbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoTW9iaWxlJyk7XG5cbiAgICBjb25zdCBjbG9zZU1lbnUgPSAoKSA9PiB7XG4gICAgICBtZW51TW9iaWxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBjbG9zZUJ0bj8uc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5Om5vbmUnKTtcbiAgICAgIGljb25NZW51Py5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6YmxvY2snKTtcbiAgICB9O1xuXG4gICAgbWVudU1vYmlsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgb3BlbkJ0bj8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBtZW51TW9iaWxlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgY2xvc2VCdG4/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpibG9jaycpO1xuICAgICAgaWYgKHNlYXJjaE1vYmlsZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNlYXJjaE1vYmlsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgICAgaWNvbk1lbnU/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lJyk7XG4gICAgfSk7XG5cbiAgICBjbG9zZUJ0bj8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZU1lbnUpO1xuXG4gICAgLy8gQ2llcnJhIGVsIG1lbsO6IHNpIHNlIGhhY2UgY2xpYyBlbiB1biBlbmxhY2UgZXNwZWPDrWZpY28gZGVudHJvIGRlbCBtZW7DulxuICAgIGNvbnN0IGxpbmtTZWxlY3RvcnMgPSBbJy5jYXRlZ29yeU1vYmlsZScsICcuc3ViY2F0ZWdvcnlNb2JpbGUnLCAnLnVzdWFyaW9tb2JpbGUnXTtcbiAgICBsaW5rU2VsZWN0b3JzLmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgY29uc3QgbGlua3MgPSBtZW51TW9iaWxlLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEFuY2hvckVsZW1lbnQ+KGBhJHtzZWxlY3Rvcn1gKTtcbiAgICAgIGxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgY2xvc2VNZW51KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0dXBTZWFyY2hJbnB1dHMoKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICBjb25zdCBpbnB1dHMgPSBbJ3NlYXJjaElucHV0MScsICdzZWFyY2hJbnB1dDInXTtcblxuICAgIGlucHV0cy5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgaWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSkgcmV0dXJuO1xuICAgICAgY29uc3QgY2xlYXJCdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuY2xlYXItYnRuJHtpZC5zbGljZSgtMSl9YCk7XG5cbiAgICAgIGlmICghaW5wdXQgfHwgIShjbGVhckJ0biBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuXG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSAnQnVzY2FyIHByb2R1Y3RvLi4uJykge1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xuICAgICAgICBpZiAoaW5wdXQudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gJ0J1c2NhciBwcm9kdWN0by4uLic7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcbiAgICAgICAgY2xlYXJCdG4uc3R5bGUuZGlzcGxheSA9IGlucHV0LnZhbHVlLnRyaW0oKSAhPT0gJycgPyAnYmxvY2snIDogJ25vbmUnO1xuICAgICAgfSk7XG5cbiAgICAgIGNsZWFyQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICBjbGVhckJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVQYW5lbChpZDogc3RyaW5nKSB7XG4gICAgLy8gU29sbyBlamVjdXRhciBlbiBlbCBuYXZlZ2Fkb3IgcGFyYSBldml0YXIgcHJvYmxlbWFzIGNvbiBTU1JcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5vcGVuUGFuZWxzLnVwZGF0ZShwYW5lbHMgPT4gKHtcbiAgICAgICAgLi4ucGFuZWxzLFxuICAgICAgICBbaWRdOiAhcGFuZWxzW2lkXVxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5QYW5lbHMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHtcbiAgICBjb2xsYXBzZVVubzogZmFsc2UsXG4gICAgY29sbGFwc2VEb3M6IHRydWUgLy8gUHJvZHVjdG9zIGFiaWVydG8gcG9yIGRlZmVjdG9cbiAgfSk7XG5cblxuXG5cbiAgY29sbGFwc2VBbGxNZW51cygpIHtcbiAgICAvLyBTb2xvIGVqZWN1dGFyIGVuIGVsIG5hdmVnYWRvciBwYXJhIGV2aXRhciBwcm9ibGVtYXMgY29uIFNTUlxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbHMudXBkYXRlKHBhbmVscyA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1BhbmVscyA9IHsgLi4ucGFuZWxzIH07XG4gICAgICAgIE9iamVjdC5rZXlzKG5ld1BhbmVscykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdjb2xsYXBzZURvcycpIHtcbiAgICAgICAgICAgIG5ld1BhbmVsc1trZXldID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld1BhbmVscztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPHA+aGVhZGVyLWVjIHdvcmtzITwvcD5cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2hlYWRlci1lYy9oZWFkZXItZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvaGVhZGVyLWVjL2hlYWRlci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFvQixZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFcEQ7O0dBRUc7QUFRSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUM3QyxPQUFPLENBQXFCO0lBQzVCLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDaEMsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixNQUFNLEdBQVksS0FB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ekYsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBDb21wb25lbnQsIGluamVjdCwgUExBVEZPUk1fSUQsIEluamVjdG9yLCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGVDYXNlUGlwZSwgQXN5bmNQaXBlLCBKc29uUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1lbnVFY0NvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0aW9ucy1jb21wb25lbnRzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlLCBUZXN0U2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQsIFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIENvbXBvbmVudGUgcXVlIHNlIGVuY2FyZ2EgZGUgbWFuZWphciBsYSBmdW5jaW9uYWxpZGFkIGRlbCBIZWFkZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1oZWFkZXItZWMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUaXRsZUNhc2VQaXBlLCBBc3luY1BpcGUsIEpzb25QaXBlLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci1lYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9oZWFkZXItZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckVjQ29tcG9uZW50IGV4dGVuZHMgTWVudUVjQ29tcG9uZW50IHtcbiAgcHVibGljIGNoYW5uZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgdHJhbnNwYXJlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNIb21lOiBib29sZWFuID0gZmFsc2U7IC8vIE51ZXZhIHZhcmlhYmxlIHBhcmEgdmVyaWZpY2FyIHNpIGVzdGFtb3MgZW4gL2hvbWVcbiAgaXNTY3JvbGxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgX19hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpXG4gIHB1YmxpYyBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcbiAgcHVibGljIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHVibGljIGFwcFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwdWJsaWMgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgbW9iaWxlRHJvcGRvd25PcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgaXNNZW51T3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cblxuICAvLyBPYnNlcnZhYmxlIGRlbCBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs25cbiAgcHVibGljIGxvZ2dlZCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuX19hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jaGFubmVsU2VydmljZS5jaGFubmVsJC5zdWJzY3JpYmUoY2ZnID0+IHtcbiAgICAgIHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjZmcuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzO1xuICAgICAgdGhpcy5oaWRlUHJpY2VzID0gISFjZmcuaGlkZVByaWNlcztcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7IC8vIElueWVjdGFtb3MgQ2hhbmdlRGV0ZWN0b3JSZWYgcGFyYSBmb3J6YXIgbGEgYWN0dWFsaXphY2nDs25cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5uZWwgPSB0aGlzLmNvcmVDb25zdGFudHNTZXJ2aWNlLmdldENoYW5uZWwoKTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5jb3JlQ29uc3RhbnRzU2VydmljZS5zZWFyY2hWYWx1ZSB8fCAnJztcbiAgICB0aGlzLm9uV2luZG93U2Nyb2xsKCk7XG4gICAgdGhpcy5kZXRlY3RSb3V0ZUNoYW5nZSgpOyAvLyBMbGFtYW1vcyBhIGxhIGZ1bmNpw7NuIHF1ZSBkZXRlY3RhIGVsIGNhbWJpbyBkZSBydXRhXG4gICAgLy8gVXNhciBlbCBPYnNlcnZhYmxlIGRlbCBBdXRoU2VydmljZVxuICAgIHRoaXMubG9nZ2VkJCA9IHRoaXMuX19hdXRoU2VydmljZS5sb2dnZWRJbiQ7XG5cbiAgICAvLyBTdXNjcmliaXJzZSBhbCBPYnNlcnZhYmxlIHkgZm9yemFyIGRldGVjY2nDs24gZGUgY2FtYmlvcyBjdWFuZG8gc2VhIG5lY2VzYXJpb1xuICAgIHRoaXMubG9nZ2VkJC5zdWJzY3JpYmUoaXNMb2dnZWRJbiA9PiB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5hcHBSb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldnQgPT4ge1xuICAgICAgICBpZiAoZXZ0IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgIC8vIEZvcnphciBkZXRlY2Npw7NuIGRlIGNhbWJpb3MgZGVzcHXDqXMgZGUgbmF2ZWdhY2nDs25cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cE1vYmlsZU1lbnUoKTsgLy8gSW5pY2lhbGl6YW1vcyBlbCBtZW7DuiBtw7N2aWxcbiAgICB0aGlzLnNldHVwU2VhcmNoSW5wdXRzKCk7IC8vIEluaWNpYWxpemFtb3MgbG9zIGlucHV0cyBkZSBiw7pzcXVlZGEgICBcbiAgICB0aGlzLmlzSG9tZUZ1bmN0aW9uKCk7XG4gIH1cbiAgLyoqXG4gICAqIERldGVjdGEgY3VhbmRvIGNhbWJpYSBsYSBydXRhIHkgYWN0dWFsaXphIGxhIGNsYXNlIGRlbCBoZWFkZXJcbiAgICovXG4gIHByaXZhdGUgZGV0ZWN0Um91dGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMuaXNIb21lID0gdGhpcy5yb3V0ZXIudXJsID09PSAnL2hvbWUnO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphbW9zIGxhIGRldGVjY2nDs24gZGUgY2FtYmlvcyBwYXJhIGFjdHVhbGl6YXIgbGEgdmlzdGFcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgb25XaW5kb3dTY3JvbGwoKSB7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgdGhpcy5pc1Njcm9sbGVkID0gc2Nyb2xsVG9wID4gODA7XG4gIH1cblxuICBpc0hvbWVGdW5jdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBoZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XG4gICAgaWYgKGhlYWRlckVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvaG9tZScpIHtcbiAgICAgICAgaGVhZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdzaG93LW1lbnUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdy1tZW51Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVXJsVHJhbnNwYXJlbnQgPSAodXJsVHJhbnNwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB1cmxUcmFuc3BhcmVudDtcbiAgfTtcblxuXG4gIGdldENvbGxlY3Rpb25TZWFyY2ggPSAoKSA9PiB7XG4gICAgdGhpcy5jb3JlQ29uc3RhbnRzU2VydmljZS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWU7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2NvbGxlY3Rpb24/c2VhcmNoPScgKyB0aGlzLnNlYXJjaFZhbHVlKTtcbiAgfTtcblxuICBzZXRTZWFyY2hWYWx1ZSA9IChldmVudDogRXZlbnQsIGFmdGVyU2VhcmNoPzogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHRhcmdldC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgLy8gdGhpcy5nZXRDb2xsZWN0aW9uU2VhcmNoKCk7XG4gICAgaWYgKGFmdGVyU2VhcmNoKSB7XG4gICAgICBhZnRlclNlYXJjaCguLi5hcmdzKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH07XG5cbiAgYm9ycmFySW5wdXQoaW5wdXRJZD86IHN0cmluZykge1xuICAgIGlmIChpbnB1dElkKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5wdXRzID0gWydzZWFyY2hJbnB1dDEnXTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgdGhpcy5jb3JlQ29uc3RhbnRzU2VydmljZS5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIFxuICAgIC8vIEVuIGx1Z2FyIGRlIHJlbGFuemFyIGxhIGLDunNxdWVkYSBjb24gc3RyaW5nIHZhY8OtbyxcbiAgICAvLyBhY3R1YWxpemFtb3MgbGEgVVJMIHBhcmEgcXVpdGFyIGVsIHF1ZXJ5IHBhcmFtIGBzZWFyY2hgIHkgcmVzZXRlYXIgbGEgcGFnaW5hY2nDs24uXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY29sbGVjdGlvbiddLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBzZWFyY2g6IG51bGwsXG4gICAgICAgIHBhZ2U6IG51bGxcbiAgICAgIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgfSk7XG4gIH1cbiAgc2V0dXBNb2JpbGVNZW51KCkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgY29uc3QgbWVudU1vYmlsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tZW51TW9iaWxlJyk7XG4gICAgaWYgKCEobWVudU1vYmlsZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IG9wZW5CdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYWJyZU1lbnVNb2JpbGUgLmFicmUnKTtcbiAgICBjb25zdCBjbG9zZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hYnJlTWVudU1vYmlsZSAuY2xvc2UnKTtcbiAgICBjb25zdCBpY29uTWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpY01lbnUnKTtcbiAgICBjb25zdCBzZWFyY2hNb2JpbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoTW9iaWxlJyk7XG5cbiAgICBjb25zdCBjbG9zZU1lbnUgPSAoKSA9PiB7XG4gICAgICBtZW51TW9iaWxlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBjbG9zZUJ0bj8uc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5Om5vbmUnKTtcbiAgICAgIGljb25NZW51Py5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6YmxvY2snKTtcbiAgICB9O1xuXG4gICAgbWVudU1vYmlsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgb3BlbkJ0bj8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICBtZW51TW9iaWxlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgY2xvc2VCdG4/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpibG9jaycpO1xuICAgICAgaWYgKHNlYXJjaE1vYmlsZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNlYXJjaE1vYmlsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgICAgaWNvbk1lbnU/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lJyk7XG4gICAgfSk7XG5cbiAgICBjbG9zZUJ0bj8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZU1lbnUpO1xuXG4gICAgLy8gQ2llcnJhIGVsIG1lbsO6IHNpIHNlIGhhY2UgY2xpYyBlbiB1biBlbmxhY2UgZXNwZWPDrWZpY28gZGVudHJvIGRlbCBtZW7DulxuICAgIGNvbnN0IGxpbmtTZWxlY3RvcnMgPSBbJy5jYXRlZ29yeU1vYmlsZScsICcuc3ViY2F0ZWdvcnlNb2JpbGUnLCAnLnVzdWFyaW9tb2JpbGUnXTtcbiAgICBsaW5rU2VsZWN0b3JzLmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgY29uc3QgbGlua3MgPSBtZW51TW9iaWxlLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEFuY2hvckVsZW1lbnQ+KGBhJHtzZWxlY3Rvcn1gKTtcbiAgICAgIGxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgY2xvc2VNZW51KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0dXBTZWFyY2hJbnB1dHMoKSB7XG4gICAgY29uc3QgaW5wdXRzID0gWydzZWFyY2hJbnB1dDEnLCAnc2VhcmNoSW5wdXQyJ107XG5cbiAgICBpbnB1dHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgIGlmICghKGlucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNsZWFyQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLmNsZWFyLWJ0biR7aWQuc2xpY2UoLTEpfWApO1xuXG4gICAgICBpZiAoIWlucHV0IHx8ICEoY2xlYXJCdG4gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHJldHVybjtcblxuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gJ0J1c2NhciBwcm9kdWN0by4uLicpIHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcbiAgICAgICAgaWYgKGlucHV0LnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICdCdXNjYXIgcHJvZHVjdG8uLi4nO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XG4gICAgICAgIGNsZWFyQnRuLnN0eWxlLmRpc3BsYXkgPSBpbnB1dC52YWx1ZS50cmltKCkgIT09ICcnID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICAgIH0pO1xuXG4gICAgICBjbGVhckJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgY2xlYXJCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gIH1cblxuICB0b2dnbGVQYW5lbChpZDogc3RyaW5nKSB7XG4gICAgLy8gU29sbyBlamVjdXRhciBlbiBlbCBuYXZlZ2Fkb3IgcGFyYSBldml0YXIgcHJvYmxlbWFzIGNvbiBTU1JcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5vcGVuUGFuZWxzLnVwZGF0ZShwYW5lbHMgPT4gKHtcbiAgICAgICAgLi4ucGFuZWxzLFxuICAgICAgICBbaWRdOiAhcGFuZWxzW2lkXVxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5QYW5lbHMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHtcbiAgICBjb2xsYXBzZVVubzogZmFsc2UsXG4gICAgY29sbGFwc2VEb3M6IHRydWUgLy8gUHJvZHVjdG9zIGFiaWVydG8gcG9yIGRlZmVjdG9cbiAgfSk7XG5cblxuXG5cbiAgY29sbGFwc2VBbGxNZW51cygpIHtcbiAgICAvLyBTb2xvIGVqZWN1dGFyIGVuIGVsIG5hdmVnYWRvciBwYXJhIGV2aXRhciBwcm9ibGVtYXMgY29uIFNTUlxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbHMudXBkYXRlKHBhbmVscyA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1BhbmVscyA9IHsgLi4ucGFuZWxzIH07XG4gICAgICAgIE9iamVjdC5rZXlzKG5ld1BhbmVscykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIGlmIChrZXkgIT09ICdjb2xsYXBzZURvcycpIHtcbiAgICAgICAgICAgIG5ld1BhbmVsc1trZXldID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ld1BhbmVscztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPHA+aGVhZGVyLWVjIHdvcmtzITwvcD5cbiJdfQ==