@rededor/site-front-end-lib 0.0.4-alpha.0 → 0.0.4-alpha.1

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.
package/README.md CHANGED
@@ -1,18 +1,80 @@
1
- # SiteFrontEndLib
2
-
3
- Esta lib foi gerada com [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
4
-
5
- ## Desenvolvimento
6
-
7
- Para utilização da lib, utilize/customize o token `LibConfig`. Este token disponibiliza informações/parâmetros importantes baseadas no contexto de cada projeto.
8
- Para criação de componentes, services, etc, os comandos são os mesmos utilizados no desenvolvimento dentro do contexto dos projetos do site.
9
- Obs: antes de utilizar os comandos `ng`, verifique a pasta atual de seu terminal (`cd projects/site-front-end-lib`).
10
- Obs2: quando for gerar uma nova versão da lib, lembre de `atualizar a versão no package.json dentro da lib`.
11
-
12
- ## Build
13
-
14
- Rode `ng build site-front-end-lib` para buildar o projeto. Os arquivos buildados estarão na pasta `dist/`.
15
-
16
- ## Publicar
17
-
18
- Depois de buildar o projeto para dentro de `dist/site-front-end-lib` e rode `npm publish` ou `npm publish --userconfig ../../.npmrc` caso necessite do npmrc.
1
+ # SiteFrontEndLib
2
+
3
+ Esta lib foi gerada com [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
4
+
5
+ ## Desenvolvimento
6
+
7
+ - Para utilização da lib, utilize/customize o token `LibConfig`. Este token disponibiliza informações/parâmetros importantes baseadas no contexto de cada projeto.
8
+ - Para criação de componentes, services, etc, os comandos são os mesmos utilizados no desenvolvimento dentro do contexto dos projetos do site.
9
+ - Obs: antes de utilizar os comandos `ng`, verifique a pasta atual de seu terminal (`cd projects/site-front-end-lib`).
10
+
11
+ ## Desenvolvimento com Live Reload
12
+
13
+ Para rodar o projeto com live reload, é necessário realizar algumas configurações.
14
+
15
+ ### No contexto da LIB:
16
+
17
+ - rode `ng build site-front-end-lib --configuration development --watch` no terminal da lib.
18
+ - abra um novo terminal e acesse `cd dist/site-front-end-lib` e em seguida rode o seguinte comando `npm link`.
19
+
20
+ ### No contexto do PROJETO angular rodando localmente:
21
+
22
+ - adicione `"preserveSymlinks": true` e `"cache": { "enabled": false }` no angular.json da seguinte forma:
23
+
24
+ ```
25
+ {
26
+ "$schema": "...",
27
+ "version": 999,
28
+ "newProjectRoot": "...",
29
+ "projects": {
30
+ "project1": {
31
+ "projectType": "application",
32
+ "schematics": { ... },
33
+ "root": "",
34
+ "sourceRoot": "src",
35
+ "prefix": "app",
36
+ "architect": {
37
+ "build": {
38
+ "builder": "...",
39
+ "options": {
40
+ "preserveSymlinks": true,
41
+ ...
42
+ }
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "cli": {
48
+ "cache": {
49
+ "enabled": false
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ - rode o seguinte comando em seu terminal `npm link @rededor/site-front-end-lib`.
56
+ - inicie sua aplicação com `ng serve`.
57
+
58
+ Dessa forma, para qualquer alteração feita na lib, será refeito o build da lib e depois disparado um evento para o projeto também executar um novo build com as novas informações.
59
+
60
+ Após realizar os testes, é recomendavel realizar a **limpeza** dessas linkagens.
61
+
62
+ ### No contexto do PROJETO
63
+
64
+ - `npm unlink @rededor/site-front-end-lib --no-save`
65
+ - remova as alterações feitas no `angular.json`
66
+
67
+ ### No contexto da LIB
68
+
69
+ - `npm rm -g @rededor/site-front-end-lib --no-save`
70
+
71
+ Feito isso, voce pode checar se as linkagens foram removidas corretamente com `npm list -g`.
72
+
73
+ ## Build
74
+
75
+ - Rode `ng build site-front-end-lib` para buildar o projeto. Os arquivos buildados estarão na pasta `dist/`.
76
+
77
+ ## Publicar
78
+
79
+ - Depois de buildar o projeto, vá para `cd dist/site-front-end-lib` e rode `npm publish --userconfig ../../.npmrc` para publicar o projeto no npm.
80
+ - Obs: quando for gerar uma nova versão da lib, lembre-se de `atualizar a versão no package.json dentro da lib`. Caso não tenha feito isso, atualize o package.json, rode o build novamente e somente depois realize a publicação da lib.
@@ -20,6 +20,7 @@ export class RdsiteLinkDirective {
20
20
  this.siteUrlList = ['rededorsaoluiz', 'rededorlabs'];
21
21
  this.allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];
22
22
  this.anchorAdjustment = null;
23
+ this.anchorExtraAdjustment = null;
23
24
  this.phonemodal = null;
24
25
  }
25
26
  onClick(event) {
@@ -80,6 +81,9 @@ export class RdsiteLinkDirective {
80
81
  if (this.anchorAdjustment) {
81
82
  adjustment = this.anchorAdjustment;
82
83
  }
84
+ if (this.anchorExtraAdjustment) {
85
+ adjustment += this.anchorExtraAdjustment;
86
+ }
83
87
  const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;
84
88
  const hrefTop = this.document?.querySelector(href)?.getBoundingClientRect()?.top ?? 0;
85
89
  const scrollTop = bodyTop * -1 + hrefTop - adjustment;
@@ -101,7 +105,7 @@ export class RdsiteLinkDirective {
101
105
  this.router.navigate([path], { queryParams: queryParams });
102
106
  }
103
107
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdsiteLinkDirective, deps: [{ token: i1.Router }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: LIB_CONFIG }, { token: i0.ElementRef }, { token: i2.PhoneService }, { token: i3.RdsitePhoneModalDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
104
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdsiteLinkDirective, isStandalone: true, selector: "[rdsitelink]", inputs: { anchorAdjustment: "anchorAdjustment", phonemodal: "phonemodal" }, host: { listeners: { "click": "onClick($event)" } }, providers: [RdsitePhoneModalDirective], ngImport: i0 }); }
108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: RdsiteLinkDirective, isStandalone: true, selector: "[rdsitelink]", inputs: { anchorAdjustment: "anchorAdjustment", anchorExtraAdjustment: "anchorExtraAdjustment", phonemodal: "phonemodal" }, host: { listeners: { "click": "onClick($event)" } }, providers: [RdsitePhoneModalDirective], ngImport: i0 }); }
105
109
  }
106
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: RdsiteLinkDirective, decorators: [{
107
111
  type: Directive,
@@ -122,10 +126,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
122
126
  args: [LIB_CONFIG]
123
127
  }] }, { type: i0.ElementRef }, { type: i2.PhoneService }, { type: i3.RdsitePhoneModalDirective }], propDecorators: { anchorAdjustment: [{
124
128
  type: Input
129
+ }], anchorExtraAdjustment: [{
130
+ type: Input
125
131
  }], phonemodal: [{
126
132
  type: Input
127
133
  }], onClick: [{
128
134
  type: HostListener,
129
135
  args: ['click', ['$event']]
130
136
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzaXRlLWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvZGlyZWN0aXZlcy9yZHNpdGUtbGluay9yZHNpdGUtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7QUFRL0YsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUNVLE1BQWMsRUFDTyxVQUFrQixFQUNyQixRQUFrQixFQUNoQixTQUFvQixFQUN4QyxPQUF3QixFQUN4QixZQUEwQixFQUMxQix5QkFBb0Q7UUFOcEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNPLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFoQnRELGtCQUFhLEdBQUcsa0NBQWtDLENBQUM7UUFDbkQsYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNsQixnQkFBVyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEQsZ0JBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLENBQUMs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YixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTElCX0NPTkZJRywgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vdG9rZW5zL0xpYkNvbmZpZyc7XG5pbXBvcnQgeyBQaG9uZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9waG9uZS9waG9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmUgfSBmcm9tICcuLi9yZHNpdGUtcGhvbmUtbW9kYWwvcmRzaXRlLXBob25lLW1vZGFsLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tyZHNpdGVsaW5rXScsXG4gIHByb3ZpZGVyczogW1Jkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZHNpdGVMaW5rRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBleHRlcm5hbFJlZ2V4ID0gL15odHRwOnxodHRwczp8dGVsOnx3d3dcXC58bWFpbHRvOi87XG4gIHByaXZhdGUgdGVsUmVnZXggPSAvdGVsOi87XG4gIHByaXZhdGUgc2l0ZVVybExpc3QgPSBbJ3JlZGVkb3JzYW9sdWl6JywgJ3JlZGVkb3JsYWJzJ107XG4gIHByaXZhdGUgYWxsb3dlZFRhZ3MgPSBbJ0EnLCAnQ1VSQS1CVVRUT04nLCAnQ1VSQS1CVVRUT04tT1VUTElORScsICdDVVJBLUJVVFRPTi1UUkFOU1BBUkVOVCddO1xuXG4gIEBJbnB1dCgpIGFuY2hvckFkanVzdG1lbnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHBob25lbW9kYWw6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQEluamVjdChMSUJfQ09ORklHKSBwcml2YXRlIGxpYkNvbmZpZzogTGliQ29uZmlnLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxhbnk+LFxuICAgIHByaXZhdGUgcGhvbmVTZXJ2aWNlOiBQaG9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlOiBSZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlLFxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5hbGxvd2VkVGFncy5pbmNsdWRlcyh0aGlzLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWUpKSByZXR1cm47XG4gICAgY29uc3QgaHJlZiA9IHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZ2V0QXR0cmlidXRlKCdocmVmJykgPz8gJyc7XG5cbiAgICBpZiAodGhpcy5pc1Bob25lKGhyZWYpKSB7XG4gICAgICB0aGlzLnBob25lQ2xpY2tlZCh7XG4gICAgICAgIGhyZWYsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnQsXG4gICAgICAgIHBob25lbW9kYWw6IHRoaXMucGhvbmVtb2RhbCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4dGVybmFsVXJsKGhyZWYpKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmlzU2l0ZVVybChocmVmKSA/ICdfc2VsZicgOiAnX2JsYW5rJztcbiAgICAgIHdpbmRvdy5vcGVuKGhyZWYsIHRhcmdldCk7XG4gICAgfSBlbHNlIGlmIChocmVmLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgdGhpcy5zY3JvbGxUb0FuY2hvcihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvKGhyZWYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNQaG9uZShocmVmOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50ZWxSZWdleC50ZXN0KGhyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBwaG9uZUNsaWNrZWQodmFsdWU6IHsgaHJlZjogc3RyaW5nOyBldmVudDogRXZlbnQ7IGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjsgcGhvbmVtb2RhbDogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCB9KSB7XG4gICAgY29uc3QgeyBocmVmLCBldmVudCwgZWxlbWVudCwgcGhvbmVtb2RhbCB9ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucGhvbmVTZXJ2aWNlLmlzUGhvbmVNb2RhbChocmVmKSkge1xuICAgICAgaWYgKHRoaXMucGhvbmVTZXJ2aWNlLmlzQ29uc3VsdGFPdUV4YW1lKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpIHtcbiAgICAgICAgdGhpcy5yZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlLnJkc2l0ZXBob25lbW9kYWwgPSBwaG9uZW1vZGFsID8/IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnJkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmUub3BlblBob25lTW9kYWwoZXZlbnQsIGhyZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3BlbihocmVmLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0V4dGVybmFsVXJsKGhyZWY6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmV4dGVybmFsUmVnZXgudGVzdChocmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTaXRlVXJsKGhyZWY6IHN0cmluZykge1xuICAgIGNvbnN0IGV4Y2VwdGlvbiA9ICcvcGFjaWVudGUnO1xuICAgIHJldHVybiB0aGlzLnNpdGVVcmxMaXN0LmZpbmQoKHVybCkgPT4gaHJlZi5pbmNsdWRlcyh1cmwpICYmICFocmVmLmluY2x1ZGVzKGV4Y2VwdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0FuY2hvcihocmVmOiBzdHJpbmcpIHtcbiAgICBpZiAoaHJlZiA9PT0gJyMnKSByZXR1cm47XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGNvbnN0IGRvY0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGxldCBhZGp1c3RtZW50ID0gMDtcblxuICAgICAgaWYgKHRoaXMubGliQ29uZmlnLmN1c3RvbUFuY2hvckFkanVzdG1lbnQpIHtcbiAgICAgICAgYWRqdXN0bWVudCA9IHRoaXMubGliQ29uZmlnLmN1c3RvbUFuY2hvckFkanVzdG1lbnQodGhpcy5kb2N1bWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFuY2hvckFkanVzdG1lbnQpIHtcbiAgICAgICAgYWRqdXN0bWVudCA9IHRoaXMuYW5jaG9yQWRqdXN0bWVudDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9keVRvcCA9IHRoaXMuZG9jdW1lbnQ/LmJvZHk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy50b3AgPz8gMDtcbiAgICAgIGNvbnN0IGhyZWZUb3AgPSB0aGlzLmRvY3VtZW50Py5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihocmVmKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LnRvcCA/PyAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gYm9keVRvcCAqIC0xICsgaHJlZlRvcCAtIGFkanVzdG1lbnQ7XG4gICAgICBkb2NFbGVtZW50LnNjcm9sbFRvKHsgdG9wOiBzY3JvbGxUb3AsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG8oaHJlZjogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2l0ZUJhc2VQYXRoID0gdGhpcy5saWJDb25maWcuc2l0ZVN1Zml4ID8/ICcnO1xuICAgIGNvbnN0IG5vQmFzZUhyZWYgPSBocmVmLmluY2x1ZGVzKHNpdGVCYXNlUGF0aCkgPyBocmVmLnJlcGxhY2Uoc2l0ZUJhc2VQYXRoLCAnJykgOiBocmVmO1xuICAgIGNvbnN0IFtwYXRoLCBxdWVyeV0gPSBub0Jhc2VIcmVmLnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5QXJyYXkgPSBxdWVyeS5zcGxpdCgnJicpO1xuICAgICAgcXVlcnlBcnJheS5mb3JFYWNoKChxKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IHEuc3BsaXQoJz0nKTtcbiAgICAgICAgcXVlcnlQYXJhbXNbYXJyWzBdXSA9IGFyclsxXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aF0sIHsgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zIH0pO1xuICB9XG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzaXRlLWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvZGlyZWN0aXZlcy9yZHNpdGUtbGluay9yZHNpdGUtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7QUFRL0YsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUNVLE1BQWMsRUFDTyxVQUFrQixFQUNyQixRQUFrQixFQUNoQixTQUFvQixFQUN4QyxPQUF3QixFQUN4QixZQUEwQixFQUMxQix5QkFBb0Q7UUFOcEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNPLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFqQnRELGtCQUFhLEdBQUcsa0NBQWtDLENBQUM7UUFDbkQsYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNsQixnQkFBVyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEQsZ0JBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLENBQUMs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LFdBQVc7OzBCQUNsQixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsVUFBVTtxSUFUWCxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBYUMsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTElCX0NPTkZJRywgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vdG9rZW5zL0xpYkNvbmZpZyc7XG5pbXBvcnQgeyBQaG9uZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9waG9uZS9waG9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmUgfSBmcm9tICcuLi9yZHNpdGUtcGhvbmUtbW9kYWwvcmRzaXRlLXBob25lLW1vZGFsLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tyZHNpdGVsaW5rXScsXG4gIHByb3ZpZGVyczogW1Jkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBSZHNpdGVMaW5rRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBleHRlcm5hbFJlZ2V4ID0gL15odHRwOnxodHRwczp8dGVsOnx3d3dcXC58bWFpbHRvOi87XG4gIHByaXZhdGUgdGVsUmVnZXggPSAvdGVsOi87XG4gIHByaXZhdGUgc2l0ZVVybExpc3QgPSBbJ3JlZGVkb3JzYW9sdWl6JywgJ3JlZGVkb3JsYWJzJ107XG4gIHByaXZhdGUgYWxsb3dlZFRhZ3MgPSBbJ0EnLCAnQ1VSQS1CVVRUT04nLCAnQ1VSQS1CVVRUT04tT1VUTElORScsICdDVVJBLUJVVFRPTi1UUkFOU1BBUkVOVCddO1xuXG4gIEBJbnB1dCgpIGFuY2hvckFkanVzdG1lbnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBhbmNob3JFeHRyYUFkanVzdG1lbnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHBob25lbW9kYWw6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQEluamVjdChMSUJfQ09ORklHKSBwcml2YXRlIGxpYkNvbmZpZzogTGliQ29uZmlnLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxhbnk+LFxuICAgIHByaXZhdGUgcGhvbmVTZXJ2aWNlOiBQaG9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlOiBSZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlLFxuICApIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5hbGxvd2VkVGFncy5pbmNsdWRlcyh0aGlzLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWUpKSByZXR1cm47XG4gICAgY29uc3QgaHJlZiA9IHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZ2V0QXR0cmlidXRlKCdocmVmJykgPz8gJyc7XG5cbiAgICBpZiAodGhpcy5pc1Bob25lKGhyZWYpKSB7XG4gICAgICB0aGlzLnBob25lQ2xpY2tlZCh7XG4gICAgICAgIGhyZWYsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnQsXG4gICAgICAgIHBob25lbW9kYWw6IHRoaXMucGhvbmVtb2RhbCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4dGVybmFsVXJsKGhyZWYpKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmlzU2l0ZVVybChocmVmKSA/ICdfc2VsZicgOiAnX2JsYW5rJztcbiAgICAgIHdpbmRvdy5vcGVuKGhyZWYsIHRhcmdldCk7XG4gICAgfSBlbHNlIGlmIChocmVmLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgdGhpcy5zY3JvbGxUb0FuY2hvcihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvKGhyZWYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNQaG9uZShocmVmOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50ZWxSZWdleC50ZXN0KGhyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBwaG9uZUNsaWNrZWQodmFsdWU6IHsgaHJlZjogc3RyaW5nOyBldmVudDogRXZlbnQ7IGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PjsgcGhvbmVtb2RhbDogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCB9KSB7XG4gICAgY29uc3QgeyBocmVmLCBldmVudCwgZWxlbWVudCwgcGhvbmVtb2RhbCB9ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMucGhvbmVTZXJ2aWNlLmlzUGhvbmVNb2RhbChocmVmKSkge1xuICAgICAgaWYgKHRoaXMucGhvbmVTZXJ2aWNlLmlzQ29uc3VsdGFPdUV4YW1lKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgndGl0bGUnKSkpIHtcbiAgICAgICAgdGhpcy5yZHNpdGVQaG9uZU1vZGFsRGlyZWN0aXZlLnJkc2l0ZXBob25lbW9kYWwgPSBwaG9uZW1vZGFsID8/IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnJkc2l0ZVBob25lTW9kYWxEaXJlY3RpdmUub3BlblBob25lTW9kYWwoZXZlbnQsIGhyZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3BlbihocmVmLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0V4dGVybmFsVXJsKGhyZWY6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmV4dGVybmFsUmVnZXgudGVzdChocmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTaXRlVXJsKGhyZWY6IHN0cmluZykge1xuICAgIGNvbnN0IGV4Y2VwdGlvbiA9ICcvcGFjaWVudGUnO1xuICAgIHJldHVybiB0aGlzLnNpdGVVcmxMaXN0LmZpbmQoKHVybCkgPT4gaHJlZi5pbmNsdWRlcyh1cmwpICYmICFocmVmLmluY2x1ZGVzKGV4Y2VwdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb0FuY2hvcihocmVmOiBzdHJpbmcpIHtcbiAgICBpZiAoaHJlZiA9PT0gJyMnKSByZXR1cm47XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGNvbnN0IGRvY0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGxldCBhZGp1c3RtZW50ID0gMDtcblxuICAgICAgaWYgKHRoaXMubGliQ29uZmlnLmN1c3RvbUFuY2hvckFkanVzdG1lbnQpIHtcbiAgICAgICAgYWRqdXN0bWVudCA9IHRoaXMubGliQ29uZmlnLmN1c3RvbUFuY2hvckFkanVzdG1lbnQodGhpcy5kb2N1bWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFuY2hvckFkanVzdG1lbnQpIHtcbiAgICAgICAgYWRqdXN0bWVudCA9IHRoaXMuYW5jaG9yQWRqdXN0bWVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYW5jaG9yRXh0cmFBZGp1c3RtZW50KSB7XG4gICAgICAgIGFkanVzdG1lbnQgKz0gdGhpcy5hbmNob3JFeHRyYUFkanVzdG1lbnQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvZHlUb3AgPSB0aGlzLmRvY3VtZW50Py5ib2R5Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8udG9wID8/IDA7XG4gICAgICBjb25zdCBocmVmVG9wID0gdGhpcy5kb2N1bWVudD8ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oaHJlZik/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy50b3AgPz8gMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IGJvZHlUb3AgKiAtMSArIGhyZWZUb3AgLSBhZGp1c3RtZW50O1xuICAgICAgZG9jRWxlbWVudC5zY3JvbGxUbyh7IHRvcDogc2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvKGhyZWY6IHN0cmluZykge1xuICAgIGNvbnN0IHNpdGVCYXNlUGF0aCA9IHRoaXMubGliQ29uZmlnLnNpdGVTdWZpeCA/PyAnJztcbiAgICBjb25zdCBub0Jhc2VIcmVmID0gaHJlZi5pbmNsdWRlcyhzaXRlQmFzZVBhdGgpID8gaHJlZi5yZXBsYWNlKHNpdGVCYXNlUGF0aCwgJycpIDogaHJlZjtcbiAgICBjb25zdCBbcGF0aCwgcXVlcnldID0gbm9CYXNlSHJlZi5zcGxpdCgnPycpO1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICBjb25zdCBxdWVyeUFycmF5ID0gcXVlcnkuc3BsaXQoJyYnKTtcbiAgICAgIHF1ZXJ5QXJyYXkuZm9yRWFjaCgocSkgPT4ge1xuICAgICAgICBjb25zdCBhcnIgPSBxLnNwbGl0KCc9Jyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1zW2FyclswXV0gPSBhcnJbMV07XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhdLCB7IHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyB9KTtcbiAgfVxufVxuIl19
@@ -53,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
53
53
  providedIn: 'root',
54
54
  }]
55
55
  }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHeEQsTUFBTSxPQUFnQixzQkFBc0I7Q0FZM0M7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQUh6QjtRQUlFLGNBQVMsR0FBa0MsSUFBSSxDQUFDO0tBNENqRDtJQXpDQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQStCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBd0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBeUIsRUFBRSxVQUErQixFQUFFO1FBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBeUI7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFnQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBdUI7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0E1Q1UsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmRzaXRlTW9kYWxDb21wb25lbnRTdHlsZSB9IGZyb20gJy4uLy4uL2VudW1zL1Jkc2l0ZU1vZGFsQ29tcG9uZW50U3R5bGUuZW51bSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50IHtcbiAgYWJzdHJhY3QgaWQ6IHN0cmluZztcbiAgYWJzdHJhY3QgbW9kYWxUaXRsZTogc3RyaW5nO1xuICBhYnN0cmFjdCBtb2RhbEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gIGFic3RyYWN0IG1vZGFsQ29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG4gIGFic3RyYWN0IG1vZGFsQ29udGVudENvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICBhYnN0cmFjdCBtb2RhbEFjdGlvbnM6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBhYnN0cmFjdCBjb21wb25lbnRTdHlsZTogYW55O1xuICBhYnN0cmFjdCBtb2RhbDogSFRNTERpYWxvZ0VsZW1lbnQ7XG4gIGFic3RyYWN0IG9wZW4oKTogdm9pZDtcbiAgYWJzdHJhY3QgY2xvc2UoKTogdm9pZDtcbiAgYWJzdHJhY3QgcmVzZXQoKTogdm9pZDtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIHJlZmVyZW5jZTogQWJzdHJhY3RNb2RhbENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuICBkZWZhdWx0UGhvbmVNb2RhbCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLnJlZmVyZW5jZT8ub3BlbigpO1xuICB9XG5cbiAgc2V0UmVmZXJlbmNlKGVsZW1lbnQ6IEFic3RyYWN0TW9kYWxDb21wb25lbnQpIHtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IGVsZW1lbnQ7XG4gIH1cblxuICBzZXRIZWFkZXIoaGVhZGVyOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkgcmV0dXJuO1xuICAgIHRoaXMucmVmZXJlbmNlLm1vZGFsSGVhZGVyID0gaGVhZGVyO1xuICB9XG5cbiAgc2V0VGl0bGUodGl0bGU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHJldHVybjtcbiAgICB0aGlzLnJlZmVyZW5jZS5tb2RhbFRpdGxlID0gdGl0bGU7XG4gIH1cblxuICBzZXRDb250ZW50KGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSkge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHJldHVybjtcbiAgICB0aGlzLnJlZmVyZW5jZS5tb2RhbENvbnRlbnQgPSBjb250ZW50O1xuICAgIHRoaXMucmVmZXJlbmNlLm1vZGFsQ29udGVudENvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgc2V0QWN0aW9ucyhhY3Rpb25zOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKCF0aGlzLnJlZmVyZW5jZSkgcmV0dXJuO1xuICAgIHRoaXMucmVmZXJlbmNlLm1vZGFsQWN0aW9ucyA9IGFjdGlvbnM7XG4gIH1cblxuICBzZXRTdHlsZShzdHlsZTogUmRzaXRlTW9kYWxDb21wb25lbnRTdHlsZSkge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHJldHVybjtcbiAgICB0aGlzLnJlZmVyZW5jZS5jb21wb25lbnRTdHlsZSA9IHN0eWxlO1xuICB9XG5cbiAgc2V0RGVmYXVsdFBob25lTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLmRlZmF1bHRQaG9uZU1vZGFsID0gbW9kYWw7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLnJlZmVyZW5jZT8uY2xvc2UoKTtcbiAgfVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHeEQsTUFBTSxPQUFnQixzQkFBc0I7Q0FZM0M7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQUh6QjtRQUlFLGNBQVMsR0FBa0MsSUFBSSxDQUFDO0tBNENqRDtJQXpDQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQStCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBd0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBeUIsRUFBRSxVQUErQixFQUFFO1FBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBeUI7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFnQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBdUI7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQzsrR0E1Q1UsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmRzaXRlTW9kYWxDb21wb25lbnRTdHlsZSB9IGZyb20gJy4uLy4uL2VudW1zL1Jkc2l0ZU1vZGFsQ29tcG9uZW50U3R5bGUuZW51bSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50IHtcbiAgYWJzdHJhY3QgaWQ6IHN0cmluZztcbiAgYWJzdHJhY3QgbW9kYWxUaXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgYWJzdHJhY3QgbW9kYWxIZWFkZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBhYnN0cmFjdCBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsO1xuICBhYnN0cmFjdCBtb2RhbENvbnRlbnRDb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbDtcbiAgYWJzdHJhY3QgbW9kYWxBY3Rpb25zOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbDtcbiAgYWJzdHJhY3QgY29tcG9uZW50U3R5bGU6IGFueTtcbiAgYWJzdHJhY3QgbW9kYWw6IEhUTUxEaWFsb2dFbGVtZW50O1xuICBhYnN0cmFjdCBvcGVuKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGNsb3NlKCk6IHZvaWQ7XG4gIGFic3RyYWN0IHJlc2V0KCk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuICByZWZlcmVuY2U6IEFic3RyYWN0TW9kYWxDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbiAgZGVmYXVsdFBob25lTW9kYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIG9wZW4oKSB7XG4gICAgdGhpcy5yZWZlcmVuY2U/Lm9wZW4oKTtcbiAgfVxuXG4gIHNldFJlZmVyZW5jZShlbGVtZW50OiBBYnN0cmFjdE1vZGFsQ29tcG9uZW50KSB7XG4gICAgdGhpcy5yZWZlcmVuY2UgPSBlbGVtZW50O1xuICB9XG5cbiAgc2V0SGVhZGVyKGhlYWRlcjogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHJldHVybjtcbiAgICB0aGlzLnJlZmVyZW5jZS5tb2RhbEhlYWRlciA9IGhlYWRlcjtcbiAgfVxuXG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlKSByZXR1cm47XG4gICAgdGhpcy5yZWZlcmVuY2UubW9kYWxUaXRsZSA9IHRpdGxlO1xuICB9XG5cbiAgc2V0Q29udGVudChjb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+LCBjb250ZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlKSByZXR1cm47XG4gICAgdGhpcy5yZWZlcmVuY2UubW9kYWxDb250ZW50ID0gY29udGVudDtcbiAgICB0aGlzLnJlZmVyZW5jZS5tb2RhbENvbnRlbnRDb250ZXh0ID0gY29udGV4dDtcbiAgfVxuXG4gIHNldEFjdGlvbnMoYWN0aW9uczogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICghdGhpcy5yZWZlcmVuY2UpIHJldHVybjtcbiAgICB0aGlzLnJlZmVyZW5jZS5tb2RhbEFjdGlvbnMgPSBhY3Rpb25zO1xuICB9XG5cbiAgc2V0U3R5bGUoc3R5bGU6IFJkc2l0ZU1vZGFsQ29tcG9uZW50U3R5bGUpIHtcbiAgICBpZiAoIXRoaXMucmVmZXJlbmNlKSByZXR1cm47XG4gICAgdGhpcy5yZWZlcmVuY2UuY29tcG9uZW50U3R5bGUgPSBzdHlsZTtcbiAgfVxuXG4gIHNldERlZmF1bHRQaG9uZU1vZGFsKG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5kZWZhdWx0UGhvbmVNb2RhbCA9IG1vZGFsO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5yZWZlcmVuY2U/LmNsb3NlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -136,7 +136,7 @@ export class SeoService {
136
136
  title: this.getTitle(),
137
137
  description: this.activeDescription || '',
138
138
  url: `${siteurl}${pagePath}`,
139
- image: `${siteurl}/assets/imgs/logo-novo-rededor-saoluiz-blue.png`,
139
+ image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',
140
140
  };
141
141
  if (properties) {
142
142
  defaultProperties = { ...defaultProperties, ...properties };
@@ -465,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
465
465
  type: Inject,
466
466
  args: [DOCUMENT]
467
467
  }] }] });
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZW8vc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBUXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sVUFBVTtJQXVCckIsWUFDVSxLQUFZLEVBQ1osSUFBVSxFQUNWLFFBQWtCLEVBQ0UsU0FBb0IsRUFDdEIsUUFBa0I7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0UsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0J2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBRTNCLFdBQU0sR0FBRztZQUNkLG1DQUFtQztZQUNuQyw0Q0FBNEM7WUFDNUMsa0RBQWtEO1lBQ2xELDZCQUE2QjtTQUM5QixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFJeEIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0Qix5QkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztRQUUxQyxZQUFPLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsRUFBRSxDQUFD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QyxVQUFVLENBQUMsQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQWM7UUFDcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQzsrR0F2ZVUsVUFBVSxtRkEyQlgsVUFBVSxhQUNWLFFBQVE7bUhBNUJQLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBNEJJLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IERPQ1VNRU5ULCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcblxuaW1wb3J0IHsgU29jaWFsTWV0YVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29jaWFsLW1ldGEtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSnNvbkl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLWpzb24taXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBTZW9EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlby9zZW8tZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBTZW9VbmlkYWRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlby9zZW8tdW5pZGFkZS5tb2RlbCc7XG5pbXBvcnQgeyBXcFBvc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29yZHByZXNzL3Bvc3QvcG9zdC5tb2RlbCc7XG5pbXBvcnQgeyBnZXRTaXRlVXJsLCByZW1vdmVIdG1sVGFncyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTElCX0NPTkZJRywgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vdG9rZW5zL0xpYkNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTZW9TZXJ2aWNlIHtcbiAgcHVibGljIHNlcGFyYXRvciA9ICcgLSAnO1xuICBwdWJsaWMgZGVmYXVsdFRpdGxlID0gJ1JlZGUgROKAmU9yJztcbiAgcHVibGljIGFjdGl2ZURlc2NyaXB0aW9uITogc3RyaW5nO1xuICBwdWJsaWMgc2FtZUFzID0gW1xuICAgICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vcmVkZWRvci8nLFxuICAgICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3JlZGVkb3Jfb2ZpY2lhbC8nLFxuICAgICdodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9yZWRlZG9yLXNhb2x1aXonLFxuICAgICdodHRwczovL3R3aXR0ZXIuY29tL3JlZGVkb3InLFxuICBdO1xuICBwdWJsaWMgdHdpdHRlclVzZXIgPSAnQHJlZGVkb3InO1xuXG4gIHByaXZhdGUgY2Fub25pY2FsVGFnITogSFRNTExpbmtFbGVtZW50O1xuICBwcml2YXRlIGpzb25UYWchOiBIVE1MU2NyaXB0RWxlbWVudDtcbiAgcHJpdmF0ZSBqc29uVGFnSWQgPSAnc2VvSlNPTic7XG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnITogSFRNTFNjcmlwdEVsZW1lbnQ7XG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnSWQgPSAnYnJlYWRjcnVtYnNKU09OJztcblxuICBwdWJsaWMgdW5pZGFkZTogYW55ID0gbnVsbDtcbiAgcHVibGljIHVuaWRhZGVOYW1lOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHVuaWRhZGVQYXRoOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHVuaWRhZGVTbHVnOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIG1ldGE6IE1ldGEsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgQEluamVjdChMSUJfQ09ORklHKSBwcml2YXRlIGxpYkNvbmZpZzogTGliQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHt9XG5cbiAgcHVibGljIHNldEZ1bGxTZW8oZGF0YTogU2VvRGF0YSkge1xuICAgIHRoaXMuc2V0VGl0bGUoZGF0YS50aXRsZS50ZXh0LCAhIWRhdGEudGl0bGUuc3ViKTtcbiAgICB0aGlzLnNldERlc2NyaXB0aW9uKGRhdGEuZGVzY3JpcHRpb24pO1xuICAgIHRoaXMuc2V0Q2Fub25pY2FsSHJlZihkYXRhLmNhbm9uaWNhbCk7XG4gICAgdGhpcy5zZXRQYWdlSnNvbigpO1xuICAgIHRoaXMuc2V0U29jaWFsVGFncyhkYXRhLnNvY2lhbFRhZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0YWcgZGVzY3JpcHRpb24gZGEgcMOhZ2luYVxuICAgKiBAcGFyYW0gY29udGVudCBjb250ZcO6ZG8gZGEgZGVzY3Jpw6fDo28gPHN0cmluZz5cbiAgICovXG4gIHB1YmxpYyBzZXREZXNjcmlwdGlvbihjb250ZW50OiBzdHJpbmcpOiBTZW9TZXJ2aWNlIHtcbiAgICBjb25zdCBkZXNjVGFnID0gdGhpcy5tZXRhLmdldFRhZyhcIm5hbWU9J2Rlc2NyaXB0aW9uJ1wiKTtcbiAgICBpZiAoY29udGVudCkge1xuICAgICAgY29udGVudCA9IGhlLmRlY29kZShjb250ZW50KTtcbiAgICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZURlc2NyaXB0aW9uID0gY29udGVudDtcbiAgICBjb25zdCB0YWdDb250ZW50ID0geyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb250ZW50IH07XG4gICAgaWYgKGRlc2NUYWcpIHtcbiAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcodGFnQ29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YS5hZGRUYWcodGFnQ29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBhIHDDoWdpbmFcbiAgICogQHBhcmFtIHRhZyBub21lIGRhIHRhZyBtZXRhXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXG4gICAqL1xuICBwdWJsaWMgc2V0TWV0YVRhZyh0YWc6IHN0cmluZywgY29udGVudDogc3RyaW5nLCB0eXBlID0gJ25hbWUnKSB7XG4gICAgY29uc3QgbWV0YXRhZyA9IHRoaXMubWV0YS5nZXRUYWcoYCR7dHlwZX09JyR7dGFnfSdgKTtcbiAgICBjb250ZW50ID0gaGUuZGVjb2RlKGNvbnRlbnQpO1xuICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcbiAgICBjb25zdCB0YWdDb250ZW50ID0ge1xuICAgICAgW3R5cGVdOiB0YWcsXG4gICAgICBjb250ZW50LFxuICAgIH07XG4gICAgaWYgKCFtZXRhdGFnKSB7XG4gICAgICB0aGlzLm1ldGEuYWRkVGFnKHRhZ0NvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHRhZ0NvbnRlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgbWV0YSB0YWdzIGRhIHDDoWdpbmFcbiAgICogQHBhcmFtIHRhZyBub21lIGRhIHRhZyBtZXRhXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gYXR0ciBhdHJpYnV0byBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFnKHRhZzogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGF0dHI6IHN0cmluZywgdHlwZSA9ICduYW1lJykge1xuICAgIGNvbnN0IG1ldGF0YWcgPSB0aGlzLm1ldGEuZ2V0VGFnKGAke3R5cGV9PScke3RhZ30nYCk7XG4gICAgaWYgKG1ldGF0YWcpIHtcbiAgICAgIHRoaXMubWV0YS5yZW1vdmVUYWcoYCR7YXR0cn09JHtjb250ZW50fWApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgbWV0YSB0YWdzIHBhcmEgRmFjZWJvb2tcbiAgICogQHBhcmFtIHRpdGxlIHTDrXR1bG8gcGFyYSBvIGZhY2Vib29rXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gZmFjZWJvb2tcbiAgICogQHBhcmFtIHVybCB1cmwgcGFyYSBkZWZpbmnDp8OjbyBkbyBmYWNlYm9va1xuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIGZhY2Vib29rXG4gICAqL1xuICBwdWJsaWMgc2V0TWV0YUZhY2Vib29rKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIHVybDogc3RyaW5nLCBpbWc6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzp1cmwnLCB1cmwsICdwcm9wZXJ0eScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6dGl0bGUnLCB0aXRsZSwgJ3Byb3BlcnR5Jyk7XG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzpkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uLCAncHJvcGVydHknKTtcbiAgICB0aGlzLnNldE1ldGFUYWcoJ29nOnR5cGUnLCAnd2Vic2l0ZScsICdwcm9wZXJ0eScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBpbWcgPz8gJycsICdwcm9wZXJ0eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBUd2l0dGVyXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIHBhcmEgbyB0d2l0dGVyXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gdHdpdHRlclxuICAgKiBAcGFyYW0gdXJsIHVybCBwYXJhIG8gdHdpdHRlclxuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIHR3aXR0ZXJcbiAgICovXG4gIHB1YmxpYyBzZXRNZXRhVHdpdHRlcih0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCB1cmw6IHN0cmluZywgaW1nOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpzaXRlJywgdXJsLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjp0aXRsZScsIHRpdGxlLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjppbWFnZScsIGltZyA/PyAnJywgJ25hbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGFncyBkZSByZWRlcyBzb2NpYWlzIChUd2l0dGVyIGUgT3BlbiBHcmFwaClcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICovXG4gIHNldFNvY2lhbFRhZ3MocHJvcGVydGllcz86IFNvY2lhbE1ldGFQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICBjb25zdCBzaXRldXJsID0gZ2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCk7XG4gICAgbGV0IGRlZmF1bHRQcm9wZXJ0aWVzOiBTb2NpYWxNZXRhUHJvcGVydGllcyA9IHtcbiAgICAgIHR3aXR0ZXJDYXJkOiAnc3VtbWFyeScsXG4gICAgICB0d2l0dGVyU2l0ZTogdGhpcy50d2l0dGVyVXNlcixcbiAgICAgIHR5cGU6ICd3ZWJzaXRlJyxcbiAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKCksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3BhZ2VQYXRofWAsXG4gICAgICBpbWFnZTogYCR7c2l0ZXVybH0vYXNzZXRzL2ltZ3MvbG9nby1ub3ZvLXJlZGVkb3Itc2FvbHVpei1ibHVlLnBuZ2AsXG4gICAgfTtcbiAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgZGVmYXVsdFByb3BlcnRpZXMgPSB7IC4uLmRlZmF1bHRQcm9wZXJ0aWVzLCAuLi5wcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpjYXJkJywgZGVmYXVsdFByb3BlcnRpZXMudHdpdHRlckNhcmQgfHwgJycsICduYW1lJylcbiAgICAgIC5zZXRNZXRhVGFnKCd0d2l0dGVyOnNpdGUnLCBkZWZhdWx0UHJvcGVydGllcy50d2l0dGVyU2l0ZSB8fCAnJywgJ25hbWUnKVxuICAgICAgLnNldE1ldGFUYWcoJ29nOnR5cGUnLCBkZWZhdWx0UHJvcGVydGllcy50eXBlIHx8ICcnLCAncHJvcGVydHknKVxuICAgICAgLnNldE1ldGFUYWcoJ29nOnRpdGxlJywgZGVmYXVsdFByb3BlcnRpZXMudGl0bGUgfHwgJycsICdwcm9wZXJ0eScpXG4gICAgICAuc2V0TWV0YVRhZygnb2c6ZGVzY3JpcHRpb24nLCBkZWZhdWx0UHJvcGVydGllcy5kZXNjcmlwdGlvbiB8fCAnJywgJ3Byb3BlcnR5JylcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzp1cmwnLCBkZWZhdWx0UHJvcGVydGllcy51cmwgfHwgJycsICdwcm9wZXJ0eScpXG4gICAgICAuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBkZWZhdWx0UHJvcGVydGllcy5pbWFnZSB8fCAnJywgJ3Byb3BlcnR5Jyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdMOtdHVsbyBkYSBww6FnaW5hXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIGRhIHDDoWdpbmEgPHN0cmluZz5cbiAgICogQHBhcmFtIHN1YiBTZSDDqSBzdWJzaXRlIGFjcmVzY2VudGEgdW5pZGFkZSA8Ym9vbGVhbj5cbiAgICovXG4gIHB1YmxpYyBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCBzdWIgPSBmYWxzZSkge1xuICAgIGlmICh0aXRsZSAmJiB0aXRsZSAhPT0gJycpIHtcbiAgICAgIHRpdGxlID0gaGUuZGVjb2RlKHRpdGxlKTtcbiAgICAgIHRpdGxlID0gcmVtb3ZlSHRtbFRhZ3ModGl0bGUpO1xuICAgICAgaWYgKHN1Yikge1xuICAgICAgICB0aXRsZSA9IGhlLmRlY29kZShgJHt0aXRsZX0ke3RoaXMuc2VwYXJhdG9yfSR7dGhpcy51bmlkYWRlTmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBPYnRlbSB0w610dWxvIGF0dWFsIGRhIHDDoWdpbmEgKi9cbiAgcHVibGljIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGUuZ2V0VGl0bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQ0MDRUaXRsZShjb21wb25lbnQ6IHN0cmluZyA9ICdEZWZhdWx0IENvbXBvbmVudCcpIHtcbiAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudCAhPT0gJycpIHtcbiAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShjb21wb25lbnQpO1xuICAgICAgY29tcG9uZW50ID0gcmVtb3ZlSHRtbFRhZ3MoY29tcG9uZW50KTtcbiAgICAgIGlmICh0aGlzLnVuaWRhZGVOYW1lKSB7XG4gICAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShgJHtjb21wb25lbnR9JHt0aGlzLnNlcGFyYXRvcn0ke3RoaXMudW5pZGFkZU5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRpdGxlID0gYEVycm8gNDA0IC0gJHtjb21wb25lbnR9IC0gJHt0aGlzLmxpYkNvbmZpZz8uc2l0ZU5hbWV9IC0gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gO1xuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIEpTT04gZGUgYnJlYWRjcnVtYnMgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1ic0pTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xuICAgIGNvbnN0IHRhZzogSFRNTFNjcmlwdEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHRhZy5pZCA9IHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnSWQ7XG4gICAgdGFnLnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0YWc7XG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIHNjcmlwdCBqc29uIGRlIGJyZWFkY3J1bWJzIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxTY3JpcHRFbGVtZW50O1xuICAgICAgaWYgKGVsZW0gJiYgZWxlbS5pZCA9PT0gdGhpcy5icmVhZGNydW1ic0pzb25UYWdJZCkge1xuICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQnJlYWRjcnVtYnNKU09OVGFnKCk7XG4gIH1cblxuICAvKiogRGVmaW5lIG8gSlNPTiBkZSBicmVhZGNydW1icyBkYSBww6FnaW5hICovXG4gIHB1YmxpYyBzZXRCcmVhZGNydW1ic0pzb24oaXRlbXM6IEJyZWFkY3J1bWJJdGVtW10pIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZyA9IHRoaXMuZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk7XG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgICdAY29udGV4dCc6ICdodHRwOi8vc2NoZW1hLm9yZycsXG4gICAgICAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnLFxuICAgICAgaXRlbUxpc3RFbGVtZW50OiB0aGlzLmdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXMpLFxuICAgIH07XG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQ29udmVydGUgaXRlbnMgZG8gYnJlYWRjcnVtYiBlbSBpdGVucyBkbyBKU09OICovXG4gIHByaXZhdGUgZ2V0SnNvbkJyZWFkY3J1bWJJdGVtcyhpdGVtczogQnJlYWRjcnVtYkl0ZW1bXSk6IEJyZWFkY3J1bWJKc29uSXRlbVtdIHtcbiAgICBjb25zdCBqc29uSXRlbXMgPSBbXG4gICAgICB7XG4gICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgIHBvc2l0aW9uOiAxLFxuICAgICAgICBpdGVtOiB7ICdAaWQnOiB0aGlzLmdldEJyZWFkY3J1bWJJdGVtVXJsKFsnLyddKSwgbmFtZTogaGUuZW5jb2RlKCdQw6FnaW5hIEluaWNpYWwnKSB9LFxuICAgICAgfSBhcyBCcmVhZGNydW1iSnNvbkl0ZW0sXG4gICAgXTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICBjb25zdCBqc29uSXRlbTogQnJlYWRjcnVtYkpzb25JdGVtID0ge1xuICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICBwb3NpdGlvbjogaSArIDIsXG4gICAgICAgIGl0ZW06IHsgJ0BpZCc6IHRoaXMuZ2V0QnJlYWRjcnVtYkl0ZW1VcmwoaXRlbT8udXJsIHx8IFtdKSwgbmFtZTogaGUuZW5jb2RlKGl0ZW0ubGFiZWwpIH0sXG4gICAgICB9O1xuICAgICAganNvbkl0ZW1zLnB1c2goanNvbkl0ZW0pO1xuICAgIH0pO1xuICAgIHJldHVybiBqc29uSXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogTW9udGEgYSB1cmwgZG8gaXRlbSBkZSBicmVhZGNydW1iIHByb3ZlbmllbnRlIGRvIGFycmF5IGRlIHVybHNcbiAgICogb3UgZG8gY2FtaW5obyBkYSBwcsOzcHJpYSBww6FnaW5hLCBjb25mb3JtZSBjYXNvIGRvIMO6bHRpbW8gaXRlbS5cbiAgICovXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYkl0ZW1VcmwodXJsOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPD0gMCkge1xuICAgICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICAgIHJldHVybiBgJHtzaXRldXJsfSR7cGFnZVBhdGh9YDtcbiAgICB9XG4gICAgdXJsID0gdXJsLmZpbHRlcigodSkgPT4gdSAhPT0gdGhpcy51bmlkYWRlUGF0aCk7XG4gICAgY29uc3QgdW5pZGFkZVBhdGggPSB0aGlzLmdldFVuaWRhZGVQYXRoKCk7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt1bmlkYWRlUGF0aH0vJHt1cmwuam9pbignLycpLnJlcGxhY2UoL15cXC8/LywgJycpfWA7XG4gICAgcmV0dXJuIGAke3NpdGV1cmx9LyR7ZnVsbFBhdGh9YC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICB9XG5cbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIG8gSlNPTiBkZSBTRU8gKi9cbiAgcHJpdmF0ZSBjcmVhdGVKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCB0YWc6IEhUTUxTY3JpcHRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICB0YWcuaWQgPSB0aGlzLmpzb25UYWdJZDtcbiAgICB0YWcudHlwZSA9ICdhcHBsaWNhdGlvbi9sZCtqc29uJztcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICB0aGlzLmpzb25UYWcgPSB0YWc7XG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIHNjcmlwdCBqc29uIGRlIGJyZWFkY3J1bWJzIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXG4gIHByaXZhdGUgZ2V0SlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmRvY3VtZW50LmhlYWQuY2hpbGRyZW47XG4gICAgbGV0IGk6IG51bWJlcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW0gPSBlbGVtZW50c1tpXSBhcyBIVE1MU2NyaXB0RWxlbWVudDtcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uaWQgPT09IHRoaXMuanNvblRhZ0lkKSB7XG4gICAgICAgIHJldHVybiBlbGVtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVKU09OVGFnKCk7XG4gIH1cblxuICAvKiogRGVmaW5lIEpTT04gcGFyYSBTRU8gc29tZW50ZSBxdWFuZG8gbm8gc2Vydmlkb3IgKi9cbiAgcHVibGljIHNldFBhZ2VKc29uKCkge1xuICAgIHRoaXMuanNvblRhZyA9IHRoaXMuZ2V0SlNPTlRhZygpO1xuICAgIGNvbnN0IGdyYXBoID0gW3RoaXMuZ2V0T3JnSnNvbigpLCB0aGlzLmdldFdlYnNpdGVKc29uKCksIHRoaXMuZ2V0V2VicGFnZUpzb24oKV07XG4gICAgY29uc3QganNvbiA9IHsgJ0Bjb250ZXh0JzogJ2h0dHA6Ly9zY2hlbWEub3JnJywgJ0BncmFwaCc6IGdyYXBoIH07XG4gICAgdGhpcy5qc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIE9idGVtIEpTT04gZGEgT3JnYW5pemHDp8OjbyAqL1xuICBwcml2YXRlIGdldE9yZ0pzb24oKSB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICdAaWQnOiBgJHtzaXRldXJsfSNvcmdhbml6YXRpb25gLFxuICAgICAgbmFtZTogdGhpcy5kZWZhdWx0VGl0bGUsXG4gICAgICBrZXl3b3JkczogdGhpcy5saWJDb25maWc/LmtleXdvcmRzLFxuICAgICAgdXJsOiBgJHtzaXRldXJsfWAsXG4gICAgICBzYW1lQXM6IHRoaXMuc2FtZUFzLFxuICAgIH07XG4gIH1cblxuICAvKiogT2J0ZW0gSlNPTiBkbyBXZWJzaXRlIChwb3J0YWwsIHVuaWRhZGVzLCBldGMpICovXG4gIHByaXZhdGUgZ2V0V2Vic2l0ZUpzb24oKSB7XG4gICAgY29uc3QgdW5pZGFkZVBhdGggPSB0aGlzLmdldFVuaWRhZGVQYXRoKCk7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnV2ViU2l0ZScsXG4gICAgICAnQGlkJzogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCxcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofWAsXG4gICAgICBuYW1lOiB0aGlzLnVuaWRhZGVOYW1lLFxuICAgICAga2V5d29yZHM6IHRoaXMubGliQ29uZmlnPy5rZXl3b3JkcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIE9idGVtIEpzb24gZGEgcMOhZ2luYSAqL1xuICBwcml2YXRlIGdldFdlYnBhZ2VKc29uKCkge1xuICAgIGNvbnN0IHVuaWRhZGVQYXRoID0gdGhpcy5nZXRVbmlkYWRlUGF0aCgpO1xuICAgIGNvbnN0IHNpdGVVUkwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcbiAgICBjb25zdCBwYWdlUGF0aCA9IGAke3NpdGVVUkx9JHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLmFjdGl2ZURlc2NyaXB0aW9uID8gdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiA6ICcnO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnV2ViUGFnZScsXG4gICAgICAnQGlkJzogYCR7cGFnZVBhdGh9I3dlYnBhZ2VgLFxuICAgICAgdXJsOiBwYWdlUGF0aCxcbiAgICAgIGluTGFuZ3VhZ2U6ICdwdC1CUicsXG4gICAgICBuYW1lOiB0aGlzLmdldFRpdGxlKCksXG4gICAgICBpc1BhcnRPZjogeyAnQGlkJzogYCR7c2l0ZVVSTH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCB9LFxuICAgICAgYWJvdXQ6IHsgJ0BpZCc6IGAke3NpdGVVUkx9I29yZ2FuaXphdGlvbmAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFVuaWRhZGVQYXRoKCkge1xuICAgIGxldCB1bmlkYWRlUGF0aCA9ICcnO1xuICAgIGlmICh0aGlzLnVuaWRhZGUgJiYgdGhpcy51bmlkYWRlUGF0aCkge1xuICAgICAgdW5pZGFkZVBhdGggPSB0aGlzLnVuaWRhZGU/LnBhdGggPT09ICcvJyA/ICcnIDogdGhpcy51bmlkYWRlUGF0aD8uc3Vic3RyaW5nKDAsIHRoaXMudW5pZGFkZVBhdGg/Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gdW5pZGFkZVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogT2J0w6ltIGEgVVJMIGNhbsO0bmljYSBkYSBww6FnaW5hLlxuICAgKiBAcmV0dXJucyBBIFVSTCBjYW7DtG5pY2EgZGEgcMOhZ2luYS5cbiAgICovXG4gIHB1YmxpYyBnZXRDYW5vbmljYWxIcmVmKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNhbm9uaWNhbFRhZykge1xuICAgICAgdGhpcy5jYW5vbmljYWxUYWcgPSB0aGlzLmdldENhbm9uaWNhbFRhZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxUYWcuaHJlZjtcbiAgfVxuXG4gIC8qKiBDcmlhIHRhZyBwYXJhIGxpbmtzIGNhbm9uaWNhbHMgbm8gaGVhZCAqL1xuICBwcml2YXRlIGNyZWF0ZUNhbm9uaWNhbFRhZygpOiBIVE1MTGlua0VsZW1lbnQge1xuICAgIGNvbnN0IHRhZyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdjYW5vbmljYWwnKTtcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdocmVmJywgdGhpcy5kb2N1bWVudC5VUkwpO1xuICAgIHRoaXMuY2Fub25pY2FsVGFnID0gdGFnO1xuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICAvKiogUmV0b3JuYSB0YWcgcGFyYSBsaW5rIGNhbm9uaWNhbCBleGlzdGUgb3UgY3JpYSBzZSBuw6NvIGhvdXZlci4gKi9cbiAgcHJpdmF0ZSBnZXRDYW5vbmljYWxUYWcoKTogSFRNTExpbmtFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICAgIGlmIChlbGVtICYmIGVsZW0udGFnTmFtZSA9PT0gJ0xJTksnICYmIGVsZW0ucmVsID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2Fub25pY2FsVGFnKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIGxpbmsgY2Fub25pY2FsIGRhIHDDoWdpbmFcbiAgICogQHBhcmFtIHVybCB1cmwgY2Fub25pY2FsXG4gICAqL1xuICBwdWJsaWMgc2V0Q2Fub25pY2FsSHJlZih1cmw/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2Fub25pY2FsVGFnKSB7XG4gICAgICB0aGlzLmNhbm9uaWNhbFRhZyA9IHRoaXMuZ2V0Q2Fub25pY2FsVGFnKCk7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICBwYXRoID0gYC8ke3BhdGh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5vbmljYWxVcmwgPSB1cmwgJiYgdGhpcy5pc0N1c3RvbUNhbm9uaWNhbCh1cmwpID8gdXJsIDogYCR7Z2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCl9JHtwYXRofWA7XG5cbiAgICB0aGlzLmNhbm9uaWNhbFRhZy5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBjYW5vbmljYWxVcmwpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIGEgVVJMIGZvcm5lY2lkYSDDqSB1bSBsaW5rIGNhbm9uaWNhbCBwZXJzb25hbGl6YWRvXG4gICAqIEBwYXJhbSB1cmwgVVJMIGZvcm5lY2lkYVxuICAgKi9cbiAgcHVibGljIGlzQ3VzdG9tQ2Fub25pY2FsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB1cmwuc3RhcnRzV2l0aChzaXRldXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnTDqW0gdW1hIHVybCB2w6FsaWRhIG5hIGFwbGljYcOnw6NvIHByb3ZlbmllbnRlIGRlIHVtYSBVUkwgZ2VyYWRhXG4gICAqIHBlbG8gcGx1Z2luIFlvYXN0IHBhcmEgY2Fub25pY2FsIGF1dG9tw6F0aWNvLlxuICAgKiBFeC46IGh0dHBzOi8vd3AucmVkZWRvcnNhb2x1aXouY29tLmJyL2JyYXNpbC9lc3BlY2lhbGlkYWRlcy9jYXJkaW9sb2dpYS9cbiAgICogQHBhcmFtIHVybEZyb21XcEFwaSBVUkwgY2Fub25pY2EgZ2VyYWRhIHBlbG8gWW9hc3QgUGx1Z2luLlxuICAgKi9cbiAgdG9Mb2NhbENhbm9uaWNhbCh1cmxGcm9tV3BBcGk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5saWJDb25maWc/LndwVXJsID8/ICcnO1xuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcbiAgICBjb25zdCB1bmlkYWRlU2x1ZyA9IHRoaXMudW5pZGFkZVNsdWc7XG4gICAgbGV0IGNvbnZlcnRlZCA9IHVybEZyb21XcEFwaS5yZXBsYWNlKGFwaVVybCwgc2l0ZXVybCk7XG4gICAgaWYgKHVuaWRhZGVTbHVnICE9PSAnLycgJiYgY29udmVydGVkLmluY2x1ZGVzKGAvJHt1bmlkYWRlU2x1Z30vYCkpIHtcbiAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlZC5yZXBsYWNlKGAvJHt1bmlkYWRlU2x1Z30vYCwgYCR7dGhpcy51bmlkYWRlUGF0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZDtcbiAgfVxuXG4gIGdldFBvc3RDb250ZW50KHBvc3Q6IFdwUG9zdCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGVudCA9IHBvc3QuYWNmWydyZHNsX3Bvc3RfY29udGVudCddID8gcG9zdC5hY2YucmRzbF9wb3N0X2NvbnRlbnQuZmluZCgoY29udGVudDogYW55KSA9PiBjb250ZW50LmFjZl9mY19sYXlvdXQgPT09ICd0ZXh0X2h0bWwnKSA6IG51bGw7XG4gICAgcmV0dXJuIGNvbnRlbnQ/LmNvbnRlbnQgfHwgcG9zdC5jb250ZW50LnJlbmRlcmVkIHx8ICcnO1xuICB9XG5cbiAgYWRkQXJ0aWNsZVNjcmlwdChwb3N0OiBXcFBvc3QsIHNjcmlwdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBvc3RDb250ZW50ID0gdGhpcy5nZXRQb3N0Q29udGVudChwb3N0KTtcbiAgICBjb25zdCBwb3N0SGVhZGVySW1hZ2UgPSBwb3N0LmFjZlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXVxuICAgICAgPyB7XG4gICAgICAgICAgdXJsOiBwb3N0LmFjZlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXS51cmwsXG4gICAgICAgICAgd2lkdGg6IHBvc3QuYWNmWydyZHNsX3Bvc3RfaGVhZGVyX2ltZyddLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcG9zdC5hY2ZbJ3Jkc2xfcG9zdF9oZWFkZXJfaW1nJ10uaGVpZ2h0LFxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCBzdHJ1Y3R1cmVkRGF0YSA9IHtcbiAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLFxuICAgICAgJ0B0eXBlJzogJ0FydGljbGUnLFxuICAgICAgbWFpbkVudGl0eU9mUGFnZTogYCR7Z2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCl9JHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gLFxuICAgICAgaGVhZGxpbmU6IHBvc3QudGl0bGU/LnJlbmRlcmVkLFxuICAgICAgZGF0ZVB1Ymxpc2hlZDogcG9zdC5kYXRlX2dtdCxcbiAgICAgIHB1Ymxpc2hlcjoge1xuICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgbmFtZTogJ1JlZGUgROKAmU9yJyxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogcG9zdC50aXRsZT8ucmVuZGVyZWQsXG4gICAgICBhcnRpY2xlQm9keTogcmVtb3ZlSHRtbFRhZ3MoaGUuZGVjb2RlKHBvc3RDb250ZW50KSksXG4gICAgICBkYXRlTW9kaWZpZWQ6IHBvc3QubW9kaWZpZWRfZ210LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgJ0B0eXBlJzogJ0ltYWdlT2JqZWN0JyxcbiAgICAgICAgdXJsOiBwb3N0SGVhZGVySW1hZ2U/LnVybCB8fCBwb3N0LmZlYXR1cmVkX21lZGlhX3BhdGggfHwgJycsXG4gICAgICAgIGhlaWdodDogcG9zdEhlYWRlckltYWdlPy5oZWlnaHQgfHwgJycsXG4gICAgICAgIHdpZHRoOiBwb3N0SGVhZGVySW1hZ2U/LndpZHRoIHx8ICcnLFxuICAgICAgfSxcbiAgICAgIGF1dGhvcjoge1xuICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgbmFtZTogJ1JlZGUgROKAmU9yJyxcbiAgICAgIH0sXG4gICAgICB3b3JkY291bnQ6IHBvc3RDb250ZW50LnNwbGl0KCcgJykubGVuZ3RoLFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gICAgc2NyaXB0LnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XG4gICAgc2NyaXB0LmlkID0gc2NyaXB0TmFtZTtcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoc3RydWN0dXJlZERhdGEpO1xuXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gIH1cblxuICByZW1vdmVBcnRpY2xlU2NyaXB0KHNjcmlwdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2NyaXB0TmFtZSk7XG4gICAgc2NyaXB0Py5yZW1vdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVbmlkYWRlKHsgdW5pZGFkZSA9IG51bGwsIHVuaWRhZGVOYW1lID0gJycsIHVuaWRhZGVQYXRoID0gJycsIHVuaWRhZGVTbHVnID0gJycgfTogU2VvVW5pZGFkZSkge1xuICAgIHRoaXMudW5pZGFkZSA9IHVuaWRhZGU7XG4gICAgdGhpcy51bmlkYWRlTmFtZSA9IHVuaWRhZGVOYW1lO1xuICAgIHRoaXMudW5pZGFkZVBhdGggPSB1bmlkYWRlUGF0aDtcbiAgICB0aGlzLnVuaWRhZGVTbHVnID0gdW5pZGFkZVNsdWc7XG4gIH1cbn1cbiJdfQ==
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaXRlLWZyb250LWVuZC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZW8vc2VvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBUXpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sVUFBVTtJQXVCckIsWUFDVSxLQUFZLEVBQ1osSUFBVSxFQUNWLFFBQWtCLEVBQ0UsU0FBb0IsRUFDdEIsUUFBa0I7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0UsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0J2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBRTNCLFdBQU0sR0FBRztZQUNkLG1DQUFtQztZQUNuQyw0Q0FBNEM7WUFDNUMsa0RBQWtEO1lBQ2xELDZCQUE2QjtTQUM5QixDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFJeEIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0Qix5QkFBb0IsR0FBRyxpQkFBaUIsQ0FBQztRQUUxQyxZQUFPLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcsRUFBRSxDQUFD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QyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUUsV0FBVyxHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQWM7UUFDcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQzsrR0F2ZVUsVUFBVSxtRkEyQlgsVUFBVSxhQUNWLFFBQVE7bUhBNUJQLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBNEJJLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IERPQ1VNRU5ULCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcblxuaW1wb3J0IHsgU29jaWFsTWV0YVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29jaWFsLW1ldGEtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBCcmVhZGNydW1iSnNvbkl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLWpzb24taXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBTZW9EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlby9zZW8tZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBTZW9VbmlkYWRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Nlby9zZW8tdW5pZGFkZS5tb2RlbCc7XG5pbXBvcnQgeyBXcFBvc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29yZHByZXNzL3Bvc3QvcG9zdC5tb2RlbCc7XG5pbXBvcnQgeyBnZXRTaXRlVXJsLCByZW1vdmVIdG1sVGFncyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTElCX0NPTkZJRywgTGliQ29uZmlnIH0gZnJvbSAnLi4vLi4vdG9rZW5zL0xpYkNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTZW9TZXJ2aWNlIHtcbiAgcHVibGljIHNlcGFyYXRvciA9ICcgLSAnO1xuICBwdWJsaWMgZGVmYXVsdFRpdGxlID0gJ1JlZGUgROKAmU9yJztcbiAgcHVibGljIGFjdGl2ZURlc2NyaXB0aW9uITogc3RyaW5nO1xuICBwdWJsaWMgc2FtZUFzID0gW1xuICAgICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vcmVkZWRvci8nLFxuICAgICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3JlZGVkb3Jfb2ZpY2lhbC8nLFxuICAgICdodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9yZWRlZG9yLXNhb2x1aXonLFxuICAgICdodHRwczovL3R3aXR0ZXIuY29tL3JlZGVkb3InLFxuICBdO1xuICBwdWJsaWMgdHdpdHRlclVzZXIgPSAnQHJlZGVkb3InO1xuXG4gIHByaXZhdGUgY2Fub25pY2FsVGFnITogSFRNTExpbmtFbGVtZW50O1xuICBwcml2YXRlIGpzb25UYWchOiBIVE1MU2NyaXB0RWxlbWVudDtcbiAgcHJpdmF0ZSBqc29uVGFnSWQgPSAnc2VvSlNPTic7XG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnITogSFRNTFNjcmlwdEVsZW1lbnQ7XG4gIHByaXZhdGUgYnJlYWRjcnVtYnNKc29uVGFnSWQgPSAnYnJlYWRjcnVtYnNKU09OJztcblxuICBwdWJsaWMgdW5pZGFkZTogYW55ID0gbnVsbDtcbiAgcHVibGljIHVuaWRhZGVOYW1lOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHVuaWRhZGVQYXRoOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHVuaWRhZGVTbHVnOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIG1ldGE6IE1ldGEsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgQEluamVjdChMSUJfQ09ORklHKSBwcml2YXRlIGxpYkNvbmZpZzogTGliQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHt9XG5cbiAgcHVibGljIHNldEZ1bGxTZW8oZGF0YTogU2VvRGF0YSkge1xuICAgIHRoaXMuc2V0VGl0bGUoZGF0YS50aXRsZS50ZXh0LCAhIWRhdGEudGl0bGUuc3ViKTtcbiAgICB0aGlzLnNldERlc2NyaXB0aW9uKGRhdGEuZGVzY3JpcHRpb24pO1xuICAgIHRoaXMuc2V0Q2Fub25pY2FsSHJlZihkYXRhLmNhbm9uaWNhbCk7XG4gICAgdGhpcy5zZXRQYWdlSnNvbigpO1xuICAgIHRoaXMuc2V0U29jaWFsVGFncyhkYXRhLnNvY2lhbFRhZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0YWcgZGVzY3JpcHRpb24gZGEgcMOhZ2luYVxuICAgKiBAcGFyYW0gY29udGVudCBjb250ZcO6ZG8gZGEgZGVzY3Jpw6fDo28gPHN0cmluZz5cbiAgICovXG4gIHB1YmxpYyBzZXREZXNjcmlwdGlvbihjb250ZW50OiBzdHJpbmcpOiBTZW9TZXJ2aWNlIHtcbiAgICBjb25zdCBkZXNjVGFnID0gdGhpcy5tZXRhLmdldFRhZyhcIm5hbWU9J2Rlc2NyaXB0aW9uJ1wiKTtcbiAgICBpZiAoY29udGVudCkge1xuICAgICAgY29udGVudCA9IGhlLmRlY29kZShjb250ZW50KTtcbiAgICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZURlc2NyaXB0aW9uID0gY29udGVudDtcbiAgICBjb25zdCB0YWdDb250ZW50ID0geyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb250ZW50IH07XG4gICAgaWYgKGRlc2NUYWcpIHtcbiAgICAgIHRoaXMubWV0YS51cGRhdGVUYWcodGFnQ29udGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YS5hZGRUYWcodGFnQ29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBhIHDDoWdpbmFcbiAgICogQHBhcmFtIHRhZyBub21lIGRhIHRhZyBtZXRhXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXG4gICAqL1xuICBwdWJsaWMgc2V0TWV0YVRhZyh0YWc6IHN0cmluZywgY29udGVudDogc3RyaW5nLCB0eXBlID0gJ25hbWUnKSB7XG4gICAgY29uc3QgbWV0YXRhZyA9IHRoaXMubWV0YS5nZXRUYWcoYCR7dHlwZX09JyR7dGFnfSdgKTtcbiAgICBjb250ZW50ID0gaGUuZGVjb2RlKGNvbnRlbnQpO1xuICAgIGNvbnRlbnQgPSByZW1vdmVIdG1sVGFncyhjb250ZW50KTtcbiAgICBjb25zdCB0YWdDb250ZW50ID0ge1xuICAgICAgW3R5cGVdOiB0YWcsXG4gICAgICBjb250ZW50LFxuICAgIH07XG4gICAgaWYgKCFtZXRhdGFnKSB7XG4gICAgICB0aGlzLm1ldGEuYWRkVGFnKHRhZ0NvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHRhZ0NvbnRlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgbWV0YSB0YWdzIGRhIHDDoWdpbmFcbiAgICogQHBhcmFtIHRhZyBub21lIGRhIHRhZyBtZXRhXG4gICAqIEBwYXJhbSBjb250ZW50IGNvbnRlw7pkbyBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gYXR0ciBhdHJpYnV0byBkYSB0YWcgbWV0YVxuICAgKiBAcGFyYW0gdHlwZSB0aXBvIGRlIHRhZyBtZXRhXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFnKHRhZzogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGF0dHI6IHN0cmluZywgdHlwZSA9ICduYW1lJykge1xuICAgIGNvbnN0IG1ldGF0YWcgPSB0aGlzLm1ldGEuZ2V0VGFnKGAke3R5cGV9PScke3RhZ30nYCk7XG4gICAgaWYgKG1ldGF0YWcpIHtcbiAgICAgIHRoaXMubWV0YS5yZW1vdmVUYWcoYCR7YXR0cn09JHtjb250ZW50fWApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgbWV0YSB0YWdzIHBhcmEgRmFjZWJvb2tcbiAgICogQHBhcmFtIHRpdGxlIHTDrXR1bG8gcGFyYSBvIGZhY2Vib29rXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gZmFjZWJvb2tcbiAgICogQHBhcmFtIHVybCB1cmwgcGFyYSBkZWZpbmnDp8OjbyBkbyBmYWNlYm9va1xuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIGZhY2Vib29rXG4gICAqL1xuICBwdWJsaWMgc2V0TWV0YUZhY2Vib29rKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIHVybDogc3RyaW5nLCBpbWc6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzp1cmwnLCB1cmwsICdwcm9wZXJ0eScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6dGl0bGUnLCB0aXRsZSwgJ3Byb3BlcnR5Jyk7XG4gICAgdGhpcy5zZXRNZXRhVGFnKCdvZzpkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uLCAncHJvcGVydHknKTtcbiAgICB0aGlzLnNldE1ldGFUYWcoJ29nOnR5cGUnLCAnd2Vic2l0ZScsICdwcm9wZXJ0eScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBpbWcgPz8gJycsICdwcm9wZXJ0eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBtZXRhIHRhZ3MgcGFyYSBUd2l0dGVyXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIHBhcmEgbyB0d2l0dGVyXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBkZXNjcmnDp8OjbyBwYXJhIG8gdHdpdHRlclxuICAgKiBAcGFyYW0gdXJsIHVybCBwYXJhIG8gdHdpdHRlclxuICAgKiBAcGFyYW0gaW1nIGltYWdlbSBwYXJhIGRlZmluacOnw6NvIG5vIHR3aXR0ZXJcbiAgICovXG4gIHB1YmxpYyBzZXRNZXRhVHdpdHRlcih0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCB1cmw6IHN0cmluZywgaW1nOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpzaXRlJywgdXJsLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjp0aXRsZScsIHRpdGxlLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uLCAnbmFtZScpO1xuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjppbWFnZScsIGltZyA/PyAnJywgJ25hbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGFncyBkZSByZWRlcyBzb2NpYWlzIChUd2l0dGVyIGUgT3BlbiBHcmFwaClcbiAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICovXG4gIHNldFNvY2lhbFRhZ3MocHJvcGVydGllcz86IFNvY2lhbE1ldGFQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICBjb25zdCBzaXRldXJsID0gZ2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCk7XG4gICAgbGV0IGRlZmF1bHRQcm9wZXJ0aWVzOiBTb2NpYWxNZXRhUHJvcGVydGllcyA9IHtcbiAgICAgIHR3aXR0ZXJDYXJkOiAnc3VtbWFyeScsXG4gICAgICB0d2l0dGVyU2l0ZTogdGhpcy50d2l0dGVyVXNlcixcbiAgICAgIHR5cGU6ICd3ZWJzaXRlJyxcbiAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKCksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3BhZ2VQYXRofWAsXG4gICAgICBpbWFnZTogdGhpcy5saWJDb25maWc/LmxvZ29QYXRoID8gYCR7c2l0ZXVybH0ke3RoaXMubGliQ29uZmlnLmxvZ29QYXRofWAgOiAnaHR0cHM6Ly93d3cucmVkZWRvcnNhb2x1aXouY29tLmJyL2Fzc2V0cy9pbWdzL2xvZ28tcmVkZWRvci1ibHVlLnBuZycsXG4gICAgfTtcbiAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgZGVmYXVsdFByb3BlcnRpZXMgPSB7IC4uLmRlZmF1bHRQcm9wZXJ0aWVzLCAuLi5wcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIHRoaXMuc2V0TWV0YVRhZygndHdpdHRlcjpjYXJkJywgZGVmYXVsdFByb3BlcnRpZXMudHdpdHRlckNhcmQgfHwgJycsICduYW1lJylcbiAgICAgIC5zZXRNZXRhVGFnKCd0d2l0dGVyOnNpdGUnLCBkZWZhdWx0UHJvcGVydGllcy50d2l0dGVyU2l0ZSB8fCAnJywgJ25hbWUnKVxuICAgICAgLnNldE1ldGFUYWcoJ29nOnR5cGUnLCBkZWZhdWx0UHJvcGVydGllcy50eXBlIHx8ICcnLCAncHJvcGVydHknKVxuICAgICAgLnNldE1ldGFUYWcoJ29nOnRpdGxlJywgZGVmYXVsdFByb3BlcnRpZXMudGl0bGUgfHwgJycsICdwcm9wZXJ0eScpXG4gICAgICAuc2V0TWV0YVRhZygnb2c6ZGVzY3JpcHRpb24nLCBkZWZhdWx0UHJvcGVydGllcy5kZXNjcmlwdGlvbiB8fCAnJywgJ3Byb3BlcnR5JylcbiAgICAgIC5zZXRNZXRhVGFnKCdvZzp1cmwnLCBkZWZhdWx0UHJvcGVydGllcy51cmwgfHwgJycsICdwcm9wZXJ0eScpXG4gICAgICAuc2V0TWV0YVRhZygnb2c6aW1hZ2UnLCBkZWZhdWx0UHJvcGVydGllcy5pbWFnZSB8fCAnJywgJ3Byb3BlcnR5Jyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgdMOtdHVsbyBkYSBww6FnaW5hXG4gICAqIEBwYXJhbSB0aXRsZSB0w610dWxvIGRhIHDDoWdpbmEgPHN0cmluZz5cbiAgICogQHBhcmFtIHN1YiBTZSDDqSBzdWJzaXRlIGFjcmVzY2VudGEgdW5pZGFkZSA8Ym9vbGVhbj5cbiAgICovXG4gIHB1YmxpYyBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCBzdWIgPSBmYWxzZSkge1xuICAgIGlmICh0aXRsZSAmJiB0aXRsZSAhPT0gJycpIHtcbiAgICAgIHRpdGxlID0gaGUuZGVjb2RlKHRpdGxlKTtcbiAgICAgIHRpdGxlID0gcmVtb3ZlSHRtbFRhZ3ModGl0bGUpO1xuICAgICAgaWYgKHN1Yikge1xuICAgICAgICB0aXRsZSA9IGhlLmRlY29kZShgJHt0aXRsZX0ke3RoaXMuc2VwYXJhdG9yfSR7dGhpcy51bmlkYWRlTmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBPYnRlbSB0w610dWxvIGF0dWFsIGRhIHDDoWdpbmEgKi9cbiAgcHVibGljIGdldFRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGUuZ2V0VGl0bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQ0MDRUaXRsZShjb21wb25lbnQ6IHN0cmluZyA9ICdEZWZhdWx0IENvbXBvbmVudCcpIHtcbiAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudCAhPT0gJycpIHtcbiAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShjb21wb25lbnQpO1xuICAgICAgY29tcG9uZW50ID0gcmVtb3ZlSHRtbFRhZ3MoY29tcG9uZW50KTtcbiAgICAgIGlmICh0aGlzLnVuaWRhZGVOYW1lKSB7XG4gICAgICAgIGNvbXBvbmVudCA9IGhlLmRlY29kZShgJHtjb21wb25lbnR9JHt0aGlzLnNlcGFyYXRvcn0ke3RoaXMudW5pZGFkZU5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRpdGxlID0gYEVycm8gNDA0IC0gJHtjb21wb25lbnR9IC0gJHt0aGlzLmxpYkNvbmZpZz8uc2l0ZU5hbWV9IC0gJHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gO1xuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIEpTT04gZGUgYnJlYWRjcnVtYnMgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1ic0pTT05UYWcoKTogSFRNTFNjcmlwdEVsZW1lbnQge1xuICAgIGNvbnN0IHRhZzogSFRNTFNjcmlwdEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHRhZy5pZCA9IHRoaXMuYnJlYWRjcnVtYnNKc29uVGFnSWQ7XG4gICAgdGFnLnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRhZyk7XG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcgPSB0YWc7XG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIHNjcmlwdCBqc29uIGRlIGJyZWFkY3J1bWJzIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxTY3JpcHRFbGVtZW50O1xuICAgICAgaWYgKGVsZW0gJiYgZWxlbS5pZCA9PT0gdGhpcy5icmVhZGNydW1ic0pzb25UYWdJZCkge1xuICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQnJlYWRjcnVtYnNKU09OVGFnKCk7XG4gIH1cblxuICAvKiogRGVmaW5lIG8gSlNPTiBkZSBicmVhZGNydW1icyBkYSBww6FnaW5hICovXG4gIHB1YmxpYyBzZXRCcmVhZGNydW1ic0pzb24oaXRlbXM6IEJyZWFkY3J1bWJJdGVtW10pIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzSnNvblRhZyA9IHRoaXMuZ2V0QnJlYWRjcnVtYnNKU09OVGFnKCk7XG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgICdAY29udGV4dCc6ICdodHRwOi8vc2NoZW1hLm9yZycsXG4gICAgICAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnLFxuICAgICAgaXRlbUxpc3RFbGVtZW50OiB0aGlzLmdldEpzb25CcmVhZGNydW1iSXRlbXMoaXRlbXMpLFxuICAgIH07XG4gICAgdGhpcy5icmVhZGNydW1ic0pzb25UYWcuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQ29udmVydGUgaXRlbnMgZG8gYnJlYWRjcnVtYiBlbSBpdGVucyBkbyBKU09OICovXG4gIHByaXZhdGUgZ2V0SnNvbkJyZWFkY3J1bWJJdGVtcyhpdGVtczogQnJlYWRjcnVtYkl0ZW1bXSk6IEJyZWFkY3J1bWJKc29uSXRlbVtdIHtcbiAgICBjb25zdCBqc29uSXRlbXMgPSBbXG4gICAgICB7XG4gICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgIHBvc2l0aW9uOiAxLFxuICAgICAgICBpdGVtOiB7ICdAaWQnOiB0aGlzLmdldEJyZWFkY3J1bWJJdGVtVXJsKFsnLyddKSwgbmFtZTogaGUuZW5jb2RlKCdQw6FnaW5hIEluaWNpYWwnKSB9LFxuICAgICAgfSBhcyBCcmVhZGNydW1iSnNvbkl0ZW0sXG4gICAgXTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICBjb25zdCBqc29uSXRlbTogQnJlYWRjcnVtYkpzb25JdGVtID0ge1xuICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICBwb3NpdGlvbjogaSArIDIsXG4gICAgICAgIGl0ZW06IHsgJ0BpZCc6IHRoaXMuZ2V0QnJlYWRjcnVtYkl0ZW1VcmwoaXRlbT8udXJsIHx8IFtdKSwgbmFtZTogaGUuZW5jb2RlKGl0ZW0ubGFiZWwpIH0sXG4gICAgICB9O1xuICAgICAganNvbkl0ZW1zLnB1c2goanNvbkl0ZW0pO1xuICAgIH0pO1xuICAgIHJldHVybiBqc29uSXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogTW9udGEgYSB1cmwgZG8gaXRlbSBkZSBicmVhZGNydW1iIHByb3ZlbmllbnRlIGRvIGFycmF5IGRlIHVybHNcbiAgICogb3UgZG8gY2FtaW5obyBkYSBwcsOzcHJpYSBww6FnaW5hLCBjb25mb3JtZSBjYXNvIGRvIMO6bHRpbW8gaXRlbS5cbiAgICovXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYkl0ZW1VcmwodXJsOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPD0gMCkge1xuICAgICAgY29uc3QgcGFnZVBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICAgIHJldHVybiBgJHtzaXRldXJsfSR7cGFnZVBhdGh9YDtcbiAgICB9XG4gICAgdXJsID0gdXJsLmZpbHRlcigodSkgPT4gdSAhPT0gdGhpcy51bmlkYWRlUGF0aCk7XG4gICAgY29uc3QgdW5pZGFkZVBhdGggPSB0aGlzLmdldFVuaWRhZGVQYXRoKCk7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt1bmlkYWRlUGF0aH0vJHt1cmwuam9pbignLycpLnJlcGxhY2UoL15cXC8/LywgJycpfWA7XG4gICAgcmV0dXJuIGAke3NpdGV1cmx9LyR7ZnVsbFBhdGh9YC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICB9XG5cbiAgLyoqIENyaWEgdGFnIHNjcmlwdCBwYXJhIG8gSlNPTiBkZSBTRU8gKi9cbiAgcHJpdmF0ZSBjcmVhdGVKU09OVGFnKCk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCB0YWc6IEhUTUxTY3JpcHRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICB0YWcuaWQgPSB0aGlzLmpzb25UYWdJZDtcbiAgICB0YWcudHlwZSA9ICdhcHBsaWNhdGlvbi9sZCtqc29uJztcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICB0aGlzLmpzb25UYWcgPSB0YWc7XG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIC8qKiBSZXRvcm5hIHRhZyBwYXJhIHNjcmlwdCBqc29uIGRlIGJyZWFkY3J1bWJzIG91IGNyaWEgc2UgbsOjbyBob3V2ZXIuICovXG4gIHByaXZhdGUgZ2V0SlNPTlRhZygpOiBIVE1MU2NyaXB0RWxlbWVudCB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmRvY3VtZW50LmhlYWQuY2hpbGRyZW47XG4gICAgbGV0IGk6IG51bWJlcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW0gPSBlbGVtZW50c1tpXSBhcyBIVE1MU2NyaXB0RWxlbWVudDtcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uaWQgPT09IHRoaXMuanNvblRhZ0lkKSB7XG4gICAgICAgIHJldHVybiBlbGVtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVKU09OVGFnKCk7XG4gIH1cblxuICAvKiogRGVmaW5lIEpTT04gcGFyYSBTRU8gc29tZW50ZSBxdWFuZG8gbm8gc2Vydmlkb3IgKi9cbiAgcHVibGljIHNldFBhZ2VKc29uKCkge1xuICAgIHRoaXMuanNvblRhZyA9IHRoaXMuZ2V0SlNPTlRhZygpO1xuICAgIGNvbnN0IGdyYXBoID0gW3RoaXMuZ2V0T3JnSnNvbigpLCB0aGlzLmdldFdlYnNpdGVKc29uKCksIHRoaXMuZ2V0V2VicGFnZUpzb24oKV07XG4gICAgY29uc3QganNvbiA9IHsgJ0Bjb250ZXh0JzogJ2h0dHA6Ly9zY2hlbWEub3JnJywgJ0BncmFwaCc6IGdyYXBoIH07XG4gICAgdGhpcy5qc29uVGFnLmlubmVySFRNTCA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIE9idGVtIEpTT04gZGEgT3JnYW5pemHDp8OjbyAqL1xuICBwcml2YXRlIGdldE9yZ0pzb24oKSB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICdAaWQnOiBgJHtzaXRldXJsfSNvcmdhbml6YXRpb25gLFxuICAgICAgbmFtZTogdGhpcy5kZWZhdWx0VGl0bGUsXG4gICAgICBrZXl3b3JkczogdGhpcy5saWJDb25maWc/LmtleXdvcmRzLFxuICAgICAgdXJsOiBgJHtzaXRldXJsfWAsXG4gICAgICBzYW1lQXM6IHRoaXMuc2FtZUFzLFxuICAgIH07XG4gIH1cblxuICAvKiogT2J0ZW0gSlNPTiBkbyBXZWJzaXRlIChwb3J0YWwsIHVuaWRhZGVzLCBldGMpICovXG4gIHByaXZhdGUgZ2V0V2Vic2l0ZUpzb24oKSB7XG4gICAgY29uc3QgdW5pZGFkZVBhdGggPSB0aGlzLmdldFVuaWRhZGVQYXRoKCk7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnV2ViU2l0ZScsXG4gICAgICAnQGlkJzogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCxcbiAgICAgIHVybDogYCR7c2l0ZXVybH0ke3VuaWRhZGVQYXRofWAsXG4gICAgICBuYW1lOiB0aGlzLnVuaWRhZGVOYW1lLFxuICAgICAga2V5d29yZHM6IHRoaXMubGliQ29uZmlnPy5rZXl3b3JkcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIE9idGVtIEpzb24gZGEgcMOhZ2luYSAqL1xuICBwcml2YXRlIGdldFdlYnBhZ2VKc29uKCkge1xuICAgIGNvbnN0IHVuaWRhZGVQYXRoID0gdGhpcy5nZXRVbmlkYWRlUGF0aCgpO1xuICAgIGNvbnN0IHNpdGVVUkwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcbiAgICBjb25zdCBwYWdlUGF0aCA9IGAke3NpdGVVUkx9JHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gO1xuICAgIGNvbnN0IGRlc2MgPSB0aGlzLmFjdGl2ZURlc2NyaXB0aW9uID8gdGhpcy5hY3RpdmVEZXNjcmlwdGlvbiA6ICcnO1xuICAgIHJldHVybiB7XG4gICAgICAnQHR5cGUnOiAnV2ViUGFnZScsXG4gICAgICAnQGlkJzogYCR7cGFnZVBhdGh9I3dlYnBhZ2VgLFxuICAgICAgdXJsOiBwYWdlUGF0aCxcbiAgICAgIGluTGFuZ3VhZ2U6ICdwdC1CUicsXG4gICAgICBuYW1lOiB0aGlzLmdldFRpdGxlKCksXG4gICAgICBpc1BhcnRPZjogeyAnQGlkJzogYCR7c2l0ZVVSTH0ke3VuaWRhZGVQYXRofSN3ZWJzaXRlYCB9LFxuICAgICAgYWJvdXQ6IHsgJ0BpZCc6IGAke3NpdGVVUkx9I29yZ2FuaXphdGlvbmAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFVuaWRhZGVQYXRoKCkge1xuICAgIGxldCB1bmlkYWRlUGF0aCA9ICcnO1xuICAgIGlmICh0aGlzLnVuaWRhZGUgJiYgdGhpcy51bmlkYWRlUGF0aCkge1xuICAgICAgdW5pZGFkZVBhdGggPSB0aGlzLnVuaWRhZGU/LnBhdGggPT09ICcvJyA/ICcnIDogdGhpcy51bmlkYWRlUGF0aD8uc3Vic3RyaW5nKDAsIHRoaXMudW5pZGFkZVBhdGg/Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gdW5pZGFkZVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogT2J0w6ltIGEgVVJMIGNhbsO0bmljYSBkYSBww6FnaW5hLlxuICAgKiBAcmV0dXJucyBBIFVSTCBjYW7DtG5pY2EgZGEgcMOhZ2luYS5cbiAgICovXG4gIHB1YmxpYyBnZXRDYW5vbmljYWxIcmVmKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNhbm9uaWNhbFRhZykge1xuICAgICAgdGhpcy5jYW5vbmljYWxUYWcgPSB0aGlzLmdldENhbm9uaWNhbFRhZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYW5vbmljYWxUYWcuaHJlZjtcbiAgfVxuXG4gIC8qKiBDcmlhIHRhZyBwYXJhIGxpbmtzIGNhbm9uaWNhbHMgbm8gaGVhZCAqL1xuICBwcml2YXRlIGNyZWF0ZUNhbm9uaWNhbFRhZygpOiBIVE1MTGlua0VsZW1lbnQge1xuICAgIGNvbnN0IHRhZyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdjYW5vbmljYWwnKTtcbiAgICB0aGlzLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdocmVmJywgdGhpcy5kb2N1bWVudC5VUkwpO1xuICAgIHRoaXMuY2Fub25pY2FsVGFnID0gdGFnO1xuICAgIHJldHVybiB0YWc7XG4gIH1cblxuICAvKiogUmV0b3JuYSB0YWcgcGFyYSBsaW5rIGNhbm9uaWNhbCBleGlzdGUgb3UgY3JpYSBzZSBuw6NvIGhvdXZlci4gKi9cbiAgcHJpdmF0ZSBnZXRDYW5vbmljYWxUYWcoKTogSFRNTExpbmtFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZG9jdW1lbnQuaGVhZC5jaGlsZHJlbjtcbiAgICBsZXQgaTogbnVtYmVyO1xuICAgIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWxlbSA9IGVsZW1lbnRzW2ldIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICAgIGlmIChlbGVtICYmIGVsZW0udGFnTmFtZSA9PT0gJ0xJTksnICYmIGVsZW0ucmVsID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2Fub25pY2FsVGFnKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIGxpbmsgY2Fub25pY2FsIGRhIHDDoWdpbmFcbiAgICogQHBhcmFtIHVybCB1cmwgY2Fub25pY2FsXG4gICAqL1xuICBwdWJsaWMgc2V0Q2Fub25pY2FsSHJlZih1cmw/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2Fub25pY2FsVGFnKSB7XG4gICAgICB0aGlzLmNhbm9uaWNhbFRhZyA9IHRoaXMuZ2V0Q2Fub25pY2FsVGFnKCk7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcbiAgICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICBwYXRoID0gYC8ke3BhdGh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5vbmljYWxVcmwgPSB1cmwgJiYgdGhpcy5pc0N1c3RvbUNhbm9uaWNhbCh1cmwpID8gdXJsIDogYCR7Z2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCl9JHtwYXRofWA7XG5cbiAgICB0aGlzLmNhbm9uaWNhbFRhZy5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBjYW5vbmljYWxVcmwpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNlIGEgVVJMIGZvcm5lY2lkYSDDqSB1bSBsaW5rIGNhbm9uaWNhbCBwZXJzb25hbGl6YWRvXG4gICAqIEBwYXJhbSB1cmwgVVJMIGZvcm5lY2lkYVxuICAgKi9cbiAgcHVibGljIGlzQ3VzdG9tQ2Fub25pY2FsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2l0ZXVybCA9IGdldFNpdGVVcmwodGhpcy5saWJDb25maWc/LnNpdGVVcmwsIHRoaXMubGliQ29uZmlnPy5zaXRlU3VmaXgpO1xuICAgIHJldHVybiB1cmwuc3RhcnRzV2l0aChzaXRldXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnTDqW0gdW1hIHVybCB2w6FsaWRhIG5hIGFwbGljYcOnw6NvIHByb3ZlbmllbnRlIGRlIHVtYSBVUkwgZ2VyYWRhXG4gICAqIHBlbG8gcGx1Z2luIFlvYXN0IHBhcmEgY2Fub25pY2FsIGF1dG9tw6F0aWNvLlxuICAgKiBFeC46IGh0dHBzOi8vd3AucmVkZWRvcnNhb2x1aXouY29tLmJyL2JyYXNpbC9lc3BlY2lhbGlkYWRlcy9jYXJkaW9sb2dpYS9cbiAgICogQHBhcmFtIHVybEZyb21XcEFwaSBVUkwgY2Fub25pY2EgZ2VyYWRhIHBlbG8gWW9hc3QgUGx1Z2luLlxuICAgKi9cbiAgdG9Mb2NhbENhbm9uaWNhbCh1cmxGcm9tV3BBcGk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5saWJDb25maWc/LndwVXJsID8/ICcnO1xuICAgIGNvbnN0IHNpdGV1cmwgPSBnZXRTaXRlVXJsKHRoaXMubGliQ29uZmlnPy5zaXRlVXJsLCB0aGlzLmxpYkNvbmZpZz8uc2l0ZVN1Zml4KTtcbiAgICBjb25zdCB1bmlkYWRlU2x1ZyA9IHRoaXMudW5pZGFkZVNsdWc7XG4gICAgbGV0IGNvbnZlcnRlZCA9IHVybEZyb21XcEFwaS5yZXBsYWNlKGFwaVVybCwgc2l0ZXVybCk7XG4gICAgaWYgKHVuaWRhZGVTbHVnICE9PSAnLycgJiYgY29udmVydGVkLmluY2x1ZGVzKGAvJHt1bmlkYWRlU2x1Z30vYCkpIHtcbiAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlZC5yZXBsYWNlKGAvJHt1bmlkYWRlU2x1Z30vYCwgYCR7dGhpcy51bmlkYWRlUGF0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZDtcbiAgfVxuXG4gIGdldFBvc3RDb250ZW50KHBvc3Q6IFdwUG9zdCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGVudCA9IHBvc3QuYWNmWydyZHNsX3Bvc3RfY29udGVudCddID8gcG9zdC5hY2YucmRzbF9wb3N0X2NvbnRlbnQuZmluZCgoY29udGVudDogYW55KSA9PiBjb250ZW50LmFjZl9mY19sYXlvdXQgPT09ICd0ZXh0X2h0bWwnKSA6IG51bGw7XG4gICAgcmV0dXJuIGNvbnRlbnQ/LmNvbnRlbnQgfHwgcG9zdC5jb250ZW50LnJlbmRlcmVkIHx8ICcnO1xuICB9XG5cbiAgYWRkQXJ0aWNsZVNjcmlwdChwb3N0OiBXcFBvc3QsIHNjcmlwdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBvc3RDb250ZW50ID0gdGhpcy5nZXRQb3N0Q29udGVudChwb3N0KTtcbiAgICBjb25zdCBwb3N0SGVhZGVySW1hZ2UgPSBwb3N0LmFjZlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXVxuICAgICAgPyB7XG4gICAgICAgICAgdXJsOiBwb3N0LmFjZlsncmRzbF9wb3N0X2hlYWRlcl9pbWcnXS51cmwsXG4gICAgICAgICAgd2lkdGg6IHBvc3QuYWNmWydyZHNsX3Bvc3RfaGVhZGVyX2ltZyddLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogcG9zdC5hY2ZbJ3Jkc2xfcG9zdF9oZWFkZXJfaW1nJ10uaGVpZ2h0LFxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG5cbiAgICBjb25zdCBzdHJ1Y3R1cmVkRGF0YSA9IHtcbiAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLFxuICAgICAgJ0B0eXBlJzogJ0FydGljbGUnLFxuICAgICAgbWFpbkVudGl0eU9mUGFnZTogYCR7Z2V0U2l0ZVVybCh0aGlzLmxpYkNvbmZpZz8uc2l0ZVVybCwgdGhpcy5saWJDb25maWc/LnNpdGVTdWZpeCl9JHt0aGlzLmxvY2F0aW9uLnBhdGgoKX1gLFxuICAgICAgaGVhZGxpbmU6IHBvc3QudGl0bGU/LnJlbmRlcmVkLFxuICAgICAgZGF0ZVB1Ymxpc2hlZDogcG9zdC5kYXRlX2dtdCxcbiAgICAgIHB1Ymxpc2hlcjoge1xuICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgbmFtZTogJ1JlZGUgROKAmU9yJyxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogcG9zdC50aXRsZT8ucmVuZGVyZWQsXG4gICAgICBhcnRpY2xlQm9keTogcmVtb3ZlSHRtbFRhZ3MoaGUuZGVjb2RlKHBvc3RDb250ZW50KSksXG4gICAgICBkYXRlTW9kaWZpZWQ6IHBvc3QubW9kaWZpZWRfZ210LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgJ0B0eXBlJzogJ0ltYWdlT2JqZWN0JyxcbiAgICAgICAgdXJsOiBwb3N0SGVhZGVySW1hZ2U/LnVybCB8fCBwb3N0LmZlYXR1cmVkX21lZGlhX3BhdGggfHwgJycsXG4gICAgICAgIGhlaWdodDogcG9zdEhlYWRlckltYWdlPy5oZWlnaHQgfHwgJycsXG4gICAgICAgIHdpZHRoOiBwb3N0SGVhZGVySW1hZ2U/LndpZHRoIHx8ICcnLFxuICAgICAgfSxcbiAgICAgIGF1dGhvcjoge1xuICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgbmFtZTogJ1JlZGUgROKAmU9yJyxcbiAgICAgIH0sXG4gICAgICB3b3JkY291bnQ6IHBvc3RDb250ZW50LnNwbGl0KCcgJykubGVuZ3RoLFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gICAgc2NyaXB0LnR5cGUgPSAnYXBwbGljYXRpb24vbGQranNvbic7XG4gICAgc2NyaXB0LmlkID0gc2NyaXB0TmFtZTtcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gSlNPTi5zdHJpbmdpZnkoc3RydWN0dXJlZERhdGEpO1xuXG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gIH1cblxuICByZW1vdmVBcnRpY2xlU2NyaXB0KHNjcmlwdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2NyaXB0TmFtZSk7XG4gICAgc2NyaXB0Py5yZW1vdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVbmlkYWRlKHsgdW5pZGFkZSA9IG51bGwsIHVuaWRhZGVOYW1lID0gJycsIHVuaWRhZGVQYXRoID0gJycsIHVuaWRhZGVTbHVnID0gJycgfTogU2VvVW5pZGFkZSkge1xuICAgIHRoaXMudW5pZGFkZSA9IHVuaWRhZGU7XG4gICAgdGhpcy51bmlkYWRlTmFtZSA9IHVuaWRhZGVOYW1lO1xuICAgIHRoaXMudW5pZGFkZVBhdGggPSB1bmlkYWRlUGF0aDtcbiAgICB0aGlzLnVuaWRhZGVTbHVnID0gdW5pZGFkZVNsdWc7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,10 @@
1
- import { Injectable, makeStateKey } from '@angular/core';
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import { Inject, Injectable, makeStateKey, PLATFORM_ID } from '@angular/core';
2
3
  import * as i0 from "@angular/core";
3
4
  export class TransferStateService {
4
- constructor(transferState) {
5
+ constructor(transferState, platformId) {
5
6
  this.transferState = transferState;
7
+ this.platformId = platformId;
6
8
  this.keys = new Map();
7
9
  }
8
10
  setKey(name, response) {
@@ -11,7 +13,9 @@ export class TransferStateService {
11
13
  key = makeStateKey(name);
12
14
  this.keys.set(name, key);
13
15
  }
14
- this.transferState.set(key, response);
16
+ const newResponse = this.encryptResponseBase64(response);
17
+ console.log('res', newResponse);
18
+ this.transferState.set(key, newResponse);
15
19
  }
16
20
  getKey(name, defaultValue = null) {
17
21
  let key = this.keys.get(name);
@@ -20,7 +24,9 @@ export class TransferStateService {
20
24
  this.keys.set(name, key);
21
25
  }
22
26
  const response = this.transferState.get(key, defaultValue);
23
- return response;
27
+ const newResponse = this.decryptResponseBase64(response);
28
+ console.log('res', newResponse);
29
+ return newResponse;
24
30
  }
25
31
  remove(name) {
26
32
  let key = this.keys.get(name);
@@ -30,7 +36,19 @@ export class TransferStateService {
30
36
  }
31
37
  this.transferState.remove(key);
32
38
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TransferStateService, deps: [{ token: i0.TransferState }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
+ encryptResponseBase64(response) {
40
+ if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {
41
+ return atob(response);
42
+ }
43
+ return Buffer.from(response).toString('base64');
44
+ }
45
+ decryptResponseBase64(response) {
46
+ if (isPlatformBrowser(this.platformId) && typeof window !== 'undefined') {
47
+ return btoa(response);
48
+ }
49
+ return Buffer.from(response, 'base64').toString();
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TransferStateService, deps: [{ token: i0.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
52
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TransferStateService, providedIn: 'root' }); }
35
53
  }
36
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TransferStateService, decorators: [{
@@ -38,5 +56,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
38
56
  args: [{
39
57
  providedIn: 'root',
40
58
  }]
41
- }], ctorParameters: () => [{ type: i0.TransferState }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RyYW5zZmVyLXN0YXRlL3RyYW5zZmVyLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQTJCLE1BQU0sZUFBZSxDQUFDOztBQUtsRixNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQTZCLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRmpELFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztJQUVTLENBQUM7SUFFN0QsTUFBTSxDQUFDLElBQVMsRUFBRSxRQUFxQjtRQUNyQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLGVBQTRCLElBQUk7UUFDbkQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBL0JVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBtYWtlU3RhdGVLZXksIFN0YXRlS2V5LCBUcmFuc2ZlclN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJTdGF0ZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUga2V5cyA9IG5ldyBNYXA8c3RyaW5nLCBTdGF0ZUtleTxzdHJpbmc+PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUpIHt9XHJcblxyXG4gIHNldEtleShuYW1lOiBhbnksIHJlc3BvbnNlOiBhbnkgfCBhbnlbXSkge1xyXG4gICAgbGV0IGtleSA9IHRoaXMua2V5cy5nZXQobmFtZSk7XHJcbiAgICBpZiAoIWtleSkge1xyXG4gICAgICBrZXkgPSBtYWtlU3RhdGVLZXkobmFtZSk7XHJcbiAgICAgIHRoaXMua2V5cy5zZXQobmFtZSwga2V5KTtcclxuICAgIH1cclxuICAgIHRoaXMudHJhbnNmZXJTdGF0ZS5zZXQoa2V5LCByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBnZXRLZXkobmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSB8IGFueVtdID0gbnVsbCk6IGFueSB8IGFueVtdIHtcclxuICAgIGxldCBrZXkgPSB0aGlzLmtleXMuZ2V0KG5hbWUpO1xyXG4gICAgaWYgKCFrZXkpIHtcclxuICAgICAga2V5ID0gbWFrZVN0YXRlS2V5KG5hbWUpO1xyXG4gICAgICB0aGlzLmtleXMuc2V0KG5hbWUsIGtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMudHJhbnNmZXJTdGF0ZS5nZXQoa2V5LCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKG5hbWU6IHN0cmluZykge1xyXG4gICAgbGV0IGtleSA9IHRoaXMua2V5cy5nZXQobmFtZSk7XHJcbiAgICBpZiAoIWtleSkge1xyXG4gICAgICBrZXkgPSBtYWtlU3RhdGVLZXkobmFtZSk7XHJcbiAgICAgIHRoaXMua2V5cy5zZXQobmFtZSwga2V5KTtcclxuICAgIH1cclxuICAgIHRoaXMudHJhbnNmZXJTdGF0ZS5yZW1vdmUoa2V5KTtcclxuICB9XHJcbn1cclxuIl19
59
+ }], ctorParameters: () => [{ type: i0.TransferState }, { type: undefined, decorators: [{
60
+ type: Inject,
61
+ args: [PLATFORM_ID]
62
+ }] }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpdGUtZnJvbnQtZW5kLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RyYW5zZmVyLXN0YXRlL3RyYW5zZmVyLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBMkIsTUFBTSxlQUFlLENBQUM7O0FBS3ZHLE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFDbUIsYUFBNEIsRUFDaEIsVUFBa0I7UUFEOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUp6QyxTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFLaEQsQ0FBQztJQUVKLE1BQU0sQ0FBQyxJQUFTLEVBQUUsUUFBcUI7UUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZLEVBQUUsZUFBNEIsSUFBSTtRQUNuRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoQyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFhO1FBQ2pDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFhO1FBQ2pDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7K0dBcERVLG9CQUFvQiwrQ0FLckIsV0FBVzttSEFMVixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBtYWtlU3RhdGVLZXksIFBMQVRGT1JNX0lELCBTdGF0ZUtleSwgVHJhbnNmZXJTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJTdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIGtleXMgPSBuZXcgTWFwPHN0cmluZywgU3RhdGVLZXk8c3RyaW5nPj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBvYmplY3QsXG4gICkge31cblxuICBzZXRLZXkobmFtZTogYW55LCByZXNwb25zZTogYW55IHwgYW55W10pIHtcbiAgICBsZXQga2V5ID0gdGhpcy5rZXlzLmdldChuYW1lKTtcbiAgICBpZiAoIWtleSkge1xuICAgICAga2V5ID0gbWFrZVN0YXRlS2V5KG5hbWUpO1xuICAgICAgdGhpcy5rZXlzLnNldChuYW1lLCBrZXkpO1xuICAgIH1cbiAgICBjb25zdCBuZXdSZXNwb25zZSA9IHRoaXMuZW5jcnlwdFJlc3BvbnNlQmFzZTY0KHJlc3BvbnNlKTtcbiAgICBjb25zb2xlLmxvZygncmVzJywgbmV3UmVzcG9uc2UpO1xuICAgIHRoaXMudHJhbnNmZXJTdGF0ZS5zZXQoa2V5LCBuZXdSZXNwb25zZSk7XG4gIH1cblxuICBnZXRLZXkobmFtZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSB8IGFueVtdID0gbnVsbCk6IGFueSB8IGFueVtdIHtcbiAgICBsZXQga2V5ID0gdGhpcy5rZXlzLmdldChuYW1lKTtcbiAgICBpZiAoIWtleSkge1xuICAgICAga2V5ID0gbWFrZVN0YXRlS2V5KG5hbWUpO1xuICAgICAgdGhpcy5rZXlzLnNldChuYW1lLCBrZXkpO1xuICAgIH1cbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMudHJhbnNmZXJTdGF0ZS5nZXQoa2V5LCBkZWZhdWx0VmFsdWUpO1xuICAgIGNvbnN0IG5ld1Jlc3BvbnNlID0gdGhpcy5kZWNyeXB0UmVzcG9uc2VCYXNlNjQocmVzcG9uc2UpO1xuICAgIGNvbnNvbGUubG9nKCdyZXMnLCBuZXdSZXNwb25zZSk7XG4gICAgcmV0dXJuIG5ld1Jlc3BvbnNlO1xuICB9XG5cbiAgcmVtb3ZlKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBrZXkgPSB0aGlzLmtleXMuZ2V0KG5hbWUpO1xuICAgIGlmICgha2V5KSB7XG4gICAgICBrZXkgPSBtYWtlU3RhdGVLZXkobmFtZSk7XG4gICAgICB0aGlzLmtleXMuc2V0KG5hbWUsIGtleSk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNmZXJTdGF0ZS5yZW1vdmUoa2V5KTtcbiAgfVxuXG4gIGVuY3J5cHRSZXNwb25zZUJhc2U2NChyZXNwb25zZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGF0b2IocmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVzcG9uc2UpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIGRlY3J5cHRSZXNwb25zZUJhc2U2NChyZXNwb25zZTogYW55KSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBidG9hKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlc3BvbnNlLCAnYmFzZTY0JykudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  // Configura a lib com informações especificas de cada projeto.
3
3
  export const LIB_CONFIG = new InjectionToken('libConfig');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGliQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvdG9rZW5zL0xpYkNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMEMvQywrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFZLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBMaWJDb25maWcge1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBzZXJ2ZXI6IGJvb2xlYW47XG4gIHNpdGVOYW1lOiBzdHJpbmc7XG4gIHNpdGVVcmw6IHN0cmluZztcbiAgc2l0ZVN1Zml4Pzogc3RyaW5nO1xuICBjbGllbnRfaWQ6IHN0cmluZztcbiAgeE9yaWdpbkFwcGxpY2F0aW9uOiBzdHJpbmc7XG5cbiAgLy8gQ3VyYSBpY29uc2V0XG4gIGljb25zZXREZWZhdWx0TGlzdDogc3RyaW5nW107XG5cbiAgLy8gc2l0ZS1iYWNrLWVuZCAoU05GKVxuICBzaXRlQXBpOiB7XG4gICAgYXV0aDoge1xuICAgICAgdXNlcjogc3RyaW5nO1xuICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICB9O1xuICAgIGJhc2U6IHN0cmluZztcbiAgICBiYXNlSW50ZXJuYWw6IHN0cmluZztcbiAgICByZWNhcHRjaGE6IHN0cmluZztcbiAgICBjZW50cm9Fc3R1ZG9zOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQWxnb2xpYSBTZWFyY2hcbiAgYWxnb2xpYUNvbmZpZzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gV29yZHByZXNzXG4gIHdwVXJsOiBzdHJpbmc7XG5cbiAgLy8gU0VPXG4gIGtleXdvcmRzOiBzdHJpbmc7XG5cbiAgLy8gcmRzaXRlbGluayBjdXN0b20gYW5jaG9yIGFkanVzdG1lbnRcbiAgY3VzdG9tQW5jaG9yQWRqdXN0bWVudD86IChkb2N1bWVudDogRG9jdW1lbnQpID0+IG51bWJlcjtcbn1cblxuLy8gQ29uZmlndXJhIGEgbGliIGNvbSBpbmZvcm1hw6fDtWVzIGVzcGVjaWZpY2FzIGRlIGNhZGEgcHJvamV0by5cbmV4cG9ydCBjb25zdCBMSUJfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPExpYkNvbmZpZz4oJ2xpYkNvbmZpZycpO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGliQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2l0ZS1mcm9udC1lbmQtbGliL3NyYy9saWIvdG9rZW5zL0xpYkNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMkMvQywrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFZLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBMaWJDb25maWcge1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBzZXJ2ZXI6IGJvb2xlYW47XG4gIHNpdGVOYW1lOiBzdHJpbmc7XG4gIHNpdGVVcmw6IHN0cmluZztcbiAgc2l0ZVN1Zml4Pzogc3RyaW5nO1xuICBjbGllbnRfaWQ6IHN0cmluZztcbiAgeE9yaWdpbkFwcGxpY2F0aW9uOiBzdHJpbmc7XG5cbiAgLy8gQ3VyYSBpY29uc2V0XG4gIGljb25zZXREZWZhdWx0TGlzdDogc3RyaW5nW107XG5cbiAgLy8gc2l0ZS1iYWNrLWVuZCAoU05GKVxuICBzaXRlQXBpOiB7XG4gICAgYXV0aDoge1xuICAgICAgdXNlcjogc3RyaW5nO1xuICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICB9O1xuICAgIGJhc2U6IHN0cmluZztcbiAgICBiYXNlSW50ZXJuYWw6IHN0cmluZztcbiAgICByZWNhcHRjaGE6IHN0cmluZztcbiAgICBjZW50cm9Fc3R1ZG9zOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQWxnb2xpYSBTZWFyY2hcbiAgYWxnb2xpYUNvbmZpZzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gV29yZHByZXNzXG4gIHdwVXJsOiBzdHJpbmc7XG5cbiAgLy8gU0VPXG4gIGtleXdvcmRzOiBzdHJpbmc7XG4gIGxvZ29QYXRoPzogc3RyaW5nO1xuXG4gIC8vIHJkc2l0ZWxpbmsgY3VzdG9tIGFuY2hvciBhZGp1c3RtZW50XG4gIGN1c3RvbUFuY2hvckFkanVzdG1lbnQ/OiAoZG9jdW1lbnQ6IERvY3VtZW50KSA9PiBudW1iZXI7XG59XG5cbi8vIENvbmZpZ3VyYSBhIGxpYiBjb20gaW5mb3JtYcOnw7VlcyBlc3BlY2lmaWNhcyBkZSBjYWRhIHByb2pldG8uXG5leHBvcnQgY29uc3QgTElCX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMaWJDb25maWc+KCdsaWJDb25maWcnKTtcbiJdfQ==