@festo-ui/angular 5.0.0-dev.156 → 5.0.0-dev.161

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.
@@ -15,13 +15,11 @@ export class FngTextEditorComponent extends FngValueAccessorBaseDirective {
15
15
  set value(value) {
16
16
  if (this.innerValue !== value) {
17
17
  this.innerValue = value;
18
- if (value) {
19
- this.changed.forEach(f => {
20
- this.fngChange.emit(this.innerValue);
21
- this.change.emit(this.innerValue);
22
- return f(value);
23
- });
24
- }
18
+ this.changed.forEach(f => {
19
+ this.fngChange.emit(this.innerValue);
20
+ this.change.emit(this.innerValue);
21
+ return f(value);
22
+ });
25
23
  }
26
24
  }
27
25
  get value() {
@@ -48,7 +46,8 @@ export class FngTextEditorComponent extends FngValueAccessorBaseDirective {
48
46
  sanitizingFn: undefined,
49
47
  skipDefaultSanitizing: false,
50
48
  skipWhitespaceHandling: false
51
- }
49
+ },
50
+ focusCursorToEndOnWrite: true
52
51
  };
53
52
  this.fngChange = new EventEmitter();
54
53
  this.change = new EventEmitter();
@@ -91,11 +90,9 @@ export class FngTextEditorComponent extends FngValueAccessorBaseDirective {
91
90
  this.setEditorLabel();
92
91
  this.addWhitespaceMatcher();
93
92
  this.addImageMatcher();
94
- if (this.innerValue) {
95
- const content = this.valueSetter(this.quillEditor, this.innerValue);
96
- this.quillEditor.setContents(content, 'silent');
97
- this.quillEditor.getModule('history').clear();
98
- }
93
+ const content = this.valueSetter(this.quillEditor, this.innerValue || '');
94
+ this.quillEditor.setContents(content, 'silent');
95
+ this.quillEditor.getModule('history').clear();
99
96
  this.handle();
100
97
  this.quillEditor.on('text-change', () => {
101
98
  this.value = this.valueGetter(this.editorElem);
@@ -114,15 +111,16 @@ export class FngTextEditorComponent extends FngValueAccessorBaseDirective {
114
111
  this.handle();
115
112
  }
116
113
  writeValue(value) {
117
- if (value === null || value === '') {
118
- return;
119
- }
120
114
  this.innerValue = value;
121
115
  if (!this.quillEditor) {
122
116
  return;
123
117
  }
124
- const content = this.valueSetter(this.quillEditor, value);
118
+ const content = this.valueSetter(this.quillEditor, value || '');
125
119
  this.quillEditor.setContents(content);
120
+ if (this.config?.focusCursorToEndOnWrite) {
121
+ // when new content gets written we always set cursor focus to end of text
122
+ this.quillEditor.setSelection(Number.MAX_SAFE_INTEGER, 0);
123
+ }
126
124
  }
127
125
  setDisabledState(isDisabled = this.disabled) {
128
126
  this.disabled = isDisabled;
@@ -307,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
307
305
  }], value: [{
308
306
  type: Input
309
307
  }] } });
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixLQUFLLEVBRUwsZUFBZSxFQUdmLFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxPQUFPLENBQUM7QUFFOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBb0N6RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsNkJBQXFDO0lBMkMvRSxJQUNhLEtBQUssQ0FBQyxLQUF5QjtRQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElB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QUMsT0FBTztnQkFDSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRVgsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRU8sS0FBSztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBBZnRlclZpZXdJbml0LFxuICBTZWN1cml0eUNvbnRleHQsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIGZvcndhcmRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUXVpbGxUeXBlIGZyb20gJ3F1aWxsJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGbmdWYWx1ZUFjY2Vzc29yQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBPYnNlcnZlcnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb2JzZXJ2ZXJzJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBGbmdUZXh0RWRpdG9yQ29uZmlndXJhdGlvbiB7XG4gIHRvb2xiYXI/OiB7XG4gICAgYm9sZD86IGJvb2xlYW47XG4gICAgaXRhbGljPzogYm9vbGVhbjtcbiAgICB1bmRlcmxpbmU/OiBib29sZWFuO1xuICAgIGFsaWduQ2VudGVyPzogYm9vbGVhbjtcbiAgICBhbGlnblJpZ2h0PzogYm9vbGVhbjtcbiAgICBidWxsZXRMaXN0PzogYm9vbGVhbjtcbiAgICBvcmRlcmVkTGlzdD86IGJvb2xlYW47XG4gICAgaW1hZ2U/OiBib29sZWFuO1xuICAgIGxpbms/OiBib29sZWFuO1xuICB9O1xuICBzYW5pdGl6aW5nPzoge1xuICAgIHNraXBEZWZhdWx0U2FuaXRpemluZz86IGJvb2xlYW47XG4gICAgc2tpcFdoaXRlc3BhY2VIYW5kbGluZz86IGJvb2xlYW47XG4gICAgc2FuaXRpemluZ0ZuPzogKGRzOiBEb21TYW5pdGl6ZXIsIHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGUsIE92ZXJsYXlNb2R1bGUsIFNjcm9sbGluZ01vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIE9ic2VydmVyc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZm5nLXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGbmdUZXh0RWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZuZ1RleHRFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBGbmdWYWx1ZUFjY2Vzc29yQmFzZURpcmVjdGl2ZTxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBxdWlsbEVkaXRvciE6IFF1aWxsVHlwZTtcbiAgZWRpdG9yRWxlbSE6IEhUTUxFbGVtZW50O1xuICBkZWZhdWx0Q29uZmlnOiBGbmdUZXh0RWRpdG9yQ29uZmlndXJhdGlvbiA9IHtcbiAgICB0b29sYmFyOiB7XG4gICAgICBib2xkOiB0cnVlLFxuICAgICAgaXRhbGljOiB0cnVlLFxuICAgICAgdW5kZXJsaW5lOiB0cnVlLFxuICAgICAgYWxpZ25DZW50ZXI6IHRydWUsXG4gICAgICBhbGlnblJpZ2h0OiB0cnVlLFxuICAgICAgYnVsbGV0TGlzdDogdHJ1ZSxcbiAgICAgIG9yZGVyZWRMaXN0OiB0cnVlLFxuICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICBsaW5rOiB0cnVlXG4gICAgfSxcbiAgICBzYW5pdGl6aW5nOiB7XG4gICAgICBzYW5pdGl6aW5nRm46IHVuZGVmaW5lZCxcbiAgICAgIHNraXBEZWZhdWx0U2FuaXRpemluZzogZmFsc2UsXG4gICAgICBza2lwV2hpdGVzcGFjZUhhbmRsaW5nOiBmYWxzZVxuICAgIH1cbiAgfTtcblxuICBAVmlld0NoaWxkKCdidG5Cb2xkJykgYnRuQm9sZDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuSXRhbGljJykgYnRuSXRhbGljOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdidG5VbmRlcmxpbmUnKSBidG5VbmRlcmxpbmU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2J0bkFsaWduQ2VudGVyJykgYnRuQWxpZ25DZW50ZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2J0bkFsaWduUmlnaHQnKSBidG5BbGlnblJpZ2h0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdidG5MaW5rJykgYnRuTGluazogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuVWwnKSBidG5VbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuT2wnKSBidG5PbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuSW1hZ2UnKSBidG5JbWFnZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KCkgZm5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBjb25maWc6IEZuZ1RleHRFZGl0b3JDb25maWd1cmF0aW9uID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xuICBASW5wdXQoKSBtb2R1bGVzOiBhbnk7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaGludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLmlubmVyVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmNoYW5nZWQuZm9yRWFjaChmID0+IHtcbiAgICAgICAgICB0aGlzLmZuZ0NoYW5nZS5lbWl0KHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICAgIHJldHVybiBmKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XG4gIH1cblxuICAvLyBuZWVkZWQgdG8gYWNjZXNzIGVkaXRvciBjb250ZW50XG4gIHZhbHVlR2V0dGVyID0gKGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogc3RyaW5nIHwgYW55ID0+IHtcbiAgICBsZXQgaHRtbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gZWRpdG9yRWxlbWVudD8ucXVlcnlTZWxlY3RvcignLnFsLWVkaXRvcicpPy5pbm5lckhUTUw7XG4gICAgaWYgKGh0bWwgPT09ICc8cD48YnI+PC9wPicgfHwgaHRtbCA9PT0gJzxkaXY+PGJyPjwvZGl2PicpIHtcbiAgICAgIGh0bWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIC8vIG5lZWRlZCB0byBhY2Nlc3MgZWRpdG9yIGNvbnRlbnRcbiAgdmFsdWVTZXR0ZXIgPSAocXVpbGxFZGl0b3I6IFF1aWxsVHlwZSwgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3Qgc2FuaXRpemVDb25maWcgPSB0aGlzLmNvbmZpZz8uc2FuaXRpemluZyB8fCB0aGlzLmRlZmF1bHRDb25maWcuc2FuaXRpemluZztcblxuICAgIGlmIChzYW5pdGl6ZUNvbmZpZz8uc2FuaXRpemluZ0ZuKSB7XG4gICAgICB2YWx1ZSA9IHNhbml0aXplQ29uZmlnLnNhbml0aXppbmdGbih0aGlzLmRvbVNhbml0aXplciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc2FuaXRpemVDb25maWcgJiYgIXNhbml0aXplQ29uZmlnLnNraXBEZWZhdWx0U2FuaXRpemluZykge1xuICAgICAgdmFsdWUgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoc2FuaXRpemVDb25maWcgJiYgIXNhbml0aXplQ29uZmlnLnNraXBXaGl0ZXNwYWNlSGFuZGxpbmcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5oYW5kbGVXaGl0ZXNwYWNlKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVpbGxFZGl0b3IuY2xpcGJvYXJkLmNvbnZlcnQodmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pZCA9IChNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywgJy0nKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjZWRpdG9yLSR7dGhpcy5pZH1gKTtcblxuICAgIHRoaXMucXVpbGxFZGl0b3IgPSBuZXcgUXVpbGxUeXBlKHRoaXMuZWRpdG9yRWxlbSwge1xuICAgICAgbW9kdWxlczogeyB0b29sYmFyOiBgI2VkaXRvci10b29sYmFyLSR7dGhpcy5pZH1gLCAuLi50aGlzLm1vZHVsZXMgfSxcbiAgICAgIHRoZW1lOiAnc25vdycsXG4gICAgICBzY3JvbGxpbmdDb250YWluZXI6IGAjZWRpdG9yLWNvbnRhaW5lci0ke3RoaXMuaWR9YFxuICAgIH0pO1xuICAgIHRoaXMuc2V0RWRpdG9yTGFiZWwoKTtcbiAgICB0aGlzLmFkZFdoaXRlc3BhY2VNYXRjaGVyKCk7XG4gICAgdGhpcy5hZGRJbWFnZU1hdGNoZXIoKTtcblxuICAgIGlmICh0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKGNvbnRlbnQsICdzaWxlbnQnKTtcbiAgICAgIHRoaXMucXVpbGxFZGl0b3IuZ2V0TW9kdWxlKCdoaXN0b3J5JykuY2xlYXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZSgpO1xuXG4gICAgdGhpcy5xdWlsbEVkaXRvci5vbigndGV4dC1jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZUdldHRlcih0aGlzLmVkaXRvckVsZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzPy5bJ2NvbmZpZyddPy5jdXJyZW50VmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgIHRvb2xiYXI6IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLnRvb2xiYXIsIC4uLmNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZT8udG9vbGJhciB9LFxuICAgICAgICBzYW5pdGl6aW5nOiB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZy5zYW5pdGl6aW5nLCAuLi5jaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWU/LnNhbml0aXppbmcgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKCF0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMudmFsdWVTZXR0ZXIodGhpcy5xdWlsbEVkaXRvciwgdmFsdWUpO1xuICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY29udGVudCk7XG4gIH1cblxuICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLmRpc2FibGVkKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMucXVpbGxFZGl0b3IuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRSZWFkT25seVN0YXRlKCkge1xuICAgIHRoaXMucXVpbGxFZGl0b3IuZW5hYmxlKCF0aGlzLnJlYWRPbmx5KTtcbiAgfVxuXG4gIGRlbGVnYXRlKGV2ZW50OiBhbnksIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgbGV0IGJ0bjogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2JvbGQnOlxuICAgICAgICBidG4gPSB0aGlzLmJ0bkJvbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGJ0bj8uY2xpY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpdGFsaWMnOlxuICAgICAgICBidG4gPSB0aGlzLmJ0bkl0YWxpYz8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuZGVybGluZSc6XG4gICAgICAgIGJ0biA9IHRoaXMuYnRuVW5kZXJsaW5lPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBidG4/LmNsaWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWxpZ24tY2VudGVyJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5BbGlnbkNlbnRlcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FsaWduLXJpZ2h0JzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5BbGlnblJpZ2h0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICBidG4/LmNsaWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIGJ0biA9IHRoaXMuYnRuTGluaz8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VsJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5VbD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5PbD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5JbWFnZT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGN1cnJlbnRMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBoaWRlRGl2aWRlcihuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsaW5rT3JJbWFnZSA9IHRoaXMuY29uZmlnLnRvb2xiYXI/LmltYWdlIHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/Lmxpbms7XG4gICAgY29uc3QgbGlzdHMgPSB0aGlzLmNvbmZpZy50b29sYmFyPy5idWxsZXRMaXN0IHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/Lm9yZGVyZWRMaXN0O1xuICAgIGNvbnN0IHR5cG9zID0gdGhpcy5jb25maWcudG9vbGJhcj8uYm9sZCB8fCB0aGlzLmNvbmZpZy50b29sYmFyPy5pdGFsaWMgfHwgdGhpcy5jb25maWcudG9vbGJhcj8udW5kZXJsaW5lO1xuICAgIGNvbnN0IHRleHRBbGlnbiA9IHRoaXMuY29uZmlnLnRvb2xiYXI/LmFsaWduQ2VudGVyIHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/LmFsaWduUmlnaHQ7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICd0eXBvJzpcbiAgICAgICAgcmV0dXJuICF0eXBvcyB8fCAoIXRleHRBbGlnbiAmJiAhbGlua09ySW1hZ2UgJiYgIWxpc3RzKTtcbiAgICAgIGNhc2UgJ3RleHQtYWxpZ24nOlxuICAgICAgICByZXR1cm4gIXRleHRBbGlnbiB8fCAoIWxpbmtPckltYWdlICYmICFsaXN0cyk7XG4gICAgICBjYXNlICdsaXN0cyc6XG4gICAgICAgIHJldHVybiAhbGlzdHMgfHwgIWxpbmtPckltYWdlO1xuICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICByZXR1cm4gIXRoaXMuY29uZmlnLnRvb2xiYXI/LmltYWdlIHx8ICF0aGlzLmNvbmZpZy50b29sYmFyLmxpbms7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFZGl0b3JMYWJlbCgpIHtcbiAgICBjb25zdCBlZGl0b3JEaXYgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucWwtZWRpdG9yJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAncm9sZScsICd0ZXh0Ym94Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAnYXJpYS1sYWJlbGxlZGJ5JywgYGVkaXRvci1sYWJlbC0ke3RoaXMuaWR9YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAnYXJpYS1tdWx0aWxpbmUnLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGUoKSB7XG4gICAgdGhpcy5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFdoaXRlc3BhY2VNYXRjaGVyKCkge1xuICAgIC8vIHNldCB1cCBhIG1hdGNoZXIgdGhhdCByZXBsYWNlcyBwbGFjZWhvbGRlciAjIyN0YWIjIyMgd2l0aCBcXHQgaW4gZGVsdGEgYWdhaW5cbiAgICB0aGlzLnF1aWxsRWRpdG9yLmNsaXBib2FyZC5hZGRNYXRjaGVyKCdwJywgKF9ub2RlLCBkZWx0YSkgPT4ge1xuICAgICAgbGV0IHN0ciA9IEpTT04uc3RyaW5naWZ5KGRlbHRhKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8jIyN0YWIjIyMvZywgJ1xcXFx0Jyk7XG4gICAgICBkZWx0YSA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICAgIHJldHVybiBkZWx0YTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW1hZ2VNYXRjaGVyKCkge1xuICAgIC8vIHNldCB1cCBhIG1hdGNoZXIgdGhhdCBkb2VzIGFsbG93L2Rpc2FsbG93IHRvIHBhc3RlIGltYWdlcyBjb3JyZXNwb25kaW5nIHRvIGNvbmZpZyBzZXR0aW5nc1xuICAgIHRoaXMucXVpbGxFZGl0b3IuY2xpcGJvYXJkLmFkZE1hdGNoZXIoJ2ltZycsIChfbm9kZSwgZGVsdGEpID0+IHtcbiAgICAgIC8vIGFsbG93ZWQsIHBhc3N0aHJ1IGRlbHRhXG4gICAgICBpZiAodGhpcy5jb25maWcudG9vbGJhcj8uaW1hZ2UgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGRlbHRhO1xuICAgICAgfVxuXG4gICAgICAvLyBub3QgYWxsb3dlZCwgcmVtb3ZlIGltYWdlIGJ5IHNldHRpbmcgdXAgYSBuZXcgZGVsdGFcbiAgICAgIGNvbnN0IERlbHRhID0gUXVpbGxUeXBlLmltcG9ydCgncXVpbGwtZGVsdGEnKTtcbiAgICAgIHJldHVybiBuZXcgRGVsdGEoKS5pbnNlcnQoJycpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVXaGl0ZXNwYWNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHNldCBhIHBsYWNlaG9sZGVyIGZvciB0YWIgZW50aXR5IHRvIGF2b2lkIHRoYXQgcXVpbGwgcmVtb3ZlcyBpdFxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8mIzk7L2dpLCAnIyMjdGFiIyMjJyk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLmZ3ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZm5nLWVkaXRvci10b29sYmFyXCIgW2lkXT1cIidlZGl0b3ItdG9vbGJhci0nICsgaWRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgZndlLWQtbm9uZVwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLXNpemVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNtYWxsXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaHVnZVwiPjwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0cyBmbmctZWRpdG9yLXRvb2xiYXItYnV0dG9ucy1jb250YWluZXIgZndlLW1yLTNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LnRvb2xiYXI/LmJvbGRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J0bkJvbGQgY2xhc3M9XCJxbC1ib2xkIGZ3ZS1kLW5vbmUgYWN0aW9uLWJvbGRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZndlLWJ0biBmbmctYnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZndlLW1yLTNdPVwiY29uZmlnLnRvb2xiYXI/LnVuZGVybGluZSB8fCBjb25maWcudG9vbGJhcj8uaXRhbGljXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZWdhdGUoJGV2ZW50LCAnYm9sZCcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZuZy1idXR0b24tdGV4dCBmbmctdGV4dC1ib2xkXCI+QjwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8udG9vbGJhcj8uaXRhbGljXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5JdGFsaWMgY2xhc3M9XCJxbC1pdGFsaWMgZndlLWQtbm9uZSBhY3Rpb24taXRhbGljXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImZ3ZS1idG4gZm5nLWJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmZ3ZS1tci0zXT1cImNvbmZpZy50b29sYmFyPy51bmRlcmxpbmVcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICdpdGFsaWMnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbmctYnV0dG9uLXRleHQgZm5nLXRleHQtaXRhbGljXCI+STwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8udG9vbGJhcj8udW5kZXJsaW5lXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5VbmRlcmxpbmUgY2xhc3M9XCJxbC11bmRlcmxpbmUgZndlLWQtbm9uZSBhY3Rpb24tdW5kZXJsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ3VuZGVybGluZScpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZuZy1idXR0b24tdGV4dCBmbmctdGV4dC11bmRlcmxpbmVcIj5VPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZURpdmlkZXIoJ3R5cG8nKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5hbGlnbkNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuQWxpZ25DZW50ZXIgY2xhc3M9XCJxbC1hbGlnbiBmd2UtZC1ub25lIGFjdGlvbi1hbGlnbi1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB2YWx1ZT1cImNlbnRlclwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJmd2UtYnRuIGZuZy1idG4tdG9vbGJhci1saXN0IGZuZy1idXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5md2UtbXItM109XCJjb25maWcudG9vbGJhcj8uYWxpZ25SaWdodFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ2FsaWduLWNlbnRlcicpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZm5nLWljb24tdGV4dC1hbGlnbi1jZW50ZXIgZndlLXByLTBcIiBbY2xhc3MuZm5nLWdyYXldPVwiZGlzYWJsZWRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LnRvb2xiYXI/LmFsaWduUmlnaHRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J0bkFsaWduUmlnaHQgY2xhc3M9XCJxbC1hbGlnbiBmd2UtZC1ub25lIGFjdGlvbi1hbGlnbi1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHZhbHVlPVwicmlnaHRcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZWdhdGUoJGV2ZW50LCAnYWxpZ24tcmlnaHQnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tdG9vbGJhci1saXN0IGZuZy1pY29uLXRleHQtYWxpZ24tcmlnaHQgZndlLXByLTBcIiBbY2xhc3MuZm5nLWdyYXldPVwiZGlzYWJsZWRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZURpdmlkZXIoJ3RleHQtYWxpZ24nKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5idWxsZXRMaXN0XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5VbCBjbGFzcz1cInFsLWxpc3QgZndlLWQtbm9uZSBhY3Rpb24tdWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB2YWx1ZT1cImJ1bGxldFwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJmd2UtYnRuIGZuZy1idG4tdG9vbGJhci1saXN0IGZuZy1idXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5md2UtbXItM109XCJjb25maWcudG9vbGJhcj8ub3JkZXJlZExpc3RcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICd1bCcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZndlLWljb24tbGlzdC1saXN0LXZpZXcgZndlLXByLTBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5vcmRlcmVkTGlzdFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuT2wgY2xhc3M9XCJxbC1saXN0IGZ3ZS1kLW5vbmUgYWN0aW9uLW9sXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdmFsdWU9XCJvcmRlcmVkXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ29sJylcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZ3ZS1pY29uIGZ3ZS1pY29uLXRvb2xiYXItbGlzdCBmd2UtaWNvbi1lbnVtZXJhdGlvbiBmd2UtcHItMFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlRGl2aWRlcignbGlzdHMnKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5pbWFnZVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImZ3ZS1idG4gZm5nLWJ0bi10b29sYmFyLWxpc3QgZm5nLWJ1dHRvblwiIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICdpbWFnZScpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZndlLWljb24taW1hZ2UtaW1hZ2UgZndlLXByLTBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuSW1hZ2UgY2xhc3M9XCJxbC1pbWFnZSBmd2UtZC1ub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlRGl2aWRlcignaW1hZ2UnKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5saW5rXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ2xpbmsnKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tdG9vbGJhci1saXN0IGZ3ZS1pY29uLWZpbGUtbGluayBmd2UtcHItMFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5MaW5rIGNsYXNzPVwicWwtbGluayBmd2UtZC1ub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm5nLWVkaXRvci1jb250YWluZXJcIiBbaWRdPVwiJ2VkaXRvci1jb250YWluZXItJyArIGlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImZuZy1lZGl0b3JcIiBbaWRdPVwiJ2VkaXRvci0nICsgaWRcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiZndlLWlucHV0LXRleHQtbGFiZWxcIiBbaWRdPVwiJ2VkaXRvci1sYWJlbC0nICsgaWRcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJoaW50XCIgY2xhc3M9XCJmbmctdGV4dC1lZGl0b3ItaW5mb1wiPnt7IGhpbnQgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImZuZy10ZXh0LWVkaXRvci1pbnZhbGlkXCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwibWF4TGVuZ3RoID4gMCAmJiB2YWx1ZSAhPSBudWxsXCIgY2xhc3M9XCJmd2UtaW5wdXQtdGV4dC1jb3VudFwiPnt7IGN1cnJlbnRMZW5ndGgoKSB9fSAvIHt7IG1heExlbmd0aCB9fTwvc3Bhbj5cbjwvbGFiZWw+XG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixLQUFLLEVBRUwsZUFBZSxFQUdmLFlBQVksRUFDWixNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFNBQVMsTUFBTSxPQUFPLENBQUM7QUFFOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBcUN6RCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsNkJBQXdEO0lBNENsRyxJQUNhLEtBQUssQ0FBQyxLQUFnQztRQUNqRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxJQUFhLEtBQUs7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUE0QkQsWUFBbUIsVUFBc0IsRUFBVSxRQUFtQixFQUFVLFlBQTBCO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBRFMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWxGMUcsa0JBQWEsR0FBK0I7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxJQUFJO2dCQUNWLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsSUFBSTthQUNYO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLFlBQVksRUFBRSxTQUFTO2dCQUN2QixxQkFBcUIsRUFBRSxLQUFLO2dCQUM1QixzQkFBc0IsRUFBRSxLQUFLO2FBQzlCO1lBQ0QsdUJBQXVCLEVBQUUsSUFBSTtTQUM5QixDQUFDO1FBWVEsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbEMsV0FBTSxHQUErQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBR3hELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQW1CL0Isa0NBQWtDO1FBQ2xDLGdCQUFXLEdBQUcsQ0FBQyxhQUEwQixFQUFnQixFQUFFO1lBQ3pELElBQUksSUFBSSxHQUF1QixhQUFhLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsQ0FBQztZQUNyRixJQUFJLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxLQUFLLGlCQUFpQixFQUFFO2dCQUN4RCxJQUFJLEdBQUcsU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsZ0JBQVcsR0FBRyxDQUFDLFdBQXNCLEVBQUUsS0FBVSxFQUFPLEVBQUU7WUFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFFaEYsSUFBSSxjQUFjLEVBQUUsWUFBWSxFQUFFO2dCQUNoQyxLQUFLLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUU7Z0JBQzNELEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUU7Z0JBQzVELEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEM7WUFFRCxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztJQUlGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEQsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ25FLEtBQUssRUFBRSxNQUFNO1lBQ2Isa0JBQWtCLEVBQUUscUJBQXFCLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFlBQVksSUFBSSxJQUFJLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUU7Z0JBQ3RGLFVBQVUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRTthQUNoRyxDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVRLFVBQVUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLHVCQUF1QixFQUFFO1lBQ3hDLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRVEsZ0JBQWdCLENBQUMsYUFBc0IsSUFBSSxDQUFDLFFBQVE7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDMUU7U0FDRjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxNQUFjO1FBQ2pDLElBQUksR0FBRyxHQUE0QixTQUFTLENBQUM7UUFDN0MsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLE1BQU07Z0JBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO2dCQUNsQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7Z0JBQ3BDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztnQkFDdkMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQztnQkFDekMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLGFBQWE7Z0JBQ2hCLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQztnQkFDeEMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO2dCQUNsQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTTtZQUNSLEtBQUssSUFBSTtnQkFDUCxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7Z0JBQ2hDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNO1lBQ1IsS0FBSyxJQUFJO2dCQUNQLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQztnQkFDaEMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO2dCQUNuQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztRQUNsRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUN6RyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQ3RGLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELEtBQUssWUFBWTtnQkFDZixPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoRCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNoQyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsRTtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQiw4RUFBOEU7UUFDOUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDckIsNkZBQTZGO1FBQzdGLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDNUQsMEJBQTBCO1lBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDdkMsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELHNEQUFzRDtZQUN0RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYTtRQUNwQyxrRUFBa0U7UUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDOzttSEFqUlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsbVJBUnRCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7WUFDckQsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLG8zQkM1REgsaTVMQXFIQSxpODZCRHBFWSxZQUFZLGtJQUFFLG1CQUFtQiwyT0FBRSxXQUFXLDhCQUFnQixhQUFhLDhCQUFFLGVBQWUsOEJBQUUsY0FBYyw4QkFBRSxlQUFlOzJGQWE1SCxzQkFBc0I7a0JBZmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQzlILGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvSkEwQnFCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0ssWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNJLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNDLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDSixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNFLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRVgsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRU8sS0FBSztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBBZnRlclZpZXdJbml0LFxuICBTZWN1cml0eUNvbnRleHQsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIGZvcndhcmRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUXVpbGxUeXBlIGZyb20gJ3F1aWxsJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGbmdWYWx1ZUFjY2Vzc29yQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBPYnNlcnZlcnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb2JzZXJ2ZXJzJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBGbmdUZXh0RWRpdG9yQ29uZmlndXJhdGlvbiB7XG4gIHRvb2xiYXI/OiB7XG4gICAgYm9sZD86IGJvb2xlYW47XG4gICAgaXRhbGljPzogYm9vbGVhbjtcbiAgICB1bmRlcmxpbmU/OiBib29sZWFuO1xuICAgIGFsaWduQ2VudGVyPzogYm9vbGVhbjtcbiAgICBhbGlnblJpZ2h0PzogYm9vbGVhbjtcbiAgICBidWxsZXRMaXN0PzogYm9vbGVhbjtcbiAgICBvcmRlcmVkTGlzdD86IGJvb2xlYW47XG4gICAgaW1hZ2U/OiBib29sZWFuO1xuICAgIGxpbms/OiBib29sZWFuO1xuICB9O1xuICBzYW5pdGl6aW5nPzoge1xuICAgIHNraXBEZWZhdWx0U2FuaXRpemluZz86IGJvb2xlYW47XG4gICAgc2tpcFdoaXRlc3BhY2VIYW5kbGluZz86IGJvb2xlYW47XG4gICAgc2FuaXRpemluZ0ZuPzogKGRzOiBEb21TYW5pdGl6ZXIsIHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgfTtcbiAgZm9jdXNDdXJzb3JUb0VuZE9uV3JpdGU/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIENvbW1vbk1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLCBEcmFnRHJvcE1vZHVsZSwgT2JzZXJ2ZXJzTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdmbmctdGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZuZ1RleHRFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm5nVGV4dEVkaXRvckNvbXBvbmVudCBleHRlbmRzIEZuZ1ZhbHVlQWNjZXNzb3JCYXNlRGlyZWN0aXZlPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBxdWlsbEVkaXRvciE6IFF1aWxsVHlwZTtcbiAgZWRpdG9yRWxlbSE6IEhUTUxFbGVtZW50O1xuICBkZWZhdWx0Q29uZmlnOiBGbmdUZXh0RWRpdG9yQ29uZmlndXJhdGlvbiA9IHtcbiAgICB0b29sYmFyOiB7XG4gICAgICBib2xkOiB0cnVlLFxuICAgICAgaXRhbGljOiB0cnVlLFxuICAgICAgdW5kZXJsaW5lOiB0cnVlLFxuICAgICAgYWxpZ25DZW50ZXI6IHRydWUsXG4gICAgICBhbGlnblJpZ2h0OiB0cnVlLFxuICAgICAgYnVsbGV0TGlzdDogdHJ1ZSxcbiAgICAgIG9yZGVyZWRMaXN0OiB0cnVlLFxuICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICBsaW5rOiB0cnVlXG4gICAgfSxcbiAgICBzYW5pdGl6aW5nOiB7XG4gICAgICBzYW5pdGl6aW5nRm46IHVuZGVmaW5lZCxcbiAgICAgIHNraXBEZWZhdWx0U2FuaXRpemluZzogZmFsc2UsXG4gICAgICBza2lwV2hpdGVzcGFjZUhhbmRsaW5nOiBmYWxzZVxuICAgIH0sXG4gICAgZm9jdXNDdXJzb3JUb0VuZE9uV3JpdGU6IHRydWVcbiAgfTtcblxuICBAVmlld0NoaWxkKCdidG5Cb2xkJykgYnRuQm9sZDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuSXRhbGljJykgYnRuSXRhbGljOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdidG5VbmRlcmxpbmUnKSBidG5VbmRlcmxpbmU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2J0bkFsaWduQ2VudGVyJykgYnRuQWxpZ25DZW50ZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2J0bkFsaWduUmlnaHQnKSBidG5BbGlnblJpZ2h0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdidG5MaW5rJykgYnRuTGluazogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuVWwnKSBidG5VbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuT2wnKSBidG5PbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnYnRuSW1hZ2UnKSBidG5JbWFnZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KCkgZm5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBjb25maWc6IEZuZ1RleHRFZGl0b3JDb25maWd1cmF0aW9uID0gdGhpcy5kZWZhdWx0Q29uZmlnO1xuICBASW5wdXQoKSBtb2R1bGVzOiBhbnk7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgaGludDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5pbm5lclZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZWQuZm9yRWFjaChmID0+IHtcbiAgICAgICAgdGhpcy5mbmdDaGFuZ2UuZW1pdCh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuaW5uZXJWYWx1ZSk7XG4gICAgICAgIHJldHVybiBmKHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclZhbHVlO1xuICB9XG5cbiAgLy8gbmVlZGVkIHRvIGFjY2VzcyBlZGl0b3IgY29udGVudFxuICB2YWx1ZUdldHRlciA9IChlZGl0b3JFbGVtZW50OiBIVE1MRWxlbWVudCk6IHN0cmluZyB8IGFueSA9PiB7XG4gICAgbGV0IGh0bWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGVkaXRvckVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJy5xbC1lZGl0b3InKT8uaW5uZXJIVE1MO1xuICAgIGlmIChodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8ZGl2Pjxicj48L2Rpdj4nKSB7XG4gICAgICBodG1sID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICAvLyBuZWVkZWQgdG8gYWNjZXNzIGVkaXRvciBjb250ZW50XG4gIHZhbHVlU2V0dGVyID0gKHF1aWxsRWRpdG9yOiBRdWlsbFR5cGUsIHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHNhbml0aXplQ29uZmlnID0gdGhpcy5jb25maWc/LnNhbml0aXppbmcgfHwgdGhpcy5kZWZhdWx0Q29uZmlnLnNhbml0aXppbmc7XG5cbiAgICBpZiAoc2FuaXRpemVDb25maWc/LnNhbml0aXppbmdGbikge1xuICAgICAgdmFsdWUgPSBzYW5pdGl6ZUNvbmZpZy5zYW5pdGl6aW5nRm4odGhpcy5kb21TYW5pdGl6ZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHNhbml0aXplQ29uZmlnICYmICFzYW5pdGl6ZUNvbmZpZy5za2lwRGVmYXVsdFNhbml0aXppbmcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHNhbml0aXplQ29uZmlnICYmICFzYW5pdGl6ZUNvbmZpZy5za2lwV2hpdGVzcGFjZUhhbmRsaW5nKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuaGFuZGxlV2hpdGVzcGFjZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHZhbHVlKTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWQgPSAoTWF0aC5yYW5kb20oKSAqIERhdGUubm93KCkpLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICctJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgI2VkaXRvci0ke3RoaXMuaWR9YCk7XG5cbiAgICB0aGlzLnF1aWxsRWRpdG9yID0gbmV3IFF1aWxsVHlwZSh0aGlzLmVkaXRvckVsZW0sIHtcbiAgICAgIG1vZHVsZXM6IHsgdG9vbGJhcjogYCNlZGl0b3ItdG9vbGJhci0ke3RoaXMuaWR9YCwgLi4udGhpcy5tb2R1bGVzIH0sXG4gICAgICB0aGVtZTogJ3Nub3cnLFxuICAgICAgc2Nyb2xsaW5nQ29udGFpbmVyOiBgI2VkaXRvci1jb250YWluZXItJHt0aGlzLmlkfWBcbiAgICB9KTtcbiAgICB0aGlzLnNldEVkaXRvckxhYmVsKCk7XG4gICAgdGhpcy5hZGRXaGl0ZXNwYWNlTWF0Y2hlcigpO1xuICAgIHRoaXMuYWRkSW1hZ2VNYXRjaGVyKCk7XG5cbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy52YWx1ZVNldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmlubmVyVmFsdWUgfHwgJycpO1xuICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY29udGVudCwgJ3NpbGVudCcpO1xuICAgIHRoaXMucXVpbGxFZGl0b3IuZ2V0TW9kdWxlKCdoaXN0b3J5JykuY2xlYXIoKTtcblxuICAgIHRoaXMuaGFuZGxlKCk7XG5cbiAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCd0ZXh0LWNoYW5nZScsICgpID0+IHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlR2V0dGVyKHRoaXMuZWRpdG9yRWxlbSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXM/LlsnY29uZmlnJ10/LmN1cnJlbnRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgdG9vbGJhcjogeyAuLi50aGlzLmRlZmF1bHRDb25maWcudG9vbGJhciwgLi4uY2hhbmdlc1snY29uZmlnJ10uY3VycmVudFZhbHVlPy50b29sYmFyIH0sXG4gICAgICAgIHNhbml0aXppbmc6IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLnNhbml0aXppbmcsIC4uLmNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZT8uc2FuaXRpemluZyB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlKCk7XG4gIH1cblxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICghdGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIHZhbHVlIHx8ICcnKTtcbiAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKGNvbnRlbnQpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5mb2N1c0N1cnNvclRvRW5kT25Xcml0ZSkge1xuICAgICAgLy8gd2hlbiBuZXcgY29udGVudCBnZXRzIHdyaXR0ZW4gd2UgYWx3YXlzIHNldCBjdXJzb3IgZm9jdXMgdG8gZW5kIG9mIHRleHRcbiAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0U2VsZWN0aW9uKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCAwKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLmRpc2FibGVkKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMucXVpbGxFZGl0b3IuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRSZWFkT25seVN0YXRlKCkge1xuICAgIHRoaXMucXVpbGxFZGl0b3IuZW5hYmxlKCF0aGlzLnJlYWRPbmx5KTtcbiAgfVxuXG4gIGRlbGVnYXRlKGV2ZW50OiBhbnksIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgbGV0IGJ0bjogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2JvbGQnOlxuICAgICAgICBidG4gPSB0aGlzLmJ0bkJvbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGJ0bj8uY2xpY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpdGFsaWMnOlxuICAgICAgICBidG4gPSB0aGlzLmJ0bkl0YWxpYz8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuZGVybGluZSc6XG4gICAgICAgIGJ0biA9IHRoaXMuYnRuVW5kZXJsaW5lPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBidG4/LmNsaWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWxpZ24tY2VudGVyJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5BbGlnbkNlbnRlcj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FsaWduLXJpZ2h0JzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5BbGlnblJpZ2h0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICBidG4/LmNsaWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIGJ0biA9IHRoaXMuYnRuTGluaz8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VsJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5VbD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29sJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5PbD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgYnRuID0gdGhpcy5idG5JbWFnZT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYnRuPy5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGN1cnJlbnRMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBoaWRlRGl2aWRlcihuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsaW5rT3JJbWFnZSA9IHRoaXMuY29uZmlnLnRvb2xiYXI/LmltYWdlIHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/Lmxpbms7XG4gICAgY29uc3QgbGlzdHMgPSB0aGlzLmNvbmZpZy50b29sYmFyPy5idWxsZXRMaXN0IHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/Lm9yZGVyZWRMaXN0O1xuICAgIGNvbnN0IHR5cG9zID0gdGhpcy5jb25maWcudG9vbGJhcj8uYm9sZCB8fCB0aGlzLmNvbmZpZy50b29sYmFyPy5pdGFsaWMgfHwgdGhpcy5jb25maWcudG9vbGJhcj8udW5kZXJsaW5lO1xuICAgIGNvbnN0IHRleHRBbGlnbiA9IHRoaXMuY29uZmlnLnRvb2xiYXI/LmFsaWduQ2VudGVyIHx8IHRoaXMuY29uZmlnLnRvb2xiYXI/LmFsaWduUmlnaHQ7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICd0eXBvJzpcbiAgICAgICAgcmV0dXJuICF0eXBvcyB8fCAoIXRleHRBbGlnbiAmJiAhbGlua09ySW1hZ2UgJiYgIWxpc3RzKTtcbiAgICAgIGNhc2UgJ3RleHQtYWxpZ24nOlxuICAgICAgICByZXR1cm4gIXRleHRBbGlnbiB8fCAoIWxpbmtPckltYWdlICYmICFsaXN0cyk7XG4gICAgICBjYXNlICdsaXN0cyc6XG4gICAgICAgIHJldHVybiAhbGlzdHMgfHwgIWxpbmtPckltYWdlO1xuICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICByZXR1cm4gIXRoaXMuY29uZmlnLnRvb2xiYXI/LmltYWdlIHx8ICF0aGlzLmNvbmZpZy50b29sYmFyLmxpbms7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFZGl0b3JMYWJlbCgpIHtcbiAgICBjb25zdCBlZGl0b3JEaXYgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucWwtZWRpdG9yJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAncm9sZScsICd0ZXh0Ym94Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAnYXJpYS1sYWJlbGxlZGJ5JywgYGVkaXRvci1sYWJlbC0ke3RoaXMuaWR9YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWRpdG9yRGl2LCAnYXJpYS1tdWx0aWxpbmUnLCAndHJ1ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGUoKSB7XG4gICAgdGhpcy5zZXRSZWFkT25seVN0YXRlKCk7XG4gICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFdoaXRlc3BhY2VNYXRjaGVyKCkge1xuICAgIC8vIHNldCB1cCBhIG1hdGNoZXIgdGhhdCByZXBsYWNlcyBwbGFjZWhvbGRlciAjIyN0YWIjIyMgd2l0aCBcXHQgaW4gZGVsdGEgYWdhaW5cbiAgICB0aGlzLnF1aWxsRWRpdG9yLmNsaXBib2FyZC5hZGRNYXRjaGVyKCdwJywgKF9ub2RlLCBkZWx0YSkgPT4ge1xuICAgICAgbGV0IHN0ciA9IEpTT04uc3RyaW5naWZ5KGRlbHRhKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8jIyN0YWIjIyMvZywgJ1xcXFx0Jyk7XG4gICAgICBkZWx0YSA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICAgIHJldHVybiBkZWx0YTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW1hZ2VNYXRjaGVyKCkge1xuICAgIC8vIHNldCB1cCBhIG1hdGNoZXIgdGhhdCBkb2VzIGFsbG93L2Rpc2FsbG93IHRvIHBhc3RlIGltYWdlcyBjb3JyZXNwb25kaW5nIHRvIGNvbmZpZyBzZXR0aW5nc1xuICAgIHRoaXMucXVpbGxFZGl0b3IuY2xpcGJvYXJkLmFkZE1hdGNoZXIoJ2ltZycsIChfbm9kZSwgZGVsdGEpID0+IHtcbiAgICAgIC8vIGFsbG93ZWQsIHBhc3N0aHJ1IGRlbHRhXG4gICAgICBpZiAodGhpcy5jb25maWcudG9vbGJhcj8uaW1hZ2UgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGRlbHRhO1xuICAgICAgfVxuXG4gICAgICAvLyBub3QgYWxsb3dlZCwgcmVtb3ZlIGltYWdlIGJ5IHNldHRpbmcgdXAgYSBuZXcgZGVsdGFcbiAgICAgIGNvbnN0IERlbHRhID0gUXVpbGxUeXBlLmltcG9ydCgncXVpbGwtZGVsdGEnKTtcbiAgICAgIHJldHVybiBuZXcgRGVsdGEoKS5pbnNlcnQoJycpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVXaGl0ZXNwYWNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHNldCBhIHBsYWNlaG9sZGVyIGZvciB0YWIgZW50aXR5IHRvIGF2b2lkIHRoYXQgcXVpbGwgcmVtb3ZlcyBpdFxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8mIzk7L2dpLCAnIyMjdGFiIyMjJyk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLmZ3ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8ZGl2IGNsYXNzPVwiZm5nLWVkaXRvci10b29sYmFyXCIgW2lkXT1cIidlZGl0b3ItdG9vbGJhci0nICsgaWRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgZndlLWQtbm9uZVwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLXNpemVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNtYWxsXCI+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJsYXJnZVwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaHVnZVwiPjwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0cyBmbmctZWRpdG9yLXRvb2xiYXItYnV0dG9ucy1jb250YWluZXIgZndlLW1yLTNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LnRvb2xiYXI/LmJvbGRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J0bkJvbGQgY2xhc3M9XCJxbC1ib2xkIGZ3ZS1kLW5vbmUgYWN0aW9uLWJvbGRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZndlLWJ0biBmbmctYnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZndlLW1yLTNdPVwiY29uZmlnLnRvb2xiYXI/LnVuZGVybGluZSB8fCBjb25maWcudG9vbGJhcj8uaXRhbGljXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZWdhdGUoJGV2ZW50LCAnYm9sZCcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZuZy1idXR0b24tdGV4dCBmbmctdGV4dC1ib2xkXCI+QjwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8udG9vbGJhcj8uaXRhbGljXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5JdGFsaWMgY2xhc3M9XCJxbC1pdGFsaWMgZndlLWQtbm9uZSBhY3Rpb24taXRhbGljXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImZ3ZS1idG4gZm5nLWJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmZ3ZS1tci0zXT1cImNvbmZpZy50b29sYmFyPy51bmRlcmxpbmVcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICdpdGFsaWMnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbmctYnV0dG9uLXRleHQgZm5nLXRleHQtaXRhbGljXCI+STwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8udG9vbGJhcj8udW5kZXJsaW5lXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5VbmRlcmxpbmUgY2xhc3M9XCJxbC11bmRlcmxpbmUgZndlLWQtbm9uZSBhY3Rpb24tdW5kZXJsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ3VuZGVybGluZScpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZuZy1idXR0b24tdGV4dCBmbmctdGV4dC11bmRlcmxpbmVcIj5VPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZURpdmlkZXIoJ3R5cG8nKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5hbGlnbkNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuQWxpZ25DZW50ZXIgY2xhc3M9XCJxbC1hbGlnbiBmd2UtZC1ub25lIGFjdGlvbi1hbGlnbi1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB2YWx1ZT1cImNlbnRlclwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJmd2UtYnRuIGZuZy1idG4tdG9vbGJhci1saXN0IGZuZy1idXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5md2UtbXItM109XCJjb25maWcudG9vbGJhcj8uYWxpZ25SaWdodFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ2FsaWduLWNlbnRlcicpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZm5nLWljb24tdGV4dC1hbGlnbi1jZW50ZXIgZndlLXByLTBcIiBbY2xhc3MuZm5nLWdyYXldPVwiZGlzYWJsZWRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LnRvb2xiYXI/LmFsaWduUmlnaHRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J0bkFsaWduUmlnaHQgY2xhc3M9XCJxbC1hbGlnbiBmd2UtZC1ub25lIGFjdGlvbi1hbGlnbi1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHZhbHVlPVwicmlnaHRcIj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZWdhdGUoJGV2ZW50LCAnYWxpZ24tcmlnaHQnKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tdG9vbGJhci1saXN0IGZuZy1pY29uLXRleHQtYWxpZ24tcmlnaHQgZndlLXByLTBcIiBbY2xhc3MuZm5nLWdyYXldPVwiZGlzYWJsZWRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZURpdmlkZXIoJ3RleHQtYWxpZ24nKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5idWxsZXRMaXN0XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5VbCBjbGFzcz1cInFsLWxpc3QgZndlLWQtbm9uZSBhY3Rpb24tdWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB2YWx1ZT1cImJ1bGxldFwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJmd2UtYnRuIGZuZy1idG4tdG9vbGJhci1saXN0IGZuZy1idXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5md2UtbXItM109XCJjb25maWcudG9vbGJhcj8ub3JkZXJlZExpc3RcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICd1bCcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZndlLWljb24tbGlzdC1saXN0LXZpZXcgZndlLXByLTBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5vcmRlcmVkTGlzdFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuT2wgY2xhc3M9XCJxbC1saXN0IGZ3ZS1kLW5vbmUgYWN0aW9uLW9sXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdmFsdWU9XCJvcmRlcmVkXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ29sJylcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZ3ZS1pY29uIGZ3ZS1pY29uLXRvb2xiYXItbGlzdCBmd2UtaWNvbi1lbnVtZXJhdGlvbiBmd2UtcHItMFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlRGl2aWRlcignbGlzdHMnKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5pbWFnZVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImZ3ZS1idG4gZm5nLWJ0bi10b29sYmFyLWxpc3QgZm5nLWJ1dHRvblwiIChjbGljayk9XCJkZWxlZ2F0ZSgkZXZlbnQsICdpbWFnZScpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi10b29sYmFyLWxpc3QgZndlLWljb24taW1hZ2UtaW1hZ2UgZndlLXByLTBcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYnRuSW1hZ2UgY2xhc3M9XCJxbC1pbWFnZSBmd2UtZC1ub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cIiFoaWRlRGl2aWRlcignaW1hZ2UnKVwiIGNsYXNzPVwiZm5nLWRpdmlkZXIteSBmd2UtbXgtNFwiPjwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy50b29sYmFyPy5saW5rXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZndlLWJ0biBmbmctYnRuLXRvb2xiYXItbGlzdCBmbmctYnV0dG9uXCIgKGNsaWNrKT1cImRlbGVnYXRlKCRldmVudCwgJ2xpbmsnKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tdG9vbGJhci1saXN0IGZ3ZS1pY29uLWZpbGUtbGluayBmd2UtcHItMFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidG5MaW5rIGNsYXNzPVwicWwtbGluayBmd2UtZC1ub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm5nLWVkaXRvci1jb250YWluZXJcIiBbaWRdPVwiJ2VkaXRvci1jb250YWluZXItJyArIGlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImZuZy1lZGl0b3JcIiBbaWRdPVwiJ2VkaXRvci0nICsgaWRcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiZndlLWlucHV0LXRleHQtbGFiZWxcIiBbaWRdPVwiJ2VkaXRvci1sYWJlbC0nICsgaWRcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPHNwYW4gKm5nSWY9XCJoaW50XCIgY2xhc3M9XCJmbmctdGV4dC1lZGl0b3ItaW5mb1wiPnt7IGhpbnQgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwiZXJyb3JcIiBjbGFzcz1cImZuZy10ZXh0LWVkaXRvci1pbnZhbGlkXCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwibWF4TGVuZ3RoID4gMCAmJiB2YWx1ZSAhPSBudWxsXCIgY2xhc3M9XCJmd2UtaW5wdXQtdGV4dC1jb3VudFwiPnt7IGN1cnJlbnRMZW5ndGgoKSB9fSAvIHt7IG1heExlbmd0aCB9fTwvc3Bhbj5cbjwvbGFiZWw+XG4iXX0=
@@ -6067,13 +6067,11 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6067
6067
  set value(value) {
6068
6068
  if (this.innerValue !== value) {
6069
6069
  this.innerValue = value;
6070
- if (value) {
6071
- this.changed.forEach(f => {
6072
- this.fngChange.emit(this.innerValue);
6073
- this.change.emit(this.innerValue);
6074
- return f(value);
6075
- });
6076
- }
6070
+ this.changed.forEach(f => {
6071
+ this.fngChange.emit(this.innerValue);
6072
+ this.change.emit(this.innerValue);
6073
+ return f(value);
6074
+ });
6077
6075
  }
6078
6076
  }
6079
6077
  get value() {
@@ -6100,7 +6098,8 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6100
6098
  sanitizingFn: undefined,
6101
6099
  skipDefaultSanitizing: false,
6102
6100
  skipWhitespaceHandling: false
6103
- }
6101
+ },
6102
+ focusCursorToEndOnWrite: true
6104
6103
  };
6105
6104
  this.fngChange = new EventEmitter();
6106
6105
  this.change = new EventEmitter();
@@ -6145,11 +6144,9 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6145
6144
  this.setEditorLabel();
6146
6145
  this.addWhitespaceMatcher();
6147
6146
  this.addImageMatcher();
6148
- if (this.innerValue) {
6149
- const content = this.valueSetter(this.quillEditor, this.innerValue);
6150
- this.quillEditor.setContents(content, 'silent');
6151
- this.quillEditor.getModule('history').clear();
6152
- }
6147
+ const content = this.valueSetter(this.quillEditor, this.innerValue || '');
6148
+ this.quillEditor.setContents(content, 'silent');
6149
+ this.quillEditor.getModule('history').clear();
6153
6150
  this.handle();
6154
6151
  this.quillEditor.on('text-change', () => {
6155
6152
  this.value = this.valueGetter(this.editorElem);
@@ -6169,15 +6166,17 @@ class FngTextEditorComponent extends FngValueAccessorBaseDirective {
6169
6166
  this.handle();
6170
6167
  }
6171
6168
  writeValue(value) {
6172
- if (value === null || value === '') {
6173
- return;
6174
- }
6169
+ var _a;
6175
6170
  this.innerValue = value;
6176
6171
  if (!this.quillEditor) {
6177
6172
  return;
6178
6173
  }
6179
- const content = this.valueSetter(this.quillEditor, value);
6174
+ const content = this.valueSetter(this.quillEditor, value || '');
6180
6175
  this.quillEditor.setContents(content);
6176
+ if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.focusCursorToEndOnWrite) {
6177
+ // when new content gets written we always set cursor focus to end of text
6178
+ this.quillEditor.setSelection(Number.MAX_SAFE_INTEGER, 0);
6179
+ }
6181
6180
  }
6182
6181
  setDisabledState(isDisabled = this.disabled) {
6183
6182
  this.disabled = isDisabled;