@sd-angular/core 1.2.85 → 1.2.88
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/bundles/sd-angular-core-comment.umd.js +1 -1
- package/bundles/sd-angular-core-comment.umd.js.map +1 -1
- package/bundles/sd-angular-core-comment.umd.min.js +1 -1
- package/bundles/sd-angular-core-comment.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-editor.umd.js +199 -46
- package/bundles/sd-angular-core-editor.umd.js.map +1 -1
- package/bundles/sd-angular-core-editor.umd.min.js +2 -2
- package/bundles/sd-angular-core-editor.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input-number.umd.js +3 -3
- package/bundles/sd-angular-core-input-number.umd.js.map +1 -1
- package/bundles/sd-angular-core-input-number.umd.min.js +1 -1
- package/bundles/sd-angular-core-input-number.umd.min.js.map +1 -1
- package/comment/sd-angular-core-comment.metadata.json +1 -1
- package/comment/src/lib/comment.model.d.ts +1 -1
- package/editor/sd-angular-core-editor.metadata.json +1 -1
- package/editor/src/lib/editor.component.d.ts +12 -5
- package/editor/src/lib/editor.model.d.ts +16 -0
- package/editor/src/public-api.d.ts +1 -0
- package/esm2015/comment/src/lib/comment.component.js +2 -2
- package/esm2015/comment/src/lib/comment.model.js +1 -1
- package/esm2015/editor/src/lib/editor.component.js +180 -44
- package/esm2015/editor/src/lib/editor.model.js +3 -0
- package/esm2015/editor/src/public-api.js +2 -1
- package/esm2015/input-number/src/lib/input-number.component.js +4 -4
- package/fesm2015/sd-angular-core-comment.js +1 -1
- package/fesm2015/sd-angular-core-comment.js.map +1 -1
- package/fesm2015/sd-angular-core-editor.js +181 -44
- package/fesm2015/sd-angular-core-editor.js.map +1 -1
- package/fesm2015/sd-angular-core-input-number.js +3 -3
- package/fesm2015/sd-angular-core-input-number.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.2.85.tgz → sd-angular-core-1.2.88.tgz} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var _name, _subscription, _model, _form, _updateValidator,
|
|
1
|
+
var _name, _subscription, _model, _form, _updateValidator, _initUploadImage;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import {
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Inject, Input, NgZone, Optional, Output, ViewChild } from '@angular/core';
|
|
4
4
|
import * as uuid from 'uuid';
|
|
5
5
|
import { FormControl, NgForm, Validators } from '@angular/forms';
|
|
6
6
|
import { Constants } from './constant';
|
|
@@ -8,11 +8,15 @@ import { Subscription } from 'rxjs';
|
|
|
8
8
|
import { SdApiService } from '@sd-angular/core/api';
|
|
9
9
|
import 'quill-mention';
|
|
10
10
|
import { SdLabelDefDirective } from '@sd-angular/core/common';
|
|
11
|
+
import { SdLoadingService } from "@sd-angular/core/loading";
|
|
12
|
+
import { EDITOR_CONFIG } from './editor.model';
|
|
11
13
|
export class SdEditor {
|
|
12
|
-
constructor(ngZone, ref, sdApiService) {
|
|
14
|
+
constructor(ngZone, ref, sdApiService, loadingService, configuration) {
|
|
13
15
|
this.ngZone = ngZone;
|
|
14
16
|
this.ref = ref;
|
|
15
17
|
this.sdApiService = sdApiService;
|
|
18
|
+
this.loadingService = loadingService;
|
|
19
|
+
this.configuration = configuration;
|
|
16
20
|
_name.set(this, `N${uuid.v4()}`);
|
|
17
21
|
this.id = `I${uuid.v4()}`;
|
|
18
22
|
_subscription.set(this, new Subscription());
|
|
@@ -89,8 +93,9 @@ export class SdEditor {
|
|
|
89
93
|
}
|
|
90
94
|
}
|
|
91
95
|
};
|
|
92
|
-
this.
|
|
96
|
+
this.customButtonFileSVG = '<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><rect fill="none" height="24" width="24"/><path d="M20.41,8.41l-4.83-4.83C15.21,3.21,14.7,3,14.17,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9.83 C21,9.3,20.79,8.79,20.41,8.41z M7,7h7v2H7V7z M17,17H7v-2h10V17z M17,13H7v-2h10V13z"/></g></svg>';
|
|
93
97
|
this.sdChange = new EventEmitter();
|
|
98
|
+
this.timerLoadQuillToolbar = null;
|
|
94
99
|
_updateValidator.set(this, () => {
|
|
95
100
|
this.formControl.clearValidators();
|
|
96
101
|
this.formControl.clearAsyncValidators();
|
|
@@ -128,6 +133,35 @@ export class SdEditor {
|
|
|
128
133
|
// // }
|
|
129
134
|
// // this.formControl.setValue(html);
|
|
130
135
|
// });
|
|
136
|
+
const self = this;
|
|
137
|
+
__classPrivateFieldGet(this, _initUploadImage).call(this, quill);
|
|
138
|
+
// this.ngZone.runOutsideAngular(() => {
|
|
139
|
+
// quill.getModule('toolbar').addHandler('image', function () {
|
|
140
|
+
// let fileInput = this.container.querySelector('input.ql-image[type=file]');
|
|
141
|
+
// if (fileInput == null) {
|
|
142
|
+
// fileInput = document.createElement('input');
|
|
143
|
+
// fileInput.setAttribute('type', Constants.FILE);
|
|
144
|
+
// fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
|
|
145
|
+
// fileInput.classList.add('ql-image');
|
|
146
|
+
// fileInput.addEventListener('change', () => {
|
|
147
|
+
// const files = fileInput.files;
|
|
148
|
+
// const range = this.quill.getSelection(true);
|
|
149
|
+
// if (!files || !files.length) {
|
|
150
|
+
// return;
|
|
151
|
+
// }
|
|
152
|
+
// const formData = new FormData();
|
|
153
|
+
// formData.append(Constants.FILE, files[0]);
|
|
154
|
+
// this.quill.enable(false);
|
|
155
|
+
// self.#uploadImage(formData, quill, range, fileInput);
|
|
156
|
+
// });
|
|
157
|
+
// this.container.appendChild(fileInput);
|
|
158
|
+
// }
|
|
159
|
+
// fileInput.click();
|
|
160
|
+
// });
|
|
161
|
+
// });
|
|
162
|
+
this.ref.markForCheck();
|
|
163
|
+
};
|
|
164
|
+
_initUploadImage.set(this, (quill) => {
|
|
131
165
|
const self = this;
|
|
132
166
|
this.ngZone.runOutsideAngular(() => {
|
|
133
167
|
quill.getModule('toolbar').addHandler('image', function () {
|
|
@@ -138,6 +172,7 @@ export class SdEditor {
|
|
|
138
172
|
fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
|
|
139
173
|
fileInput.classList.add('ql-image');
|
|
140
174
|
fileInput.addEventListener('change', () => {
|
|
175
|
+
var _a;
|
|
141
176
|
const files = fileInput.files;
|
|
142
177
|
const range = this.quill.getSelection(true);
|
|
143
178
|
if (!files || !files.length) {
|
|
@@ -146,23 +181,27 @@ export class SdEditor {
|
|
|
146
181
|
const formData = new FormData();
|
|
147
182
|
formData.append(Constants.FILE, files[0]);
|
|
148
183
|
this.quill.enable(false);
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
184
|
+
// self.#uploadImage(formData, quill, range, fileInput);
|
|
185
|
+
(_a = self.configuration) === null || _a === void 0 ? void 0 : _a.uploadImage(formData, self.args).then(url => {
|
|
186
|
+
self.ngZone.runOutsideAngular(() => {
|
|
187
|
+
quill.enable(true);
|
|
188
|
+
// quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
|
|
189
|
+
quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (url || '')
|
|
190
|
+
+ '"><img src="' + (url || '') + '" alt="c-image-editor-quill"></a>', 'user');
|
|
191
|
+
// quill.insertText();
|
|
192
|
+
const content = quill.getContents();
|
|
193
|
+
quill.setContents(content);
|
|
194
|
+
quill.setSelection(range.index + 1, 'user');
|
|
195
|
+
fileInput.value = '';
|
|
196
|
+
});
|
|
197
|
+
});
|
|
158
198
|
});
|
|
159
199
|
this.container.appendChild(fileInput);
|
|
160
200
|
}
|
|
161
201
|
fileInput.click();
|
|
162
202
|
});
|
|
163
203
|
});
|
|
164
|
-
|
|
165
|
-
};
|
|
204
|
+
});
|
|
166
205
|
this.onModelChange = (val) => {
|
|
167
206
|
this.formControl.setValue(val);
|
|
168
207
|
this.modelHTML = val;
|
|
@@ -172,27 +211,6 @@ export class SdEditor {
|
|
|
172
211
|
this.showHtmlEditor = !this.showHtmlEditor;
|
|
173
212
|
this.ref.markForCheck();
|
|
174
213
|
};
|
|
175
|
-
_uploadImage.set(this, (formData, quill, range, fileInput) => {
|
|
176
|
-
if (!this.urlUploadImage) {
|
|
177
|
-
this.urlUploadImage = '/partner/v2/merchandise/file/uploaduserfile';
|
|
178
|
-
}
|
|
179
|
-
// this.domain = 'https://api-commerce-qc.vinid.dev';
|
|
180
|
-
this.sdApiService.post(this.urlUploadImage, formData).then((resp) => {
|
|
181
|
-
this.ngZone.runOutsideAngular(() => {
|
|
182
|
-
var _a, _b, _c, _d;
|
|
183
|
-
quill.enable(true);
|
|
184
|
-
// quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
|
|
185
|
-
quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (((_a = resp === null || resp === void 0 ? void 0 : resp.data) === null || _a === void 0 ? void 0 : _a.imageUrl) || ((_b = resp === null || resp === void 0 ? void 0 : resp.data) === null || _b === void 0 ? void 0 : _b.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '')
|
|
186
|
-
+ '"><img src="' + (((_c = resp === null || resp === void 0 ? void 0 : resp.data) === null || _c === void 0 ? void 0 : _c.imageUrl) || ((_d = resp === null || resp === void 0 ? void 0 : resp.data) === null || _d === void 0 ? void 0 : _d.publish_url) || (resp === null || resp === void 0 ? void 0 : resp.url) || '') + '" alt="c-image-editor-quill"></a>', 'user');
|
|
187
|
-
// quill.insertText();
|
|
188
|
-
const content = quill.getContents();
|
|
189
|
-
quill.setContents(content);
|
|
190
|
-
quill.setSelection(range.index + 1, 'user');
|
|
191
|
-
fileInput.value = '';
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
this.ref.markForCheck();
|
|
195
|
-
});
|
|
196
214
|
}
|
|
197
215
|
set model(val) {
|
|
198
216
|
__classPrivateFieldSet(this, _model, val);
|
|
@@ -234,14 +252,76 @@ export class SdEditor {
|
|
|
234
252
|
}
|
|
235
253
|
}
|
|
236
254
|
ngOnInit() {
|
|
237
|
-
var _a;
|
|
255
|
+
var _a, _b;
|
|
238
256
|
(_a = __classPrivateFieldGet(this, _form)) === null || _a === void 0 ? void 0 : _a.addControl(__classPrivateFieldGet(this, _name), this.formControl);
|
|
239
257
|
if (this.toolbar) {
|
|
240
258
|
this.quillConfig.toolbar.container = this.toolbar;
|
|
241
|
-
console.log('toolbar', this.quillConfig);
|
|
242
259
|
}
|
|
260
|
+
for (const action of (((_b = this.configuration) === null || _b === void 0 ? void 0 : _b.actions) || [])) {
|
|
261
|
+
if (this.quillConfig.toolbar.container.toString().includes(action.key)) {
|
|
262
|
+
const qlKey = `button.ql-${action.key}`;
|
|
263
|
+
const interval = setInterval(() => {
|
|
264
|
+
if (document.querySelector(qlKey)) {
|
|
265
|
+
clearInterval(interval);
|
|
266
|
+
document.querySelector(qlKey).innerHTML = this.customButtonFileSVG;
|
|
267
|
+
const customButton = document.querySelector(qlKey);
|
|
268
|
+
if (customButton.getAttribute('listener') !== '1') {
|
|
269
|
+
customButton.setAttribute('listener', '1');
|
|
270
|
+
customButton.addEventListener('click', (e) => {
|
|
271
|
+
const cursorPosition = localStorage.getItem('quillRange');
|
|
272
|
+
action.click(e, {
|
|
273
|
+
cursorPosition: JSON.parse(cursorPosition),
|
|
274
|
+
args: this.args
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}, 1000);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// if (this.quillConfig.toolbar.container.toString().includes('customFile')) {
|
|
283
|
+
// this.timerLoadQuillToolbar = setInterval(() => {
|
|
284
|
+
// if (document.querySelector('button.ql-customFile')) {
|
|
285
|
+
// clearInterval(this.timerLoadQuillToolbar);
|
|
286
|
+
// document.querySelector('button.ql-customFile').innerHTML = this.customButtonFileSVG;
|
|
287
|
+
// const customButton = document.querySelector('button.ql-customFile');
|
|
288
|
+
// if (customButton.getAttribute('listener') !== '1') {
|
|
289
|
+
// customButton.setAttribute('listener', '1');
|
|
290
|
+
// customButton.addEventListener('click', this.customFileHandler);
|
|
291
|
+
// }
|
|
292
|
+
// }
|
|
293
|
+
// }, 1000);
|
|
294
|
+
// }
|
|
243
295
|
this.ref.markForCheck();
|
|
244
296
|
}
|
|
297
|
+
// customFileHandler = (e) => {
|
|
298
|
+
// const customButton = e.currentTarget;
|
|
299
|
+
// const quillToolbar = customButton.closest('.ql-formats').closest('.ql-toolbar');
|
|
300
|
+
// const quillBox = quillToolbar.closest('.ql-formats')
|
|
301
|
+
// let fileInput: HTMLInputElement = quillToolbar.querySelector('input.ql-customFile[type=file]');
|
|
302
|
+
// if (fileInput == null) {
|
|
303
|
+
// fileInput = document.createElement('input');
|
|
304
|
+
// fileInput.setAttribute('type', Constants.FILE);
|
|
305
|
+
// fileInput.setAttribute('accept', '*');
|
|
306
|
+
// fileInput.classList.add('ql-customFile');
|
|
307
|
+
// fileInput.addEventListener('change', () => {
|
|
308
|
+
// const files = fileInput.files;
|
|
309
|
+
// if (!files || !files.length) {
|
|
310
|
+
// return;
|
|
311
|
+
// }
|
|
312
|
+
// const formData = new FormData();
|
|
313
|
+
// formData.append(Constants.FILE, files[0]);
|
|
314
|
+
// let range = localStorage.getItem('quillRange');
|
|
315
|
+
// if (range) {
|
|
316
|
+
// range = JSON.parse(range);
|
|
317
|
+
// }
|
|
318
|
+
// this.quillEvent.enable(false);
|
|
319
|
+
// this.#uploadFile(formData, this.quillEvent, range, fileInput, quillToolbar.closest('quill-editor').id);
|
|
320
|
+
// });
|
|
321
|
+
// quillToolbar.appendChild(fileInput);
|
|
322
|
+
// }
|
|
323
|
+
// fileInput.click();
|
|
324
|
+
// }
|
|
245
325
|
ngAfterViewInit() {
|
|
246
326
|
__classPrivateFieldGet(this, _subscription).add(this.formControl.valueChanges.subscribe((val) => {
|
|
247
327
|
this.modelChange.emit(val);
|
|
@@ -253,20 +333,76 @@ export class SdEditor {
|
|
|
253
333
|
(_a = __classPrivateFieldGet(this, _form)) === null || _a === void 0 ? void 0 : _a.removeControl(__classPrivateFieldGet(this, _name));
|
|
254
334
|
__classPrivateFieldGet(this, _subscription).unsubscribe();
|
|
255
335
|
}
|
|
336
|
+
// #uploadImage = (formData, quill, range, fileInput) => {
|
|
337
|
+
// if (!this.urlUploadImage) {
|
|
338
|
+
// this.urlUploadImage = '/partner/v2/merchandise/file/uploaduserfile';
|
|
339
|
+
// }
|
|
340
|
+
// // this.domain = 'https://api-commerce-qc.vinid.dev';
|
|
341
|
+
// this.sdApiService.post(this.urlUploadImage, formData).then((resp: any) => {
|
|
342
|
+
// this.ngZone.runOutsideAngular(() => {
|
|
343
|
+
// quill.enable(true);
|
|
344
|
+
// // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
|
|
345
|
+
// quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')
|
|
346
|
+
// + '"><img src="' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '" alt="c-image-editor-quill"></a>', 'user');
|
|
347
|
+
// // quill.insertText();
|
|
348
|
+
// const content = quill.getContents();
|
|
349
|
+
// quill.setContents(content);
|
|
350
|
+
// quill.setSelection(range.index + 1, 'user');
|
|
351
|
+
// fileInput.value = '';
|
|
352
|
+
// });
|
|
353
|
+
// });
|
|
354
|
+
// this.ref.markForCheck();
|
|
355
|
+
// }
|
|
356
|
+
// #uploadFile = (formData, quill, range, fileInput, loadingID) => {
|
|
357
|
+
// if (!this.urlUploadFile) {
|
|
358
|
+
// this.urlUploadFile = '/partner/v2/merchandise/file/uploaduserfile';
|
|
359
|
+
// }
|
|
360
|
+
// // this.domain = 'https://api-commerce-qc.vinid.dev';
|
|
361
|
+
// this.loadingService.start('#box-' + loadingID);
|
|
362
|
+
// this.sdApiService.post(this.urlUploadFile, formData).then((resp: any) => {
|
|
363
|
+
// this.ngZone.runOutsideAngular(() => {
|
|
364
|
+
// quill.enable(true);
|
|
365
|
+
// // quill.editor.insertEmbed(range.index, 'image', resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '');
|
|
366
|
+
// quill.getModule('clipboard').dangerouslyPasteHTML(range.index, '<a target="_blank" href="' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '')
|
|
367
|
+
// + '">' + (resp?.data?.imageUrl || resp?.data?.publish_url || resp?.url || '') + '</a>', 'user');
|
|
368
|
+
// // quill.insertText();
|
|
369
|
+
// const content = quill.getContents();
|
|
370
|
+
// quill.setContents(content);
|
|
371
|
+
// quill.setSelection(range.index + 1, 'user');
|
|
372
|
+
// fileInput.value = '';
|
|
373
|
+
// });
|
|
374
|
+
// this.loadingService.stop('#box-' + loadingID);
|
|
375
|
+
// }).catch((er) => {
|
|
376
|
+
// this.loadingService.stop('#box-' + loadingID);
|
|
377
|
+
// });
|
|
378
|
+
// this.ref.markForCheck();
|
|
379
|
+
// }
|
|
380
|
+
onSelectionChanged(e) {
|
|
381
|
+
// localStorage.setItem('quillRange', e.range ? JSON.stringify(e.range) : (e.oldRange ? JSON.stringify(e.oldRange) : null));
|
|
382
|
+
localStorage.setItem('quillRange', e.editor.getSelection() ? JSON.stringify(e.editor.getSelection()) : null);
|
|
383
|
+
}
|
|
384
|
+
onContentChanged(e) {
|
|
385
|
+
localStorage.setItem('quillRange', JSON.stringify({
|
|
386
|
+
index: (e.editor.getLength() ? e.editor.getLength() - 1 : 0),
|
|
387
|
+
length: 0
|
|
388
|
+
}));
|
|
389
|
+
}
|
|
256
390
|
}
|
|
257
|
-
_name = new WeakMap(), _subscription = new WeakMap(), _model = new WeakMap(), _form = new WeakMap(), _updateValidator = new WeakMap(),
|
|
391
|
+
_name = new WeakMap(), _subscription = new WeakMap(), _model = new WeakMap(), _form = new WeakMap(), _updateValidator = new WeakMap(), _initUploadImage = new WeakMap();
|
|
258
392
|
SdEditor.decorators = [
|
|
259
393
|
{ type: Component, args: [{
|
|
260
394
|
selector: 'sd-editor',
|
|
261
|
-
template: "<label *ngIf=\"label && !sdLabelDef?.templateRef\" class=\"d-block T14M\">{{label}} <span class=\"text-danger mb-2\"
|
|
395
|
+
template: "<div id=\"box-{{id}}\">\r\n <label *ngIf=\"label && !sdLabelDef?.templateRef\" class=\"d-block T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"required\">*</span></label>\r\n <ng-container *ngIf=\"sdLabelDef?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!formControl.disabled && !showHtmlEditor\">\r\n <quill-editor #editor [styles]=\"styles\" (onEditorCreated)=\"editorInit($event)\" [ngModel]=\"formControl.value\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onContentChanged)=\"onContentChanged($event)\"\r\n (ngModelChange)=\"onModelChange($event)\" [id]=\"id\" [modules]=\"quillConfig\" [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxlength\">\r\n </quill-editor>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.minlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{minlength}}</strong>\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"formControl.disabled\">\r\n <div [innerHtml]=\"formControl.value\"></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"enableHTMLButton\">\r\n <sd-textarea [(model)]=\"modelHTML\" *ngIf=\"showHtmlEditor\" rows=\"20\"\r\n (modelChange)=\"onModelChange($event)\"></sd-textarea>\r\n <sd-button\r\n title=\"{{showHtmlEditor?'\u1EA8n':'Hi\u1EC7n'}} m\u00E3 HTML\"\r\n class=\"mr-8\"\r\n fontSet=\"material-icons-outlined\"\r\n (action)=\"onClickShowHtmlEditor()\"\r\n type=\"light\"\r\n ></sd-button>\r\n </ng-container>\r\n</div>\r\n",
|
|
262
396
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
263
|
-
styles: ["::ng-deep img[alt=c-image-editor-quill]{max-width:80%}"]
|
|
397
|
+
styles: ["::ng-deep img[alt=c-image-editor-quill]{max-width:80%}::ng-deep .ql-toolbar input.ql-customFile[type=file]{display:none}"]
|
|
264
398
|
},] }
|
|
265
399
|
];
|
|
266
400
|
SdEditor.ctorParameters = () => [
|
|
267
401
|
{ type: NgZone },
|
|
268
402
|
{ type: ChangeDetectorRef },
|
|
269
|
-
{ type: SdApiService }
|
|
403
|
+
{ type: SdApiService },
|
|
404
|
+
{ type: SdLoadingService },
|
|
405
|
+
{ type: undefined, decorators: [{ type: Inject, args: [EDITOR_CONFIG,] }, { type: Optional }] }
|
|
270
406
|
];
|
|
271
407
|
SdEditor.propDecorators = {
|
|
272
408
|
editor: [{ type: ViewChild, args: ['editor',] }],
|
|
@@ -279,8 +415,8 @@ SdEditor.propDecorators = {
|
|
|
279
415
|
modelChange: [{ type: Output }],
|
|
280
416
|
placeholder: [{ type: Input }],
|
|
281
417
|
styles: [{ type: Input }],
|
|
418
|
+
args: [{ type: Input }],
|
|
282
419
|
domain: [{ type: Input }],
|
|
283
|
-
urlUploadImage: [{ type: Input }],
|
|
284
420
|
form: [{ type: Input }],
|
|
285
421
|
toolbar: [{ type: Input }],
|
|
286
422
|
enableHTMLButton: [{ type: Input }],
|
|
@@ -289,4 +425,4 @@ SdEditor.propDecorators = {
|
|
|
289
425
|
sdLabelDef: [{ type: ContentChild, args: [SdLabelDefDirective,] }],
|
|
290
426
|
sdChange: [{ type: Output }]
|
|
291
427
|
};
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBQ1MsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDeEUsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVE5RCxNQUFNLE9BQU8sUUFBUTtJQWtKbkIsWUFDVSxNQUFjLEVBQ2QsR0FBc0IsRUFDdEIsWUFBMEI7UUFGMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBcEpwQyxnQkFBUSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFDO1FBQ3hCLE9BQUUsR0FBVyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzdCLHdCQUFnQixJQUFJLFlBQVksRUFBRSxFQUFDO1FBR25DLHlCQUFlO1FB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QyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7O1FBQ1QsbUZBQVksYUFBYSxzQ0FBYTtRQUN0Qyw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQWxMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLHV3REFBc0M7Z0JBRXRDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBaEJvRCxNQUFNO1lBRHpELGlCQUFpQjtZQVFYLFlBQVk7OztxQkFjakIsU0FBUyxTQUFDLFFBQVE7b0JBQ2xCLEtBQUs7b0JBRUwsS0FBSzt1QkFTTCxLQUFLO3dCQVdMLEtBQUs7eUJBT0wsS0FBSyxTQUFDLFdBQVc7eUJBT2pCLEtBQUssU0FBQyxXQUFXOzBCQUtqQixNQUFNOzBCQUVOLEtBQUs7cUJBRUwsS0FBSztxQkFJTCxLQUFLOzZCQUNMLEtBQUs7bUJBRUwsS0FBSztzQkFVTCxLQUFLOytCQUNMLEtBQUs7NEJBS0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLFlBQVksU0FBQyxtQkFBbUI7dUJBcUVoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE5nWm9uZSwgQ29udGVudENoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UXVpbGxFZGl0b3JDb21wb25lbnR9IGZyb20gJ25neC1xdWlsbCc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTmdGb3JtLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0NvbnN0YW50c30gZnJvbSAnLi9jb25zdGFudCc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTZEFwaVNlcnZpY2V9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvYXBpJztcclxuaW1wb3J0ICdxdWlsbC1tZW50aW9uJztcclxuaW1wb3J0IHsgU2RMYWJlbERlZkRpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgI25hbWUgPSBgTiR7dXVpZC52NCgpfWA7XHJcbiAgaWQ6IHN0cmluZyA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAjbW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgcFJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWlubGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IF9taW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWF4bGVuZ3RoJykgc2V0IF9tYXhsZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWF4bGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7aGVpZ2h0OiAnMjUwcHgnfTtcclxuXHJcbiAgZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgQElucHV0KCkgZG9tYWluID0gJyc7XHJcbiAgQElucHV0KCkgdXJsVXBsb2FkSW1hZ2U6IHN0cmluZztcclxuICAjZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtKHZhbDogTmdGb3JtIHwgRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsLmZvcm07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgdG9vbGJhcjogYW55O1xyXG4gIEBJbnB1dCgpIGVuYWJsZUhUTUxCdXR0b24gPSBmYWxzZTtcclxuICBzaG93SHRtbEVkaXRvciA9IGZhbHNlO1xyXG4gIG1vZGVsSFRNTDogc3RyaW5nO1xyXG5cclxuICBxdWlsbEV2ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgbWVudGlvblZhbHVlczogeyBpZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsaW5rPzogc3RyaW5nIH1bXTtcclxuICBASW5wdXQoKSBoYXNoVGFnVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RMYWJlbERlZkRpcmVjdGl2ZSkgc2RMYWJlbERlZjogU2RMYWJlbERlZkRpcmVjdGl2ZTtcclxuICBxdWlsbENvbmZpZyA9IHtcclxuICAgIC8vIHRvb2xiYXI6ICcudG9vbGJhcicsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIGNvbnRhaW5lcjogW1xyXG4gICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLCAgICAgICAgLy8gdG9nZ2xlZCBidXR0b25zXHJcbiAgICAgICAgWydibG9ja3F1b3RlJywgJ2NvZGUtYmxvY2snXSxcclxuXHJcbiAgICAgICAgW3snaGVhZGVyJzogMX0sIHsnaGVhZGVyJzogMn1dLCAgICAgICAgICAgICAgIC8vIGN1c3RvbSBidXR0b24gdmFsdWVzXHJcbiAgICAgICAgW3snbGlzdCc6ICdvcmRlcmVkJ30sIHsnbGlzdCc6ICdidWxsZXQnfV0sXHJcbiAgICAgICAgW3snc2NyaXB0JzogJ3N1Yid9LCB7J3NjcmlwdCc6ICdzdXBlcid9XSwgICAgICAvLyBzdXBlcnNjcmlwdC9zdWJzY3JpcHRcclxuICAgICAgICBbeydpbmRlbnQnOiAnLTEnfSwgeydpbmRlbnQnOiAnKzEnfV0sICAgICAgICAgIC8vIG91dGRlbnQvaW5kZW50XHJcbiAgICAgICAgW3snZGlyZWN0aW9uJzogJ3J0bCd9XSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCBkaXJlY3Rpb25cclxuXHJcbiAgICAgICAgW3snc2l6ZSc6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXX1dLCAgLy8gY3VzdG9tIGRyb3Bkb3duXHJcbiAgICAgICAgW3snaGVhZGVyJzogWzEsIDIsIDMsIDQsIDUsIDYsIGZhbHNlXX1dLFxyXG5cclxuICAgICAgICBbeydjb2xvcic6IFtdfSwgeydiYWNrZ3JvdW5kJzogW119XSwgICAgICAgICAgLy8gZHJvcGRvd24gd2l0aCBkZWZhdWx0cyBmcm9tIHRoZW1lXHJcbiAgICAgICAgW3snZm9udCc6IFtdfV0sXHJcbiAgICAgICAgW3snYWxpZ24nOiBbXX1dLFxyXG5cclxuICAgICAgICBbJ2NsZWFuJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZm9ybWF0dGluZyBidXR0b25cclxuXHJcbiAgICAgICAgWydsaW5rJywgJ2ltYWdlJywgJ3ZpZGVvJ10gICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluayBhbmQgaW1hZ2UsIHZpZGVvXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICBtZW50aW9uOiB7XHJcbiAgICAgIGFsbG93ZWRDaGFyczogL15bQS1aYS16MC05XFxzw4XDhMOWw6XDpMO2Ll8tXSokLyxcclxuICAgICAgbWVudGlvbkRlbm90YXRpb25DaGFyczogWydAJywgJyMnXSxcclxuICAgICAgc291cmNlOiAoc2VhcmNoVGVybSwgcmVuZGVyTGlzdCwgbWVudGlvbkNoYXIpID0+IHtcclxuICAgICAgICBpZiAoKHRoaXMubWVudGlvblZhbHVlcyAmJiBtZW50aW9uQ2hhciA9PT0gJ0AnKSB8fCAodGhpcy5oYXNoVGFnVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnIycpKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWVzO1xyXG4gICAgICAgICAgaWYgKG1lbnRpb25DaGFyID09PSAnQCcpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5tZW50aW9uVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZW50aW9uQ2hhciA9PT0gJyMnKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuaGFzaFRhZ1ZhbHVlcztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZW5kZXJMaXN0KHZhbHVlcywgc2VhcmNoVGVybSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gW107XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgICBpZiAofnZhbHVlc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHZhbHVlc1tpXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QobWF0Y2hlcywgc2VhcmNoVGVybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGtleWJvYXJkOiB7XHJcbiAgICAgIGJpbmRpbmdzOiB7XHJcbiAgICAgICAgZW50ZXI6IHtcclxuICAgICAgICAgIGtleTogMTMsXHJcbiAgICAgICAgICBoYW5kbGVyOiAocmFuZ2UsIGNvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgdGV4dExlbmd0aDogbnVtYmVyID0gMDtcclxuICBAT3V0cHV0KCkgc2RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzZEFwaVNlcnZpY2U6IFNkQXBpU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5hZGRDb250cm9sKHRoaXMuI25hbWUsIHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xyXG4gICAgICB0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyID0gdGhpcy50b29sYmFyO1xyXG4gICAgICBjb25zb2xlLmxvZygndG9vbGJhcicsIHRoaXMucXVpbGxDb25maWcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodmFsKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jZm9ybT8ucmVtb3ZlQ29udHJvbCh0aGlzLiNuYW1lKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI3VwZGF0ZVZhbGlkYXRvciA9ICgpID0+IHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5taW5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm1pbmxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWF4bGVuZ3RoID4gMCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhsZW5ndGgpKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBlZGl0b3JJbml0ID0gKHF1aWxsKSA9PiB7XHJcbiAgICB0aGlzLnF1aWxsRXZlbnQgPSBxdWlsbDtcclxuICAgIC8vIGNvbnN0IHR4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgLy8gdHh0QXJlYS5zdHlsZS5jc3NUZXh0ID1cclxuICAgIC8vICAgJ3dpZHRoOiAxMDAlO21hcmdpbjogMHB4O2JhY2tncm91bmQ6IHJnYigyOSwgMjksIDI5KTsnICtcclxuICAgIC8vICAgJ2JveC1zaXppbmc6IGJvcmRlci1ib3g7Y29sb3I6IHJnYigyMDQsIDIwNCwgMjA0KTsnICtcclxuICAgIC8vICAgJ2ZvbnQtc2l6ZTogMTVweDtvdXRsaW5lOiBub25lO3BhZGRpbmc6IDIwcHg7JyArXHJcbiAgICAvLyAgICdsaW5lLWhlaWdodDogMjRweDtmb250LWZhbWlseTogQ29uc29sYXMsIE1lbmxvLCBNb25hY28sICZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7LCBtb25vc3BhY2U7JyArXHJcbiAgICAvLyAgICdwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO2JvdHRvbTogMDtib3JkZXI6IG5vbmU7ZGlzcGxheTpub25lJztcclxuXHJcbiAgICAvLyBjb25zdCBodG1sRWRpdG9yID0gcXVpbGwuYWRkQ29udGFpbmVyKCdxbC1jdXN0b20nKTtcclxuICAgIC8vIGh0bWxFZGl0b3IuYXBwZW5kQ2hpbGQodHh0QXJlYSk7XHJcblxyXG4gICAgLy8gY29uc3QgbXlFZGl0b3IgPSBxdWlsbC5jb250YWluZXI7XHJcbiAgICAvLyBxdWlsbC5vbigndGV4dC1jaGFuZ2UnLCAoZGVsdGEsIG9sZERlbHRhLCBzb3VyY2UpID0+IHtcclxuICAgIC8vICAgY29uc3QgaHRtbCA9IG15RWRpdG9yLmNoaWxkcmVuWzBdLmlubmVySFRNTDtcclxuICAgIC8vICAgdHh0QXJlYS52YWx1ZSA9IGh0bWw7XHJcbiAgICAvLyAgIC8vIGlmIChxdWlsbC5nZXRMZW5ndGgoKSA+IHRoaXMubWF4bGVuZ3RoKSB7XHJcbiAgICAvLyAgIC8vICAgcXVpbGwuZGVsZXRlVGV4dCh0aGlzLm1heGxlbmd0aCwgcXVpbGwuZ2V0TGVuZ3RoKCkpO1xyXG4gICAgLy8gICAvLyB9XHJcbiAgICAvLyAgIC8vIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaHRtbCk7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgcXVpbGwuZ2V0TW9kdWxlKCd0b29sYmFyJykuYWRkSGFuZGxlcignaW1hZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGZpbGVJbnB1dCA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0LnFsLWltYWdlW3R5cGU9ZmlsZV0nKTtcclxuICBcclxuICAgICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChDb25zdGFudHMuRklMRSwgZmlsZXNbMF0pO1xyXG4gIFxyXG4gICAgICAgICAgICB0aGlzLnF1aWxsLmVuYWJsZShmYWxzZSk7XHJcbiAgICAgICAgICAgIC8qdGhpcy5hcGlTZXJ2aWNlLnBvc3QodGhpcy5kb21haW4gKyB0aGlzLnVybFVwbG9hZEltYWdlLCBmb3JtRGF0YSkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAgICAgICAgICAgICB0aGlzLnF1aWxsLmVkaXRvci5pbnNlcnRFbWJlZChyYW5nZS5pbmRleCwgJ2ltYWdlJywgcmVzcC5kYXRhLmltYWdlVXJsIHx8IHJlc3AuZGF0YS5wdWJsaXNoX3VybCB8fCAgcmVzcC51cmwpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnF1aWxsLmdldENvbnRlbnRzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWlsbC5zZXRDb250ZW50cyhjb250ZW50KTtcclxuICAgICAgICAgICAgICB0aGlzLnF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICdzaWxlbnQnKTtcclxuICAgICAgICAgICAgICBmaWxlSW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgfSk7Ki9cclxuICAgICAgICAgICAgc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZmlsZUlucHV0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUlucHV0LmNsaWNrKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25Nb2RlbENoYW5nZSA9ICh2YWw6IHN0cmluZykgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tTaG93SHRtbEVkaXRvciA9ICgpID0+IHtcclxuICAgIHRoaXMuc2hvd0h0bWxFZGl0b3IgPSAhdGhpcy5zaG93SHRtbEVkaXRvcjtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI3VwbG9hZEltYWdlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLnVybFVwbG9hZEltYWdlKSB7XHJcbiAgICAgIHRoaXMudXJsVXBsb2FkSW1hZ2UgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gICAgdGhpcy5zZEFwaVNlcnZpY2UucG9zdCh0aGlzLnVybFVwbG9hZEltYWdlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgICAgICAgICArICdcIj48aW1nIHNyYz1cIicgKyAocmVzcD8uZGF0YT8uaW1hZ2VVcmwgfHwgcmVzcD8uZGF0YT8ucHVibGlzaF91cmwgfHwgcmVzcD8udXJsIHx8ICcnKSArICdcIiBhbHQ9XCJjLWltYWdlLWVkaXRvci1xdWlsbFwiPjwvYT4nLCAndXNlcicpO1xyXG4gICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gcXVpbGwuZ2V0Q29udGVudHMoKTtcclxuICAgICAgICBxdWlsbC5zZXRDb250ZW50cyhjb250ZW50KTtcclxuICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgIGZpbGVJbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbn1cclxuIl19
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBU3JFLE1BQU0sT0FBTyxRQUFRO0lBa0puQixZQUNVLE1BQWMsRUFDZCxHQUFzQixFQUN0QixZQUEwQixFQUMxQixjQUFnQyxFQUNHLGFBQW1DO1FBSnRFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxH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QUFRLEVBQUUsV0FBVztnQkFDckIsNGtFQUFzQztnQkFFdEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUF4QkMsTUFBTTtZQU5OLGlCQUFpQjtZQWtCVixZQUFZO1lBR1osZ0JBQWdCOzRDQWlLcEIsTUFBTSxTQUFDLGFBQWEsY0FBRyxRQUFROzs7cUJBbkpqQyxTQUFTLFNBQUMsUUFBUTtvQkFDbEIsS0FBSztvQkFFTCxLQUFLO3VCQVNMLEtBQUs7d0JBV0wsS0FBSzt5QkFPTCxLQUFLLFNBQUMsV0FBVzt5QkFPakIsS0FBSyxTQUFDLFdBQVc7MEJBS2pCLE1BQU07MEJBRU4sS0FBSztxQkFFTCxLQUFLO21CQUVMLEtBQUs7cUJBSUwsS0FBSzttQkFFTCxLQUFLO3NCQVVMLEtBQUs7K0JBQ0wsS0FBSzs0QkFLTCxLQUFLOzRCQUNMLEtBQUs7eUJBQ0wsWUFBWSxTQUFDLG1CQUFtQjt1QkFvRWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgUXVpbGxFZGl0b3JDb21wb25lbnQsIFNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJ25neC1xdWlsbCc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5nRm9ybSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RBcGlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5pbXBvcnQgeyBTZExhYmVsRGVmRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZExvYWRpbmdTZXJ2aWNlIH0gZnJvbSBcIkBzZC1hbmd1bGFyL2NvcmUvbG9hZGluZ1wiO1xyXG5pbXBvcnQgeyBFRElUT1JfQ09ORklHLCBJRWRpdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZWRpdG9yLm1vZGVsJztcclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgI25hbWUgPSBgTiR7dXVpZC52NCgpfWA7XHJcbiAgaWQ6IHN0cmluZyA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAjbW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgcFJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWlubGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IF9taW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWF4bGVuZ3RoJykgc2V0IF9tYXhsZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWF4bGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7IGhlaWdodDogJzI1MHB4JyB9O1xyXG5cclxuICBASW5wdXQoKSBhcmdzOiBhbnk7XHJcblxyXG4gIGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG4gIEBJbnB1dCgpIGRvbWFpbiA9ICcnO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0b29sYmFyOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlSFRNTEJ1dHRvbiA9IGZhbHNlO1xyXG4gIHNob3dIdG1sRWRpdG9yID0gZmFsc2U7XHJcbiAgbW9kZWxIVE1MOiBzdHJpbmc7XHJcblxyXG4gIHF1aWxsRXZlbnQ6IGFueTtcclxuICBASW5wdXQoKSBtZW50aW9uVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBJbnB1dCgpIGhhc2hUYWdWYWx1ZXM6IHsgaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGluaz86IHN0cmluZyB9W107XHJcbiAgQENvbnRlbnRDaGlsZChTZExhYmVsRGVmRGlyZWN0aXZlKSBzZExhYmVsRGVmOiBTZExhYmVsRGVmRGlyZWN0aXZlO1xyXG4gIHF1aWxsQ29uZmlnID0ge1xyXG4gICAgLy8gdG9vbGJhcjogJy50b29sYmFyJyxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sICAgICAgICAvLyB0b2dnbGVkIGJ1dHRvbnNcclxuICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxyXG5cclxuICAgICAgICBbeyAnaGVhZGVyJzogMSB9LCB7ICdoZWFkZXInOiAyIH1dLCAgICAgICAgICAgICAgIC8vIGN1c3RvbSBidXR0b24gdmFsdWVzXHJcbiAgICAgICAgW3sgJ2xpc3QnOiAnb3JkZXJlZCcgfSwgeyAnbGlzdCc6ICdidWxsZXQnIH1dLFxyXG4gICAgICAgIFt7ICdzY3JpcHQnOiAnc3ViJyB9LCB7ICdzY3JpcHQnOiAnc3VwZXInIH1dLCAgICAgIC8vIHN1cGVyc2NyaXB0L3N1YnNjcmlwdFxyXG4gICAgICAgIFt7ICdpbmRlbnQnOiAnLTEnIH0sIHsgJ2luZGVudCc6ICcrMScgfV0sICAgICAgICAgIC8vIG91dGRlbnQvaW5kZW50XHJcbiAgICAgICAgW3sgJ2RpcmVjdGlvbic6ICdydGwnIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IGRpcmVjdGlvblxyXG5cclxuICAgICAgICBbeyAnc2l6ZSc6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXSB9XSwgIC8vIGN1c3RvbSBkcm9wZG93blxyXG4gICAgICAgIFt7ICdoZWFkZXInOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxyXG5cclxuICAgICAgICBbeyAnY29sb3InOiBbXSB9LCB7ICdiYWNrZ3JvdW5kJzogW10gfV0sICAgICAgICAgIC8vIGRyb3Bkb3duIHdpdGggZGVmYXVsdHMgZnJvbSB0aGVtZVxyXG4gICAgICAgIFt7ICdmb250JzogW10gfV0sXHJcbiAgICAgICAgW3sgJ2FsaWduJzogW10gfV0sXHJcblxyXG4gICAgICAgIFsnY2xlYW4nXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBmb3JtYXR0aW5nIGJ1dHRvblxyXG5cclxuICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnLCAndmlkZW8nXSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGFuZCBpbWFnZSwgdmlkZW9cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1lbnRpb246IHtcclxuICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXowLTlcXHPDhcOEw5bDpcOkw7YuXy1dKiQvLFxyXG4gICAgICBtZW50aW9uRGVub3RhdGlvbkNoYXJzOiBbJ0AnLCAnIyddLFxyXG4gICAgICBzb3VyY2U6IChzZWFyY2hUZXJtLCByZW5kZXJMaXN0LCBtZW50aW9uQ2hhcikgPT4ge1xyXG4gICAgICAgIGlmICgodGhpcy5tZW50aW9uVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnQCcpIHx8ICh0aGlzLmhhc2hUYWdWYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICcjJykpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXM7XHJcbiAgICAgICAgICBpZiAobWVudGlvbkNoYXIgPT09ICdAJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLm1lbnRpb25WYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lbnRpb25DaGFyID09PSAnIycpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5oYXNoVGFnVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gW107XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QodmFsdWVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgIGlmICh+dmFsdWVzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2godmFsdWVzW2ldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAga2V5Ym9hcmQ6IHtcclxuICAgICAgYmluZGluZ3M6IHtcclxuICAgICAgICBlbnRlcjoge1xyXG4gICAgICAgICAga2V5OiAxMyxcclxuICAgICAgICAgIGhhbmRsZXI6IChyYW5nZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGN1c3RvbUJ1dHRvbkZpbGVTVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI0IDI0XCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiIzAwMDAwMFwiPjxnPjxyZWN0IGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMjRcIiB3aWR0aD1cIjI0XCIvPjxwYXRoIGQ9XCJNMjAuNDEsOC40MWwtNC44My00LjgzQzE1LjIxLDMuMjEsMTQuNywzLDE0LjE3LDNINUMzLjksMywzLDMuOSwzLDV2MTRjMCwxLjEsMC45LDIsMiwyaDE0YzEuMSwwLDItMC45LDItMlY5LjgzIEMyMSw5LjMsMjAuNzksOC43OSwyMC40MSw4LjQxeiBNNyw3aDd2Mkg3Vjd6IE0xNywxN0g3di0yaDEwVjE3eiBNMTcsMTNIN3YtMmgxMFYxM3pcIi8+PC9nPjwvc3ZnPic7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgdGltZXJMb2FkUXVpbGxUb29sYmFyID0gbnVsbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNkQXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIEBJbmplY3QoRURJVE9SX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJRWRpdG9yQ29uZmlndXJhdGlvbixcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xyXG4gICAgICB0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyID0gdGhpcy50b29sYmFyO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mICh0aGlzLmNvbmZpZ3VyYXRpb24/LmFjdGlvbnMgfHwgW10pKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyLnRvU3RyaW5nKCkuaW5jbHVkZXMoYWN0aW9uLmtleSkpIHtcclxuICAgICAgICBjb25zdCBxbEtleSA9IGBidXR0b24ucWwtJHthY3Rpb24ua2V5fWBcclxuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KSkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSkuaW5uZXJIVE1MID0gdGhpcy5jdXN0b21CdXR0b25GaWxlU1ZHO1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KTtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgICAgICAgICAgIGN1c3RvbUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJywgJzEnKTtcclxuICAgICAgICAgICAgICBjdXN0b21CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uLmNsaWNrKGUsIHtcclxuICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb246IEpTT04ucGFyc2UoY3Vyc29yUG9zaXRpb24pLFxyXG4gICAgICAgICAgICAgICAgICBhcmdzOiB0aGlzLmFyZ3NcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKCdjdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgdGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5xbC1jdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIpO1xyXG4gICAgLy8gICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLnFsLWN1c3RvbUZpbGUnKS5pbm5lckhUTUwgPSB0aGlzLmN1c3RvbUJ1dHRvbkZpbGVTVkc7XHJcbiAgICAvLyAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24ucWwtY3VzdG9tRmlsZScpO1xyXG4gICAgLy8gICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgLy8gICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAvLyAgICAgICAgIGN1c3RvbUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3VzdG9tRmlsZUhhbmRsZXIpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSwgMTAwMCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjdXN0b21GaWxlSGFuZGxlciA9IChlKSA9PiB7XHJcbiAgLy8gICBjb25zdCBjdXN0b21CdXR0b24gPSBlLmN1cnJlbnRUYXJnZXQ7XHJcbiAgLy8gICBjb25zdCBxdWlsbFRvb2xiYXIgPSBjdXN0b21CdXR0b24uY2xvc2VzdCgnLnFsLWZvcm1hdHMnKS5jbG9zZXN0KCcucWwtdG9vbGJhcicpO1xyXG4gIC8vICAgY29uc3QgcXVpbGxCb3ggPSBxdWlsbFRvb2xiYXIuY2xvc2VzdCgnLnFsLWZvcm1hdHMnKVxyXG4gIC8vICAgbGV0IGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHF1aWxsVG9vbGJhci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1jdXN0b21GaWxlW3R5cGU9ZmlsZV0nKTtcclxuICAvLyAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gIC8vICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnKicpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtY3VzdG9tRmlsZScpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gIC8vICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAvLyAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICAvLyAgICAgICBsZXQgcmFuZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gIC8vICAgICAgIGlmIChyYW5nZSkge1xyXG4gIC8vICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKHJhbmdlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5xdWlsbEV2ZW50LmVuYWJsZShmYWxzZSk7XHJcbiAgLy8gICAgICAgdGhpcy4jdXBsb2FkRmlsZShmb3JtRGF0YSwgdGhpcy5xdWlsbEV2ZW50LCByYW5nZSwgZmlsZUlucHV0LCBxdWlsbFRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgcXVpbGxUb29sYmFyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGVkaXRvckluaXQgPSAocXVpbGwpID0+IHtcclxuICAgIHRoaXMucXVpbGxFdmVudCA9IHF1aWxsO1xyXG4gICAgLy8gY29uc3QgdHh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAvLyB0eHRBcmVhLnN0eWxlLmNzc1RleHQgPVxyXG4gICAgLy8gICAnd2lkdGg6IDEwMCU7bWFyZ2luOiAwcHg7YmFja2dyb3VuZDogcmdiKDI5LCAyOSwgMjkpOycgK1xyXG4gICAgLy8gICAnYm94LXNpemluZzogYm9yZGVyLWJveDtjb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpOycgK1xyXG4gICAgLy8gICAnZm9udC1zaXplOiAxNXB4O291dGxpbmU6IG5vbmU7cGFkZGluZzogMjBweDsnICtcclxuICAgIC8vICAgJ2xpbmUtaGVpZ2h0OiAyNHB4O2ZvbnQtZmFtaWx5OiBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsnICtcclxuICAgIC8vICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7Ym90dG9tOiAwO2JvcmRlcjogbm9uZTtkaXNwbGF5Om5vbmUnO1xyXG5cclxuICAgIC8vIGNvbnN0IGh0bWxFZGl0b3IgPSBxdWlsbC5hZGRDb250YWluZXIoJ3FsLWN1c3RvbScpO1xyXG4gICAgLy8gaHRtbEVkaXRvci5hcHBlbmRDaGlsZCh0eHRBcmVhKTtcclxuXHJcbiAgICAvLyBjb25zdCBteUVkaXRvciA9IHF1aWxsLmNvbnRhaW5lcjtcclxuICAgIC8vIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkRGVsdGEsIHNvdXJjZSkgPT4ge1xyXG4gICAgLy8gICBjb25zdCBodG1sID0gbXlFZGl0b3IuY2hpbGRyZW5bMF0uaW5uZXJIVE1MO1xyXG4gICAgLy8gICB0eHRBcmVhLnZhbHVlID0gaHRtbDtcclxuICAgIC8vICAgLy8gaWYgKHF1aWxsLmdldExlbmd0aCgpID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgIC8vICAgLy8gICBxdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4bGVuZ3RoLCBxdWlsbC5nZXRMZW5ndGgoKSk7XHJcbiAgICAvLyAgIC8vIH1cclxuICAgIC8vICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShodG1sKTtcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLiNpbml0VXBsb2FkSW1hZ2UocXVpbGwpO1xyXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgLy8gICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgIC8vICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgIC8vICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgIC8vICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgIC8vICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy8gICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgLy8gICB9KTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRVcGxvYWRJbWFnZSA9IChxdWlsbDogUXVpbGwpID0+IHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG4gICAgICAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBDb25zdGFudHMuRklMRSk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvcG5nLCBpbWFnZS9naWYsIGltYWdlL2pwZWcsIGltYWdlL2JtcCwgaW1hZ2UveC1pY29uJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcbiAgICAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uPy51cGxvYWRJbWFnZShmb3JtRGF0YSwgc2VsZi5hcmdzKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZi5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHVybCB8fCAnJylcclxuICAgICAgICAgICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAgICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlSW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsQ2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1Nob3dIdG1sRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93SHRtbEVkaXRvciA9ICF0aGlzLnNob3dIdG1sRWRpdG9yO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAvLyAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAvLyAgIH1cclxuICAvLyAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgLy8gICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gIC8vICAgICAgIHF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAvLyAgICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgLy8gICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJylcclxuICAvLyAgICAgICAgICsgJ1wiPjxpbWcgc3JjPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpICsgJ1wiIGFsdD1cImMtaW1hZ2UtZWRpdG9yLXF1aWxsXCI+PC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIC8vICN1cGxvYWRGaWxlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCwgbG9hZGluZ0lEKSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkRmlsZSkge1xyXG4gIC8vICAgICB0aGlzLnVybFVwbG9hZEZpbGUgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgnI2JveC0nICsgbG9hZGluZ0lEKTtcclxuICAvLyAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRGaWxlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAvLyAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gIC8vICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgLy8gICAgICAgICArICdcIj4nICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnPC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJyNib3gtJyArIGxvYWRpbmdJRCk7XHJcbiAgLy8gICB9KS5jYXRjaCgoZXIpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCcjYm94LScgKyBsb2FkaW5nSUQpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBTZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5yYW5nZSA/IEpTT04uc3RyaW5naWZ5KGUucmFuZ2UpIDogKGUub2xkUmFuZ2UgPyBKU09OLnN0cmluZ2lmeShlLm9sZFJhbmdlKSA6IG51bGwpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPyBKU09OLnN0cmluZ2lmeShlLmVkaXRvci5nZXRTZWxlY3Rpb24oKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZWQoZTogQ29udGVudENoYW5nZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1aWxsUmFuZ2UnLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGluZGV4OiAoZS5lZGl0b3IuZ2V0TGVuZ3RoKCkgPyBlLmVkaXRvci5nZXRMZW5ndGgoKSAtIDEgOiAwKSxcclxuICAgICAgbGVuZ3RoOiAwXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const EDITOR_CONFIG = new InjectionToken('editor.configuration');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL2VkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBaUIvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JDb25maWd1cmF0aW9uIHtcclxuICB1cGxvYWRJbWFnZT86IChmb3JtRGF0YTogRm9ybURhdGEsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8c3RyaW5nPjtcclxuICBhY3Rpb25zOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIGljb246IHN0cmluZztcclxuICAgIGNsaWNrOiAoZXZlbnQ6IEV2ZW50LCBhcmdzPzoge1xyXG4gICAgICBjdXJzb3JQb3NpdGlvbjoge1xyXG4gICAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgICAgbGVuZ3RoOiBudW1iZXI7XHJcbiAgICAgIH0sXHJcbiAgICAgIGFyZ3M/OiBhbnlcclxuICAgIH0pID0+IHZvaWRcclxuICB9W107XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBFRElUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElFZGl0b3JDb25maWd1cmF0aW9uPignZWRpdG9yLmNvbmZpZ3VyYXRpb24nKTsiXX0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of superdev-angular-core
|
|
3
3
|
*/
|
|
4
|
+
export * from './lib/editor.model';
|
|
4
5
|
export * from './lib/editor.module';
|
|
5
6
|
export * from './lib/constant';
|
|
6
7
|
export * from './lib/editor.component';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN1cGVyZGV2LWFuZ3VsYXItY29yZVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRvci5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdGFudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRvci5jb21wb25lbnQnO1xyXG4iXX0=
|