@docuseal/angular 1.0.1 → 1.0.2

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.
@@ -1,4 +1,3 @@
1
- import { ElementRef, SimpleChanges } from "@angular/core";
2
1
  import * as i0 from "@angular/core";
3
2
  interface DocusealField {
4
3
  name: string;
@@ -9,11 +8,7 @@ interface DocusealField {
9
8
  interface AfterViewInit {
10
9
  ngAfterViewInit(): void;
11
10
  }
12
- interface OnChanges {
13
- ngOnChanges(changes: SimpleChanges): void;
14
- }
15
- export declare class DocusealBuilderComponent implements AfterViewInit, OnChanges {
16
- private el;
11
+ export declare class DocusealBuilderComponent implements AfterViewInit {
17
12
  token: string;
18
13
  host: string;
19
14
  language: string;
@@ -44,12 +39,30 @@ export declare class DocusealBuilderComponent implements AfterViewInit, OnChange
44
39
  sendButtonText: string;
45
40
  saveButtonText: string;
46
41
  customCss: string;
47
- constructor(el: ElementRef);
48
- get attributes(): {
49
- [key: string]: any;
50
- };
42
+ get dataToken(): string;
43
+ get dataPreview(): boolean;
44
+ get dataLanguage(): string;
45
+ get dataAutosave(): boolean;
46
+ get dataSendButtonText(): string;
47
+ get dataSaveButtonText(): string;
48
+ get dataRoles(): string;
49
+ get dataFieldTypes(): string;
50
+ get dataDrawFieldType(): string;
51
+ get dataFields(): string;
52
+ get dataI18n(): string;
53
+ get dataCustomButtonTitle(): string;
54
+ get dataCustomButtonUrl(): string;
55
+ get dataWithRecipientsButton(): boolean;
56
+ get dataWithSendButton(): boolean;
57
+ get dataWithDocumentsList(): boolean;
58
+ get dataWithFieldsList(): boolean;
59
+ get dataWithTitle(): boolean;
60
+ get dataOnlyDefinedFields(): boolean;
61
+ get dataWithUploadButton(): boolean;
62
+ get dataWithSignYourselfButton(): boolean;
63
+ get dataBackgroundColor(): string;
64
+ get dataCustomCss(): string;
51
65
  ngAfterViewInit(): void;
52
- ngOnChanges(changes: SimpleChanges): void;
53
66
  onSendEvent(event: CustomEvent): void;
54
67
  onLoadEvent(event: CustomEvent): void;
55
68
  onUploadEvent(event: CustomEvent): void;
@@ -1,7 +1,6 @@
1
- import { Component, Input, HostListener } from "@angular/core";
1
+ import { Component, Input, HostListener, HostBinding } 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";
@@ -29,136 +28,32 @@ export class DocusealBuilderComponent {
29
28
  sendButtonText = "";
30
29
  saveButtonText = "";
31
30
  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
- }
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
59
  this.onSend(event.detail);
@@ -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", onLoad: "onLoad", onUpload: "onUpload", onSend: "onSend", onSave: "onSave", sendButtonText: "sendButtonText", saveButtonText: "saveButtonText", customCss: "customCss" }, 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
@@ -250,6 +147,75 @@ export class DocusealBuilderComponent {
250
147
  type: Input
251
148
  }], customCss: [{
252
149
  type: Input
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFvQjNFLE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsS0FBSyxHQUFXLEVBQUUsQ0FBQTtJQUNsQixJQUFJLEdBQVcsaUJBQWlCLENBQUE7SUFDaEMsUUFBUSxHQUFXLElBQUksQ0FBQTtJQUN2QixPQUFPLEdBQVksS0FBSyxDQUFBO0lBQ3hCLFFBQVEsR0FBWSxJQUFJLENBQUE7SUFDeEIsb0JBQW9CLEdBQVksSUFBSSxDQUFBO0lBQ3BDLGlCQUFpQixHQUFZLElBQUksQ0FBQTtJQUNqQyxjQUFjLEdBQVksSUFBSSxDQUFBO0lBQzlCLGNBQWMsR0FBWSxJQUFJLENBQUE7SUFDOUIsU0FBUyxHQUFZLElBQUksQ0FBQTtJQUN6QixpQkFBaUIsR0FBWSxLQUFLLENBQUE7SUFDbEMsc0JBQXNCLEdBQVksSUFBSSxDQUFBO0lBQ3RDLGdCQUFnQixHQUFZLElBQUksQ0FBQTtJQUNoQyxLQUFLLEdBQWEsRUFBRSxDQUFBO0lBQ3BCLE1BQU0sR0FBb0IsRUFBRSxDQUFBO0lBQzVCLElBQUksR0FBVyxFQUFFLENBQUE7SUFDakIsVUFBVSxHQUFhLEVBQUUsQ0FBQTtJQUN6QixhQUFhLEdBQVcsTUFBTSxDQUFBO0lBQzlCLFlBQVksR0FBbUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNyRSxlQUFlLEdBQVcsRUFBRSxDQUFBO0lBQzVCLE1BQU0sR0FBMEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQ3hDLFFBQVEsR0FBMEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sR0FBMEIsR0FB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QUE5QyxXQUFXO21CQUFDLGtCQUFrQjtZQUNJLFFBQVE7a0JBQTFDLFdBQVc7bUJBQUMsZ0JBQWdCO1lBQ3FCLHFCQUFxQjtrQkFBdEUsV0FBVzttQkFBQywrQkFBK0I7WUFDSSxtQkFBbUI7a0JBQWxFLFdBQVc7bUJBQUMsNkJBQTZCO1lBQ1csd0JBQXdCO2tCQUE1RSxXQUFXO21CQUFDLGtDQUFrQztZQUNBLGtCQUFrQjtrQkFBaEUsV0FBVzttQkFBQyw0QkFBNEI7WUFDUyxxQkFBcUI7a0JBQXRFLFdBQVc7bUJBQUMsK0JBQStCO1lBQ0csa0JBQWtCO2tCQUFoRSxXQUFXO21CQUFDLDRCQUE0QjtZQUNBLGFBQWE7a0JBQXJELFdBQVc7bUJBQUMsc0JBQXNCO1lBQ2UscUJBQXFCO2tCQUF0RSxXQUFXO21CQUFDLCtCQUErQjtZQUNLLG9CQUFvQjtrQkFBcEUsV0FBVzttQkFBQyw4QkFBOEI7WUFDYSwwQkFBMEI7a0JBQWpGLFdBQVc7bUJBQUMscUNBQXFDO1lBQ0gsbUJBQW1CO2tCQUFqRSxXQUFXO21CQUFDLDRCQUE0QjtZQUNBLGFBQWE7a0JBQXJELFdBQVc7bUJBQUMsc0JBQXNCO1lBT25DLFdBQVc7a0JBRFYsWUFBWTttQkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFRaEMsV0FBVztrQkFEVixZQUFZO21CQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztZQVFoQyxhQUFhO2tCQURaLFlBQVk7bUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBUWxDLFdBQVc7a0JBRFYsWUFBWTttQkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQTlFckIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW50ZXJmYWNlIERvY3VzZWFsRmllbGQge1xuICBuYW1lOiBzdHJpbmcsXG4gIHR5cGU/OiBzdHJpbmcsXG4gIHJvbGU/OiBzdHJpbmcsXG4gIGRlZmF1bHRfdmFsdWU/OiBzdHJpbmcsXG59XG5cbmludGVyZmFjZSBBZnRlclZpZXdJbml0IHtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWRcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImRvY3VzZWFsLWJ1aWxkZXJcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IFwiXCIsXG4gIHN0eWxlczogW11cbn0pXG5cbmV4cG9ydCBjbGFzcyBEb2N1c2VhbEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdG9rZW46IHN0cmluZyA9IFwiXCJcbiAgQElucHV0KCkgaG9zdDogc3RyaW5nID0gXCJjZG4uZG9jdXNlYWwuY29cIlxuICBASW5wdXQoKSBsYW5ndWFnZTogc3RyaW5nID0gXCJlblwiXG4gIEBJbnB1dCgpIHByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSBhdXRvc2F2ZTogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aFJlY2lwaWVudHNCdXR0b246IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhEb2N1bWVudHNMaXN0OiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoRmllbGRzTGlzdDogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgd2l0aFNlbmRCdXR0b246IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIHdpdGhUaXRsZTogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KCkgb25seURlZmluZWRGaWVsZHM6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSB3aXRoU2lnbllvdXJzZWxmQnV0dG9uOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSB3aXRoVXBsb2FkQnV0dG9uOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKSByb2xlczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBmaWVsZHM6IERvY3VzZWFsRmllbGRbXSA9IFtdXG4gIEBJbnB1dCgpIGkxOG46IG9iamVjdCA9IHt9XG4gIEBJbnB1dCgpIGZpZWxkVHlwZXM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgZHJhd0ZpZWxkVHlwZTogc3RyaW5nID0gXCJ0ZXh0XCJcbiAgQElucHV0KCkgY3VzdG9tQnV0dG9uOiB7IHRpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nIH0gPSB7IHRpdGxlOiBcIlwiLCB1cmw6IFwiXCIgfVxuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9IFwiXCJcbiAgQElucHV0KCkgb25Mb2FkOiAoZGV0YWlsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fVxuICBASW5wdXQoKSBvblVwbG9hZDogKGRldGFpbDogYW55KSA9PiB2b2lkID0gKCkgPT4ge31cbiAgQElucHV0KCkgb25TZW5kOiAoZGV0YWlsOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fVxuICBASW5wdXQoKSBvblNhdmU6IChkZXRhaWw6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9XG4gIEBJbnB1dCgpIHNlbmRCdXR0b25UZXh0OiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIHNhdmVCdXR0b25UZXh0OiBzdHJpbmcgPSBcIlwiXG4gIEBJbnB1dCgpIGN1c3RvbUNzczogc3RyaW5nID0gXCJcIlxuXG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS10b2tlblwiKSBnZXQgZGF0YVRva2VuKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnRva2VuIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXByZXZpZXdcIikgZ2V0IGRhdGFQcmV2aWV3KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5wcmV2aWV3IH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLWxhbmd1YWdlXCIpIGdldCBkYXRhTGFuZ3VhZ2UoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMubGFuZ3VhZ2UgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtYXV0b3NhdmVcIikgZ2V0IGRhdGFBdXRvc2F2ZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuYXV0b3NhdmUgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtc2VuZC1idXR0b24tdGV4dFwiKSBnZXQgZGF0YVNlbmRCdXR0b25UZXh0KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnNlbmRCdXR0b25UZXh0IH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXNhdmUtYnV0dG9uLXRleHRcIikgZ2V0IGRhdGFTYXZlQnV0dG9uVGV4dCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5zYXZlQnV0dG9uVGV4dCB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1yb2xlc1wiKSBnZXQgZGF0YVJvbGVzKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnJvbGVzLmpvaW4oJywnKSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1maWVsZC10eXBlc1wiKSBnZXQgZGF0YUZpZWxkVHlwZXMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZmllbGRUeXBlcy5qb2luKCcsJykgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtZHJhdy1maWVsZC10eXBlXCIpIGdldCBkYXRhRHJhd0ZpZWxkVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5kcmF3RmllbGRUeXBlIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLWZpZWxkc1wiKSBnZXQgZGF0YUZpZWxkcygpOiBzdHJpbmcgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZHMpIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLWkxOG5cIikgZ2V0IGRhdGFJMThuKCk6IHN0cmluZyB7IHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmkxOG4pIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLWN1c3RvbS1idXR0b24tdGl0bGVcIikgZ2V0IGRhdGFDdXN0b21CdXR0b25UaXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jdXN0b21CdXR0b24udGl0bGUgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtY3VzdG9tLWJ1dHRvbi11cmxcIikgZ2V0IGRhdGFDdXN0b21CdXR0b25VcmwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY3VzdG9tQnV0dG9uLnVybCB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS13aXRoLXJlY2lwaWVudHMtYnV0dG9uXCIpIGdldCBkYXRhV2l0aFJlY2lwaWVudHNCdXR0b24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhSZWNpcGllbnRzQnV0dG9uIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXdpdGgtc2VuZC1idXR0b25cIikgZ2V0IGRhdGFXaXRoU2VuZEJ1dHRvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMud2l0aFNlbmRCdXR0b24gfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtd2l0aC1kb2N1bWVudHMtbGlzdFwiKSBnZXQgZGF0YVdpdGhEb2N1bWVudHNMaXN0KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy53aXRoRG9jdW1lbnRzTGlzdCB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS13aXRoLWZpZWxkcy1saXN0XCIpIGdldCBkYXRhV2l0aEZpZWxkc0xpc3QoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhGaWVsZHNMaXN0IH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXdpdGgtdGl0bGVcIikgZ2V0IGRhdGFXaXRoVGl0bGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhUaXRsZSB9XG4gIEBIb3N0QmluZGluZyhcImF0dHIuZGF0YS1vbmx5LWRlZmluZWQtZmllbGRzXCIpIGdldCBkYXRhT25seURlZmluZWRGaWVsZHMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLm9ubHlEZWZpbmVkRmllbGRzIH1cbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5kYXRhLXdpdGgtdXBsb2FkLWJ1dHRvblwiKSBnZXQgZGF0YVdpdGhVcGxvYWRCdXR0b24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhVcGxvYWRCdXR0b24gfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtd2l0aC1zaWduLXlvdXJzZWxmLWJ1dHRvblwiKSBnZXQgZGF0YVdpdGhTaWduWW91cnNlbGZCdXR0b24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLndpdGhTaWduWW91cnNlbGZCdXR0b24gfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtYmFja2dyb3VuZC1jb2xvclwiKSBnZXQgZGF0YUJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5iYWNrZ3JvdW5kQ29sb3IgfVxuICBASG9zdEJpbmRpbmcoXCJhdHRyLmRhdGEtY3VzdG9tLWNzc1wiKSBnZXQgZGF0YUN1c3RvbUNzcygpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jdXN0b21Dc3MgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRTY3JpcHQoKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc2VuZCcsIFsnJGV2ZW50J10pXG4gIG9uU2VuZEV2ZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uU2VuZCkge1xuICAgICAgdGhpcy5vblNlbmQoZXZlbnQuZGV0YWlsKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2xvYWQnLCBbJyRldmVudCddKVxuICBvbkxvYWRFdmVudChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkxvYWQpIHtcbiAgICAgIHRoaXMub25Mb2FkKGV2ZW50LmRldGFpbClcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd1cGxvYWQnLCBbJyRldmVudCddKVxuICBvblVwbG9hZEV2ZW50KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uVXBsb2FkKSB7XG4gICAgICB0aGlzLm9uVXBsb2FkKGV2ZW50LmRldGFpbClcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzYXZlJywgWyckZXZlbnQnXSlcbiAgb25TYXZlRXZlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TYXZlKSB7XG4gICAgICB0aGlzLm9uU2F2ZShldmVudC5kZXRhaWwpXG4gICAgfVxuICB9XG5cbiAgbG9hZFNjcmlwdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JpcHRJZCA9ICdkb2N1c2VhbC1idWlsZGVyLXNjcmlwdCdcbiAgICBjb25zdCBzY3JpcHRTcmMgPSBgaHR0cHM6Ly8ke3RoaXMuaG9zdH0vanMvYnVpbGRlci5qc2BcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpXG5cbiAgICBzY3JpcHQuaWQgPSBzY3JpcHRJZFxuICAgIHNjcmlwdC5hc3luYyA9IHRydWVcbiAgICBzY3JpcHQuc3JjID0gc2NyaXB0U3JjXG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdClcbiAgfVxufVxuIl19