@sumaris-net/ngx-components 18.7.1-beta1 → 18.7.1-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/doc/changelog.md +100 -0
  2. package/esm2022/public_api.mjs +6 -1
  3. package/esm2022/src/app/admin/users/users.mjs +2 -2
  4. package/esm2022/src/app/core/about/about.modal.mjs +4 -5
  5. package/esm2022/src/app/core/account/account.page.mjs +11 -11
  6. package/esm2022/src/app/core/account/password/change-password.page.mjs +2 -2
  7. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +3 -3
  8. package/esm2022/src/app/core/form/list/list.form.mjs +2 -2
  9. package/esm2022/src/app/core/form/properties/properties.form.mjs +15 -6
  10. package/esm2022/src/app/core/form/properties/properties.table.mjs +2 -2
  11. package/esm2022/src/app/core/form/properties/properties.utils.mjs +9 -10
  12. package/esm2022/src/app/core/home/home.mjs +7 -5
  13. package/esm2022/src/app/core/menu/menu.component.mjs +19 -24
  14. package/esm2022/src/app/core/menu/menu.service.mjs +6 -3
  15. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +1 -1
  16. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +1 -1
  17. package/esm2022/src/app/core/register/register-confirm.page.mjs +1 -1
  18. package/esm2022/src/app/core/register/register.form.mjs +1 -1
  19. package/esm2022/src/app/core/services/account.service.mjs +3 -7
  20. package/esm2022/src/app/core/services/model/account.model.mjs +6 -6
  21. package/esm2022/src/app/core/services/model/entity.model.mjs +14 -5
  22. package/esm2022/src/app/core/services/network.service.mjs +1 -1
  23. package/esm2022/src/app/core/services/platform.service.mjs +27 -10
  24. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +2 -2
  25. package/esm2022/src/app/core/settings/settings.page.mjs +1 -1
  26. package/esm2022/src/app/core/table/column/actions-column.component.mjs +3 -3
  27. package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
  28. package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
  29. package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
  30. package/esm2022/src/app/shared/dates.mjs +13 -1
  31. package/esm2022/src/app/shared/directives/autoresize.directive.mjs +75 -0
  32. package/esm2022/src/app/shared/directives/directives.module.mjs +5 -4
  33. package/esm2022/src/app/shared/file/uri.utils.mjs +6 -1
  34. package/esm2022/src/app/shared/form/field.component.mjs +10 -4
  35. package/esm2022/src/app/shared/forms.mjs +3 -1
  36. package/esm2022/src/app/shared/functions.mjs +7 -1
  37. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +3 -2
  38. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +11 -4
  39. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +1 -1
  40. package/esm2022/src/app/shared/markdown/markdown.component.mjs +66 -93
  41. package/esm2022/src/app/shared/markdown/markdown.modal.mjs +37 -16
  42. package/esm2022/src/app/shared/markdown/markdown.module.mjs +3 -4
  43. package/esm2022/src/app/shared/markdown/markdown.service.mjs +8 -7
  44. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +10 -1
  45. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +17 -8
  46. package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +5 -4
  47. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +71 -36
  48. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  49. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +2 -2
  50. package/esm2022/src/app/shared/material/chips/material.chips.mjs +13 -5
  51. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +19 -9
  52. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
  53. package/esm2022/src/app/shared/material/text/text-form.component.mjs +5 -4
  54. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +3 -3
  55. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +1 -1
  56. package/esm2022/src/app/shared/observables.mjs +5 -5
  57. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +18 -2
  58. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +3 -12
  59. package/esm2022/src/app/shared/pipes/html.pipes.mjs +18 -1
  60. package/esm2022/src/app/shared/pipes/observable.pipes.mjs +44 -0
  61. package/esm2022/src/app/shared/pipes/pipes.module.mjs +28 -6
  62. package/esm2022/src/app/shared/pipes/string.pipes.mjs +35 -4
  63. package/esm2022/src/app/shared/print/print.service.mjs +305 -0
  64. package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +4 -4
  65. package/esm2022/src/app/shared/shared.module.mjs +4 -11
  66. package/esm2022/src/app/shared/toast/toast.testing.mjs +13 -11
  67. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -4
  68. package/esm2022/src/app/shared/toast/toasts.mjs +23 -33
  69. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
  70. package/esm2022/src/app/shared/toolbar/toolbar.mjs +7 -3
  71. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  72. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +2 -2
  73. package/esm2022/src/app/shared/validator/validators.mjs +12 -8
  74. package/esm2022/src/app/social/message/message.form.mjs +4 -3
  75. package/fesm2022/sumaris-net.ngx-components.mjs +3983 -3377
  76. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  77. package/package.json +1 -1
  78. package/public_api.d.ts +5 -0
  79. package/src/app/core/form/properties/properties.form.d.ts +2 -0
  80. package/src/app/core/home/home.d.ts +1 -1
  81. package/src/app/core/menu/menu.component.d.ts +3 -6
  82. package/src/app/core/services/model/account.model.d.ts +1 -1
  83. package/src/app/core/services/model/entity.model.d.ts +5 -3
  84. package/src/app/core/services/platform.service.d.ts +9 -2
  85. package/src/app/shared/dates.d.ts +4 -0
  86. package/src/app/shared/directives/autoresize.directive.d.ts +20 -0
  87. package/src/app/shared/directives/directives.module.d.ts +4 -3
  88. package/src/app/shared/form/field.component.d.ts +3 -1
  89. package/src/app/shared/functions.d.ts +6 -0
  90. package/src/app/shared/image/gallery/image-gallery.component.d.ts +4 -1
  91. package/src/app/shared/markdown/markdown.component.d.ts +14 -8
  92. package/src/app/shared/markdown/markdown.modal.d.ts +18 -8
  93. package/src/app/shared/markdown/markdown.module.d.ts +1 -2
  94. package/src/app/shared/markdown/markdown.service.d.ts +0 -1
  95. package/src/app/shared/markdown/markdown.utils.d.ts +1 -0
  96. package/src/app/shared/markdown/testing/markdown.test.d.ts +4 -1
  97. package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +2 -1
  98. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +2 -0
  99. package/src/app/shared/material/chips/material.chips.d.ts +1 -0
  100. package/src/app/shared/material/datetime/material.datetime.d.ts +1 -0
  101. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +1 -1
  102. package/src/app/shared/observables.d.ts +2 -2
  103. package/src/app/shared/pipes/arrays.pipe.d.ts +8 -0
  104. package/src/app/shared/pipes/html.pipes.d.ts +7 -0
  105. package/src/app/shared/pipes/observable.pipes.d.ts +19 -0
  106. package/src/app/shared/pipes/pipes.module.d.ts +5 -4
  107. package/src/app/shared/pipes/string.pipes.d.ts +11 -1
  108. package/src/app/shared/print/print.service.d.ts +94 -0
  109. package/src/app/shared/rx-state/rx-state.decorators.d.ts +2 -2
  110. package/src/app/shared/shared.module.d.ts +2 -3
  111. package/src/app/shared/toast/toast.testing.d.ts +1 -1
  112. package/src/app/shared/toast/toast.testing.module.d.ts +2 -1
  113. package/src/app/shared/toast/toasts.d.ts +2 -3
  114. package/src/app/shared/toolbar/toolbar.d.ts +3 -1
  115. package/src/app/shared/validator/validators.d.ts +3 -1
  116. package/src/assets/i18n/en-US.json +3 -2
  117. package/src/assets/i18n/en.json +2 -1
  118. package/src/assets/i18n/fr.json +2 -1
  119. package/src/assets/manifest.json +1 -1
  120. package/src/theme/_mixins.scss +7 -0
  121. package/src/theme/_ngx-components.scss +53 -46
  122. package/src/theme/_ngx-components.table.scss +4 -1
  123. package/src/theme/_ngx-components.tabs.scss +11 -0
@@ -8,9 +8,10 @@ import { MarkdownService } from './markdown.service';
8
8
  import { Subscription } from 'rxjs';
9
9
  import { UrlUtils } from '../file/url.utils';
10
10
  import { isNotEmptyArray, isNotNilOrBlank } from '../functions';
11
- import { NavController } from '@ionic/angular';
11
+ import { NavController, ToastController } from '@ionic/angular';
12
12
  import { MarkdownUtils } from './markdown.utils';
13
13
  import { DOCUMENT } from '@angular/common';
14
+ import { PrintService } from '../print/print.service';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "@angular/router";
16
17
  import * as i2 from "@angular/common";
@@ -24,13 +25,15 @@ export class AppMarkdownContent {
24
25
  element;
25
26
  _document;
26
27
  route;
27
- _printIframe;
28
+ _printId;
28
29
  _clickSubscription;
29
30
  navController = inject(NavController);
30
31
  settings = inject(LocalSettingsService);
31
32
  translate = inject(TranslateService);
32
33
  network = inject(NetworkService);
33
34
  markdownService = inject(MarkdownService);
35
+ toastController = inject(ToastController);
36
+ printService = inject(PrintService);
34
37
  loading = true;
35
38
  error = undefined;
36
39
  baseUrl;
@@ -69,6 +72,8 @@ export class AppMarkdownContent {
69
72
  this.element = element;
70
73
  this._document = _document;
71
74
  this.route = route;
75
+ this._printId = this.printService.nextJobId();
76
+ this.markAsLoading({ emitEvent: false });
72
77
  // TODO: for DEV only
73
78
  //this.debug = !environment.production;
74
79
  }
@@ -92,88 +97,66 @@ export class AppMarkdownContent {
92
97
  get canGoBack() {
93
98
  return isNotEmptyArray(this._navHistory);
94
99
  }
95
- print(event) {
96
- console.debug('[markdown] Print');
100
+ async print() {
101
+ if (this.loading)
102
+ return; // skip
103
+ console.debug('[markdown] Print...');
97
104
  if (!this.element) {
98
- console.error('Erreur : Élément non trouvé.');
105
+ console.error('Element to print not found. Please check the HTML template.');
99
106
  return;
100
107
  }
101
- // Récupérer le contenu HTML depuis le composant
102
- const content = this.element.nativeElement.innerHTML;
103
- // Créer une iframe pour gérer l'impression
104
- this._printIframe = this.createPrintHiddenIframe(content);
105
- // Lancer l'impression après un court délai (le temps que l'iframe charge)
106
- this._printIframe.contentWindow.addEventListener('load', () => {
107
- this._printIframe.contentWindow?.window.print();
108
- this._printIframe.remove();
109
- });
110
- setTimeout(() => {
111
- //this._printIframe.contentWindow?.window.print();
112
- // Supprimer l'iframe après impression
113
- //this._document.body.removeChild(this._printIframe);
114
- }, 500);
108
+ this.markAsLoading({ emitEvent: false });
109
+ try {
110
+ // Print
111
+ await this.printService.printElement(this.element.nativeElement, {
112
+ id: this._printId,
113
+ // Print as portrait, by default
114
+ style: `@media print {
115
+ @page {
116
+ size: portrait;
117
+ margin: 1.1cm;
118
+ }
119
+ markdown hr {
120
+ page-break-before: always;
121
+ border: none;
122
+ margin: 0;
123
+ padding: 0;
124
+ }
125
+ markdown img {
126
+ max-width: 100%;
127
+ height: auto;
128
+ page-break-inside: avoid;
129
+ }
130
+ }`,
131
+ });
132
+ }
133
+ finally {
134
+ this.markAsLoaded({ emitEvent: false });
135
+ }
115
136
  }
116
- /* -- protected functions -- */
117
- createPrintHiddenIframe(html, style) {
118
- // Create a iframe with '?print-pdf'
119
- const iframe = this._document.createElement('iframe');
120
- iframe.classList.add('cdk-visually-hidden');
121
- iframe.style.width = '100%';
122
- iframe.style.height = '100%';
123
- this._document.body.appendChild(iframe);
124
- // Charger le contenu HTML dans l'iframe
125
- const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
126
- if (iframeDocument) {
127
- iframeDocument.open();
128
- iframeDocument.write(`
129
- <html>
130
- <head>
131
- <title>${this._document.title}</title>
132
- <style>
133
- hr {
134
- page-break-before: always;
135
- border: 0 !important;
136
- padding: 0 !important;
137
- }
138
- body {
139
- font-family: 'Roboto', Helvetica, Arial, sans-serif;
140
- margin: 0;
141
- padding: 20px;
142
- }
143
- </style>
144
- </head>
145
- <body>
146
- ${html}
147
- </body>
148
- </html>
149
- `);
150
- iframeDocument.close();
137
+ markAsLoaded(opts) {
138
+ this.loading = false;
139
+ if (opts?.emitEvent !== false) {
140
+ this.printService.markAsLoaded(this._printId);
141
+ this.cd.markForCheck();
151
142
  }
152
- // Inject App style
153
- this.injectAppStylesIntoIframe(iframe);
154
- return iframe;
155
143
  }
156
- injectAppStylesIntoIframe(iframe) {
157
- const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
158
- if (iframeDocument) {
159
- // Récupérer tous les styles (liens CSS)
160
- const links = Array.from(this._document.querySelectorAll('link[rel="stylesheet"]'));
161
- links.forEach((link) => {
162
- const newLink = iframeDocument.createElement('link');
163
- newLink.rel = 'stylesheet';
164
- newLink.href = link.getAttribute('href');
165
- if (newLink.href)
166
- iframeDocument.head.appendChild(newLink);
167
- });
168
- // Récupérer tous les `styles` en ligne
169
- const inlineStyles = Array.from(this._document.querySelectorAll('style'));
170
- inlineStyles.forEach((style) => {
171
- const newStyle = iframeDocument.createElement('style');
172
- newStyle.innerHTML = style.innerHTML;
173
- iframeDocument.head.appendChild(newStyle);
174
- });
144
+ markAsLoading(opts) {
145
+ this.loading = true;
146
+ if (opts?.emitEvent !== false) {
147
+ this.printService.markAsLoading(this._printId);
148
+ this.cd.markForCheck();
175
149
  }
176
150
  }
151
+ setError(error) {
152
+ this.error = error?.['message'] || error || null;
153
+ this.cd.markForCheck();
154
+ }
155
+ resetError() {
156
+ this.error = null;
157
+ this.cd.markForCheck();
158
+ }
159
+ /* -- protected functions -- */
177
160
  setData(value, opts) {
178
161
  const anchor = opts?.anchor || null;
179
162
  if (this._data !== value || this._anchor !== anchor) {
@@ -205,7 +188,9 @@ export class AppMarkdownContent {
205
188
  // Clean URL (remove fragment and query)
206
189
  const anchor = opts?.anchor || UrlUtils.getFragment(src);
207
190
  src = UrlUtils.stripFragmentAndQuery(src);
191
+ src = MarkdownUtils.isGitlabUrl(src) ? MarkdownUtils.fixGitlabUrlToRaw(src) : src;
208
192
  let fallbackSrc = opts?.fallbackSrc ? UrlUtils.stripFragmentAndQuery(opts.fallbackSrc) : null;
193
+ fallbackSrc = MarkdownUtils.isGitlabUrl(fallbackSrc) ? MarkdownUtils.fixGitlabUrlToRaw(fallbackSrc) : fallbackSrc;
209
194
  if (this._src !== src || this._fallbackSrc !== fallbackSrc || this._anchor !== anchor) {
210
195
  const url = src ? src + (isNotNilOrBlank(anchor) ? `#${anchor}` : '') : null;
211
196
  if (url)
@@ -263,7 +248,7 @@ export class AppMarkdownContent {
263
248
  // Translate error
264
249
  if (error instanceof HttpErrorResponse && this.network.offline) {
265
250
  console.error(`[markdown] Error loading markdown URL {${this.src}} (offline: true): `, error);
266
- this.error = 'NETWORK.INFO.OFFLINE';
251
+ this.setError('NETWORK.INFO.OFFLINE');
267
252
  }
268
253
  else {
269
254
  // Retry with fallback URL
@@ -273,7 +258,7 @@ export class AppMarkdownContent {
273
258
  return;
274
259
  }
275
260
  console.error(`[markdown] Error loading markdown URL {${this.src}} (offline: true): `, error);
276
- this.error = 'ERROR.LOAD_DATA_ERROR';
261
+ this.setError('ERROR.LOAD_DATA_ERROR');
277
262
  }
278
263
  this.markAsLoaded();
279
264
  }
@@ -298,24 +283,12 @@ export class AppMarkdownContent {
298
283
  this.setSrc(url, { fallbackSrc: fallbackUrl, anchor: fragment, addToNavigationHistory: this.enableNavigationHistory });
299
284
  }));
300
285
  }
301
- markAsLoaded() {
302
- this.loading = false;
303
- this.cd.markForCheck();
304
- }
305
- markAsLoading() {
306
- this.loading = true;
307
- this.cd.markForCheck();
308
- }
309
- resetError() {
310
- this.error = null;
311
- this.cd.markForCheck();
312
- }
313
286
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppMarkdownContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Component });
314
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppMarkdownContent, selector: "app-markdown-content", inputs: { data: "data", src: "src", anchor: "anchor", debug: ["debug", "debug", booleanAttribute], showError: ["showError", "showError", booleanAttribute], animated: ["animated", "animated", booleanAttribute], enableNavigationHistory: ["enableNavigationHistory", "enableNavigationHistory", booleanAttribute], updateRouteLocation: ["updateRouteLocation", "updateRouteLocation", booleanAttribute] }, outputs: { markdownUrlChange: "markdownUrlChange" }, ngImport: i0, template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: 0 2px 4px rgba(0, 0, 0, .4);display:block;position:relative;width:70%;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{color:rgba(var(--ion-text-color-rgb),.7);background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{hr{page-break-before:always;border:none;margin:0}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:20px}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonRow, selector: "ion-row" }, { kind: "component", type: i3.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i4.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i5.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }, { kind: "directive", type: i6.MarkdownDirective, selector: "markdown,[markdown]" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], animations: [slideDownAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
287
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppMarkdownContent, selector: "app-markdown-content", inputs: { data: "data", src: "src", anchor: "anchor", debug: ["debug", "debug", booleanAttribute], showError: ["showError", "showError", booleanAttribute], animated: ["animated", "animated", booleanAttribute], enableNavigationHistory: ["enableNavigationHistory", "enableNavigationHistory", booleanAttribute], updateRouteLocation: ["updateRouteLocation", "updateRouteLocation", booleanAttribute] }, outputs: { markdownUrlChange: "markdownUrlChange" }, ngImport: i0, template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{color:rgba(var(--ion-text-color-rgb),.7);background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{@page{size:portrait;margin:1.1cm}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:0;overflow:hidden}markdown hr{page-break-before:always;border:none;margin:0;padding:0}markdown img{max-width:100%;height:auto;page-break-inside:avoid}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonRow, selector: "ion-row" }, { kind: "component", type: i3.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i4.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i5.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }, { kind: "directive", type: i6.MarkdownDirective, selector: "markdown,[markdown]" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], animations: [slideDownAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
315
288
  }
316
289
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppMarkdownContent, decorators: [{
317
290
  type: Component,
318
- args: [{ selector: 'app-markdown-content', changeDetection: ChangeDetectionStrategy.OnPush, animations: [slideDownAnimation], template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: 0 2px 4px rgba(0, 0, 0, .4);display:block;position:relative;width:70%;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{color:rgba(var(--ion-text-color-rgb),.7);background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{hr{page-break-before:always;border:none;margin:0}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:20px}}\n"] }]
291
+ args: [{ selector: 'app-markdown-content', changeDetection: ChangeDetectionStrategy.OnPush, animations: [slideDownAnimation], template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{color:rgba(var(--ion-text-color-rgb),.7);background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{@page{size:portrait;margin:1.1cm}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:0;overflow:hidden}markdown hr{page-break-before:always;border:none;margin:0;padding:0}markdown img{max-width:100%;height:auto;page-break-inside:avoid}}\n"] }]
319
292
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: Document, decorators: [{
320
293
  type: Inject,
321
294
  args: [DOCUMENT]
@@ -345,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
345
318
  }], markdownUrlChange: [{
346
319
  type: Output
347
320
  }] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQWUzQyxN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LHVFQUNoQixnQkFBZ0Isa0ZDeEZ0QywrNURBdURBLDI3RkRoQmMsQ0FBQyxrQkFBa0IsQ0FBQzs7NEZBRXJCLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLGtCQUFrQixDQUFDOzswQkF3RDdCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTt5Q0FqQ0UsSUFBSTtzQkFBaEIsS0FBSztnQkFPTyxHQUFHO3NCQUFmLEtBQUs7Z0JBT08sTUFBTTtzQkFBbEIsS0FBSztnQkFPa0MsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsdUJBQXVCO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG1CQUFtQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHNsaWRlRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uL21hdGVyaWFsL21hdGVyaWFsLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tICcuLi9maWxlL3VybC51dGlscyc7XG5pbXBvcnQgeyBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgTWFya2Rvd25VdGlscyB9IGZyb20gJy4vbWFya2Rvd24udXRpbHMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE1hcmtkb3duT3B0aW9ucyB7XG4gIGRhdGE/OiBzdHJpbmc7XG4gIHNyYz86IHN0cmluZztcbiAgc2hvd0Vycm9yPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1hcmtkb3duLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NsaWRlRG93bkFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1hcmtkb3duQ29udGVudCBpbXBsZW1lbnRzIEFwcE1hcmtkb3duT3B0aW9ucywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcHJpbnRJZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50O1xuICBwcml2YXRlIF9jbGlja1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByb3RlY3RlZCBuYXZDb250cm9sbGVyID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xuICBwcm90ZWN0ZWQgc2V0dGluZ3MgPSBpbmplY3QoTG9jYWxTZXR0aW5nc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgbmV0d29yayA9IGluamVjdChOZXR3b3JrU2VydmljZSk7XG4gIHByb3RlY3RlZCBtYXJrZG93blNlcnZpY2UgPSBpbmplY3QoTWFya2Rvd25TZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHRydWU7XG4gIHByb3RlY3RlZCBlcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF9kYXRhOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc3JjOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZmFsbGJhY2tTcmM6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hbmNob3I6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX25hdkhpc3Rvcnk6IHsgc3JjPzogc3RyaW5nOyBmYWxsYmFja1NyYz86IHN0cmluZzsgZGF0YT86IHN0cmluZzsgYW5jaG9yPzogc3RyaW5nIH1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpIHNldCBkYXRhKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldERhdGEodmFsdWUpO1xuICB9XG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNyYyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRTcmModmFsdWUpO1xuICB9XG4gIGdldCBzcmMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NyYztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBhbmNob3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2FuY2hvciA9IHZhbHVlO1xuICB9XG4gIGdldCBhbmNob3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvcjtcbiAgfVxuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkZWJ1ZzogYm9vbGVhbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dFcnJvciA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhbmltYXRlZCA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVOYXZpZ2F0aW9uSGlzdG9yeSA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1cGRhdGVSb3V0ZUxvY2F0aW9uID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG1hcmtkb3duVXJsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICkge1xuICAgIC8vIFRPRE86IGZvciBERVYgb25seVxuICAgIC8vdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fY2xpY2tTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5tYXJrZG93blNlcnZpY2UucmVzZXRCYXNlVXJsKCk7XG4gIH1cblxuICBnb0JhY2soZXZlbnQ/OiBFdmVudCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ttYXJrZG93bl0gR29pbmcgYmFjaycpO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5fbmF2SGlzdG9yeSkpIHtcbiAgICAgIGNvbnN0IHsgc3JjLCBmYWxsYmFja1NyYywgZGF0YSwgYW5jaG9yIH0gPSB0aGlzLl9uYXZIaXN0b3J5LnBvcCgpO1xuICAgICAgaWYgKHNyYykgdGhpcy5zZXRTcmMoc3JjLCB7IGZhbGxiYWNrU3JjLCBhbmNob3IgfSk7XG4gICAgICBlbHNlIHRoaXMuc2V0RGF0YShkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLmJhY2soKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FuR29CYWNrKCkge1xuICAgIHJldHVybiBpc05vdEVtcHR5QXJyYXkodGhpcy5fbmF2SGlzdG9yeSk7XG4gIH1cblxuICBwcmludChldmVudD86IEV2ZW50KSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW21hcmtkb3duXSBQcmludCcpO1xuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciA6IMOJbMOpbWVudCBub24gdHJvdXbDqS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSw6ljdXDDqXJlciBsZSBjb250ZW51IEhUTUwgZGVwdWlzIGxlIGNvbXBvc2FudFxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG5cbiAgICAvLyBDcsOpZXIgdW5lIGlmcmFtZSBwb3VyIGfDqXJlciBsJ2ltcHJlc3Npb25cbiAgICB0aGlzLl9wcmludElmcmFtZSA9IHRoaXMuY3JlYXRlUHJpbnRIaWRkZW5JZnJhbWUoY29udGVudCk7XG5cbiAgICAvLyBMYW5jZXIgbCdpbXByZXNzaW9uIGFwcsOocyB1biBjb3VydCBkw6lsYWkgKGxlIHRlbXBzIHF1ZSBsJ2lmcmFtZSBjaGFyZ2UpXG4gICAgdGhpcy5fcHJpbnRJZnJhbWUuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgdGhpcy5fcHJpbnRJZnJhbWUuY29udGVudFdpbmRvdz8ud2luZG93LnByaW50KCk7XG4gICAgICB0aGlzLl9wcmludElmcmFtZS5yZW1vdmUoKTtcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy90aGlzLl9wcmludElmcmFtZS5jb250ZW50V2luZG93Py53aW5kb3cucHJpbnQoKTtcbiAgICAgIC8vIFN1cHByaW1lciBsJ2lmcmFtZSBhcHLDqHMgaW1wcmVzc2lvblxuICAgICAgLy90aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuX3ByaW50SWZyYW1lKTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByaXZhdGUgY3JlYXRlUHJpbnRIaWRkZW5JZnJhbWUoaHRtbDogc3RyaW5nLCBzdHlsZT86IHN0cmluZyk6IEhUTUxJRnJhbWVFbGVtZW50IHtcbiAgICAvLyBDcmVhdGUgYSBpZnJhbWUgd2l0aCAnP3ByaW50LXBkZidcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZnJhbWUuY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuICAgIGlmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcblxuICAgIC8vIENoYXJnZXIgbGUgY29udGVudSBIVE1MIGRhbnMgbCdpZnJhbWVcbiAgICBjb25zdCBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xuICAgIGlmIChpZnJhbWVEb2N1bWVudCkge1xuICAgICAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICAgICAgaWZyYW1lRG9jdW1lbnQud3JpdGUoYFxuICAgICAgICA8aHRtbD5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDx0aXRsZT4ke3RoaXMuX2RvY3VtZW50LnRpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICBociB7XG4gICAgICAgICAgICAgIHBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXM7XG4gICAgICAgICAgICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib2R5IHtcbiAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zdHlsZT5cbiAgICAgICAgICA8L2hlYWQ+XG4gICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAke2h0bWx9XG4gICAgICAgICAgPC9ib2R5PlxuICAgICAgICA8L2h0bWw+XG4gICAgICBgKTtcbiAgICAgIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLy8gSW5qZWN0IEFwcCBzdHlsZVxuICAgIHRoaXMuaW5qZWN0QXBwU3R5bGVzSW50b0lmcmFtZShpZnJhbWUpO1xuXG4gICAgcmV0dXJuIGlmcmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0QXBwU3R5bGVzSW50b0lmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgY29uc3QgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudERvY3VtZW50IHx8IGlmcmFtZS5jb250ZW50V2luZG93Py5kb2N1bWVudDtcblxuICAgIGlmIChpZnJhbWVEb2N1bWVudCkge1xuICAgICAgLy8gUsOpY3Vww6lyZXIgdG91cyBsZXMgc3R5bGVzIChsaWVucyBDU1MpXG4gICAgICBjb25zdCBsaW5rcyA9IEFycmF5LmZyb20odGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdJykpO1xuICAgICAgbGlua3MuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgICBjb25zdCBuZXdMaW5rID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICBuZXdMaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgICAgICAgbmV3TGluay5ocmVmID0gbGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgaWYgKG5ld0xpbmsuaHJlZikgaWZyYW1lRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuZXdMaW5rKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSw6ljdXDDqXJlciB0b3VzIGxlcyBgc3R5bGVzYCBlbiBsaWduZVxuICAgICAgY29uc3QgaW5saW5lU3R5bGVzID0gQXJyYXkuZnJvbSh0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpKTtcbiAgICAgIGlubGluZVN0eWxlcy5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdTdHlsZSA9IGlmcmFtZURvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIG5ld1N0eWxlLmlubmVySFRNTCA9IHN0eWxlLmlubmVySFRNTDtcbiAgICAgICAgaWZyYW1lRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuZXdTdHlsZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGF0YSh2YWx1ZTogc3RyaW5nLCBvcHRzPzogeyBhbmNob3I/OiBzdHJpbmc7IGFkZFRvTmF2aWdhdGlvbkhpc3Rvcnk/OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCBhbmNob3IgPSBvcHRzPy5hbmNob3IgfHwgbnVsbDtcblxuICAgIGlmICh0aGlzLl9kYXRhICE9PSB2YWx1ZSB8fCB0aGlzLl9hbmNob3IgIT09IGFuY2hvcikge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byBuYXZpZ2F0aW9uIGhpc3RvcnlcbiAgICAgICAgaWYgKG9wdHM/LmFkZFRvTmF2aWdhdGlvbkhpc3RvcnkpIHtcbiAgICAgICAgICB0aGlzLl9uYXZIaXN0b3J5LnB1c2goe1xuICAgICAgICAgICAgc3JjOiB0aGlzLl9zcmMsXG4gICAgICAgICAgICBmYWxsYmFja1NyYzogdGhpcy5fZmFsbGJhY2tTcmMsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9kYXRhLFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLl9hbmNob3IsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRhID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2FuY2hvciA9IGFuY2hvcjtcblxuICAgICAgICAvLyBDbGVhciBzcmNcbiAgICAgICAgdGhpcy5fc3JjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmFsbGJhY2tTcmMgPSBudWxsO1xuXG4gICAgICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTcmMoc3JjOiBzdHJpbmcsIG9wdHM/OiB7IGZhbGxiYWNrU3JjPzogc3RyaW5nOyBhbmNob3I/OiBzdHJpbmc7IGFkZFRvTmF2aWdhdGlvbkhpc3Rvcnk/OiBib29sZWFuIH0pIHtcbiAgICAvLyBDbGVhbiBVUkwgKHJlbW92ZSBmcmFnbWVudCBhbmQgcXVlcnkpXG4gICAgY29uc3QgYW5jaG9yID0gb3B0cz8uYW5jaG9yIHx8IFVybFV0aWxzLmdldEZyYWdtZW50KHNyYyk7XG4gICAgc3JjID0gVXJsVXRpbHMuc3RyaXBGcmFnbWVudEFuZFF1ZXJ5KHNyYyk7XG4gICAgbGV0IGZhbGxiYWNrU3JjID0gb3B0cz8uZmFsbGJhY2tTcmMgPyBVcmxVdGlscy5zdHJpcEZyYWdtZW50QW5kUXVlcnkob3B0cy5mYWxsYmFja1NyYykgOiBudWxsO1xuXG4gICAgaWYgKHRoaXMuX3NyYyAhPT0gc3JjIHx8IHRoaXMuX2ZhbGxiYWNrU3JjICE9PSBmYWxsYmFja1NyYyB8fCB0aGlzLl9hbmNob3IgIT09IGFuY2hvcikge1xuICAgICAgY29uc3QgdXJsID0gc3JjID8gc3JjICsgKGlzTm90TmlsT3JCbGFuayhhbmNob3IpID8gYCMke2FuY2hvcn1gIDogJycpIDogbnVsbDtcbiAgICAgIGlmICh1cmwpIGNvbnNvbGUuZGVidWcoYFttYXJrZG93bl0gTG9hZGluZyAke3VybH0uLi5gKTtcblxuICAgICAgLy8gR2l2ZSBiYXNlVXJsIHRvIHRoZSBzZXJ2aWNlLCB0byBiZSBhYmxlIHRvIHJlc29sdmUgcmVsYXRpdmUgcGF0aCAtIGUuZy4gaW1hZ2VzKVxuICAgICAgaWYgKHNyYyAmJiBVcmxVdGlscy5pc0V4dGVybmFsVXJsKHNyYykpIHtcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gVXJsVXRpbHMuZ2V0UGFyZW50KHNyYyk7XG4gICAgICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLnNldEJhc2VVcmwodGhpcy5iYXNlVXJsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNyYykge1xuICAgICAgICAvLyBTYXZlIGN1cnJlbnQgc3RhdGUgdG8gbmF2aWdhdGlvbiBoaXN0b3J5XG4gICAgICAgIGlmIChvcHRzPy5hZGRUb05hdmlnYXRpb25IaXN0b3J5KSB7XG4gICAgICAgICAgdGhpcy5fbmF2SGlzdG9yeS5wdXNoKHtcbiAgICAgICAgICAgIHNyYzogdGhpcy5fc3JjLFxuICAgICAgICAgICAgZmFsbGJhY2tTcmM6IHRoaXMuX2ZhbGxiYWNrU3JjLFxuICAgICAgICAgICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICAgICAgICAgIGFuY2hvcjogdGhpcy5fYW5jaG9yLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3JjID0gc3JjO1xuICAgICAgICB0aGlzLl9mYWxsYmFja1NyYyA9IGZhbGxiYWNrU3JjO1xuICAgICAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG5cbiAgICAgICAgLy8gQ2xlYXIgZGF0YVxuICAgICAgICB0aGlzLl9kYXRhID0gbnVsbDtcblxuICAgICAgICAvLyBSZXNldCBlcnJvclxuICAgICAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICAgICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9zcmMgPSBudWxsO1xuICAgICAgICB0aGlzLl9mYWxsYmFja1NyYyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2FuY2hvciA9IG51bGw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uUmVhZHkoKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5fc3JjID8gdGhpcy5fc3JjICsgKGlzTm90TmlsT3JCbGFuayh0aGlzLl9hbmNob3IpID8gYCMke3RoaXMuX2FuY2hvcn1gIDogJycpIDogbnVsbDtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFttYXJrZG93bl0gUmVhZHkgLSAke3VybH1gKTtcbiAgICAgIC8vIENsZWFyIGZhbGxiYWNrIChubyBtb3JlIG5lZWQpXG4gICAgICBpZiAodGhpcy5fZmFsbGJhY2tTcmMpIHRoaXMuX2ZhbGxiYWNrU3JjID0gbnVsbDtcblxuICAgICAgLy8gRW1pdCBjaGFuZ2VcbiAgICAgIHRoaXMubWFya2Rvd25VcmxDaGFuZ2UuZW1pdCh1cmwpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhcnRMaXN0ZW5DbGlja0V2ZW50cygpO1xuXG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcblxuICAgIC8vIFNjcm9sbCB0byBhbmNob3JcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHRoaXMuX2FuY2hvcikpIHtcbiAgICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLnNjcm9sbFRvQW5jaG9yKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB0aGlzLl9hbmNob3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvYWRFcnJvcihlcnJvcj86IHN0cmluZyB8IEVycm9yKSB7XG4gICAgLy8gVHJhbnNsYXRlIGVycm9yXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgdGhpcy5uZXR3b3JrLm9mZmxpbmUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFttYXJrZG93bl0gRXJyb3IgbG9hZGluZyBtYXJrZG93biBVUkwgeyR7dGhpcy5zcmN9fSAob2ZmbGluZTogdHJ1ZSk6IGAsIGVycm9yKTtcbiAgICAgIHRoaXMuZXJyb3IgPSAnTkVUV09SSy5JTkZPLk9GRkxJTkUnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXRyeSB3aXRoIGZhbGxiYWNrIFVSTFxuICAgICAgaWYgKHRoaXMuX2ZhbGxiYWNrU3JjKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFttYXJrZG93bl0gRXJyb3IgbG9hZGluZyBtYXJrZG93biBVUkwgeyR7dGhpcy5zcmN9fSAtIGZhbGxiYWNrIHRvIFVSTCAke3RoaXMuX2ZhbGxiYWNrU3JjfWApO1xuICAgICAgICB0aGlzLnNldFNyYyh0aGlzLl9mYWxsYmFja1NyYywgeyBhbmNob3I6IHRoaXMuX2FuY2hvciB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKGBbbWFya2Rvd25dIEVycm9yIGxvYWRpbmcgbWFya2Rvd24gVVJMIHske3RoaXMuc3JjfX0gKG9mZmxpbmU6IHRydWUpOiBgLCBlcnJvcik7XG4gICAgICB0aGlzLmVycm9yID0gJ0VSUk9SLkxPQURfREFUQV9FUlJPUic7XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydExpc3RlbkNsaWNrRXZlbnRzKCkge1xuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjbGljayBsaW5rIHRvIE1hcmtkb3duIFVSTFxuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLm9uQ2xpY2tNYXJrZG93blVybC5zdWJzY3JpYmUoKGhyZWYpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW21hcmtkb3duXSBSZWNlaXZlZCBjbGljayBldmVudCwgb24gYSBtYXJrZG93biBVUkwnLCBocmVmKTtcblxuICAgICAgICBsZXQgZnJhZ21lbnQgPSBVcmxVdGlscy5nZXRGcmFnbWVudChocmVmKTtcbiAgICAgICAgbGV0IHVybCA9IFVybFV0aWxzLnN0cmlwRnJhZ21lbnRBbmRRdWVyeShocmVmKTtcbiAgICAgICAgbGV0IGZhbGxiYWNrVXJsID0gbnVsbDtcblxuICAgICAgICAvLyBSZXNvbHZlIHJlbGF0aXZlIHBhdGhcbiAgICAgICAgaWYgKFVybFV0aWxzLmlzUmVsYXRpdmVVcmwoaHJlZikgJiYgdGhpcy5iYXNlVXJsKSB7XG4gICAgICAgICAgLy8gR2V0IGFic29sdXRlIHVybFxuICAgICAgICAgIHVybCA9IE1hcmtkb3duVXRpbHMucmVzb2x2ZVJlbGF0aXZlVXJsKHRoaXMuYmFzZVVybCwgaHJlZik7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgYSBmYWxsYmFjayB1cmwsIGluIHJlbGF0aXZlIHBhdGggd2FzIHdyb25nXG4gICAgICAgICAgZmFsbGJhY2tVcmwgPSBNYXJrZG93blV0aWxzLnJlc29sdmVSZWxhdGl2ZVVybCh0aGlzLmJhc2VVcmwsIGhyZWYsIHsgYWJzb2x1dGVCeURlZmF1bHQ6IHRydWUgfSk7XG4gICAgICAgICAgZmFsbGJhY2tVcmwgPSB1cmwgPT09IGZhbGxiYWNrVXJsID8gbnVsbCA6IGZhbGxiYWNrVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3BlbmluZyB0aGUgbmV3IFVSTFxuICAgICAgICB0aGlzLnNldFNyYyh1cmwsIHsgZmFsbGJhY2tTcmM6IGZhbGxiYWNrVXJsLCBhbmNob3I6IGZyYWdtZW50LCBhZGRUb05hdmlnYXRpb25IaXN0b3J5OiB0aGlzLmVuYWJsZU5hdmlnYXRpb25IaXN0b3J5IH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc0xvYWRlZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc0xvYWRpbmcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0RXJyb3IoKSB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGFwcC1kZWJ1ZyAqbmdJZj1cImRlYnVnXCI+XG4gIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgPGlvbi1yb3c+XG4gICAgICA8aW9uLWNvbD5cbiAgICAgICAgbG9hZGluZzoge3sgbG9hZGluZyB9fVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgZXJyb3I6IHt7IGVycm9yIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgYmFzZVVybDoge3sgYmFzZVVybCB9fVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgbWFya2Rvd25Vcmw6IHt7IHNyYyB9fVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgbWFya2Rvd25GcmFnbWVudDoge3sgX2FuY2hvciB9fVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgbWFya2Rvd25Db250ZW50OiB7eyBkYXRhIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cbjwvYXBwLWRlYnVnPlxuXG48IS0tIGVycm9yIC0tPlxuQGlmIChzaG93RXJyb3IgJiYgZXJyb3I7IGFzIGVycm9yKSB7XG4gIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBAc2xpZGVEb3duQW5pbWF0aW9uPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvciB8IHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICA8L2lvbi1pdGVtPlxufSBAZWxzZSB7XG4gIEBpZiAoZGF0YSkge1xuICAgIDxtYXJrZG93biBbZGF0YV09XCJkYXRhXCIgKHJlYWR5KT1cIm9uUmVhZHkoKVwiIGVtb2ppPjwvbWFya2Rvd24+XG4gIH0gQGVsc2UgaWYgKHNyYykge1xuICAgIDxtYXJrZG93biBbc3JjXT1cInNyY1wiIChlcnJvcik9XCJvbkxvYWRFcnJvcigkZXZlbnQpXCIgKHJlYWR5KT1cIm9uUmVhZHkoKVwiIGVtb2ppPjwvbWFya2Rvd24+XG4gIH1cbn1cblxuPCEtLSBsb2FkaW5nIHNwaW5uZXIgLS0+XG5AaWYgKGxvYWRpbmcpIHtcbiAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nUGFyYWdyYXBoXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdQYXJhZ3JhcGhcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1BhcmFncmFwaFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nUGFyYWdyYXBoPlxuICA8cD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogNzUlOyBtYXJnaW4taW5saW5lLXN0YXJ0OiA1JVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIHN0eWxlPVwid2lkdGg6IDgwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIHN0eWxlPVwid2lkdGg6IDgwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIHN0eWxlPVwid2lkdGg6IDgwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIHN0eWxlPVwid2lkdGg6IDgwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIHN0eWxlPVwid2lkdGg6IDgwJVwiPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzND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LFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3dHQWxUVSxrQkFBa0IsNkVBd0RuQixRQUFROzRGQXhEUCxrQkFBa0Isb0hBNkNULGdCQUFnQix5Q0FDaEIsZ0JBQWdCLHNDQUNoQixnQkFBZ0IsbUZBQ2hCLGdCQUFnQix1RUFDaEIsZ0JBQWdCLGtGQzNGdEMsKzVEQXVEQSwwbEdEZmMsQ0FBQyxrQkFBa0IsQ0FBQzs7NEZBRXJCLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLGtCQUFrQixDQUFDOzswQkEwRDdCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTt5Q0FqQ0UsSUFBSTtzQkFBaEIsS0FBSztnQkFPTyxHQUFHO3NCQUFmLEtBQUs7Z0JBT08sTUFBTTtzQkFBbEIsS0FBSztnQkFPa0MsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsdUJBQXVCO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG1CQUFtQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHNsaWRlRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uL21hdGVyaWFsL21hdGVyaWFsLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgTWFya2Rvd25TZXJ2aWNlIH0gZnJvbSAnLi9tYXJrZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tICcuLi9maWxlL3VybC51dGlscyc7XG5pbXBvcnQgeyBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBNYXJrZG93blV0aWxzIH0gZnJvbSAnLi9tYXJrZG93bi51dGlscyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmludFNlcnZpY2UgfSBmcm9tICcuLi9wcmludC9wcmludC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBNYXJrZG93bk9wdGlvbnMge1xuICBkYXRhPzogc3RyaW5nO1xuICBzcmM/OiBzdHJpbmc7XG4gIHNob3dFcnJvcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYXJrZG93bi1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmtkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFya2Rvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtzbGlkZURvd25BbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBNYXJrZG93bkNvbnRlbnQgaW1wbGVtZW50cyBBcHBNYXJrZG93bk9wdGlvbnMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3ByaW50SWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfY2xpY2tTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlciA9IGluamVjdChOYXZDb250cm9sbGVyKTtcbiAgcHJvdGVjdGVkIHNldHRpbmdzID0gaW5qZWN0KExvY2FsU2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIG5ldHdvcmsgPSBpbmplY3QoTmV0d29ya1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgbWFya2Rvd25TZXJ2aWNlID0gaW5qZWN0KE1hcmtkb3duU2VydmljZSk7XG4gIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXIgPSBpbmplY3QoVG9hc3RDb250cm9sbGVyKTtcbiAgcHJvdGVjdGVkIHByaW50U2VydmljZSA9IGluamVjdChQcmludFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIGVycm9yOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGJhc2VVcmw6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX2RhdGE6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zcmM6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9mYWxsYmFja1NyYzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2FuY2hvcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfbmF2SGlzdG9yeTogeyBzcmM/OiBzdHJpbmc7IGZhbGxiYWNrU3JjPzogc3RyaW5nOyBkYXRhPzogc3RyaW5nOyBhbmNob3I/OiBzdHJpbmcgfVtdID0gW107XG5cbiAgQElucHV0KCkgc2V0IGRhdGEodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2V0RGF0YSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc3JjKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFNyYyh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHNyYygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3JjO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGFuY2hvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYW5jaG9yID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGFuY2hvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYW5jaG9yO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRlYnVnOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0Vycm9yID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFuaW1hdGVkID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVuYWJsZU5hdmlnYXRpb25IaXN0b3J5ID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHVwZGF0ZVJvdXRlTG9jYXRpb24gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbWFya2Rvd25VcmxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSAvLyBNb2RhbCBlZGl0b3IgZ2l2ZSAnbnVsbCdcbiAgKSB7XG4gICAgdGhpcy5fcHJpbnRJZCA9IHRoaXMucHJpbnRTZXJ2aWNlLm5leHRKb2JJZCgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZyh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAvLyBUT0RPOiBmb3IgREVWIG9ubHlcbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLnJlc2V0QmFzZVVybCgpO1xuICB9XG5cbiAgZ29CYWNrKGV2ZW50PzogRXZlbnQpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbbWFya2Rvd25dIEdvaW5nIGJhY2snKTtcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMuX25hdkhpc3RvcnkpKSB7XG4gICAgICBjb25zdCB7IHNyYywgZmFsbGJhY2tTcmMsIGRhdGEsIGFuY2hvciB9ID0gdGhpcy5fbmF2SGlzdG9yeS5wb3AoKTtcbiAgICAgIGlmIChzcmMpIHRoaXMuc2V0U3JjKHNyYywgeyBmYWxsYmFja1NyYywgYW5jaG9yIH0pO1xuICAgICAgZWxzZSB0aGlzLnNldERhdGEoZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5iYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhbkdvQmFjaygpIHtcbiAgICByZXR1cm4gaXNOb3RFbXB0eUFycmF5KHRoaXMuX25hdkhpc3RvcnkpO1xuICB9XG5cbiAgYXN5bmMgcHJpbnQoKSB7XG4gICAgaWYgKHRoaXMubG9hZGluZykgcmV0dXJuOyAvLyBza2lwXG4gICAgY29uc29sZS5kZWJ1ZygnW21hcmtkb3duXSBQcmludC4uLicpO1xuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VsZW1lbnQgdG8gcHJpbnQgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgdGhlIEhUTUwgdGVtcGxhdGUuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQcmludFxuICAgICAgYXdhaXQgdGhpcy5wcmludFNlcnZpY2UucHJpbnRFbGVtZW50KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGlkOiB0aGlzLl9wcmludElkLFxuXG4gICAgICAgIC8vIFByaW50IGFzIHBvcnRyYWl0LCBieSBkZWZhdWx0XG4gICAgICAgIHN0eWxlOiBgQG1lZGlhIHByaW50IHtcbiAgICAgICAgICBAcGFnZSB7XG4gICAgICAgICAgICBzaXplOiBwb3J0cmFpdDtcbiAgICAgICAgICAgIG1hcmdpbjogMS4xY207XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hcmtkb3duIGhyIHtcbiAgICAgICAgICAgIHBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXM7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXJrZG93biBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICAgIH1cbiAgICAgICAgfWAsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgIGlmIChvcHRzPy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnByaW50U2VydmljZS5tYXJrQXNMb2FkZWQodGhpcy5fcHJpbnRJZCk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlmIChvcHRzPy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnByaW50U2VydmljZS5tYXJrQXNMb2FkaW5nKHRoaXMuX3ByaW50SWQpO1xuXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVycm9yKGVycm9yOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHRoaXMuZXJyb3IgPSBlcnJvcj8uWydtZXNzYWdlJ10gfHwgZXJyb3IgfHwgbnVsbDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVzZXRFcnJvcigpIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXREYXRhKHZhbHVlOiBzdHJpbmcsIG9wdHM/OiB7IGFuY2hvcj86IHN0cmluZzsgYWRkVG9OYXZpZ2F0aW9uSGlzdG9yeT86IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IGFuY2hvciA9IG9wdHM/LmFuY2hvciB8fCBudWxsO1xuXG4gICAgaWYgKHRoaXMuX2RhdGEgIT09IHZhbHVlIHx8IHRoaXMuX2FuY2hvciAhPT0gYW5jaG9yKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIHRvIG5hdmlnYXRpb24gaGlzdG9yeVxuICAgICAgICBpZiAob3B0cz8uYWRkVG9OYXZpZ2F0aW9uSGlzdG9yeSkge1xuICAgICAgICAgIHRoaXMuX25hdkhpc3RvcnkucHVzaCh7XG4gICAgICAgICAgICBzcmM6IHRoaXMuX3NyYyxcbiAgICAgICAgICAgIGZhbGxiYWNrU3JjOiB0aGlzLl9mYWxsYmFja1NyYyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX2RhdGEsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuX2FuY2hvcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgICAgIC8vIENsZWFyIHNyY1xuICAgICAgICB0aGlzLl9zcmMgPSBudWxsO1xuICAgICAgICB0aGlzLl9mYWxsYmFja1NyYyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5yZXNldEVycm9yKCk7XG4gICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kYXRhID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNyYyhzcmM6IHN0cmluZywgb3B0cz86IHsgZmFsbGJhY2tTcmM/OiBzdHJpbmc7IGFuY2hvcj86IHN0cmluZzsgYWRkVG9OYXZpZ2F0aW9uSGlzdG9yeT86IGJvb2xlYW4gfSkge1xuICAgIC8vIENsZWFuIFVSTCAocmVtb3ZlIGZyYWdtZW50IGFuZCBxdWVyeSlcbiAgICBjb25zdCBhbmNob3IgPSBvcHRzPy5hbmNob3IgfHwgVXJsVXRpbHMuZ2V0RnJhZ21lbnQoc3JjKTtcbiAgICBzcmMgPSBVcmxVdGlscy5zdHJpcEZyYWdtZW50QW5kUXVlcnkoc3JjKTtcbiAgICBzcmMgPSBNYXJrZG93blV0aWxzLmlzR2l0bGFiVXJsKHNyYykgPyBNYXJrZG93blV0aWxzLmZpeEdpdGxhYlVybFRvUmF3KHNyYykgOiBzcmM7XG5cbiAgICBsZXQgZmFsbGJhY2tTcmMgPSBvcHRzPy5mYWxsYmFja1NyYyA/IFVybFV0aWxzLnN0cmlwRnJhZ21lbnRBbmRRdWVyeShvcHRzLmZhbGxiYWNrU3JjKSA6IG51bGw7XG4gICAgZmFsbGJhY2tTcmMgPSBNYXJrZG93blV0aWxzLmlzR2l0bGFiVXJsKGZhbGxiYWNrU3JjKSA/IE1hcmtkb3duVXRpbHMuZml4R2l0bGFiVXJsVG9SYXcoZmFsbGJhY2tTcmMpIDogZmFsbGJhY2tTcmM7XG5cbiAgICBpZiAodGhpcy5fc3JjICE9PSBzcmMgfHwgdGhpcy5fZmFsbGJhY2tTcmMgIT09IGZhbGxiYWNrU3JjIHx8IHRoaXMuX2FuY2hvciAhPT0gYW5jaG9yKSB7XG4gICAgICBjb25zdCB1cmwgPSBzcmMgPyBzcmMgKyAoaXNOb3ROaWxPckJsYW5rKGFuY2hvcikgPyBgIyR7YW5jaG9yfWAgOiAnJykgOiBudWxsO1xuICAgICAgaWYgKHVybCkgY29uc29sZS5kZWJ1ZyhgW21hcmtkb3duXSBMb2FkaW5nICR7dXJsfS4uLmApO1xuXG4gICAgICAvLyBHaXZlIGJhc2VVcmwgdG8gdGhlIHNlcnZpY2UsIHRvIGJlIGFibGUgdG8gcmVzb2x2ZSByZWxhdGl2ZSBwYXRoIC0gZS5nLiBpbWFnZXMpXG4gICAgICBpZiAoc3JjICYmIFVybFV0aWxzLmlzRXh0ZXJuYWxVcmwoc3JjKSkge1xuICAgICAgICB0aGlzLmJhc2VVcmwgPSBVcmxVdGlscy5nZXRQYXJlbnQoc3JjKTtcbiAgICAgICAgdGhpcy5tYXJrZG93blNlcnZpY2Uuc2V0QmFzZVVybCh0aGlzLmJhc2VVcmwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3JjKSB7XG4gICAgICAgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byBuYXZpZ2F0aW9uIGhpc3RvcnlcbiAgICAgICAgaWYgKG9wdHM/LmFkZFRvTmF2aWdhdGlvbkhpc3RvcnkpIHtcbiAgICAgICAgICB0aGlzLl9uYXZIaXN0b3J5LnB1c2goe1xuICAgICAgICAgICAgc3JjOiB0aGlzLl9zcmMsXG4gICAgICAgICAgICBmYWxsYmFja1NyYzogdGhpcy5fZmFsbGJhY2tTcmMsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9kYXRhLFxuICAgICAgICAgICAgYW5jaG9yOiB0aGlzLl9hbmNob3IsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zcmMgPSBzcmM7XG4gICAgICAgIHRoaXMuX2ZhbGxiYWNrU3JjID0gZmFsbGJhY2tTcmM7XG4gICAgICAgIHRoaXMuX2FuY2hvciA9IGFuY2hvcjtcblxuICAgICAgICAvLyBDbGVhciBkYXRhXG4gICAgICAgIHRoaXMuX2RhdGEgPSBudWxsO1xuXG4gICAgICAgIC8vIFJlc2V0IGVycm9yXG4gICAgICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgICAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3NyYyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZhbGxiYWNrU3JjID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYW5jaG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SZWFkeSgpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLl9zcmMgPyB0aGlzLl9zcmMgKyAoaXNOb3ROaWxPckJsYW5rKHRoaXMuX2FuY2hvcikgPyBgIyR7dGhpcy5fYW5jaG9yfWAgOiAnJykgOiBudWxsO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW21hcmtkb3duXSBSZWFkeSAtICR7dXJsfWApO1xuICAgICAgLy8gQ2xlYXIgZmFsbGJhY2sgKG5vIG1vcmUgbmVlZClcbiAgICAgIGlmICh0aGlzLl9mYWxsYmFja1NyYykgdGhpcy5fZmFsbGJhY2tTcmMgPSBudWxsO1xuXG4gICAgICAvLyBFbWl0IGNoYW5nZVxuICAgICAgdGhpcy5tYXJrZG93blVybENoYW5nZS5lbWl0KHVybCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFydExpc3RlbkNsaWNrRXZlbnRzKCk7XG5cbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuXG4gICAgLy8gU2Nyb2xsIHRvIGFuY2hvclxuICAgIGlmIChpc05vdE5pbE9yQmxhbmsodGhpcy5fYW5jaG9yKSkge1xuICAgICAgdGhpcy5tYXJrZG93blNlcnZpY2Uuc2Nyb2xsVG9BbmNob3IodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2FuY2hvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uTG9hZEVycm9yKGVycm9yPzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICAvLyBUcmFuc2xhdGUgZXJyb3JcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiB0aGlzLm5ldHdvcmsub2ZmbGluZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgW21hcmtkb3duXSBFcnJvciBsb2FkaW5nIG1hcmtkb3duIFVSTCB7JHt0aGlzLnNyY319IChvZmZsaW5lOiB0cnVlKTogYCwgZXJyb3IpO1xuICAgICAgdGhpcy5zZXRFcnJvcignTkVUV09SSy5JTkZPLk9GRkxJTkUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmV0cnkgd2l0aCBmYWxsYmFjayBVUkxcbiAgICAgIGlmICh0aGlzLl9mYWxsYmFja1NyYykge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBbbWFya2Rvd25dIEVycm9yIGxvYWRpbmcgbWFya2Rvd24gVVJMIHske3RoaXMuc3JjfX0gLSBmYWxsYmFjayB0byBVUkwgJHt0aGlzLl9mYWxsYmFja1NyY31gKTtcbiAgICAgICAgdGhpcy5zZXRTcmModGhpcy5fZmFsbGJhY2tTcmMsIHsgYW5jaG9yOiB0aGlzLl9hbmNob3IgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihgW21hcmtkb3duXSBFcnJvciBsb2FkaW5nIG1hcmtkb3duIFVSTCB7JHt0aGlzLnNyY319IChvZmZsaW5lOiB0cnVlKTogYCwgZXJyb3IpO1xuICAgICAgdGhpcy5zZXRFcnJvcignRVJST1IuTE9BRF9EQVRBX0VSUk9SJyk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydExpc3RlbkNsaWNrRXZlbnRzKCkge1xuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLy8gTGlzdGVuIGZvciBjbGljayBsaW5rIHRvIE1hcmtkb3duIFVSTFxuICAgIHRoaXMuX2NsaWNrU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubWFya2Rvd25TZXJ2aWNlLm9uQ2xpY2tNYXJrZG93blVybC5zdWJzY3JpYmUoKGhyZWYpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW21hcmtkb3duXSBSZWNlaXZlZCBjbGljayBldmVudCwgb24gYSBtYXJrZG93biBVUkwnLCBocmVmKTtcblxuICAgICAgICBsZXQgZnJhZ21lbnQgPSBVcmxVdGlscy5nZXRGcmFnbWVudChocmVmKTtcbiAgICAgICAgbGV0IHVybCA9IFVybFV0aWxzLnN0cmlwRnJhZ21lbnRBbmRRdWVyeShocmVmKTtcbiAgICAgICAgbGV0IGZhbGxiYWNrVXJsID0gbnVsbDtcblxuICAgICAgICAvLyBSZXNvbHZlIHJlbGF0aXZlIHBhdGhcbiAgICAgICAgaWYgKFVybFV0aWxzLmlzUmVsYXRpdmVVcmwoaHJlZikgJiYgdGhpcy5iYXNlVXJsKSB7XG4gICAgICAgICAgLy8gR2V0IGFic29sdXRlIHVybFxuICAgICAgICAgIHVybCA9IE1hcmtkb3duVXRpbHMucmVzb2x2ZVJlbGF0aXZlVXJsKHRoaXMuYmFzZVVybCwgaHJlZik7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgYSBmYWxsYmFjayB1cmwsIGluIHJlbGF0aXZlIHBhdGggd2FzIHdyb25nXG4gICAgICAgICAgZmFsbGJhY2tVcmwgPSBNYXJrZG93blV0aWxzLnJlc29sdmVSZWxhdGl2ZVVybCh0aGlzLmJhc2VVcmwsIGhyZWYsIHsgYWJzb2x1dGVCeURlZmF1bHQ6IHRydWUgfSk7XG4gICAgICAgICAgZmFsbGJhY2tVcmwgPSB1cmwgPT09IGZhbGxiYWNrVXJsID8gbnVsbCA6IGZhbGxiYWNrVXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3BlbmluZyB0aGUgbmV3IFVSTFxuICAgICAgICB0aGlzLnNldFNyYyh1cmwsIHsgZmFsbGJhY2tTcmM6IGZhbGxiYWNrVXJsLCBhbmNob3I6IGZyYWdtZW50LCBhZGRUb05hdmlnYXRpb25IaXN0b3J5OiB0aGlzLmVuYWJsZU5hdmlnYXRpb25IaXN0b3J5IH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8YXBwLWRlYnVnICpuZ0lmPVwiZGVidWdcIj5cbiAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sPlxuICAgICAgICBsb2FkaW5nOiB7eyBsb2FkaW5nIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICBlcnJvcjoge3sgZXJyb3IgfX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxiciAvPlxuICAgICAgICBiYXNlVXJsOiB7eyBiYXNlVXJsIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICBtYXJrZG93blVybDoge3sgc3JjIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICBtYXJrZG93bkZyYWdtZW50OiB7eyBfYW5jaG9yIH19XG4gICAgICAgIDxiciAvPlxuICAgICAgICBtYXJrZG93bkNvbnRlbnQ6IHt7IGRhdGEgfX1cbiAgICAgICAgPGJyIC8+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICA8L2lvbi1ncmlkPlxuPC9hcHAtZGVidWc+XG5cbjwhLS0gZXJyb3IgLS0+XG5AaWYgKHNob3dFcnJvciAmJiBlcnJvcjsgYXMgZXJyb3IpIHtcbiAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIEBzbGlkZURvd25BbmltYXRpb24+XG4gICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yIHwgdHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gIDwvaW9uLWl0ZW0+XG59IEBlbHNlIHtcbiAgQGlmIChkYXRhKSB7XG4gICAgPG1hcmtkb3duIFtkYXRhXT1cImRhdGFcIiAocmVhZHkpPVwib25SZWFkeSgpXCIgZW1vamk+PC9tYXJrZG93bj5cbiAgfSBAZWxzZSBpZiAoc3JjKSB7XG4gICAgPG1hcmtkb3duIFtzcmNdPVwic3JjXCIgKGVycm9yKT1cIm9uTG9hZEVycm9yKCRldmVudClcIiAocmVhZHkpPVwib25SZWFkeSgpXCIgZW1vamk+PC9tYXJrZG93bj5cbiAgfVxufVxuXG48IS0tIGxvYWRpbmcgc3Bpbm5lciAtLT5cbkBpZiAobG9hZGluZykge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdQYXJhZ3JhcGhcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1BhcmFncmFwaFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nUGFyYWdyYXBoXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxufVxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdQYXJhZ3JhcGg+XG4gIDxwPlxuICAgIDxpb24tc2tlbGV0b24tdGV4dCBbYW5pbWF0ZWRdPVwiYW5pbWF0ZWRcIiBzdHlsZT1cIndpZHRoOiA3NSU7IG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDUlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgc3R5bGU9XCJ3aWR0aDogODAlXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@ionic/angular";
4
4
  import * as i2 from "../../core/services/platform.service";
@@ -15,14 +15,14 @@ export class AppMarkdownModal {
15
15
  translate;
16
16
  network;
17
17
  cd;
18
- loading = true;
19
- error = undefined;
20
- debug;
21
18
  title;
22
19
  showError = true;
23
20
  canPrint = false;
24
- markdownContent;
25
- markdownUrl;
21
+ data;
22
+ src;
23
+ enableNavigationHistory = true;
24
+ debug;
25
+ content;
26
26
  static async show(modalCtrl, options) {
27
27
  const modal = await modalCtrl.create({
28
28
  component: AppMarkdownModal,
@@ -56,23 +56,44 @@ export class AppMarkdownModal {
56
56
  this.close(event);
57
57
  }
58
58
  }
59
+ markAsLoaded() {
60
+ this.content?.markAsLoaded();
61
+ }
62
+ markAsLoading() {
63
+ this.content?.markAsLoading();
64
+ }
65
+ setError(err) {
66
+ this.content?.setError(err);
67
+ }
68
+ resetError() {
69
+ this.content?.resetError();
70
+ }
59
71
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppMarkdownModal, deps: [{ token: i0.Injector }, { token: i1.ModalController }, { token: i2.PlatformService }, { token: i3.LocalSettingsService }, { token: i4.TranslateService }, { token: i5.NetworkService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppMarkdownModal, selector: "app-markdown-modal", inputs: { debug: "debug", title: "title", showError: "showError", canPrint: "canPrint", markdownContent: "markdownContent", markdownUrl: "markdownUrl" }, ngImport: i0, template: "@if (title || canPrint) {\n <app-modal-toolbar color=\"light\" [title]=\"title | translate\" (cancel)=\"close($event)\">\n @if (content.canGoBack) {\n <ion-button slot=\"start\" class=\"back-button\" (click)=\"goBack($event, content)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n @if (canPrint) {\n <ion-button slot=\"end\" class=\"back-button\" (click)=\"content.print($event)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"print\"></ion-icon>\n </ion-button>\n }\n </app-modal-toolbar>\n}\n\n<ion-content class=\"ion-padding\">\n <app-markdown-content\n #content\n [src]=\"markdownUrl\"\n [data]=\"markdownContent\"\n [showError]=\"showError\"\n [debug]=\"debug\"\n [updateRouteLocation]=\"false\"\n ></app-markdown-content>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "component", type: i7.AppMarkdownContent, selector: "app-markdown-content", inputs: ["data", "src", "anchor", "debug", "showError", "animated", "enableNavigationHistory", "updateRouteLocation"], outputs: ["markdownUrlChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppMarkdownModal, selector: "app-markdown-modal", inputs: { title: "title", showError: ["showError", "showError", booleanAttribute], canPrint: ["canPrint", "canPrint", booleanAttribute], data: "data", src: "src", enableNavigationHistory: ["enableNavigationHistory", "enableNavigationHistory", booleanAttribute], debug: ["debug", "debug", booleanAttribute] }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<app-modal-toolbar color=\"light\" [title]=\"title | translate\">\n @if (content.canGoBack) {\n <ion-button slot=\"start\" class=\"back-button\" (click)=\"goBack($event, content)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n\n <ion-buttons slot=\"end\">\n @if (canPrint) {\n <ion-button slot=\"end\" (click)=\"content.print()\">\n <ion-icon slot=\"icon-only\" name=\"print\"></ion-icon>\n </ion-button>\n }\n\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n <app-markdown-content\n #content\n [src]=\"src\"\n [data]=\"data\"\n [showError]=\"showError\"\n [debug]=\"debug\"\n [enableNavigationHistory]=\"enableNavigationHistory\"\n [updateRouteLocation]=\"false\"\n ></app-markdown-content>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.ModalToolbarComponent, selector: "app-modal-toolbar", inputs: ["modalName", "title", "color", "showSpinner", "canValidate", "validateIcon"], outputs: ["cancel", "validate"] }, { kind: "component", type: i7.AppMarkdownContent, selector: "app-markdown-content", inputs: ["data", "src", "anchor", "debug", "showError", "animated", "enableNavigationHistory", "updateRouteLocation"], outputs: ["markdownUrlChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
73
  }
62
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppMarkdownModal, decorators: [{
63
75
  type: Component,
64
- args: [{ selector: 'app-markdown-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (title || canPrint) {\n <app-modal-toolbar color=\"light\" [title]=\"title | translate\" (cancel)=\"close($event)\">\n @if (content.canGoBack) {\n <ion-button slot=\"start\" class=\"back-button\" (click)=\"goBack($event, content)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n @if (canPrint) {\n <ion-button slot=\"end\" class=\"back-button\" (click)=\"content.print($event)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"print\"></ion-icon>\n </ion-button>\n }\n </app-modal-toolbar>\n}\n\n<ion-content class=\"ion-padding\">\n <app-markdown-content\n #content\n [src]=\"markdownUrl\"\n [data]=\"markdownContent\"\n [showError]=\"showError\"\n [debug]=\"debug\"\n [updateRouteLocation]=\"false\"\n ></app-markdown-content>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n" }]
65
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ModalController }, { type: i2.PlatformService }, { type: i3.LocalSettingsService }, { type: i4.TranslateService }, { type: i5.NetworkService }, { type: i0.ChangeDetectorRef }], propDecorators: { debug: [{
66
- type: Input
67
- }], title: [{
76
+ args: [{ selector: 'app-markdown-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-modal-toolbar color=\"light\" [title]=\"title | translate\">\n @if (content.canGoBack) {\n <ion-button slot=\"start\" class=\"back-button\" (click)=\"goBack($event, content)\" routerDirection=\"back\">\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n }\n\n <ion-buttons slot=\"end\">\n @if (canPrint) {\n <ion-button slot=\"end\" (click)=\"content.print()\">\n <ion-icon slot=\"icon-only\" name=\"print\"></ion-icon>\n </ion-button>\n }\n\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n</app-modal-toolbar>\n\n<ion-content class=\"ion-padding\">\n <app-markdown-content\n #content\n [src]=\"src\"\n [data]=\"data\"\n [showError]=\"showError\"\n [debug]=\"debug\"\n [enableNavigationHistory]=\"enableNavigationHistory\"\n [updateRouteLocation]=\"false\"\n ></app-markdown-content>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\">\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n" }]
77
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ModalController }, { type: i2.PlatformService }, { type: i3.LocalSettingsService }, { type: i4.TranslateService }, { type: i5.NetworkService }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
68
78
  type: Input
69
79
  }], showError: [{
70
- type: Input
80
+ type: Input,
81
+ args: [{ transform: booleanAttribute }]
71
82
  }], canPrint: [{
83
+ type: Input,
84
+ args: [{ transform: booleanAttribute }]
85
+ }], data: [{
72
86
  type: Input
73
- }], markdownContent: [{
74
- type: Input
75
- }], markdownUrl: [{
87
+ }], src: [{
76
88
  type: Input
89
+ }], enableNavigationHistory: [{
90
+ type: Input,
91
+ args: [{ transform: booleanAttribute }]
92
+ }], debug: [{
93
+ type: Input,
94
+ args: [{ transform: booleanAttribute }]
95
+ }], content: [{
96
+ type: ViewChild,
97
+ args: ['content']
77
98
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXJrZG93bi9tYXJrZG93bi5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hcmtkb3duL21hcmtkb3duLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQVksS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFzQnZHLE1BQU0sT0FBTyxnQkFBZ0I7SUF5QmY7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE5QkYsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNmLEtBQUssR0FBVyxTQUFTLENBQUM7SUFFM0IsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFTO0lBQ2QsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFFN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBMEIsRUFBRSxPQUFnQztRQUM1RSxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixjQUFjLEVBQUUsT0FBTztZQUN2QixhQUFhLEVBQUUsSUFBSTtZQUNuQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhO1NBQzdDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXRCLE9BQU8sS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUNZLFFBQWtCLEVBQ2xCLFFBQXlCLEVBQ3pCLFFBQXlCLEVBQ3pCLFFBQThCLEVBQzlCLFNBQTJCLEVBQzNCLE9BQXVCLEVBQ3ZCLEVBQXFCO1FBTnJCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFFL0IscUJBQXFCO1FBQ3JCLHVDQUF1QztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQVM7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFZLEVBQUUsT0FBMkI7UUFDOUMsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzt3R0FoRFUsZ0JBQWdCOzRGQUFoQixnQkFBZ0Isb05DdEI3Qix5dUNBb0NBOzs0RkRkYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07d1FBTXRDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZXR3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcE1hcmtkb3duQ29udGVudCB9IGZyb20gJy4vbWFya2Rvd24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBNYXJrZG93bk1vZGFsT3B0aW9ucyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtYXJrZG93bkNvbnRlbnQ/OiBzdHJpbmc7XG4gIG1hcmtkb3duVXJsPzogc3RyaW5nO1xuICBzaG93RXJyb3I/OiBib29sZWFuO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgY2FuUHJpbnQ/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWFya2Rvd24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24ubW9kYWwuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBNYXJrZG93bk1vZGFsIGltcGxlbWVudHMgQXBwTWFya2Rvd25Nb2RhbE9wdGlvbnMge1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHRydWU7XG4gIHByb3RlY3RlZCBlcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpIGRlYnVnOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93RXJyb3IgPSB0cnVlO1xuICBASW5wdXQoKSBjYW5QcmludCA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXJrZG93bkNvbnRlbnQ6IHN0cmluZztcbiAgQElucHV0KCkgbWFya2Rvd25Vcmw6IHN0cmluZztcblxuICBzdGF0aWMgYXN5bmMgc2hvdyhtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlciwgb3B0aW9uczogQXBwTWFya2Rvd25Nb2RhbE9wdGlvbnMpIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IG1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBBcHBNYXJrZG93bk1vZGFsLFxuICAgICAgY29tcG9uZW50UHJvcHM6IG9wdGlvbnMsXG4gICAgICBrZXlib2FyZENsb3NlOiB0cnVlLFxuICAgICAgY3NzQ2xhc3M6IG9wdGlvbnM/LmNzc0NsYXNzIHx8ICdtb2RhbC1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG5cbiAgICByZXR1cm4gbW9kYWwub25XaWxsRGlzbWlzcygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgdmlld0N0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgLy8gVE9ETzogZm9yIERFViBvbmx5XG4gICAgLy90aGlzLmRlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBjbG9zZShfPzogRXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy52aWV3Q3RybC5kaXNtaXNzKCk7XG4gIH1cblxuICBnb0JhY2soZXZlbnQ6IEV2ZW50LCBjb250ZW50OiBBcHBNYXJrZG93bkNvbnRlbnQpIHtcbiAgICBpZiAoY29udGVudD8uY2FuR29CYWNrKSB7XG4gICAgICBjb250ZW50LmdvQmFjayhldmVudCk7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAodGl0bGUgfHwgY2FuUHJpbnQpIHtcbiAgPGFwcC1tb2RhbC10b29sYmFyIGNvbG9yPVwibGlnaHRcIiBbdGl0bGVdPVwidGl0bGUgfCB0cmFuc2xhdGVcIiAoY2FuY2VsKT1cImNsb3NlKCRldmVudClcIj5cbiAgICBAaWYgKGNvbnRlbnQuY2FuR29CYWNrKSB7XG4gICAgICA8aW9uLWJ1dHRvbiBzbG90PVwic3RhcnRcIiBjbGFzcz1cImJhY2stYnV0dG9uXCIgKGNsaWNrKT1cImdvQmFjaygkZXZlbnQsIGNvbnRlbnQpXCIgcm91dGVyRGlyZWN0aW9uPVwiYmFja1wiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjYW5QcmludCkge1xuICAgICAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIGNsYXNzPVwiYmFjay1idXR0b25cIiAoY2xpY2spPVwiY29udGVudC5wcmludCgkZXZlbnQpXCIgcm91dGVyRGlyZWN0aW9uPVwiYmFja1wiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJwcmludFwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgfVxuICA8L2FwcC1tb2RhbC10b29sYmFyPlxufVxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICA8YXBwLW1hcmtkb3duLWNvbnRlbnRcbiAgICAjY29udGVudFxuICAgIFtzcmNdPVwibWFya2Rvd25VcmxcIlxuICAgIFtkYXRhXT1cIm1hcmtkb3duQ29udGVudFwiXG4gICAgW3Nob3dFcnJvcl09XCJzaG93RXJyb3JcIlxuICAgIFtkZWJ1Z109XCJkZWJ1Z1wiXG4gICAgW3VwZGF0ZVJvdXRlTG9jYXRpb25dPVwiZmFsc2VcIlxuICA+PC9hcHAtbWFya2Rvd24tY29udGVudD5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgIDxpb24tY29sPjwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwidGVydGlhcnlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPnt7ICdDT01NT04uQlROX0NMT1NFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXJrZG93bi9tYXJrZG93bi5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hcmtkb3duL21hcmtkb3duLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQVksS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBeUJwSSxNQUFNLE9BQU8sZ0JBQWdCO0lBeUJmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBOUJILEtBQUssQ0FBUztJQUNpQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ21CLHVCQUF1QixHQUFHLElBQUksQ0FBQztJQUMvQixLQUFLLENBQVU7SUFFakMsT0FBTyxDQUFxQjtJQUVsRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUEwQixFQUFFLE9BQWdDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNuQyxTQUFTLEVBQUUsZ0JBQWdCO1lBQzNCLGNBQWMsRUFBRSxPQUFPO1lBQ3ZCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxJQUFJLGFBQWE7U0FDN0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdEIsT0FBTyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQ1ksUUFBa0IsRUFDbEIsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsUUFBOEIsRUFDOUIsU0FBMkIsRUFDM0IsT0FBdUIsRUFDdkIsRUFBcUI7UUFOckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUUvQixxQkFBcUI7UUFDckIsdUNBQXVDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBUztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVksRUFBRSxPQUEyQjtRQUM5QyxJQUFJLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFUyxhQUFhO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVTLFFBQVEsQ0FBQyxHQUFtQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7d0dBaEVVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLGtHQUVQLGdCQUFnQixzQ0FDaEIsZ0JBQWdCLDZHQUdoQixnQkFBZ0IsNkJBQ2hCLGdCQUFnQixpSUNoQ3RDLG0xQ0EwQ0E7OzRGRGpCYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUViLHVCQUF1QixDQUFDLE1BQU07d1FBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNrQyx1QkFBdUI7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFaEIsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2xvY2FsLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBNYXJrZG93bkNvbnRlbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwTWFya2Rvd25Nb2RhbE9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcbiAgZGF0YT86IHN0cmluZztcbiAgc3JjPzogc3RyaW5nO1xuICBzaG93RXJyb3I/OiBib29sZWFuO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgY2FuUHJpbnQ/OiBib29sZWFuO1xuICBlbmFibGVOYXZpZ2F0aW9uSGlzdG9yeT86IGJvb2xlYW47XG5cbiAgZGVidWc/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWFya2Rvd24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24ubW9kYWwuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBNYXJrZG93bk1vZGFsIGltcGxlbWVudHMgQXBwTWFya2Rvd25Nb2RhbE9wdGlvbnMge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0Vycm9yID0gdHJ1ZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNhblByaW50ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRhdGE6IHN0cmluZztcbiAgQElucHV0KCkgc3JjOiBzdHJpbmc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBlbmFibGVOYXZpZ2F0aW9uSGlzdG9yeSA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkZWJ1ZzogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudDogQXBwTWFya2Rvd25Db250ZW50O1xuXG4gIHN0YXRpYyBhc3luYyBzaG93KG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLCBvcHRpb25zOiBBcHBNYXJrZG93bk1vZGFsT3B0aW9ucykge1xuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgbW9kYWxDdHJsLmNyZWF0ZSh7XG4gICAgICBjb21wb25lbnQ6IEFwcE1hcmtkb3duTW9kYWwsXG4gICAgICBjb21wb25lbnRQcm9wczogb3B0aW9ucyxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IHRydWUsXG4gICAgICBjc3NDbGFzczogb3B0aW9ucz8uY3NzQ2xhc3MgfHwgJ21vZGFsLWxhcmdlJyxcbiAgICB9KTtcblxuICAgIGF3YWl0IG1vZGFsLnByZXNlbnQoKTtcblxuICAgIHJldHVybiBtb2RhbC5vbldpbGxEaXNtaXNzKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCB2aWV3Q3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzZXR0aW5nczogTG9jYWxTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICAvLyBUT0RPOiBmb3IgREVWIG9ubHlcbiAgICAvL3RoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIGNsb3NlKF8/OiBFdmVudCkge1xuICAgIHJldHVybiB0aGlzLnZpZXdDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIGdvQmFjayhldmVudDogRXZlbnQsIGNvbnRlbnQ6IEFwcE1hcmtkb3duQ29udGVudCkge1xuICAgIGlmIChjb250ZW50Py5jYW5Hb0JhY2spIHtcbiAgICAgIGNvbnRlbnQuZ29CYWNrKGV2ZW50KTtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrQXNMb2FkZWQoKSB7XG4gICAgdGhpcy5jb250ZW50Py5tYXJrQXNMb2FkZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrQXNMb2FkaW5nKCkge1xuICAgIHRoaXMuY29udGVudD8ubWFya0FzTG9hZGluZygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEVycm9yKGVycjogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICB0aGlzLmNvbnRlbnQ/LnNldEVycm9yKGVycik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRFcnJvcigpIHtcbiAgICB0aGlzLmNvbnRlbnQ/LnJlc2V0RXJyb3IoKTtcbiAgfVxufVxuIiwiPGFwcC1tb2RhbC10b29sYmFyIGNvbG9yPVwibGlnaHRcIiBbdGl0bGVdPVwidGl0bGUgfCB0cmFuc2xhdGVcIj5cbiAgQGlmIChjb250ZW50LmNhbkdvQmFjaykge1xuICAgIDxpb24tYnV0dG9uIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwiYmFjay1idXR0b25cIiAoY2xpY2spPVwiZ29CYWNrKCRldmVudCwgY29udGVudClcIiByb3V0ZXJEaXJlY3Rpb249XCJiYWNrXCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG4gIH1cblxuICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgIEBpZiAoY2FuUHJpbnQpIHtcbiAgICAgIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiY29udGVudC5wcmludCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInByaW50XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICB9XG5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIHZpc2libGUteHMgdmlzaWJsZS1zbSB2aXNpYmxlLW1vYmlsZT5cbiAgICAgIHt7ICdDT01NT04uQlROX0NMT1NFJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9pb24tYnV0dG9ucz5cbjwvYXBwLW1vZGFsLXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxhcHAtbWFya2Rvd24tY29udGVudFxuICAgICNjb250ZW50XG4gICAgW3NyY109XCJzcmNcIlxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtzaG93RXJyb3JdPVwic2hvd0Vycm9yXCJcbiAgICBbZGVidWddPVwiZGVidWdcIlxuICAgIFtlbmFibGVOYXZpZ2F0aW9uSGlzdG9yeV09XCJlbmFibGVOYXZpZ2F0aW9uSGlzdG9yeVwiXG4gICAgW3VwZGF0ZVJvdXRlTG9jYXRpb25dPVwiZmFsc2VcIlxuICA+PC9hcHAtbWFya2Rvd24tY29udGVudD5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgIDxpb24tY29sPjwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwidGVydGlhcnlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPnt7ICdDT01NT04uQlROX0NMT1NFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
@@ -15,7 +15,7 @@ import * as i0 from "@angular/core";
15
15
  import * as i1 from "@ngx-translate/core";
16
16
  import * as i2 from "ngx-markdown";
17
17
  export class SharedMarkdownModule {
18
- static forRoot(opts) {
18
+ static forRoot() {
19
19
  console.debug('[markdown] Creating module (root)');
20
20
  return {
21
21
  ngModule: SharedMarkdownModule,
@@ -24,8 +24,7 @@ export class SharedMarkdownModule {
24
24
  MarkdownModule.forRoot({
25
25
  loader: HttpClient, // Allow to load using [src]
26
26
  sanitize: SecurityContext.NONE,
27
- ...opts,
28
- markedOptions: opts?.markedOptions || {
27
+ markedOptions: {
29
28
  provide: MARKED_OPTIONS,
30
29
  deps: [MarkdownService],
31
30
  useFactory: (markdownService) => {
@@ -85,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
85
84
  exports: [TranslateModule, MarkdownModule, AppMarkdownContent, MarkdownDirective],
86
85
  }]
87
86
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtEQUErRDtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUF3QixjQUFjLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ25HLE9BQU8sRUFBdUIsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBc0IxRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBMkI7UUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBRW5ELE9BQU87WUFDTCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRTtnQkFDVCxlQUFlO2dCQUNmLGNBQWMsQ0FBQyxPQUFPLENBQUM7b0JBQ3JCLE1BQU0sRUFBRSxVQUFVLEVBQUUsNEJBQTRCO29CQUNoRCxRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUk7b0JBQzlCLEdBQUcsSUFBSTtvQkFDUCxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsSUFBSTt3QkFDcEMsT0FBTyxFQUFFLGNBQWM7d0JBQ3ZCLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQzt3QkFDdkIsVUFBVSxFQUFFLENBQUMsZUFBZ0MsRUFBRSxFQUFFOzRCQUMvQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7NEJBQ3BELE9BQXNCO2dDQUNwQixRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVE7Z0NBQ2xDLEdBQUcsRUFBRSxJQUFJO2dDQUNULE1BQU0sRUFBRSxLQUFLO2dDQUNiLFFBQVEsRUFBRSxLQUFLO2dDQUNmLFVBQVUsRUFBRSxJQUFJO2dDQUNoQixXQUFXLEVBQUUsS0FBSzs2QkFDbkIsQ0FBQzt3QkFDSixDQUFDO3FCQUNGO2lCQUNGLENBQUMsQ0FBQyxTQUFTO2FBQ2I7U0FDRixDQUFDO0lBQ0osQ0FBQzt3R0E5QlUsb0JBQW9CO3lHQUFwQixvQkFBb0I7WUFSN0IsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGlCQUFpQixhQWRqQixZQUFZO1lBQ1osV0FBVztZQUlYLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsaUJBQWlCLGFBU1QsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUI7eUdBRXJFLG9CQUFvQixZQWxCN0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzFCLGNBQWMsQ0FBQyxRQUFRLEVBQUU7WUFFekIsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixpQkFBaUIsRUFTVCxlQUFlLEVBQUUsY0FBYzs7NEZBRTlCLG9CQUFvQjtrQkFwQmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlLENBQUMsUUFBUSxFQUFFO3dCQUMxQixjQUFjLENBQUMsUUFBUSxFQUFFO3dCQUV6QixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7aUJBQ2xGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGBNYXJrZWRPcHRpb25zYCB3aXRoIHJlbmRlcmVyIG92ZXJyaWRlXG5pbXBvcnQgeyBNYXJrZG93bk1vZHVsZSwgTWFya2Rvd25Nb2R1bGVDb25maWcsIE1BUktFRF9PUFRJT05TLCBNYXJrZWRPcHRpb25zIH0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXJrZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vbWFya2Rvd24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBcHBNYXJrZG93bk1vZGFsIH0gZnJvbSAnLi9tYXJrZG93bi5tb2RhbCc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkVG9vbGJhck1vZHVsZSB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFwcE1hcmtkb3duQ29udGVudCB9IGZyb20gJy4vbWFya2Rvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZERlYnVnTW9kdWxlIH0gZnJvbSAnLi4vZGVidWcvZGVidWcubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBNYXJrZG93bk1vZHVsZS5mb3JDaGlsZCgpLFxuXG4gICAgLy8gQXBwIG1vZHVsZVxuICAgIFNoYXJlZFRvb2xiYXJNb2R1bGUsXG4gICAgU2hhcmVkRGVidWdNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC8vIENvbXBvbmVudFxuICAgIEFwcE1hcmtkb3duQ29udGVudCxcbiAgICBBcHBNYXJrZG93bk1vZGFsLFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIE1hcmtkb3duRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBNYXJrZG93bk1vZHVsZSwgQXBwTWFya2Rvd25Db250ZW50LCBNYXJrZG93bkRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1hcmtkb3duTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qob3B0cz86IE1hcmtkb3duTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZWRNYXJrZG93bk1vZHVsZT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ttYXJrZG93bl0gQ3JlYXRpbmcgbW9kdWxlIChyb290KScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBTaGFyZWRNYXJrZG93bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNYXJrZG93blNlcnZpY2UsXG4gICAgICAgIE1hcmtkb3duTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICAgIGxvYWRlcjogSHR0cENsaWVudCwgLy8gQWxsb3cgdG8gbG9hZCB1c2luZyBbc3JjXVxuICAgICAgICAgIHNhbml0aXplOiBTZWN1cml0eUNvbnRleHQuTk9ORSxcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgIG1hcmtlZE9wdGlvbnM6IG9wdHM/Lm1hcmtlZE9wdGlvbnMgfHwge1xuICAgICAgICAgICAgcHJvdmlkZTogTUFSS0VEX09QVElPTlMsXG4gICAgICAgICAgICBkZXBzOiBbTWFya2Rvd25TZXJ2aWNlXSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChtYXJrZG93blNlcnZpY2U6IE1hcmtkb3duU2VydmljZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbbWFya2Rvd25dIENyZWF0aW5nIG1hcmtlZCBvcHRpb25zJyk7XG4gICAgICAgICAgICAgIHJldHVybiA8TWFya2VkT3B0aW9ucz57XG4gICAgICAgICAgICAgICAgcmVuZGVyZXI6IG1hcmtkb3duU2VydmljZS5yZW5kZXJlcixcbiAgICAgICAgICAgICAgICBnZm06IHRydWUsXG4gICAgICAgICAgICAgICAgYnJlYWtzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwZWRhbnRpYzogZmFsc2UsXG4gICAgICAgICAgICAgICAgc21hcnRMaXN0czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzbWFydHlwYW50czogZmFsc2UsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLnByb3ZpZGVycyxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWFya2Rvd24vbWFya2Rvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtEQUErRDtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUF1QixRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFzQjFELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFbkQsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULGVBQWU7Z0JBQ2YsY0FBYyxDQUFDLE9BQU8sQ0FBQztvQkFDckIsTUFBTSxFQUFFLFVBQVUsRUFBRSw0QkFBNEI7b0JBQ2hELFFBQVEsRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDOUIsYUFBYSxFQUFFO3dCQUNiLE9BQU8sRUFBRSxjQUFjO3dCQUN2QixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7d0JBQ3ZCLFVBQVUsRUFBRSxDQUFDLGVBQWdDLEVBQUUsRUFBRTs0QkFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDOzRCQUNwRCxPQUFzQjtnQ0FDcEIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2dDQUNsQyxHQUFHLEVBQUUsSUFBSTtnQ0FDVCxNQUFNLEVBQUUsS0FBSztnQ0FDYixRQUFRLEVBQUUsS0FBSztnQ0FDZixVQUFVLEVBQUUsSUFBSTtnQ0FDaEIsV0FBVyxFQUFFLEtBQUs7NkJBQ25CLENBQUM7d0JBQ0osQ0FBQztxQkFDRjtpQkFDRixDQUFDLENBQUMsU0FBUzthQUNiO1NBQ0YsQ0FBQztJQUNKLENBQUM7d0dBN0JVLG9CQUFvQjt5R0FBcEIsb0JBQW9CO1lBUjdCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixpQkFBaUIsYUFkakIsWUFBWTtZQUNaLFdBQVc7WUFJWCxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLGlCQUFpQixhQVNULGVBQWUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCO3lHQUVyRSxvQkFBb0IsWUFsQjdCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixjQUFjLENBQUMsUUFBUSxFQUFFO1lBRXpCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsaUJBQWlCLEVBU1QsZUFBZSxFQUFFLGNBQWM7OzRGQUU5QixvQkFBb0I7a0JBcEJoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZSxDQUFDLFFBQVEsRUFBRTt3QkFDMUIsY0FBYyxDQUFDLFFBQVEsRUFBRTt3QkFFekIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGlCQUFpQjtxQkFDbEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDO2lCQUNsRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgTWFya2VkT3B0aW9uc2Agd2l0aCByZW5kZXJlciBvdmVycmlkZVxuaW1wb3J0IHsgTWFya2Rvd25Nb2R1bGUsIE1BUktFRF9PUFRJT05TLCBNYXJrZWRPcHRpb25zIH0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcmtkb3duU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXJrZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vbWFya2Rvd24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBcHBNYXJrZG93bk1vZGFsIH0gZnJvbSAnLi9tYXJrZG93bi5tb2RhbCc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkVG9vbGJhck1vZHVsZSB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFwcE1hcmtkb3duQ29udGVudCB9IGZyb20gJy4vbWFya2Rvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZERlYnVnTW9kdWxlIH0gZnJvbSAnLi4vZGVidWcvZGVidWcubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBNYXJrZG93bk1vZHVsZS5mb3JDaGlsZCgpLFxuXG4gICAgLy8gQXBwIG1vZHVsZVxuICAgIFNoYXJlZFRvb2xiYXJNb2R1bGUsXG4gICAgU2hhcmVkRGVidWdNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC8vIENvbXBvbmVudFxuICAgIEFwcE1hcmtkb3duQ29udGVudCxcbiAgICBBcHBNYXJrZG93bk1vZGFsLFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIE1hcmtkb3duRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBNYXJrZG93bk1vZHVsZSwgQXBwTWFya2Rvd25Db250ZW50LCBNYXJrZG93bkRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1hcmtkb3duTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZWRNYXJrZG93bk1vZHVsZT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ttYXJrZG93bl0gQ3JlYXRpbmcgbW9kdWxlIChyb290KScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBTaGFyZWRNYXJrZG93bk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNYXJrZG93blNlcnZpY2UsXG4gICAgICAgIE1hcmtkb3duTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICAgIGxvYWRlcjogSHR0cENsaWVudCwgLy8gQWxsb3cgdG8gbG9hZCB1c2luZyBbc3JjXVxuICAgICAgICAgIHNhbml0aXplOiBTZWN1cml0eUNvbnRleHQuTk9ORSxcbiAgICAgICAgICBtYXJrZWRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm92aWRlOiBNQVJLRURfT1BUSU9OUyxcbiAgICAgICAgICAgIGRlcHM6IFtNYXJrZG93blNlcnZpY2VdLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKG1hcmtkb3duU2VydmljZTogTWFya2Rvd25TZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ttYXJrZG93bl0gQ3JlYXRpbmcgbWFya2VkIG9wdGlvbnMnKTtcbiAgICAgICAgICAgICAgcmV0dXJuIDxNYXJrZWRPcHRpb25zPntcbiAgICAgICAgICAgICAgICByZW5kZXJlcjogbWFya2Rvd25TZXJ2aWNlLnJlbmRlcmVyLFxuICAgICAgICAgICAgICAgIGdmbTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBicmVha3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHBlZGFudGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzbWFydExpc3RzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNtYXJ0eXBhbnRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkucHJvdmlkZXJzLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=