@docuseal/angular 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -21,7 +21,7 @@ For detailed documentation, please click [here](https://www.docuseal.co/docs/emb
21
21
  Copy public DocuSeal form URL from [https://docuseal.co](https://docuseal.co) and use it in the `src` component prop:
22
22
 
23
23
  ```typescript
24
- import { Component, } from '@angular/core';
24
+ import { Component } from '@angular/core';
25
25
  import { DocusealFormComponent } from '@docuseal/angular';
26
26
 
27
27
  @Component({
package/dist/README.md CHANGED
@@ -21,7 +21,7 @@ For detailed documentation, please click [here](https://www.docuseal.co/docs/emb
21
21
  Copy public DocuSeal form URL from [https://docuseal.co](https://docuseal.co) and use it in the `src` component prop:
22
22
 
23
23
  ```typescript
24
- import { Component, } from '@angular/core';
24
+ import { Component } from '@angular/core';
25
25
  import { DocusealFormComponent } from '@docuseal/angular';
26
26
 
27
27
  @Component({
@@ -1,4 +1,4 @@
1
- import { ElementRef, SimpleChanges } from "@angular/core";
1
+ import { EventEmitter } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  interface DocusealField {
4
4
  name: string;
@@ -9,11 +9,7 @@ interface DocusealField {
9
9
  interface AfterViewInit {
10
10
  ngAfterViewInit(): void;
11
11
  }
12
- interface OnChanges {
13
- ngOnChanges(changes: SimpleChanges): void;
14
- }
15
- export declare class DocusealBuilderComponent implements AfterViewInit, OnChanges {
16
- private el;
12
+ export declare class DocusealBuilderComponent implements AfterViewInit {
17
13
  token: string;
18
14
  host: string;
19
15
  language: string;
@@ -37,25 +33,43 @@ export declare class DocusealBuilderComponent implements AfterViewInit, OnChange
37
33
  url: string;
38
34
  };
39
35
  backgroundColor: string;
40
- onLoad: (detail: any) => void;
41
- onUpload: (detail: any) => void;
42
- onSend: (detail: any) => void;
43
- onSave: (detail: any) => void;
44
36
  sendButtonText: string;
45
37
  saveButtonText: string;
46
38
  customCss: string;
47
- constructor(el: ElementRef);
48
- get attributes(): {
49
- [key: string]: any;
50
- };
39
+ onLoad: EventEmitter<any>;
40
+ onUpload: EventEmitter<any>;
41
+ onSend: EventEmitter<any>;
42
+ onSave: EventEmitter<any>;
43
+ get dataToken(): string;
44
+ get dataPreview(): boolean;
45
+ get dataLanguage(): string;
46
+ get dataAutosave(): boolean;
47
+ get dataSendButtonText(): string;
48
+ get dataSaveButtonText(): string;
49
+ get dataRoles(): string;
50
+ get dataFieldTypes(): string;
51
+ get dataDrawFieldType(): string;
52
+ get dataFields(): string;
53
+ get dataI18n(): string;
54
+ get dataCustomButtonTitle(): string;
55
+ get dataCustomButtonUrl(): string;
56
+ get dataWithRecipientsButton(): boolean;
57
+ get dataWithSendButton(): boolean;
58
+ get dataWithDocumentsList(): boolean;
59
+ get dataWithFieldsList(): boolean;
60
+ get dataWithTitle(): boolean;
61
+ get dataOnlyDefinedFields(): boolean;
62
+ get dataWithUploadButton(): boolean;
63
+ get dataWithSignYourselfButton(): boolean;
64
+ get dataBackgroundColor(): string;
65
+ get dataCustomCss(): string;
51
66
  ngAfterViewInit(): void;
52
- ngOnChanges(changes: SimpleChanges): void;
53
67
  onSendEvent(event: CustomEvent): void;
54
68
  onLoadEvent(event: CustomEvent): void;
55
69
  onUploadEvent(event: CustomEvent): void;
56
70
  onSaveEvent(event: CustomEvent): void;
57
71
  loadScript(): void;
58
72
  static ɵfac: i0.ɵɵFactoryDeclaration<DocusealBuilderComponent, never>;
59
- static ɵcmp: i0.ɵɵComponentDeclaration<DocusealBuilderComponent, "docuseal-builder", never, { "token": { "alias": "token"; "required": false; }; "host": { "alias": "host"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preview": { "alias": "preview"; "required": false; }; "autosave": { "alias": "autosave"; "required": false; }; "withRecipientsButton": { "alias": "withRecipientsButton"; "required": false; }; "withDocumentsList": { "alias": "withDocumentsList"; "required": false; }; "withFieldsList": { "alias": "withFieldsList"; "required": false; }; "withSendButton": { "alias": "withSendButton"; "required": false; }; "withTitle": { "alias": "withTitle"; "required": false; }; "onlyDefinedFields": { "alias": "onlyDefinedFields"; "required": false; }; "withSignYourselfButton": { "alias": "withSignYourselfButton"; "required": false; }; "withUploadButton": { "alias": "withUploadButton"; "required": false; }; "roles": { "alias": "roles"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "fieldTypes": { "alias": "fieldTypes"; "required": false; }; "drawFieldType": { "alias": "drawFieldType"; "required": false; }; "customButton": { "alias": "customButton"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "onLoad": { "alias": "onLoad"; "required": false; }; "onUpload": { "alias": "onUpload"; "required": false; }; "onSend": { "alias": "onSend"; "required": false; }; "onSave": { "alias": "onSave"; "required": false; }; "sendButtonText": { "alias": "sendButtonText"; "required": false; }; "saveButtonText": { "alias": "saveButtonText"; "required": false; }; "customCss": { "alias": "customCss"; "required": false; }; }, {}, never, never, true, never>;
73
+ static ɵcmp: i0.ɵɵComponentDeclaration<DocusealBuilderComponent, "docuseal-builder", never, { "token": { "alias": "token"; "required": false; }; "host": { "alias": "host"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preview": { "alias": "preview"; "required": false; }; "autosave": { "alias": "autosave"; "required": false; }; "withRecipientsButton": { "alias": "withRecipientsButton"; "required": false; }; "withDocumentsList": { "alias": "withDocumentsList"; "required": false; }; "withFieldsList": { "alias": "withFieldsList"; "required": false; }; "withSendButton": { "alias": "withSendButton"; "required": false; }; "withTitle": { "alias": "withTitle"; "required": false; }; "onlyDefinedFields": { "alias": "onlyDefinedFields"; "required": false; }; "withSignYourselfButton": { "alias": "withSignYourselfButton"; "required": false; }; "withUploadButton": { "alias": "withUploadButton"; "required": false; }; "roles": { "alias": "roles"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "fieldTypes": { "alias": "fieldTypes"; "required": false; }; "drawFieldType": { "alias": "drawFieldType"; "required": false; }; "customButton": { "alias": "customButton"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "sendButtonText": { "alias": "sendButtonText"; "required": false; }; "saveButtonText": { "alias": "saveButtonText"; "required": false; }; "customCss": { "alias": "customCss"; "required": false; }; }, { "onLoad": "onLoad"; "onUpload": "onUpload"; "onSend": "onSend"; "onSave": "onSave"; }, never, never, true, never>;
60
74
  }
61
75
  export {};
@@ -1,7 +1,6 @@
1
- import { Component, Input, HostListener } from "@angular/core";
1
+ import { Component, Input, HostListener, HostBinding, Output, EventEmitter } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class DocusealBuilderComponent {
4
- el;
5
4
  token = "";
6
5
  host = "cdn.docuseal.co";
7
6
  language = "en";
@@ -22,161 +21,57 @@ export class DocusealBuilderComponent {
22
21
  drawFieldType = "text";
23
22
  customButton = { title: "", url: "" };
24
23
  backgroundColor = "";
25
- onLoad = () => { };
26
- onUpload = () => { };
27
- onSend = () => { };
28
- onSave = () => { };
29
24
  sendButtonText = "";
30
25
  saveButtonText = "";
31
26
  customCss = "";
32
- constructor(el) {
33
- this.el = el;
34
- }
35
- get attributes() {
36
- return {
37
- src: {
38
- name: "data-token",
39
- value: () => this.token
40
- },
41
- preview: {
42
- name: "data-preview",
43
- value: () => this.preview
44
- },
45
- language: {
46
- name: "data-language",
47
- value: () => this.language
48
- },
49
- autosave: {
50
- name: "data-autosave",
51
- value: () => this.autosave
52
- },
53
- sendButtonText: {
54
- name: "data-send-button-text",
55
- value: () => this.sendButtonText
56
- },
57
- saveButtonText: {
58
- name: "data-save-button-text",
59
- value: () => this.saveButtonText
60
- },
61
- roles: {
62
- name: "data-roles",
63
- value: () => this.roles.join(',')
64
- },
65
- fieldTypes: {
66
- name: "data-field-types",
67
- value: () => this.fieldTypes.join(',')
68
- },
69
- drawFieldType: {
70
- name: "data-draw-field-type",
71
- value: () => this.drawFieldType
72
- },
73
- fields: {
74
- name: "data-fields",
75
- value: () => JSON.stringify(this.fields)
76
- },
77
- i18n: {
78
- name: "data-i18n",
79
- value: () => JSON.stringify(this.i18n)
80
- },
81
- customButton: [
82
- {
83
- name: "data-custom-button-title",
84
- value: () => this.customButton.title
85
- },
86
- {
87
- name: "data-custom-button-url",
88
- value: () => this.customButton.url
89
- }
90
- ],
91
- withRecipientsButton: {
92
- name: "data-with-recipients-button",
93
- value: () => this.withRecipientsButton
94
- },
95
- withSendButton: {
96
- name: "data-with-send-button",
97
- value: () => this.withSendButton
98
- },
99
- withDocumentsList: {
100
- name: "data-with-documents-list",
101
- value: () => this.withDocumentsList
102
- },
103
- withFieldsList: {
104
- name: "data-with-fields-list",
105
- value: () => this.withFieldsList
106
- },
107
- withTitle: {
108
- name: "data-with-title",
109
- value: () => this.withTitle
110
- },
111
- onlyDefinedFields: {
112
- name: "data-only-defined-fields",
113
- value: () => this.onlyDefinedFields
114
- },
115
- withUploadButton: {
116
- name: "data-with-upload-button",
117
- value: () => this.withUploadButton
118
- },
119
- withSignYourselfButton: {
120
- name: "data-with-sign-yourself-button",
121
- value: () => this.withSignYourselfButton
122
- },
123
- backgroundColor: {
124
- name: "data-background-color",
125
- value: () => this.backgroundColor
126
- },
127
- customCss: {
128
- name: "data-custom-css",
129
- value: () => this.customCss
130
- }
131
- };
132
- }
27
+ onLoad = new EventEmitter();
28
+ onUpload = new EventEmitter();
29
+ onSend = new EventEmitter();
30
+ onSave = new EventEmitter();
31
+ get dataToken() { return this.token; }
32
+ get dataPreview() { return this.preview; }
33
+ get dataLanguage() { return this.language; }
34
+ get dataAutosave() { return this.autosave; }
35
+ get dataSendButtonText() { return this.sendButtonText; }
36
+ get dataSaveButtonText() { return this.saveButtonText; }
37
+ get dataRoles() { return this.roles.join(','); }
38
+ get dataFieldTypes() { return this.fieldTypes.join(','); }
39
+ get dataDrawFieldType() { return this.drawFieldType; }
40
+ get dataFields() { return JSON.stringify(this.fields); }
41
+ get dataI18n() { return JSON.stringify(this.i18n); }
42
+ get dataCustomButtonTitle() { return this.customButton.title; }
43
+ get dataCustomButtonUrl() { return this.customButton.url; }
44
+ get dataWithRecipientsButton() { return this.withRecipientsButton; }
45
+ get dataWithSendButton() { return this.withSendButton; }
46
+ get dataWithDocumentsList() { return this.withDocumentsList; }
47
+ get dataWithFieldsList() { return this.withFieldsList; }
48
+ get dataWithTitle() { return this.withTitle; }
49
+ get dataOnlyDefinedFields() { return this.onlyDefinedFields; }
50
+ get dataWithUploadButton() { return this.withUploadButton; }
51
+ get dataWithSignYourselfButton() { return this.withSignYourselfButton; }
52
+ get dataBackgroundColor() { return this.backgroundColor; }
53
+ get dataCustomCss() { return this.customCss; }
133
54
  ngAfterViewInit() {
134
- const builder = this.el.nativeElement;
135
- Object.entries(this.attributes).forEach(([_, attribute]) => {
136
- if (Array.isArray(attribute)) {
137
- attribute.forEach((attr) => {
138
- builder.setAttribute(attr.name, attr.value());
139
- });
140
- }
141
- else if (attribute) {
142
- builder.setAttribute(attribute.name, attribute.value());
143
- }
144
- });
145
55
  this.loadScript();
146
56
  }
147
- ngOnChanges(changes) {
148
- const builder = this.el.nativeElement;
149
- const attributes = this.attributes;
150
- Object.entries(changes).forEach(([key, change]) => {
151
- const attribute = attributes[key];
152
- if (Array.isArray(attribute)) {
153
- attribute.forEach((attr) => {
154
- builder.setAttribute(attr.name, attr.value());
155
- });
156
- }
157
- else if (attribute) {
158
- builder.setAttribute(attribute.name, change.currentValue);
159
- }
160
- });
161
- }
162
57
  onSendEvent(event) {
163
58
  if (this.onSend) {
164
- this.onSend(event.detail);
59
+ this.onSend.emit(event.detail);
165
60
  }
166
61
  }
167
62
  onLoadEvent(event) {
168
63
  if (this.onLoad) {
169
- this.onLoad(event.detail);
64
+ this.onLoad.emit(event.detail);
170
65
  }
171
66
  }
172
67
  onUploadEvent(event) {
173
68
  if (this.onUpload) {
174
- this.onUpload(event.detail);
69
+ this.onUpload.emit(event.detail);
175
70
  }
176
71
  }
177
72
  onSaveEvent(event) {
178
73
  if (this.onSave) {
179
- this.onSave(event.detail);
74
+ this.onSave.emit(event.detail);
180
75
  }
181
76
  }
182
77
  loadScript() {
@@ -188,15 +83,17 @@ export class DocusealBuilderComponent {
188
83
  script.src = scriptSrc;
189
84
  document.head.appendChild(script);
190
85
  }
191
- static ɵfac = function DocusealBuilderComponent_Factory(t) { return new (t || DocusealBuilderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
192
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DocusealBuilderComponent, selectors: [["docuseal-builder"]], hostBindings: function DocusealBuilderComponent_HostBindings(rf, ctx) { if (rf & 1) {
86
+ static ɵfac = function DocusealBuilderComponent_Factory(t) { return new (t || DocusealBuilderComponent)(); };
87
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DocusealBuilderComponent, selectors: [["docuseal-builder"]], hostVars: 23, hostBindings: function DocusealBuilderComponent_HostBindings(rf, ctx) { if (rf & 1) {
193
88
  i0.ɵɵlistener("send", function DocusealBuilderComponent_send_HostBindingHandler($event) { return ctx.onSendEvent($event); })("load", function DocusealBuilderComponent_load_HostBindingHandler($event) { return ctx.onLoadEvent($event); })("upload", function DocusealBuilderComponent_upload_HostBindingHandler($event) { return ctx.onUploadEvent($event); })("save", function DocusealBuilderComponent_save_HostBindingHandler($event) { return ctx.onSaveEvent($event); });
194
- } }, inputs: { token: "token", host: "host", language: "language", preview: "preview", autosave: "autosave", withRecipientsButton: "withRecipientsButton", withDocumentsList: "withDocumentsList", withFieldsList: "withFieldsList", withSendButton: "withSendButton", withTitle: "withTitle", onlyDefinedFields: "onlyDefinedFields", withSignYourselfButton: "withSignYourselfButton", withUploadButton: "withUploadButton", roles: "roles", fields: "fields", i18n: "i18n", fieldTypes: "fieldTypes", drawFieldType: "drawFieldType", customButton: "customButton", backgroundColor: "backgroundColor", onLoad: "onLoad", onUpload: "onUpload", onSend: "onSend", onSave: "onSave", sendButtonText: "sendButtonText", saveButtonText: "saveButtonText", customCss: "customCss" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], decls: 0, vars: 0, template: function DocusealBuilderComponent_Template(rf, ctx) { }, encapsulation: 2 });
89
+ } if (rf & 2) {
90
+ i0.ɵɵattribute("data-token", ctx.dataToken)("data-preview", ctx.dataPreview)("data-language", ctx.dataLanguage)("data-autosave", ctx.dataAutosave)("data-send-button-text", ctx.dataSendButtonText)("data-save-button-text", ctx.dataSaveButtonText)("data-roles", ctx.dataRoles)("data-field-types", ctx.dataFieldTypes)("data-draw-field-type", ctx.dataDrawFieldType)("data-fields", ctx.dataFields)("data-i18n", ctx.dataI18n)("data-custom-button-title", ctx.dataCustomButtonTitle)("data-custom-button-url", ctx.dataCustomButtonUrl)("data-with-recipients-button", ctx.dataWithRecipientsButton)("data-with-send-button", ctx.dataWithSendButton)("data-with-documents-list", ctx.dataWithDocumentsList)("data-with-fields-list", ctx.dataWithFieldsList)("data-with-title", ctx.dataWithTitle)("data-only-defined-fields", ctx.dataOnlyDefinedFields)("data-with-upload-button", ctx.dataWithUploadButton)("data-with-sign-yourself-button", ctx.dataWithSignYourselfButton)("data-background-color", ctx.dataBackgroundColor)("data-custom-css", ctx.dataCustomCss);
91
+ } }, inputs: { token: "token", host: "host", language: "language", preview: "preview", autosave: "autosave", withRecipientsButton: "withRecipientsButton", withDocumentsList: "withDocumentsList", withFieldsList: "withFieldsList", withSendButton: "withSendButton", withTitle: "withTitle", onlyDefinedFields: "onlyDefinedFields", withSignYourselfButton: "withSignYourselfButton", withUploadButton: "withUploadButton", roles: "roles", fields: "fields", i18n: "i18n", fieldTypes: "fieldTypes", drawFieldType: "drawFieldType", customButton: "customButton", backgroundColor: "backgroundColor", sendButtonText: "sendButtonText", saveButtonText: "saveButtonText", customCss: "customCss" }, outputs: { onLoad: "onLoad", onUpload: "onUpload", onSend: "onSend", onSave: "onSave" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 0, vars: 0, template: function DocusealBuilderComponent_Template(rf, ctx) { }, encapsulation: 2 });
195
92
  }
196
93
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DocusealBuilderComponent, [{
197
94
  type: Component,
198
95
  args: [{ selector: "docuseal-builder", standalone: true, template: "" }]
199
- }], () => [{ type: i0.ElementRef }], { token: [{
96
+ }], null, { token: [{
200
97
  type: Input
201
98
  }], host: [{
202
99
  type: Input
@@ -236,20 +133,89 @@ export class DocusealBuilderComponent {
236
133
  type: Input
237
134
  }], backgroundColor: [{
238
135
  type: Input
239
- }], onLoad: [{
240
- type: Input
241
- }], onUpload: [{
242
- type: Input
243
- }], onSend: [{
244
- type: Input
245
- }], onSave: [{
246
- type: Input
247
136
  }], sendButtonText: [{
248
137
  type: Input
249
138
  }], saveButtonText: [{
250
139
  type: Input
251
140
  }], customCss: [{
252
141
  type: Input
142
+ }], onLoad: [{
143
+ type: Output
144
+ }], onUpload: [{
145
+ type: Output
146
+ }], onSend: [{
147
+ type: Output
148
+ }], onSave: [{
149
+ type: Output
150
+ }], dataToken: [{
151
+ type: HostBinding,
152
+ args: ["attr.data-token"]
153
+ }], dataPreview: [{
154
+ type: HostBinding,
155
+ args: ["attr.data-preview"]
156
+ }], dataLanguage: [{
157
+ type: HostBinding,
158
+ args: ["attr.data-language"]
159
+ }], dataAutosave: [{
160
+ type: HostBinding,
161
+ args: ["attr.data-autosave"]
162
+ }], dataSendButtonText: [{
163
+ type: HostBinding,
164
+ args: ["attr.data-send-button-text"]
165
+ }], dataSaveButtonText: [{
166
+ type: HostBinding,
167
+ args: ["attr.data-save-button-text"]
168
+ }], dataRoles: [{
169
+ type: HostBinding,
170
+ args: ["attr.data-roles"]
171
+ }], dataFieldTypes: [{
172
+ type: HostBinding,
173
+ args: ["attr.data-field-types"]
174
+ }], dataDrawFieldType: [{
175
+ type: HostBinding,
176
+ args: ["attr.data-draw-field-type"]
177
+ }], dataFields: [{
178
+ type: HostBinding,
179
+ args: ["attr.data-fields"]
180
+ }], dataI18n: [{
181
+ type: HostBinding,
182
+ args: ["attr.data-i18n"]
183
+ }], dataCustomButtonTitle: [{
184
+ type: HostBinding,
185
+ args: ["attr.data-custom-button-title"]
186
+ }], dataCustomButtonUrl: [{
187
+ type: HostBinding,
188
+ args: ["attr.data-custom-button-url"]
189
+ }], dataWithRecipientsButton: [{
190
+ type: HostBinding,
191
+ args: ["attr.data-with-recipients-button"]
192
+ }], dataWithSendButton: [{
193
+ type: HostBinding,
194
+ args: ["attr.data-with-send-button"]
195
+ }], dataWithDocumentsList: [{
196
+ type: HostBinding,
197
+ args: ["attr.data-with-documents-list"]
198
+ }], dataWithFieldsList: [{
199
+ type: HostBinding,
200
+ args: ["attr.data-with-fields-list"]
201
+ }], dataWithTitle: [{
202
+ type: HostBinding,
203
+ args: ["attr.data-with-title"]
204
+ }], dataOnlyDefinedFields: [{
205
+ type: HostBinding,
206
+ args: ["attr.data-only-defined-fields"]
207
+ }], dataWithUploadButton: [{
208
+ type: HostBinding,
209
+ args: ["attr.data-with-upload-button"]
210
+ }], dataWithSignYourselfButton: [{
211
+ type: HostBinding,
212
+ args: ["attr.data-with-sign-yourself-button"]
213
+ }], dataBackgroundColor: [{
214
+ type: HostBinding,
215
+ args: ["attr.data-background-color"]
216
+ }], dataCustomCss: [{
217
+ type: HostBinding,
218
+ args: ["attr.data-custom-css"]
253
219
  }], onSendEvent: [{
254
220
  type: HostListener,
255
221
  args: ['send', ['$event']]
@@ -264,4 +230,4 @@ export class DocusealBuilderComponent {
264
230
  args: ['save', ['$event']]
265
231
  }] }); })();
266
232
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DocusealBuilderComponent, { className: "DocusealBuilderComponent" }); })();
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQTs7QUFzQnpGLE1BQU0sT0FBTyx3QkFBd0I7SUE2QmY7SUE1QlgsS0FBSyxHQUFXLEVBQUUsQ0FBQTtJQUNsQixJQUFJLEdBQVcsaUJBQWlCLENBQUE7SUFDaEMsUUFBUSxHQUFXLElBQUksQ0FBQTtJQUN2QixPQUFPLEdBQVksS0FBSyxDQUFBO0lBQ3hCLFFBQVEsR0FBWSxJQUFJLENBQUE7SUFDeEIsb0JBQW9CLEdBQVksSUFBSSxDQUFBO0lBQ3BDLGlCQUFpQixHQUFZLElBQUksQ0FBQTtJQUNqQyxjQUFjLEdBQVksSUFBSSxDQUFBO0lBQzlCLGNBQWMsR0FBWSxJQUFJLENBQUE7SUFDOUIsU0FBUyxHQUFZLElBQUksQ0FBQTtJQUN6QixpQkFBaUIsR0FBWSxLQUFLLENBQUE7SUFDbEMsc0JBQXNCLEdBQVksSUFBSSxDQUFBO0lBQ3RDLGdCQUFnQixHQUFZLElBQUksQ0FBQTtJQUNoQyxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQ3BCLE1BQU0sR0FBb0IsRUFBRSxDQUFBO0lBQzVCLElBQUksR0FBVyxFQUFFLENBQUE7SUFDakIsVUFBVSxHQUFhLEVBQUUsQ0FBQTtJQUN6QixhQUFhLEdBQVcsTUFBTSxDQUFBO0lBQzlCLFlBQVksR0FBbUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNyRSxlQUFlLEdBQVcsRUFBRSxDQUFBO0lBQzVCLE1BQU0sR0FBMEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQ3hDLFFBQVEsR0FBMEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sR0FBMEIsR0FBRyxF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QUFFLENBQUMsUUFBUSxDQUFDOztrRkF4THJCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW50ZXJmYWNlIERvY3VzZWFsRmllbGQge1xuICBuYW1lOiBzdHJpbmcsXG4gIHR5cGU/OiBzdHJpbmcsXG4gIHJvbGU/OiBzdHJpbmcsXG4gIGRlZmF1bHRfdmFsdWU/OiBzdHJpbmcsXG59XG5cbmludGVyZmFjZSBBZnRlclZpZXdJbml0IHtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWRcbn1cbmludGVyZmFjZSBPbkNoYW5nZXMge1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZFxufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImRvY3VzZWFsLWJ1aWxkZXJcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IFwiXCIsXG4gIHN0eWxlczogW11cbn0pXG5cbmV4cG9ydCBjbGFzcyBEb2N1c2VhbEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB0b2tlbjogc3RyaW5nID0gXCJcIlxuICBASW5wdXQoKSBob3N0OiBzdHJpbmcgPSBcImNkbi5kb2N1c2VhbC5jb1wiXG4gIEBJbnB1dCgpIGxhbmd1YWdlOiBzdHJpbmcgPSBcImVuXCJcbiAgQElucHV0KCkgcHJldmlldzogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIGF1dG9zYXZlOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoUmVjaXBpZW50c0J1dHRvbjogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aERvY3VtZW50c0xpc3Q6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhGaWVsZHNMaXN0OiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoU2VuZEJ1dHRvbjogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aFRpdGxlOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSBvbmx5RGVmaW5lZEZpZWxkczogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIHdpdGhTaWduWW91cnNlbGZCdXR0b246IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHJvbGVzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIGZpZWxkczogRG9jdXNlYWxGaWVsZFtdID0gW11cbiAgQElucHV0KCkgaTE4bjogb2JqZWN0ID0ge31cbiAgQElucHV0KCkgZmllbGRUeXBlczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBkcmF3RmllbGRUeXBlOiBzdHJpbmcgPSBcInRleHRcIlxuICBASW5wdXQoKSBjdXN0b21CdXR0b246IHsgdGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmcgfSA9IHsgdGl0bGU6IFwiXCIsIHVybDogXCJcIiB9XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvcjogc3RyaW5nID0gXCJcIlxuICBASW5wdXQoKSBvbkxvYWQ6IChkZXRhaWw6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9XG4gIEBJbnB1dCgpIG9uVXBsb2FkOiAoZGV0YWlsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fVxuICBASW5wdXQoKSBvblNlbmQ6IChkZXRhaWw6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9XG4gIEBJbnB1dCgpIG9uU2F2ZTogKGRldGFpbDogYW55KSA9PiB2b2lkID0gKCkgPT4ge31cbiAgQElucHV0KCkgc2VuZEJ1dHRvblRleHQ6IHN0cmluZyA9IFwiXCJcbiAgQElucHV0KCkgc2F2ZUJ1dHRvblRleHQ6IHN0cmluZyA9IFwiXCJcbiAgQElucHV0KCkgY3VzdG9tQ3NzOiBzdHJpbmcgPSBcIlwiXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBnZXQgYXR0cmlidXRlcyAoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNyYzoge1xuICAgICAgICBuYW1lOiBcImRhdGEtdG9rZW5cIixcbiAgICAgICAgdmFsdWU6ICgpID0+IHRoaXMudG9rZW5cbiAgICAgIH0sXG4gICAgICBwcmV2aWV3OiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS1wcmV2aWV3XCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLnByZXZpZXdcbiAgICAgIH0sXG4gICAgICBsYW5ndWFnZToge1xuICAgICAgICBuYW1lOiBcImRhdGEtbGFuZ3VhZ2VcIixcbiAgICAgICAgdmFsdWU6ICgpID0+IHRoaXMubGFuZ3VhZ2VcbiAgICAgIH0sXG4gICAgICBhdXRvc2F2ZToge1xuICAgICAgICBuYW1lOiBcImRhdGEtYXV0b3NhdmVcIixcbiAgICAgICAgdmFsdWU6ICgpID0+IHRoaXMuYXV0b3NhdmVcbiAgICAgIH0sXG4gICAgICBzZW5kQnV0dG9uVGV4dDoge1xuICAgICAgICBuYW1lOiBcImRhdGEtc2VuZC1idXR0b24tdGV4dFwiLFxuICAgICAgICB2YWx1ZTogKCkgPT4gdGhpcy5zZW5kQnV0dG9uVGV4dFxuICAgICAgfSxcbiAgICAgIHNhdmVCdXR0b25UZXh0OiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS1zYXZlLWJ1dHRvbi10ZXh0XCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLnNhdmVCdXR0b25UZXh0XG4gICAgICB9LFxuICAgICAgcm9sZXM6IHtcbiAgICAgICAgbmFtZTogXCJkYXRhLXJvbGVzXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLnJvbGVzLmpvaW4oJywnKVxuICAgICAgfSxcbiAgICAgIGZpZWxkVHlwZXM6IHtcbiAgICAgICAgbmFtZTogXCJkYXRhLWZpZWxkLXR5cGVzXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLmZpZWxkVHlwZXMuam9pbignLCcpXG4gICAgICB9LFxuICAgICAgZHJhd0ZpZWxkVHlwZToge1xuICAgICAgICBuYW1lOiBcImRhdGEtZHJhdy1maWVsZC10eXBlXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLmRyYXdGaWVsZFR5cGVcbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgbmFtZTogXCJkYXRhLWZpZWxkc1wiLFxuICAgICAgICB2YWx1ZTogKCkgPT4gSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZHMpXG4gICAgICB9LFxuICAgICAgaTE4bjoge1xuICAgICAgICBuYW1lOiBcImRhdGEtaTE4blwiLFxuICAgICAgICB2YWx1ZTogKCkgPT4gSlNPTi5zdHJpbmdpZnkodGhpcy5pMThuKVxuICAgICAgfSxcbiAgICAgIGN1c3RvbUJ1dHRvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJkYXRhLWN1c3RvbS1idXR0b24tdGl0bGVcIixcbiAgICAgICAgICB2YWx1ZTogKCkgPT4gdGhpcy5jdXN0b21CdXR0b24udGl0bGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiZGF0YS1jdXN0b20tYnV0dG9uLXVybFwiLFxuICAgICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLmN1c3RvbUJ1dHRvbi51cmxcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHdpdGhSZWNpcGllbnRzQnV0dG9uOiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS13aXRoLXJlY2lwaWVudHMtYnV0dG9uXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLndpdGhSZWNpcGllbnRzQnV0dG9uXG4gICAgICB9LFxuICAgICAgd2l0aFNlbmRCdXR0b246IHtcbiAgICAgICAgbmFtZTogXCJkYXRhLXdpdGgtc2VuZC1idXR0b25cIixcbiAgICAgICAgdmFsdWU6ICgpID0+IHRoaXMud2l0aFNlbmRCdXR0b25cbiAgICAgIH0sXG4gICAgICB3aXRoRG9jdW1lbnRzTGlzdDoge1xuICAgICAgICBuYW1lOiBcImRhdGEtd2l0aC1kb2N1bWVudHMtbGlzdFwiLFxuICAgICAgICB2YWx1ZTogKCkgPT4gdGhpcy53aXRoRG9jdW1lbnRzTGlzdFxuICAgICAgfSxcbiAgICAgIHdpdGhGaWVsZHNMaXN0OiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS13aXRoLWZpZWxkcy1saXN0XCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLndpdGhGaWVsZHNMaXN0XG4gICAgICB9LFxuICAgICAgd2l0aFRpdGxlOiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS13aXRoLXRpdGxlXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLndpdGhUaXRsZVxuICAgICAgfSxcbiAgICAgIG9ubHlEZWZpbmVkRmllbGRzOiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS1vbmx5LWRlZmluZWQtZmllbGRzXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLm9ubHlEZWZpbmVkRmllbGRzXG4gICAgICB9LFxuICAgICAgd2l0aFVwbG9hZEJ1dHRvbjoge1xuICAgICAgICBuYW1lOiBcImRhdGEtd2l0aC11cGxvYWQtYnV0dG9uXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLndpdGhVcGxvYWRCdXR0b25cbiAgICAgIH0sXG4gICAgICB3aXRoU2lnbllvdXJzZWxmQnV0dG9uOiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS13aXRoLXNpZ24teW91cnNlbGYtYnV0dG9uXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLndpdGhTaWduWW91cnNlbGZCdXR0b25cbiAgICAgIH0sXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHtcbiAgICAgICAgbmFtZTogXCJkYXRhLWJhY2tncm91bmQtY29sb3JcIixcbiAgICAgICAgdmFsdWU6ICgpID0+IHRoaXMuYmFja2dyb3VuZENvbG9yXG4gICAgICB9LFxuICAgICAgY3VzdG9tQ3NzOiB7XG4gICAgICAgIG5hbWU6IFwiZGF0YS1jdXN0b20tY3NzXCIsXG4gICAgICAgIHZhbHVlOiAoKSA9PiB0aGlzLmN1c3RvbUNzc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBidWlsZGVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5hdHRyaWJ1dGVzKS5mb3JFYWNoKChbXywgYXR0cmlidXRlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0cmlidXRlKSkge1xuICAgICAgICBhdHRyaWJ1dGUuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIuc2V0QXR0cmlidXRlKGF0dHIubmFtZSwgYXR0ci52YWx1ZSgpKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgYnVpbGRlci5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUsIGF0dHJpYnV0ZS52YWx1ZSgpKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmxvYWRTY3JpcHQoKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlc1xuXG4gICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlcykuZm9yRWFjaCgoW2tleSwgY2hhbmdlXSkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1trZXldXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgYXR0cmlidXRlLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICBidWlsZGVyLnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUoKSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGJ1aWxkZXIuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lLCBjaGFuZ2UuY3VycmVudFZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzZW5kJywgWyckZXZlbnQnXSlcbiAgb25TZW5kRXZlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TZW5kKSB7XG4gICAgICB0aGlzLm9uU2VuZChldmVudC5kZXRhaWwpXG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbG9hZCcsIFsnJGV2ZW50J10pXG4gIG9uTG9hZEV2ZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uTG9hZCkge1xuICAgICAgdGhpcy5vbkxvYWQoZXZlbnQuZGV0YWlsKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3VwbG9hZCcsIFsnJGV2ZW50J10pXG4gIG9uVXBsb2FkRXZlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25VcGxvYWQpIHtcbiAgICAgIHRoaXMub25VcGxvYWQoZXZlbnQuZGV0YWlsKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3NhdmUnLCBbJyRldmVudCddKVxuICBvblNhdmVFdmVudChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vblNhdmUpIHtcbiAgICAgIHRoaXMub25TYXZlKGV2ZW50LmRldGFpbClcbiAgICB9XG4gIH1cblxuICBsb2FkU2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcmlwdElkID0gJ2RvY3VzZWFsLWJ1aWxkZXItc2NyaXB0J1xuICAgIGNvbnN0IHNjcmlwdFNyYyA9IGBodHRwczovLyR7dGhpcy5ob3N0fS9qcy9idWlsZGVyLmpzYFxuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIilcblxuICAgIHNjcmlwdC5pZCA9IHNjcmlwdElkXG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZVxuICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRTcmNcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICB9XG59XG4iXX0=
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQW9CakcsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixLQUFLLEdBQVcsRUFBRSxDQUFBO0lBQ2xCLElBQUksR0FBVyxpQkFBaUIsQ0FBQTtJQUNoQyxRQUFRLEdBQVcsSUFBSSxDQUFBO0lBQ3ZCLE9BQU8sR0FBWSxLQUFLLENBQUE7SUFDeEIsUUFBUSxHQUFZLElBQUksQ0FBQTtJQUN4QixvQkFBb0IsR0FBWSxJQUFJLENBQUE7SUFDcEMsaUJBQWlCLEdBQVksSUFBSSxDQUFBO0lBQ2pDLGNBQWMsR0FBWSxJQUFJLENBQUE7SUFDOUIsY0FBYyxHQUFZLElBQUksQ0FBQTtJQUM5QixTQUFTLEdBQVksSUFBSSxDQUFBO0lBQ3pCLGlCQUFpQixHQUFZLEtBQUssQ0FBQTtJQUNsQyxzQkFBc0IsR0FBWSxJQUFJLENBQUE7SUFDdEMsZ0JBQWdCLEdBQVksSUFBSSxDQUFBO0lBQ2hDLEtBQUssR0FBYSxFQUFFLENBQUE7SUFDcEIsTUFBTSxHQUFvQixFQUFFLENBQUE7SUFDNUIsSUFBSSxHQUFXLEVBQUUsQ0FBQTtJQUNqQixVQUFVLEdBQWEsRUFBRSxDQUFBO0lBQ3pCLGFBQWEsR0FBVyxNQUFNLENBQUE7SUFDOUIsWUFBWSxHQUFtQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ3JFLGVBQWUsR0FBVyxFQUFFLENBQUE7SUFDNUIsY0FBYyxHQUFXLEVBQUUsQ0FBQTtJQUMzQixjQUFjLEdBQVcsRUFBRSxDQUFBO0lBQzNCLFNBQVMsR0FBVyxFQUFFLENBQUE7SUFFckIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDaEMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDbEMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDaEMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFFMUMsSUFBb0MsU0FBUyxLQUFhLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFDN0UsSUFBc0MsV0FBVyxLQUFjLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUM7SUFDcEYsSUFBdUMsWUFBWSxLQUFhLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFDdEYsSUFBdUMsWUFBWSxLQUFjLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFDdkYsSUFBK0Msa0JBQWtCLEtBQWEsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFBLENBQUMsQ0FBQztJQUMxRyxJQUErQyxrQkFBa0IsS0FBYSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFDO0lBQzFHLElBQW9DLFNBQVMsS0FBYSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN2RixJQUEwQyxjQUFjLEtBQWEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkcsSUFBOEMsaUJBQWlCLEtBQWEsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBLENBQUMsQ0FBQztJQUN2RyxJQUFxQyxVQUFVLEtBQWEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDaEcsSUFBbUMsUUFBUSxLQUFhLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzFGLElBQWtELHFCQUFxQixLQUFhLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3BILElBQWdELG1CQUFtQixLQUFhLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFDO0lBQzlHLElBQXFELHdCQUF3QixLQUFjLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFBLENBQUMsQ0FBQztJQUM3SCxJQUErQyxrQkFBa0IsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFDO0lBQzNHLElBQWtELHFCQUFxQixLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBLENBQUMsQ0FBQztJQUNwSCxJQUErQyxrQkFBa0IsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFDO0lBQzNHLElBQXlDLGFBQWEsS0FBYyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUEsQ0FBQyxDQUFDO0lBQzNGLElBQWtELHFCQUFxQixLQUFjLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBLENBQUMsQ0FBQztJQUNwSCxJQUFpRCxvQkFBb0IsS0FBYyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFDLENBQUM7SUFDakgsSUFBd0QsMEJBQTBCLEtBQWMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUEsQ0FBQyxDQUFDO0lBQ3BJLElBQStDLG1CQUFtQixLQUFhLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQSxDQUFDLENBQUM7SUFDNUcsSUFBeUMsYUFBYSxLQUFhLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUM7SUFFMUYsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWtCO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUdELFdBQVcsQ0FBQyxLQUFrQjtRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFHRCxhQUFhLENBQUMsS0FBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLEtBQWtCO1FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLFFBQVEsR0FBRyx5QkFBeUIsQ0FBQTtRQUMxQyxNQUFNLFNBQVMsR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFBO1FBQ3RELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFL0MsTUFBTSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUE7UUFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7UUFDbkIsTUFBTSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUE7UUFFdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkMsQ0FBQztrRkFoR1Usd0JBQXdCOzZEQUF4Qix3QkFBd0I7WUFBeEIsaUdBQUEsdUJBQW1CLElBQUssb0ZBQXhCLHVCQUFtQixJQUFLLHdGQUF4Qix5QkFBcUIsSUFBRyxvRkFBeEIsdUJBQW1CLElBQUs7Ozs7O2lGQUF4Qix3QkFBd0I7Y0FQcEMsU0FBUzsyQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxZQUNOLEVBQUU7Z0JBS0gsS0FBSztrQkFBYixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxvQkFBb0I7a0JBQTVCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxzQkFBc0I7a0JBQTlCLEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxLQUFLO2tCQUFiLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBRUksTUFBTTtrQkFBZixNQUFNO1lBQ0csUUFBUTtrQkFBakIsTUFBTTtZQUNHLE1BQU07a0JBQWYsTUFBTTtZQUNHLE1BQU07a0JBQWYsTUFBTTtZQUU2QixTQUFTO2tCQUE1QyxXQUFXO21CQUFDLGlCQUFpQjtZQUNRLFdBQVc7a0JBQWhELFdBQVc7bUJBQUMsbUJBQW1CO1lBQ08sWUFBWTtrQkFBbEQsV0FBVzttQkFBQyxvQkFBb0I7WUFDTSxZQUFZO2tCQUFsRCxXQUFXO21CQUFDLG9CQUFvQjtZQUNjLGtCQUFrQjtrQkFBaEUsV0FBVzttQkFBQyw0QkFBNEI7WUFDTSxrQkFBa0I7a0JBQWhFLFdBQVc7bUJBQUMsNEJBQTRCO1lBQ0wsU0FBUztrQkFBNUMsV0FBVzttQkFBQyxpQkFBaUI7WUFDWSxjQUFjO2tCQUF2RCxXQUFXO21CQUFDLHVCQUF1QjtZQUNVLGlCQUFpQjtrQkFBOUQsV0FBVzttQkFBQywyQkFBMkI7WUFDSCxVQUFVO2tCQUE5QyxXQUFXO21CQUFDLGtCQUFrQjtZQUNJLFFBQVE7a0JBQTFDLFdBQVc7bUJBQUMsZ0JBQWdCO1lBQ3FCLHFCQUFxQjtrQkFBdEUsV0FBVzttQkFBQywrQkFBK0I7WUFDSSxtQkFBbUI7a0JBQWxFLFdBQVc7bUJBQUMsNkJBQTZCO1lBQ1csd0JBQXdCO2tCQUE1RSxXQUFXO21CQUFDLGtDQUFrQztZQUNBLGtCQUFrQjtrQkFBaEUsV0FBVzttQkFBQyw0QkFBNEI7WUFDUyxxQkFBcUI7a0JBQXRFLFdBQVc7bUJBQUMsK0JBQStCO1lBQ0csa0JBQWtCO2tCQUFoRSxXQUFXO21CQUFDLDRCQUE0QjtZQUNBLGFBQWE7a0JBQXJELFdBQVc7bUJBQUMsc0JBQXNCO1lBQ2UscUJBQXFCO2tCQUF0RSxXQUFXO21CQUFDLCtCQUErQjtZQUNLLG9CQUFvQjtrQkFBcEUsV0FBVzttQkFBQyw4QkFBOEI7WUFDYSwwQkFBMEI7a0JBQWpGLFdBQVc7bUJBQUMscUNBQXFDO1lBQ0gsbUJBQW1CO2tCQUFqRSxXQUFXO21CQUFDLDRCQUE0QjtZQUNBLGFBQWE7a0JBQXJELFdBQVc7bUJBQUMsc0JBQXNCO1lBT25DLFdBQVc7a0JBRFYsWUFBWTttQkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFRaEMsV0FBVztrQkFEVixZQUFZO21CQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztZQVFoQyxhQUFhO2tCQURaLFlBQVk7bUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBUWxDLFdBQVc7a0JBRFYsWUFBWTttQkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQS9FckIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZywgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmludGVyZmFjZSBEb2N1c2VhbEZpZWxkIHtcbiAgbmFtZTogc3RyaW5nLFxuICB0eXBlPzogc3RyaW5nLFxuICByb2xlPzogc3RyaW5nLFxuICBkZWZhdWx0X3ZhbHVlPzogc3RyaW5nLFxufVxuXG5pbnRlcmZhY2UgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJkb2N1c2VhbC1idWlsZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZXM6IFtdXG59KVxuXG5leHBvcnQgY2xhc3MgRG9jdXNlYWxCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRva2VuOiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIGhvc3Q6IHN0cmluZyA9IFwiY2RuLmRvY3VzZWFsLmNvXCJcbiAgQElucHV0KCkgbGFuZ3VhZ2U6IHN0cmluZyA9IFwiZW5cIlxuICBASW5wdXQoKSBwcmV2aWV3OiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgYXV0b3NhdmU6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhSZWNpcGllbnRzQnV0dG9uOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoRG9jdW1lbnRzTGlzdDogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aEZpZWxkc0xpc3Q6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhTZW5kQnV0dG9uOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoVGl0bGU6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIG9ubHlEZWZpbmVkRmllbGRzOiBib29sZWFuID0gZmFsc2VcbiAgQElucHV0KCkgd2l0aFNpZ25Zb3Vyc2VsZkJ1dHRvbjogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aFVwbG9hZEJ1dHRvbjogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgcm9sZXM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgZmllbGRzOiBEb2N1c2VhbEZpZWxkW10gPSBbXVxuICBASW5wdXQoKSBpMThuOiBvYmplY3QgPSB7fVxuICBASW5wdXQoKSBmaWVsZFR5cGVzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIGRyYXdGaWVsZFR5cGU6IHN0cmluZyA9IFwidGV4dFwiXG4gIEBJbnB1dCgpIGN1c3RvbUJ1dHRvbjogeyB0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZyB9ID0geyB0aXRsZTogXCJcIiwgdXJsOiBcIlwiIH1cbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIHNlbmRCdXR0b25UZXh0OiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIHNhdmVCdXR0b25UZXh0OiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIGN1c3RvbUNzczogc3RyaW5nID0gXCJcIlxuXG4gIEBPdXRwdXQoKSBvbkxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgb25VcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuICBAT3V0cHV0KCkgb25TZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXG5cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXRva2VuXCIpIGdldCBkYXRhVG9rZW4oKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMudG9rZW4gfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtcHJldmlld1wiKSBnZXQgZGF0YVByZXZpZXcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLnByZXZpZXcgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtbGFuZ3VhZ2VcIikgZ2V0IGRhdGFMYW5ndWFnZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5sYW5ndWFnZSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1hdXRvc2F2ZVwiKSBnZXQgZGF0YUF1dG9zYXZlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5hdXRvc2F2ZSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1zZW5kLWJ1dHRvbi10ZXh0XCIpIGdldCBkYXRhU2VuZEJ1dHRvblRleHQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuc2VuZEJ1dHRvblRleHQgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtc2F2ZS1idXR0b24tdGV4dFwiKSBnZXQgZGF0YVNhdmVCdXR0b25UZXh0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnNhdmVCdXR0b25UZXh0IH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXJvbGVzXCIpIGdldCBkYXRhUm9sZXMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucm9sZXMuam9pbignLCcpIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLWZpZWxkLXR5cGVzXCIpIGdldCBkYXRhRmllbGRUeXBlcygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5maWVsZFR5cGVzLmpvaW4oJywnKSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1kcmF3LWZpZWxkLXR5cGVcIikgZ2V0IGRhdGFEcmF3RmllbGRUeXBlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmRyYXdGaWVsZFR5cGUgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtZmllbGRzXCIpIGdldCBkYXRhRmllbGRzKCk6IHN0cmluZyB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkcykgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtaTE4blwiKSBnZXQgZGF0YUkxOG4oKTogc3RyaW5nIHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaTE4bikgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtY3VzdG9tLWJ1dHRvbi10aXRsZVwiKSBnZXQgZGF0YUN1c3RvbUJ1dHRvblRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmN1c3RvbUJ1dHRvbi50aXRsZSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1jdXN0b20tYnV0dG9uLXVybFwiKSBnZXQgZGF0YUN1c3RvbUJ1dHRvblVybCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jdXN0b21CdXR0b24udXJsIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXdpdGgtcmVjaXBpZW50cy1idXR0b25cIikgZ2V0IGRhdGFXaXRoUmVjaXBpZW50c0J1dHRvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aFJlY2lwaWVudHNCdXR0b24gfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtd2l0aC1zZW5kLWJ1dHRvblwiKSBnZXQgZGF0YVdpdGhTZW5kQnV0dG9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy53aXRoU2VuZEJ1dHRvbiB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS13aXRoLWRvY3VtZW50cy1saXN0XCIpIGdldCBkYXRhV2l0aERvY3VtZW50c0xpc3QoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhEb2N1bWVudHNMaXN0IH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXdpdGgtZmllbGRzLWxpc3RcIikgZ2V0IGRhdGFXaXRoRmllbGRzTGlzdCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aEZpZWxkc0xpc3QgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtd2l0aC10aXRsZVwiKSBnZXQgZGF0YVdpdGhUaXRsZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aFRpdGxlIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLW9ubHktZGVmaW5lZC1maWVsZHNcIikgZ2V0IGRhdGFPbmx5RGVmaW5lZEZpZWxkcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMub25seURlZmluZWRGaWVsZHMgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtd2l0aC11cGxvYWQtYnV0dG9uXCIpIGdldCBkYXRhV2l0aFVwbG9hZEJ1dHRvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aFVwbG9hZEJ1dHRvbiB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS13aXRoLXNpZ24teW91cnNlbGYtYnV0dG9uXCIpIGdldCBkYXRhV2l0aFNpZ25Zb3Vyc2VsZkJ1dHRvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aFNpZ25Zb3Vyc2VsZkJ1dHRvbiB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1iYWNrZ3JvdW5kLWNvbG9yXCIpIGdldCBkYXRhQmFja2dyb3VuZENvbG9yKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmJhY2tncm91bmRDb2xvciB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1jdXN0b20tY3NzXCIpIGdldCBkYXRhQ3VzdG9tQ3NzKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmN1c3RvbUNzcyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZFNjcmlwdCgpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzZW5kJywgWyckZXZlbnQnXSlcbiAgb25TZW5kRXZlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TZW5kKSB7XG4gICAgICB0aGlzLm9uU2VuZC5lbWl0KGV2ZW50LmRldGFpbClcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdsb2FkJywgWyckZXZlbnQnXSlcbiAgb25Mb2FkRXZlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25Mb2FkKSB7XG4gICAgICB0aGlzLm9uTG9hZC5lbWl0KGV2ZW50LmRldGFpbClcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd1cGxvYWQnLCBbJyRldmVudCddKVxuICBvblVwbG9hZEV2ZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uVXBsb2FkKSB7XG4gICAgICB0aGlzLm9uVXBsb2FkLmVtaXQoZXZlbnQuZGV0YWlsKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3NhdmUnLCBbJyRldmVudCddKVxuICBvblNhdmVFdmVudChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vblNhdmUpIHtcbiAgICAgIHRoaXMub25TYXZlLmVtaXQoZXZlbnQuZGV0YWlsKVxuICAgIH1cbiAgfVxuXG4gIGxvYWRTY3JpcHQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2NyaXB0SWQgPSAnZG9jdXNlYWwtYnVpbGRlci1zY3JpcHQnXG4gICAgY29uc3Qgc2NyaXB0U3JjID0gYGh0dHBzOi8vJHt0aGlzLmhvc3R9L2pzL2J1aWxkZXIuanNgXG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKVxuXG4gICAgc2NyaXB0LmlkID0gc2NyaXB0SWRcbiAgICBzY3JpcHQuYXN5bmMgPSB0cnVlXG4gICAgc2NyaXB0LnNyYyA9IHNjcmlwdFNyY1xuXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpXG4gIH1cbn1cbiJdfQ==