raise-common-lib 0.0.249 → 0.0.250

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +197 -791
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dialog/common-dialog/index.component.js +1 -1
  7. package/esm2015/lib/form/richtexteditor/data-config.js +68 -1
  8. package/esm2015/lib/form/richtexteditor/index.component.js +130 -474
  9. package/esm5/lib/dialog/common-dialog/index.component.js +1 -1
  10. package/esm5/lib/form/richtexteditor/data-config.js +68 -1
  11. package/esm5/lib/form/richtexteditor/index.component.js +132 -523
  12. package/fesm2015/raise-common-lib.js +196 -707
  13. package/fesm2015/raise-common-lib.js.map +1 -1
  14. package/fesm5/raise-common-lib.js +198 -792
  15. package/fesm5/raise-common-lib.js.map +1 -1
  16. package/lib/form/richtexteditor/data-config.d.ts +8 -0
  17. package/lib/form/richtexteditor/index.component.d.ts +41 -65
  18. package/package.json +1 -1
  19. package/raise-common-lib.metadata.json +1 -1
  20. package/src/assets/img/arrow_right.svg +4 -4
  21. package/src/assets/img/bullet-dash.svg +3 -0
  22. package/src/assets/img/calendar-disabled.svg +6 -6
  23. package/src/assets/img/calendar.svg +6 -6
  24. package/src/assets/img/calendar_arrow_left.svg +3 -3
  25. package/src/assets/img/calendar_arrow_right.svg +3 -3
  26. package/src/assets/img/checked-vector.svg +3 -3
  27. package/src/assets/img/dialog-close.svg +4 -4
  28. package/src/assets/img/dialog-grow.svg +6 -6
  29. package/src/assets/img/dialog-shrink.svg +6 -6
  30. package/src/assets/img/plus.svg +4 -4
  31. package/src/assets/img/search.svg +4 -4
  32. package/src/assets/img/shrink-icon.svg +6 -6
  33. package/src/assets/img/time-disabled.svg +4 -4
  34. package/src/assets/img/time.svg +4 -4
  35. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  36. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  37. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  38. package/src/assets/img/toolbar-action-combine.svg +4 -4
  39. package/src/assets/img/toolbar-action-edit.svg +4 -4
  40. package/src/assets/img/toolbar-action-expand.svg +7 -7
  41. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  42. package/src/assets/img/toolbar-action-lock.svg +6 -6
  43. package/src/assets/img/toolbar-action-preview.svg +7 -7
  44. package/src/assets/img/toolbar-action-publish.svg +5 -5
  45. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  46. package/src/assets/img/toolbar-action-rename.svg +7 -7
  47. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  48. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  49. package/src/assets/img/toolbar-action-settle.svg +7 -7
  50. package/src/assets/img/toolbar-action-share.svg +5 -5
  51. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  52. package/src/assets/img/toolbar-action-sync.svg +4 -4
  53. package/src/assets/img/toolbar-action-template.svg +6 -6
  54. package/src/assets/img/toolbar-action-workflow.svg +9 -9
  55. package/esm2015/lib/form/richtexteditor/ai-config.js +0 -70
  56. package/esm2015/lib/form/richtexteditor/openapi.js +0 -175
  57. package/esm5/lib/form/richtexteditor/ai-config.js +0 -73
  58. package/esm5/lib/form/richtexteditor/openapi.js +0 -208
  59. package/lib/form/richtexteditor/ai-config.d.ts +0 -10
  60. package/lib/form/richtexteditor/openapi.d.ts +0 -3
@@ -3,82 +3,33 @@
3
3
  * Generated from: lib/form/richtexteditor/index.component.ts
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
- import * as tslib_1 from "tslib";
7
- import { Component, Input, Output, ViewChild, ChangeDetectorRef, EventEmitter, } from "@angular/core";
8
- import { DropDownListComponent, } from "@syncfusion/ej2-angular-dropdowns";
9
- import { RichTextEditorComponent, } from "@syncfusion/ej2-angular-richtexteditor";
10
- import { ButtonComponent, } from "@syncfusion/ej2-angular-buttons";
11
- import { DropDownButton } from "@syncfusion/ej2-angular-splitbuttons";
12
- import { DialogComponent } from "@syncfusion/ej2-angular-popups";
13
- import { OpenAiModelRTE } from "./openapi";
14
- import { lineHeight_items } from "./data-config";
15
- import { fontFamily } from "./data-config";
6
+ import { Component, Input, Output, EventEmitter } from "@angular/core";
7
+ import { fontFamily, size } from "./data-config";
16
8
  var RichtexteditorComponent = /** @class */ (function () {
17
- function RichtexteditorComponent(ref) {
18
- this.ref = ref;
19
- // @ViewChild("chipList", { static: false }) public chipList!: ChipListComponent;
20
- this.placeholder = "";
9
+ function RichtexteditorComponent() {
21
10
  this.value = "";
11
+ this.editorId = "editorId";
22
12
  this.height = 150;
23
13
  this.autoSaveOnIdle = true;
24
- this.target = "#container"; // dialog 弹窗父级
25
- // dialog 弹窗父级
26
- this.toolbarClick = new EventEmitter();
27
- this.change = new EventEmitter();
28
- // @Output() change = new EventEmitter();
29
- this.family = fontFamily;
30
- this.dialogWidth = "800px";
31
- this.dialogHeight = "642px";
32
- this.showZoomBtn = true;
33
- this.showMsg = false;
14
+ this.disabled = false;
34
15
  this.insertImageSettings = {
35
16
  saveFormat: "Blob",
36
17
  allowedTypes: [".svg", ".png"],
37
18
  display: "none",
38
19
  };
39
- this.size = "";
40
- this.dropValIndex = 0;
41
- this.queryList = [
42
- { id: "Rephrase", text: "Rephrase" },
43
- { id: "Grammar", text: "Correct Grammar" },
44
- { id: "Summarize", text: "Summarize" },
45
- { id: "Elaborate", text: "Elaborate" },
46
- { id: "Translate", text: "Translate" },
47
- { id: "SentimentAnalysis", text: "Sentiment Analysis" },
48
- ];
49
- this.rephraseTyleList = [
50
- { text: "Standard", id: "Standard" },
51
- { text: "Fluent", id: "Fluent" },
52
- { text: "Professional", id: "Professional" },
53
- ];
54
- this.languageList = [
55
- { id: "EN", text: "English" },
56
- { id: "ZH", text: "Chinese (Simplified)" },
57
- { id: "ES", text: "Spanish" },
58
- { id: "ZHT", text: "Chinese (Traditional)" },
59
- { id: "HI", text: "Hindi" },
60
- { id: "AR", text: "Arabic" },
61
- { id: "BN", text: "Bengali" },
62
- { id: "PT", text: "Portuguese" },
63
- { id: "RU", text: "Russian" },
64
- { id: "JA", text: "Japanese" },
65
- { id: "DE", text: "German" },
66
- { id: "KO", text: "Korean" },
67
- { id: "FR", text: "French" },
68
- { id: "IT", text: "Italian" },
69
- { id: "TR", text: "Turkish" },
70
- ];
71
- this.promptQuery = "";
72
- this.isSentimentCheck = false;
73
- this.subQuery = "";
74
- this.chipValue = "Standard";
20
+ this.toolbarClick = new EventEmitter();
21
+ this.change = new EventEmitter();
22
+ this.created = new EventEmitter();
23
+ this.actionBegin = new EventEmitter();
24
+ this.input = new EventEmitter();
25
+ this.focus = new EventEmitter();
26
+ this.blur = new EventEmitter();
27
+ this.actionComplete = new EventEmitter();
28
+ this.family = fontFamily;
29
+ this.fontSize = size;
75
30
  this.tools = {
76
31
  enableFloating: false,
77
32
  items: [
78
- {
79
- tooltipText: "AI Assist",
80
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="ai_assistant_button_tbar" style="width:100%"><div class="e-rte-dropdown-btn-text">AI Assist</div></button>',
81
- },
82
33
  "Bold",
83
34
  "Italic",
84
35
  "Underline",
@@ -93,21 +44,12 @@ var RichtexteditorComponent = /** @class */ (function () {
93
44
  "CreateTable",
94
45
  "Formats",
95
46
  "Alignments",
96
- {
97
- tooltipText: "Line Height",
98
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="lineheight_tbar" style="width:100%"></button>',
99
- },
100
- "OrderedList",
101
- "UnorderedList",
47
+ "BulletFormatList",
48
+ "NumberFormatList",
102
49
  "Outdent",
103
50
  "Indent",
104
51
  "|",
105
52
  "CreateLink",
106
- {
107
- tooltipText: "",
108
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%">' +
109
- '<div class="e-tbar-btn-text" style="font-weight: 500;"><img src="/assets/img/file-icon.svg" style="position: relative;top: -2px;"/><div class="uploadActions"><div id="uploadFromUser">Computer File</div><div id="relationDom">Ticket Attachment</div></div></div></button>',
110
- },
111
53
  "|",
112
54
  "FormatPainter",
113
55
  "ClearFormat",
@@ -116,14 +58,64 @@ var RichtexteditorComponent = /** @class */ (function () {
116
58
  "Redo",
117
59
  ],
118
60
  };
61
+ /**
62
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
63
+ */
64
+ this.quickToolbarSettings = {
65
+ table: [
66
+ "Tableheader",
67
+ "TableRemove",
68
+ "|",
69
+ "TableRows",
70
+ "TableColumns",
71
+ "TableCell",
72
+ "|",
73
+ "Styles",
74
+ "BackgroundColor",
75
+ "Alignments",
76
+ "TableCellVerticalAlign",
77
+ ],
78
+ };
79
+ this.bulletFormatList = {
80
+ types: [
81
+ { text: "None", value: "none" },
82
+ { text: "●", value: "disc" },
83
+ { text: "○", value: "circle" },
84
+ { text: "■", value: "square" },
85
+ { text: "-", value: "dash" },
86
+ ],
87
+ };
88
+ this.numberFormatList = {
89
+ types: [
90
+ { text: "None", value: "none" },
91
+ { text: "1, 2, 3, …", value: "decimal" },
92
+ {
93
+ text: "α, β, γ, …",
94
+ value: "lowerGreek",
95
+ },
96
+ {
97
+ text: "i, ii, iii, …",
98
+ value: "lowerRoman",
99
+ },
100
+ {
101
+ text: "A, B, C, …",
102
+ value: "upperAlpha",
103
+ },
104
+ {
105
+ text: "a, b, c, …",
106
+ value: "lowerAlpha",
107
+ },
108
+ {
109
+ text: "I, II, III, …",
110
+ value: "upperRoman",
111
+ },
112
+ {
113
+ text: "(1), (2), (3), …",
114
+ value: "parentheses",
115
+ },
116
+ ],
117
+ };
119
118
  }
120
- /**
121
- * @return {?}
122
- */
123
- RichtexteditorComponent.prototype.ngOnInit = /**
124
- * @return {?}
125
- */
126
- function () { };
127
119
  /**
128
120
  * @param {?} args
129
121
  * @return {?}
@@ -133,32 +125,6 @@ var RichtexteditorComponent = /** @class */ (function () {
133
125
  * @return {?}
134
126
  */
135
127
  function (args) {
136
- /** @type {?} */
137
- var tables = document.querySelectorAll("table.e-rte-table");
138
- tables.forEach((/**
139
- * @param {?} table
140
- * @return {?}
141
- */
142
- function (table) {
143
- /** @type {?} */
144
- var htmlTable = (/** @type {?} */ (table));
145
- htmlTable.style.marginBottom = "10px";
146
- htmlTable.style.borderCollapse = "collapse";
147
- htmlTable.style.emptyCells = "show";
148
- /** @type {?} */
149
- var tdElements = table.querySelectorAll("td");
150
- tdElements.forEach((/**
151
- * @param {?} td
152
- * @return {?}
153
- */
154
- function (td) {
155
- td.style.border = "1px solid #adb5bd";
156
- td.style.height = "20px";
157
- td.style.minWidth = "20px";
158
- td.style.padding = "2px 5px";
159
- td.style.boxSizing = "border-box";
160
- }));
161
- }));
162
128
  this.change.emit(args);
163
129
  };
164
130
  /**
@@ -168,514 +134,157 @@ var RichtexteditorComponent = /** @class */ (function () {
168
134
  * @return {?}
169
135
  */
170
136
  function () {
171
- var _this = this;
172
- //bind the a click event
173
- // let editorContent = this.rteObj.contentModule.getEditPanel() as HTMLElement;
174
- // editorContent.addEventListener('click', this.OnClicked.bind(this));
175
- //add the line height
176
- this.editorManager = this.rteObj.formatter.editorManager;
177
- /** @type {?} */
178
- var splitButton = new DropDownButton({
179
- items: lineHeight_items,
180
- iconCss: "e-icons e-line-spacing",
181
- select: this.onSelect.bind(this),
182
- });
183
- splitButton.appendTo("#lineheight_tbar");
184
- // ai assist
185
- /** @type {?} */
186
- var aiassistantButton = new DropDownButton({
187
- items: this.queryList,
188
- // iconCss: "e-btn-icon e-icons e-assistview-icon e-icon-left",
189
- select: (/**
190
- * @param {?} args
191
- * @return {?}
192
- */
193
- function (args) { return _this.aiQuerySelectedMenu(args); }),
194
- });
195
- aiassistantButton.appendTo("#ai_assistant_button_tbar");
137
+ this.created.emit();
196
138
  };
197
139
  /**
198
- * @private
199
140
  * @param {?} args
200
141
  * @return {?}
201
142
  */
202
- RichtexteditorComponent.prototype.onSelect = /**
203
- * @private
143
+ RichtexteditorComponent.prototype._toolbarClick = /**
204
144
  * @param {?} args
205
145
  * @return {?}
206
146
  */
207
147
  function (args) {
208
- if (this.rteObj.formatter.getUndoRedoStack().length === 0) {
209
- this.rteObj.formatter.saveData();
210
- }
211
- /** @type {?} */
212
- var nodes = this.editorManager.domNode.blockNodes();
213
- for (var i = 0; nodes.length > i; i++) {
214
- ((/** @type {?} */ (nodes[i]))).style.lineHeight = args.item.text;
215
- }
216
- this.rteObj.formatter.saveData();
217
- this.rteObj.formatter.enableUndo(this.rteObj);
148
+ this.toolbarClick.emit(args);
218
149
  };
219
150
  /**
220
- * @private
221
151
  * @param {?} args
222
152
  * @return {?}
223
153
  */
224
- RichtexteditorComponent.prototype.aiQuerySelectedMenu = /**
225
- * @private
154
+ RichtexteditorComponent.prototype._actionBegin = /**
226
155
  * @param {?} args
227
156
  * @return {?}
228
157
  */
229
158
  function (args) {
230
- this.dialogueOpen(args.item.text);
231
- };
232
- /**
233
- * @param {?} selectedQuery
234
- * @return {?}
235
- */
236
- RichtexteditorComponent.prototype.dialogueOpen = /**
237
- * @param {?} selectedQuery
238
- * @return {?}
239
- */
240
- function (selectedQuery) {
241
- var _this = this;
242
- /** @type {?} */
243
- var selectionText = this.rteObj.getSelectedHtml();
244
- this.selectedQuery = selectedQuery;
245
- if (selectionText) {
246
- /** @type {?} */
247
- var range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
248
- ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.save(range, ((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
249
- this.dropValIndex = this.queryList.findIndex((/**
250
- * @param {?} q
251
- * @return {?}
252
- */
253
- function (q) { return q.text.toLowerCase() === selectedQuery.toLowerCase(); }));
254
- this.queryCategory.index = this.dropValIndex;
255
- this.leftRte.value = this.promptQuery = selectionText;
256
- this.leftRte.refreshUI();
257
- this.AIdialog.show();
258
- this.updateAISugesstionsData(selectedQuery);
259
- }
260
- else {
261
- this.showMsg = true;
262
- setTimeout((/**
263
- * @return {?}
264
- */
265
- function () {
266
- _this.showMsg = false;
267
- }), 3000);
268
- console.log("Please select the content to perform the AI operation.");
269
- }
270
- };
271
- /**
272
- * @param {?} selectedQuery
273
- * @return {?}
274
- */
275
- RichtexteditorComponent.prototype.updateAISugesstionsData = /**
276
- * @param {?} selectedQuery
277
- * @return {?}
278
- */
279
- function (selectedQuery) {
280
- this.isSentimentCheck = false;
281
- switch (selectedQuery) {
282
- case "Summarize":
283
- this.subQuery = "Summarize the upcoming sentence shortly.";
284
- break;
285
- case "Elaborate":
286
- this.subQuery = "Elaborate on the upcoming sentence.";
287
- break;
288
- case "Rephrase":
289
- this.subQuery = this.chipValue + " rephrase the upcoming sentence.";
290
- break;
291
- case "Correct Grammar":
292
- this.subQuery = "Correct the grammar of the upcoming sentence.";
293
- break;
294
- case "Translate":
295
- this.subQuery =
296
- "Translate the upcoming sentence to " + this.translatelanguage + ".";
297
- break;
298
- case "Sentiment Analysis":
299
- this.isSentimentCheck = true;
300
- this.subQuery =
301
- 'Analyze the sentiment and grammar of the following paragraphs and provide the expression score with an emoji followed by the sentiment in the format: "😊 Neutral". \n\nNOTE: Avoid any additional text or explanation:';
302
- break;
303
- }
304
- this.updateAISugesstions();
305
- };
306
- /**
307
- * @return {?}
308
- */
309
- RichtexteditorComponent.prototype.updateAISugesstions = /**
310
- * @return {?}
311
- */
312
- function () {
313
- var _this = this;
314
- try {
315
- if (this.promptQuery) {
316
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
317
- "";
318
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
319
- "none";
320
- this.sentimentButton.element.style.display = "none";
321
- this.regenerateButton.disabled = true;
322
- this.copyButton.disabled = true;
323
- this.replaceButton.disabled = true;
324
- this.apiResultData = this.getResponseFromOpenAI(this.subQuery, this.promptQuery);
325
- this.apiResultData.then((/**
326
- * @param {?} result
327
- * @return {?}
328
- */
329
- function (result) {
330
- _this.AIResult = _this.isSentimentCheck ? _this.promptQuery : result;
331
- _this.sentimentButton.content = result
332
- .toLowerCase()
333
- .includes("positive")
334
- ? "😊 Positive"
335
- : result.toLowerCase().includes("negative")
336
- ? "😞 Negative"
337
- : "😐 Neutral";
338
- _this.sentimentButton.element.style.display = !_this.isSentimentCheck
339
- ? "none"
340
- : "";
341
- _this.rightRte.value = _this.AIResult;
342
- /** @type {?} */
343
- var noResultsFound = !(_this.AIResult || _this.promptQuery);
344
- ((/** @type {?} */ (document.getElementById("no-results-found")))).style.display = noResultsFound ? "" : "none";
345
- _this.regenerateButton.disabled = noResultsFound;
346
- _this.copyButton.disabled = noResultsFound;
347
- _this.replaceButton.disabled = noResultsFound;
348
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
349
- "none";
350
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
351
- noResultsFound ? "none" : "";
352
- console.log(noResultsFound, ((/** @type {?} */ (document.getElementById("rightRte")))).style);
353
- // this.ref.markForCheck();
354
- }));
355
- }
356
- }
357
- catch (_a) {
358
- // this.toastObj.show();
359
- }
360
- };
361
- /**
362
- * @param {?} subQuery
363
- * @param {?} promptQuery
364
- * @return {?}
365
- */
366
- RichtexteditorComponent.prototype.getResponseFromOpenAI = /**
367
- * @param {?} subQuery
368
- * @param {?} promptQuery
369
- * @return {?}
370
- */
371
- function (subQuery, promptQuery) {
372
- return tslib_1.__awaiter(this, void 0, void 0, function () {
373
- var content;
374
- return tslib_1.__generator(this, function (_a) {
375
- switch (_a.label) {
376
- case 0: return [4 /*yield*/, OpenAiModelRTE(subQuery, promptQuery)];
377
- case 1:
378
- content = _a.sent();
379
- return [2 /*return*/, content ? ((/** @type {?} */ (content))) : ""];
380
- }
381
- });
382
- });
383
- };
384
- /**
385
- * @return {?}
386
- */
387
- RichtexteditorComponent.prototype.dialogShow = /**
388
- * @return {?}
389
- */
390
- function () {
391
- var _this = this;
392
- (/** @type {?} */ (this.regenerateButton)).element.addEventListener("click", (/**
393
- * @return {?}
394
- */
395
- function () {
396
- _this.updateAISugesstions();
397
- }));
398
- (/** @type {?} */ (this.copyButton)).element.addEventListener("click", (/**
399
- * @return {?}
400
- */
401
- function () {
402
- _this.copyTextToClipboard(_this.AIResult);
403
- }));
404
- (/** @type {?} */ (this.replaceButton)).element.addEventListener("click", (/**
405
- * @return {?}
406
- */
407
- function () {
408
- /** @type {?} */
409
- var range = ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (_this.rteObj))).contentModule.getDocument());
410
- ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.restore(range);
411
- ((/** @type {?} */ (_this.rteObj))).executeCommand("insertHTML", _this.AIResult, {
412
- undo: true,
413
- });
414
- _this.closeDialog();
415
- }));
416
- ((/** @type {?} */ (this.AIdialog))).element.style.display = "";
417
- };
418
- /**
419
- * @return {?}
420
- */
421
- RichtexteditorComponent.prototype.closeDialog = /**
422
- * @return {?}
423
- */
424
- function () {
425
- this.AIdialog.hide();
426
- this.rightRte.value = "";
427
- this.leftRte.value = "";
428
- this.promptQuery = "";
429
- this.chipValue = "Standard";
430
- this.AIResult = "";
431
- this.dropValIndex = 0;
432
- this.selectedQuery = "Rephrase";
433
- this.sentimentButton.content = "😊 Neutral";
434
- };
435
- /**
436
- * @param {?} text
437
- * @return {?}
438
- */
439
- RichtexteditorComponent.prototype.copyTextToClipboard = /**
440
- * @param {?} text
441
- * @return {?}
442
- */
443
- function (text) {
444
- if (navigator.clipboard) {
445
- navigator.clipboard
446
- .writeText(text)
447
- .then((/**
448
- * @return {?}
449
- */
450
- function () {
451
- console.log("Text copied to clipboard successfully!");
452
- }))
453
- .catch((/**
454
- * @param {?} err
455
- * @return {?}
456
- */
457
- function (err) {
458
- console.error("Failed to copy text: ", err);
459
- }));
460
- }
461
- else {
462
- // Fallback for browsers that do not support the Clipboard API
463
- /** @type {?} */
464
- var textarea = document.createElement("textarea");
465
- textarea.value = text;
466
- document.body.appendChild(textarea);
467
- textarea.select();
468
- try {
469
- document.execCommand("copy");
470
- console.log("Text copied to clipboard using execCommand");
471
- }
472
- catch (err) {
473
- console.error("Failed to copy text: ", err);
474
- }
475
- finally {
476
- document.body.removeChild(textarea);
477
- }
478
- }
479
- };
480
- /**
481
- * @return {?}
482
- */
483
- RichtexteditorComponent.prototype.onOverlayClick = /**
484
- * @return {?}
485
- */
486
- function () {
487
- /** @type {?} */
488
- var activeEle = this.AIdialog.element.querySelector(".char_block.e-active");
489
- if (activeEle) {
490
- activeEle.classList.remove("e-active");
491
- }
492
- this.closeDialog();
159
+ this.actionBegin.emit(args);
493
160
  };
494
161
  /**
495
162
  * @param {?} args
496
163
  * @return {?}
497
164
  */
498
- RichtexteditorComponent.prototype.onQuerySelect = /**
165
+ RichtexteditorComponent.prototype._input = /**
499
166
  * @param {?} args
500
167
  * @return {?}
501
168
  */
502
169
  function (args) {
503
- // this.chipList.selectedChips = 0;
504
- this.translatelanguage = "EN";
505
- this.selectedQuery = args.itemData.text;
506
- this.updateAISugesstionsData(args.itemData.text);
170
+ this.input.emit(args);
507
171
  };
508
172
  /**
509
173
  * @param {?} args
510
174
  * @return {?}
511
175
  */
512
- RichtexteditorComponent.prototype.onLanguageSelect = /**
176
+ RichtexteditorComponent.prototype._actionComplete = /**
513
177
  * @param {?} args
514
178
  * @return {?}
515
179
  */
516
180
  function (args) {
517
- this.translatelanguage = args.itemData.id;
518
- this.updateAISugesstionsData("Translate");
181
+ if (args.requestType == "UL") {
182
+ if (args.elements[0].parentElement.style.listStyleType == "dash") {
183
+ args.elements[0].parentElement.style.listStyleImage =
184
+ "url('../../../assets/img/bullet-dash.svg')";
185
+ args.elements[0].parentElement.style.listStyleType = "none";
186
+ }
187
+ }
188
+ else if (args.requestType == "OL") {
189
+ args.elements[0].parentElement.classList.remove("custom-list", "parentheses");
190
+ if (args.elements[0].parentElement.style.listStyleType == "parentheses") {
191
+ args.elements[0].parentElement.classList = "custom-list";
192
+ args.elements[0].parentElement.classList.add("parentheses");
193
+ }
194
+ }
195
+ this.actionComplete.emit(args);
519
196
  };
520
197
  /**
521
198
  * @param {?} args
522
199
  * @return {?}
523
200
  */
524
- RichtexteditorComponent.prototype.onChipClick = /**
201
+ RichtexteditorComponent.prototype._focus = /**
525
202
  * @param {?} args
526
203
  * @return {?}
527
204
  */
528
205
  function (args) {
529
- this.chipValue = args.itemData.text;
530
- // 事件会触发两次 必须判断args.text是否有值
531
- if (args.itemData.text)
532
- this.updateAISugesstionsData("Rephrase");
206
+ this.focus.emit(args);
533
207
  };
534
208
  /**
535
209
  * @param {?} args
536
210
  * @return {?}
537
211
  */
538
- RichtexteditorComponent.prototype._toolbarClick = /**
212
+ RichtexteditorComponent.prototype._blur = /**
539
213
  * @param {?} args
540
214
  * @return {?}
541
215
  */
542
216
  function (args) {
543
- this.toolbarClick.emit(args);
544
- };
545
- /**
546
- * @return {?}
547
- */
548
- RichtexteditorComponent.prototype.hideToast = /**
549
- * @return {?}
550
- */
551
- function () {
552
- this.showMsg = false;
553
- };
554
- /**
555
- * @return {?}
556
- */
557
- RichtexteditorComponent.prototype.onZoom = /**
558
- * @return {?}
559
- */
560
- function () {
561
- if (this.size === "largest") {
562
- this.size = ""; // 恢复到原始大小
563
- }
564
- else {
565
- this.size = "largest"; // 设置为最大化
566
- }
217
+ this.blur.emit(args);
567
218
  };
568
219
  RichtexteditorComponent.decorators = [
569
220
  { type: Component, args: [{
570
221
  selector: "rs-richtext-editor",
571
- template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n id=\"editor\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [fontFamily]=\"family\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n <ejs-dialog\r\n #AIdialog\r\n id=\"AIdialog\"\r\n [ngClass]=\"size\"\r\n [visible]=\"false\"\r\n [target]=\"target\"\r\n [isModal]=\"true\"\r\n [height]=\"dialogHeight\"\r\n [width]=\"dialogWidth\"\r\n maxHeight=\"80%\"\r\n cssClass=\"e-rte-elements custom-dialog-rte\"\r\n zIndex=\"1000\"\r\n (close)=\"closeDialog()\"\r\n (overlayClick)=\"onOverlayClick()\"\r\n (open)=\"dialogShow()\"\r\n >\r\n <ng-template #header>\r\n <div class=\"header-title\">AI Assist</div>\r\n <div class=\"header-buttons\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-zoom\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div class=\"header-btn\" (click)=\"closeDialog()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #footerTemplate>\r\n <div id=\"dialog-footer-content\">\r\n <div class=\"custom-row-0\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"width: 100%; align-items: center; justify-content: left\"\r\n ></div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: right; width: 100%\">\r\n <button\r\n ejs-button\r\n #sentimentButton\r\n content=\"\uD83D\uDE0A Neutral\"\r\n disabled=\"false\"\r\n cssClass=\"sentiment\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #copyButton\r\n content=\"Copy\"\r\n disabled=\"false\"\r\n class=\"copy-btn\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #replaceButton\r\n content=\"Replace\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"dialog-content\" style=\"height: 100%\">\r\n <div class=\"custom-row-0\">\r\n <div class=\"cuscol-0\" style=\"width: 100%\">\r\n <ejs-dropdownlist\r\n #queryCategory\r\n style=\"width: 200px\"\r\n id=\"queryCategory\"\r\n [dataSource]=\"queryList\"\r\n index=\"0\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onQuerySelect($event)\"\r\n >\r\n Rephrase\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Rephrase'\"\r\n id=\"chips-container\"\r\n #chipList\r\n style=\"width: 160px\"\r\n [(ngModel)]=\"chipValue\"\r\n [dataSource]=\"rephraseTyleList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onChipClick($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Translate'\"\r\n #languageCategory\r\n index=\"0\"\r\n id=\"language-Category\"\r\n [dataSource]=\"languageList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onLanguageSelect($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- <ejs-chiplist\r\n id=\"chips-container\"\r\n #chipList\r\n [chips]=\"['Standard', 'Fluent', 'Professional']\"\r\n selection=\"Single\"\r\n cssClass=\"e-outline\"\r\n [selectedChips]=\"[0]\"\r\n (click)=\"onChipClick($event)\"\r\n >\r\n </ejs-chiplist> -->\r\n <button\r\n ejs-button\r\n #regenerateButton\r\n content=\"Regenerate\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"custom-row-1\" style=\"height: calc(100% - 40px)\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: left;\r\n \"\r\n >\r\n <div style=\"text-align: left; height: 100%\">\r\n <ejs-richtexteditor\r\n #leftRte\r\n id=\"leftRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n </ejs-richtexteditor>\r\n </div>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: left; width: 100%; height: 100%\">\r\n <ejs-richtexteditor\r\n #rightRte\r\n id=\"rightRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n <!-- style=\"display: none\" -->\r\n </ejs-richtexteditor>\r\n <div\r\n class=\"no-results-found\"\r\n id=\"no-results-found\"\r\n style=\"display: none; height: 244px; align-content: center\"\r\n >\r\n <img\r\n height=\"50\"\r\n width=\"50\"\r\n src=\"https://storage.googleapis.com/cdn-bolddesk/agent-angular-app/images/light/no-records-warning.svg\"\r\n />\r\n <div>No results found</div>\r\n </div>\r\n <div id=\"skeletonId\" style=\"display: none\">\r\n <ejs-skeleton\r\n #skeletonId1\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"100%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId2\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"90%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId3\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"70%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId4\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"50%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId5\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"30%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId6\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"10%\"\r\n ></ejs-skeleton\r\n ><br />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ejs-dialog>\r\n <div class=\"toast\" *ngIf=\"showMsg\">\r\n <span class=\"toast_text\">First, Select some text</span\r\n ><span class=\"close_icon\" (click)=\"hideToast()\"></span>\r\n </div>\r\n</div>\r\n",
222
+ template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n [id]=\"editorId\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [quickToolbarSettings]=\"quickToolbarSettings\"\r\n [bulletFormatList]=\"bulletFormatList\"\r\n [numberFormatList]=\"numberFormatList\"\r\n [fontFamily]=\"family\"\r\n [fontSize]=\"fontSize\"\r\n [disabled]=\"disabled\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n (input)=\"_input($event)\"\r\n (focus)=\"_focus($event)\"\r\n (blur)=\"_blur($event)\"\r\n (actionComplete)=\"_actionComplete($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n</div>\r\n",
572
223
  styles: [".editor_box{position:relative;width:100%;height:100%}.editor_box .toast{position:absolute;left:35%;top:110px;z-index:1;width:400px;border-radius:4px;border:1px solid #e8f2ff;background:#f4f8ff;padding:4px 12px;color:#1f3f5c;font-size:12px;font-style:normal;font-weight:400;height:32px;font-family:Arial;display:flex;align-items:center;justify-content:space-between}.editor_box .toast .toast_text::before{content:url(../../assets/img/info.svg);display:inline-block;width:16px;height:16px;vertical-align:bottom;margin-right:8px}.editor_box .toast .close_icon{background-image:url(../../assets/img/notification-close.svg);cursor:pointer;display:inline-block;width:16px;height:16px}.custom-dialog-rte{padding:0 20px;border-radius:10px}.custom-row-0,.custom-row-1,.custom-row-2{display:flex;align-items:center;padding:12px 24px}.e-rte-dropdown-btn-text{padding-left:4px}.no-results-found{text-align:center}.no-results-found img{display:block;margin:0 auto}.e-custom{margin-right:.5rem;border-radius:25px!important}.custom-dialog-rte .skeleton-rectangle{border-radius:4px}@media (max-width:767px){.cuscol-0,.cuscol-1,.cuscol-2{justify-content:center!important}.custom-row-0,.custom-row-1,.custom-row-2{flex-direction:column!important}.cuscol-1{border-right:none!important}.cuscol-0{width:100%;align-items:center}::ng-deep:host .e-dialog{max-height:80%!important}.custom-dialog-rte .e-dialog .e-dlg-content{overflow-y:auto!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor{height:100px!important}.cuscol-noresult{padding-bottom:20px!important}.e-chip-list{padding:5px!important}.cuscol{padding-right:.2rem!important;width:auto!important}.custom-row-1{height:auto!important}}.cuscol-1{display:flex;flex-direction:row!important}.cuscol-2{display:flex;flex-direction:column!important}.sentiment{color:#000!important}.custom-dialog-rte .e-dialog .e-dlg-content{padding:0!important;overflow-y:hidden}.custom-dialog-rte .e-dialog .e-dlg-header-content{padding:20px 0!important;border:0!important}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header{display:flex;align-items:center;line-height:18px;justify-content:space-between}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header .header-title{font-family:Arial;font-size:15px;font-weight:700;font-style:normal}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons{display:flex}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons img{width:16px;height:16px;cursor:pointer;padding:2px;margin-left:12px}.custom-dialog-rte .e-dialog .e-footer-content{padding:0!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor.e-rte-tb-expand .e-rte-content,.e-richtexteditor.e-rte-tb-expand .e-source-content{border:0;border-bottom:1px solid #dee2e6;border-top:0 solid #dee2e6!important}.custom-dialog-rte .dialog-content .custom-row-0{border-top:0 solid #ddd!important;padding:0;margin-bottom:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-0{justify-content:left;border-right:none!important;padding:0;display:flex;gap:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1{padding:0;margin-left:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1 .e-primary{color:#44566c;border-radius:4px;border:1px solid #dbe1e7;background:#fff;width:87px;margin:0;padding:2px 12px;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;height:28px}.custom-dialog-rte .dialog-content .custom-row-1{padding:0;height:calc(100% - 40px);gap:12px}.custom-dialog-rte .e-footer-content{border:0}.custom-dialog-rte .e-footer-content .custom-row-0{padding:20px 0}.custom-dialog-rte .e-footer-content .e-control.e-btn{font-family:Arial;font-size:12px;line-height:14px;padding:2px 12px;height:28px;background:#fff;color:#44566c}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn{border-color:#dbe1e7}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn::before{content:url(../../assets/img/editor-copy.svg);vertical-align:middle;margin-right:6px}.custom-dialog-rte .e-footer-content .e-control.e-btn.e-primary{color:#fff;background:#1364b3}.editor_box .e-dialog.largest{width:96vw!important;height:88vh!important;max-height:88vh;max-width:2100px}"]
573
224
  }] }
574
225
  ];
575
- /** @nocollapse */
576
- RichtexteditorComponent.ctorParameters = function () { return [
577
- { type: ChangeDetectorRef }
578
- ]; };
579
226
  RichtexteditorComponent.propDecorators = {
580
- rteObj: [{ type: ViewChild, args: ["editor", { static: false },] }],
581
- queryCategory: [{ type: ViewChild, args: ["queryCategory", { static: false },] }],
582
- leftRte: [{ type: ViewChild, args: ["leftRte", { static: false },] }],
583
- rightRte: [{ type: ViewChild, args: ["rightRte", { static: false },] }],
584
- AIdialog: [{ type: ViewChild, args: ["AIdialog", { static: true },] }],
585
- sentimentButton: [{ type: ViewChild, args: ["sentimentButton", { static: false },] }],
586
- regenerateButton: [{ type: ViewChild, args: ["regenerateButton", { static: false },] }],
587
- copyButton: [{ type: ViewChild, args: ["copyButton", { static: false },] }],
588
- replaceButton: [{ type: ViewChild, args: ["replaceButton", { static: false },] }],
589
- placeholder: [{ type: Input }],
590
227
  value: [{ type: Input }],
228
+ editorId: [{ type: Input }],
591
229
  height: [{ type: Input }],
592
230
  autoSaveOnIdle: [{ type: Input }],
593
- target: [{ type: Input }],
231
+ disabled: [{ type: Input }],
232
+ insertImageSettings: [{ type: Input }],
594
233
  toolbarClick: [{ type: Output }],
595
- change: [{ type: Output }]
234
+ change: [{ type: Output }],
235
+ created: [{ type: Output }],
236
+ actionBegin: [{ type: Output }],
237
+ input: [{ type: Output }],
238
+ focus: [{ type: Output }],
239
+ blur: [{ type: Output }],
240
+ actionComplete: [{ type: Output }]
596
241
  };
597
242
  return RichtexteditorComponent;
598
243
  }());
599
244
  export { RichtexteditorComponent };
600
245
  if (false) {
601
- /** @type {?} */
602
- RichtexteditorComponent.prototype.rteObj;
603
- /** @type {?} */
604
- RichtexteditorComponent.prototype.queryCategory;
605
- /** @type {?} */
606
- RichtexteditorComponent.prototype.leftRte;
607
- /** @type {?} */
608
- RichtexteditorComponent.prototype.rightRte;
609
- /** @type {?} */
610
- RichtexteditorComponent.prototype.AIdialog;
611
- /** @type {?} */
612
- RichtexteditorComponent.prototype.sentimentButton;
613
- /** @type {?} */
614
- RichtexteditorComponent.prototype.regenerateButton;
615
- /** @type {?} */
616
- RichtexteditorComponent.prototype.copyButton;
617
- /** @type {?} */
618
- RichtexteditorComponent.prototype.replaceButton;
619
- /** @type {?} */
620
- RichtexteditorComponent.prototype.placeholder;
621
246
  /** @type {?} */
622
247
  RichtexteditorComponent.prototype.value;
623
248
  /** @type {?} */
249
+ RichtexteditorComponent.prototype.editorId;
250
+ /** @type {?} */
624
251
  RichtexteditorComponent.prototype.height;
625
252
  /** @type {?} */
626
253
  RichtexteditorComponent.prototype.autoSaveOnIdle;
627
254
  /** @type {?} */
628
- RichtexteditorComponent.prototype.target;
629
- /** @type {?} */
630
- RichtexteditorComponent.prototype.toolbarClick;
631
- /** @type {?} */
632
- RichtexteditorComponent.prototype.change;
633
- /** @type {?} */
634
- RichtexteditorComponent.prototype.family;
635
- /** @type {?} */
636
- RichtexteditorComponent.prototype.dialogWidth;
637
- /** @type {?} */
638
- RichtexteditorComponent.prototype.dialogHeight;
639
- /** @type {?} */
640
- RichtexteditorComponent.prototype.showZoomBtn;
641
- /** @type {?} */
642
- RichtexteditorComponent.prototype.showMsg;
255
+ RichtexteditorComponent.prototype.disabled;
643
256
  /** @type {?} */
644
257
  RichtexteditorComponent.prototype.insertImageSettings;
645
258
  /** @type {?} */
646
- RichtexteditorComponent.prototype.editorManager;
647
- /** @type {?} */
648
- RichtexteditorComponent.prototype.size;
649
- /** @type {?} */
650
- RichtexteditorComponent.prototype.selectedQuery;
651
- /** @type {?} */
652
- RichtexteditorComponent.prototype.dropValIndex;
653
- /** @type {?} */
654
- RichtexteditorComponent.prototype.queryList;
259
+ RichtexteditorComponent.prototype.toolbarClick;
655
260
  /** @type {?} */
656
- RichtexteditorComponent.prototype.rephraseTyleList;
261
+ RichtexteditorComponent.prototype.change;
657
262
  /** @type {?} */
658
- RichtexteditorComponent.prototype.languageList;
263
+ RichtexteditorComponent.prototype.created;
659
264
  /** @type {?} */
660
- RichtexteditorComponent.prototype.promptQuery;
265
+ RichtexteditorComponent.prototype.actionBegin;
661
266
  /** @type {?} */
662
- RichtexteditorComponent.prototype.isSentimentCheck;
267
+ RichtexteditorComponent.prototype.input;
663
268
  /** @type {?} */
664
- RichtexteditorComponent.prototype.subQuery;
269
+ RichtexteditorComponent.prototype.focus;
665
270
  /** @type {?} */
666
- RichtexteditorComponent.prototype.translatelanguage;
271
+ RichtexteditorComponent.prototype.blur;
667
272
  /** @type {?} */
668
- RichtexteditorComponent.prototype.chipValue;
273
+ RichtexteditorComponent.prototype.actionComplete;
669
274
  /** @type {?} */
670
- RichtexteditorComponent.prototype.apiResultData;
275
+ RichtexteditorComponent.prototype.family;
671
276
  /** @type {?} */
672
- RichtexteditorComponent.prototype.AIResult;
277
+ RichtexteditorComponent.prototype.fontSize;
673
278
  /** @type {?} */
674
279
  RichtexteditorComponent.prototype.tools;
675
280
  /**
281
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
676
282
  * @type {?}
677
- * @private
678
283
  */
679
- RichtexteditorComponent.prototype.ref;
284
+ RichtexteditorComponent.prototype.quickToolbarSettings;
285
+ /** @type {?} */
286
+ RichtexteditorComponent.prototype.bulletFormatList;
287
+ /** @type {?} */
288
+ RichtexteditorComponent.prototype.numberFormatList;
680
289
  }
681
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL3JpY2h0ZXh0ZWRpdG9yL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVULGlCQUFpQixFQUNqQixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLHFCQUFxQixHQUN0QixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFLTCx1QkFBdUIsR0FFeEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFLakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQztJQXlJRSxpQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7O1FBOUdqQyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQUNiLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxjQUFjOztRQUVwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O1FBR3RDLFdBQU0sR0FBRyxVQUFVLENBQUM7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LGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7OEJBSTVDLEtBQUs7d0JBQ0wsS0FBSzt5QkFDTCxLQUFLO2lDQUNMLEtBQUs7eUJBQ0wsS0FBSzsrQkFFTCxNQUFNO3lCQUNOLE1BQU07O0lBZ1lULDhCQUFDO0NBQUEsQUFsYUQsSUFrYUM7U0EzWlksdUJBQXVCOzs7SUFDbEMseUNBQ3VDOztJQUN2QyxnREFDNkM7O0lBQzdDLDBDQUN5Qzs7SUFDekMsMkNBQzBDOztJQUMxQywyQ0FBMkU7O0lBQzNFLGtEQUN5Qzs7SUFDekMsbURBQzBDOztJQUMxQyw2Q0FDb0M7O0lBQ3BDLGdEQUN1Qzs7SUFHdkMsOENBQTBCOztJQUMxQix3Q0FBb0I7O0lBQ3BCLHlDQUFzQjs7SUFDdEIsaURBQStCOztJQUMvQix5Q0FBK0I7O0lBRS9CLCtDQUE0Qzs7SUFDNUMseUNBQXNDOztJQUd0Qyx5Q0FBb0I7O0lBQ3BCLDhDQUFzQjs7SUFDdEIsK0NBQXVCOztJQUN2Qiw4Q0FBbUI7O0lBQ25CLDBDQUFnQjs7SUFDaEIsc0RBSUU7O0lBQ0YsZ0RBQW1COztJQUNuQix1Q0FBVTs7SUFDVixnREFBYzs7SUFDZCwrQ0FBd0I7O0lBQ3hCLDRDQU9FOztJQUNGLG1EQUlFOztJQUNGLCtDQWdCRTs7SUFDRiw4Q0FBd0I7O0lBQ3hCLG1EQUF5Qzs7SUFDekMsMkNBQXFCOztJQUNyQixvREFBa0M7O0lBQ2xDLDRDQUE4Qjs7SUFDOUIsZ0RBQTBCOztJQUMxQiwyQ0FBeUI7O0lBQ3pCLHdDQStDRTs7Ozs7SUFFVSxzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICBEcm9wRG93bkxpc3RDb21wb25lbnQsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQge1xyXG4gIFRvb2xiYXJTZXJ2aWNlLFxyXG4gIExpbmtTZXJ2aWNlLFxyXG4gIEltYWdlU2VydmljZSxcclxuICBIdG1sRWRpdG9yU2VydmljZSxcclxuICBSaWNoVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICBUb29sYmFyU2V0dGluZ3NNb2RlbCxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcmljaHRleHRlZGl0b3JcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b25Db21wb25lbnQsXHJcbiAgQ2hpcExpc3RDb21wb25lbnQsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJ1dHRvbnNcIjtcclxuaW1wb3J0IHsgRW1pdFR5cGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgRHJvcERvd25CdXR0b24gfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3BsaXRidXR0b25zXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1wb3B1cHNcIjtcclxuLy8gc2VydmljZVxyXG4vLyBpbXBvcnQgeyBQYkZ1blNlcnZpY2UgfSBmcm9tIFwiQGFwcC9zZXJ2aWNlcy9wYi1mdW4uc2VydmljZVwiO1xyXG4vLyBpbXBvcnQgeyBTaGFyZWRTeW5jZnVzaW9uTW9kdWxlIH0gZnJvbSBcIkBhcHAvbW9kdWxlL3N5bmNmdXNpb25Nb2R1bGVcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPcGVuQWlNb2RlbFJURSB9IGZyb20gXCIuL29wZW5hcGlcIjtcclxuaW1wb3J0IHsgbGluZUhlaWdodF9pdGVtcyB9IGZyb20gXCIuL2RhdGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IGZvbnRGYW1pbHkgfSBmcm9tIFwiLi9kYXRhLWNvbmZpZ1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtcmljaHRleHQtZWRpdG9yXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAvLyBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIC8vIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZFN5bmNmdXNpb25Nb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmljaHRleHRlZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0b3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJ0ZU9iajogUmljaFRleHRFZGl0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInF1ZXJ5Q2F0ZWdvcnlcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHF1ZXJ5Q2F0ZWdvcnkhOiBEcm9wRG93bkxpc3RDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImxlZnRSdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGxlZnRSdGUhOiBSaWNoVGV4dEVkaXRvckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwicmlnaHRSdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJpZ2h0UnRlITogUmljaFRleHRFZGl0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcIkFJZGlhbG9nXCIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBBSWRpYWxvZyE6IERpYWxvZ0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwic2VudGltZW50QnV0dG9uXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBzZW50aW1lbnRCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInJlZ2VuZXJhdGVCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJlZ2VuZXJhdGVCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImNvcHlCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGNvcHlCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInJlcGxhY2VCdXR0b25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIHJlcGxhY2VCdXR0b24hOiBCdXR0b25Db21wb25lbnQ7XHJcbiAgLy8gQFZpZXdDaGlsZChcImNoaXBMaXN0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgY2hpcExpc3QhOiBDaGlwTGlzdENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSBoZWlnaHQgPSAxNTA7XHJcbiAgQElucHV0KCkgYXV0b1NhdmVPbklkbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRhcmdldCA9IFwiI2NvbnRhaW5lclwiOyAvLyBkaWFsb2cg5by556qX54i257qnXHJcblxyXG4gIEBPdXRwdXQoKSB0b29sYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvLyBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmYW1pbHkgPSBmb250RmFtaWx5O1xyXG4gIGRpYWxvZ1dpZHRoID0gXCI4MDBweFwiO1xyXG4gIGRpYWxvZ0hlaWdodCA9IFwiNjQycHhcIjtcclxuICBzaG93Wm9vbUJ0biA9IHRydWU7XHJcbiAgc2hvd01zZyA9IGZhbHNlO1xyXG4gIGluc2VydEltYWdlU2V0dGluZ3MgPSB7XHJcbiAgICBzYXZlRm9ybWF0OiBcIkJsb2JcIixcclxuICAgIGFsbG93ZWRUeXBlczogW1wiLnN2Z1wiLCBcIi5wbmdcIl0sXHJcbiAgICBkaXNwbGF5OiBcIm5vbmVcIixcclxuICB9O1xyXG4gIGVkaXRvck1hbmFnZXI6IGFueTtcclxuICBzaXplID0gXCJcIjtcclxuICBzZWxlY3RlZFF1ZXJ5O1xyXG4gIHB1YmxpYyBkcm9wVmFsSW5kZXggPSAwO1xyXG4gIHB1YmxpYyBxdWVyeUxpc3Q6IHsgaWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nIH1bXSA9IFtcclxuICAgIHsgaWQ6IFwiUmVwaHJhc2VcIiwgdGV4dDogXCJSZXBocmFzZVwiIH0sXHJcbiAgICB7IGlkOiBcIkdyYW1tYXJcIiwgdGV4dDogXCJDb3JyZWN0IEdyYW1tYXJcIiB9LFxyXG4gICAgeyBpZDogXCJTdW1tYXJpemVcIiwgdGV4dDogXCJTdW1tYXJpemVcIiB9LFxyXG4gICAgeyBpZDogXCJFbGFib3JhdGVcIiwgdGV4dDogXCJFbGFib3JhdGVcIiB9LFxyXG4gICAgeyBpZDogXCJUcmFuc2xhdGVcIiwgdGV4dDogXCJUcmFuc2xhdGVcIiB9LFxyXG4gICAgeyBpZDogXCJTZW50aW1lbnRBbmFseXNpc1wiLCB0ZXh0OiBcIlNlbnRpbWVudCBBbmFseXNpc1wiIH0sXHJcbiAgXTtcclxuICBwdWJsaWMgcmVwaHJhc2VUeWxlTGlzdCA9IFtcclxuICAgIHsgdGV4dDogXCJTdGFuZGFyZFwiLCBpZDogXCJTdGFuZGFyZFwiIH0sXHJcbiAgICB7IHRleHQ6IFwiRmx1ZW50XCIsIGlkOiBcIkZsdWVudFwiIH0sXHJcbiAgICB7IHRleHQ6IFwiUHJvZmVzc2lvbmFsXCIsIGlkOiBcIlByb2Zlc3Npb25hbFwiIH0sXHJcbiAgXTtcclxuICBwdWJsaWMgbGFuZ3VhZ2VMaXN0OiB7IGlkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9W10gPSBbXHJcbiAgICB7IGlkOiBcIkVOXCIsIHRleHQ6IFwiRW5nbGlzaFwiIH0sXHJcbiAgICB7IGlkOiBcIlpIXCIsIHRleHQ6IFwiQ2hpbmVzZSAoU2ltcGxpZmllZClcIiB9LFxyXG4gICAgeyBpZDogXCJFU1wiLCB0ZXh0OiBcIlNwYW5pc2hcIiB9LFxyXG4gICAgeyBpZDogXCJaSFRcIiwgdGV4dDogXCJDaGluZXNlIChUcmFkaXRpb25hbClcIiB9LFxyXG4gICAgeyBpZDogXCJISVwiLCB0ZXh0OiBcIkhpbmRpXCIgfSxcclxuICAgIHsgaWQ6IFwiQVJcIiwgdGV4dDogXCJBcmFiaWNcIiB9LFxyXG4gICAgeyBpZDogXCJCTlwiLCB0ZXh0OiBcIkJlbmdhbGlcIiB9LFxyXG4gICAgeyBpZDogXCJQVFwiLCB0ZXh0OiBcIlBvcnR1Z3Vlc2VcIiB9LFxyXG4gICAgeyBpZDogXCJSVVwiLCB0ZXh0OiBcIlJ1c3NpYW5cIiB9LFxyXG4gICAgeyBpZDogXCJKQVwiLCB0ZXh0OiBcIkphcGFuZXNlXCIgfSxcclxuICAgIHsgaWQ6IFwiREVcIiwgdGV4dDogXCJHZXJtYW5cIiB9LFxyXG4gICAgeyBpZDogXCJLT1wiLCB0ZXh0OiBcIktvcmVhblwiIH0sXHJcbiAgICB7IGlkOiBcIkZSXCIsIHRleHQ6IFwiRnJlbmNoXCIgfSxcclxuICAgIHsgaWQ6IFwiSVRcIiwgdGV4dDogXCJJdGFsaWFuXCIgfSxcclxuICAgIHsgaWQ6IFwiVFJcIiwgdGV4dDogXCJUdXJraXNoXCIgfSxcclxuICBdO1xyXG4gIHB1YmxpYyBwcm9tcHRRdWVyeSA9IFwiXCI7XHJcbiAgcHVibGljIGlzU2VudGltZW50Q2hlY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3ViUXVlcnkgPSBcIlwiO1xyXG4gIHB1YmxpYyB0cmFuc2xhdGVsYW5ndWFnZSE6IHN0cmluZztcclxuICBwdWJsaWMgY2hpcFZhbHVlID0gXCJTdGFuZGFyZFwiO1xyXG4gIHB1YmxpYyBhcGlSZXN1bHREYXRhOiBhbnk7XHJcbiAgcHVibGljIEFJUmVzdWx0ITogc3RyaW5nO1xyXG4gIHRvb2xzOiBUb29sYmFyU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZUZsb2F0aW5nOiBmYWxzZSxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0b29sdGlwVGV4dDogXCJBSSBBc3Npc3RcIixcclxuICAgICAgICB0ZW1wbGF0ZTpcclxuICAgICAgICAgICc8YnV0dG9uIGNsYXNzPVwiZS10YmFyLWJ0biBlLWJ0blwiIHRhYmluZGV4PVwiLTFcIiBpZD1cImFpX2Fzc2lzdGFudF9idXR0b25fdGJhclwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPjxkaXYgY2xhc3M9XCJlLXJ0ZS1kcm9wZG93bi1idG4tdGV4dFwiPkFJIEFzc2lzdDwvZGl2PjwvYnV0dG9uPicsXHJcbiAgICAgIH0sXHJcbiAgICAgIFwiQm9sZFwiLFxyXG4gICAgICBcIkl0YWxpY1wiLFxyXG4gICAgICBcIlVuZGVybGluZVwiLFxyXG4gICAgICBcIlN0cmlrZVRocm91Z2hcIixcclxuICAgICAgXCJGb250TmFtZVwiLFxyXG4gICAgICBcIkZvbnRTaXplXCIsXHJcbiAgICAgIFwiRm9udENvbG9yXCIsXHJcbiAgICAgIFwiQmFja2dyb3VuZENvbG9yXCIsXHJcbiAgICAgIFwiTG93ZXJDYXNlXCIsXHJcbiAgICAgIFwiVXBwZXJDYXNlXCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkNyZWF0ZVRhYmxlXCIsXHJcbiAgICAgIFwiRm9ybWF0c1wiLFxyXG4gICAgICBcIkFsaWdubWVudHNcIixcclxuICAgICAge1xyXG4gICAgICAgIHRvb2x0aXBUZXh0OiBcIkxpbmUgSGVpZ2h0XCIsXHJcbiAgICAgICAgdGVtcGxhdGU6XHJcbiAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz1cImUtdGJhci1idG4gZS1idG5cIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJsaW5laGVpZ2h0X3RiYXJcIiAgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+PC9idXR0b24+JyxcclxuICAgICAgfSxcclxuICAgICAgXCJPcmRlcmVkTGlzdFwiLFxyXG4gICAgICBcIlVub3JkZXJlZExpc3RcIixcclxuICAgICAgXCJPdXRkZW50XCIsXHJcbiAgICAgIFwiSW5kZW50XCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkNyZWF0ZUxpbmtcIixcclxuICAgICAge1xyXG4gICAgICAgIHRvb2x0aXBUZXh0OiBcIlwiLFxyXG4gICAgICAgIHRlbXBsYXRlOlxyXG4gICAgICAgICAgJzxidXR0b24gY2xhc3M9XCJlLXRiYXItYnRuIGUtYnRuXCIgdGFiaW5kZXg9XCItMVwiIGlkPVwiY3VzdG9tX3RiYXJcIiAgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cImUtdGJhci1idG4tdGV4dFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj48aW1nIHNyYz1cIi9hc3NldHMvaW1nL2ZpbGUtaWNvbi5zdmdcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTt0b3A6IC0ycHg7XCIvPjxkaXYgY2xhc3M9XCJ1cGxvYWRBY3Rpb25zXCI+PGRpdiBpZD1cInVwbG9hZEZyb21Vc2VyXCI+Q29tcHV0ZXIgRmlsZTwvZGl2PjxkaXYgaWQ9XCJyZWxhdGlvbkRvbVwiPlRpY2tldCBBdHRhY2htZW50PC9kaXY+PC9kaXY+PC9kaXY+PC9idXR0b24+JyxcclxuICAgICAgfSxcclxuICAgICAgXCJ8XCIsXHJcbiAgICAgIFwiRm9ybWF0UGFpbnRlclwiLFxyXG4gICAgICBcIkNsZWFyRm9ybWF0XCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIlVuZG9cIixcclxuICAgICAgXCJSZWRvXCIsXHJcbiAgICAgIC8vJ1NvdXJjZUNvZGUnLFxyXG4gICAgXSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgb25Db250ZW50Q2hhbmdlKGFyZ3MpIHtcclxuICAgIGNvbnN0IHRhYmxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0YWJsZS5lLXJ0ZS10YWJsZVwiKTtcclxuICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZSkgPT4ge1xyXG4gICAgICBjb25zdCBodG1sVGFibGUgPSB0YWJsZSBhcyBIVE1MVGFibGVFbGVtZW50O1xyXG4gICAgICBodG1sVGFibGUuc3R5bGUubWFyZ2luQm90dG9tID0gXCIxMHB4XCI7XHJcbiAgICAgIGh0bWxUYWJsZS5zdHlsZS5ib3JkZXJDb2xsYXBzZSA9IFwiY29sbGFwc2VcIjtcclxuICAgICAgaHRtbFRhYmxlLnN0eWxlLmVtcHR5Q2VsbHMgPSBcInNob3dcIjtcclxuICAgICAgY29uc3QgdGRFbGVtZW50cyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0ZFwiKTtcclxuICAgICAgdGRFbGVtZW50cy5mb3JFYWNoKCh0ZCkgPT4ge1xyXG4gICAgICAgIHRkLnN0eWxlLmJvcmRlciA9IFwiMXB4IHNvbGlkICNhZGI1YmRcIjtcclxuICAgICAgICB0ZC5zdHlsZS5oZWlnaHQgPSBcIjIwcHhcIjtcclxuICAgICAgICB0ZC5zdHlsZS5taW5XaWR0aCA9IFwiMjBweFwiO1xyXG4gICAgICAgIHRkLnN0eWxlLnBhZGRpbmcgPSBcIjJweCA1cHhcIjtcclxuICAgICAgICB0ZC5zdHlsZS5ib3hTaXppbmcgPSBcImJvcmRlci1ib3hcIjtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DcmVhdGUoKTogdm9pZCB7XHJcbiAgICAvL2JpbmQgdGhlIGEgY2xpY2sgZXZlbnRcclxuICAgIC8vIGxldCBlZGl0b3JDb250ZW50ID0gdGhpcy5ydGVPYmouY29udGVudE1vZHVsZS5nZXRFZGl0UGFuZWwoKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIC8vIGVkaXRvckNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLk9uQ2xpY2tlZC5iaW5kKHRoaXMpKTtcclxuICAgIC8vYWRkIHRoZSBsaW5lIGhlaWdodFxyXG4gICAgdGhpcy5lZGl0b3JNYW5hZ2VyID0gdGhpcy5ydGVPYmouZm9ybWF0dGVyLmVkaXRvck1hbmFnZXI7XHJcbiAgICBsZXQgc3BsaXRCdXR0b24gPSBuZXcgRHJvcERvd25CdXR0b24oe1xyXG4gICAgICBpdGVtczogbGluZUhlaWdodF9pdGVtcyxcclxuICAgICAgaWNvbkNzczogXCJlLWljb25zIGUtbGluZS1zcGFjaW5nXCIsXHJcbiAgICAgIHNlbGVjdDogdGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgfSk7XHJcbiAgICBzcGxpdEJ1dHRvbi5hcHBlbmRUbyhcIiNsaW5laGVpZ2h0X3RiYXJcIik7XHJcbiAgICAvLyBhaSBhc3Npc3RcclxuICAgIGxldCBhaWFzc2lzdGFudEJ1dHRvbiA9IG5ldyBEcm9wRG93bkJ1dHRvbih7XHJcbiAgICAgIGl0ZW1zOiB0aGlzLnF1ZXJ5TGlzdCxcclxuICAgICAgLy8gaWNvbkNzczogXCJlLWJ0bi1pY29uIGUtaWNvbnMgZS1hc3Npc3R2aWV3LWljb24gZS1pY29uLWxlZnRcIixcclxuICAgICAgc2VsZWN0OiAoYXJncykgPT4gdGhpcy5haVF1ZXJ5U2VsZWN0ZWRNZW51KGFyZ3MpLFxyXG4gICAgfSk7XHJcbiAgICBhaWFzc2lzdGFudEJ1dHRvbi5hcHBlbmRUbyhcIiNhaV9hc3Npc3RhbnRfYnV0dG9uX3RiYXJcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VsZWN0KGFyZ3MpIHtcclxuICAgIGlmICh0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuZ2V0VW5kb1JlZG9TdGFjaygpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuc2F2ZURhdGEoKTtcclxuICAgIH1cclxuICAgIGxldCBub2RlczogTm9kZVtdID0gdGhpcy5lZGl0b3JNYW5hZ2VyLmRvbU5vZGUuYmxvY2tOb2RlcygpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgbm9kZXMubGVuZ3RoID4gaTsgaSsrKSB7XHJcbiAgICAgIChub2Rlc1tpXSBhcyBIVE1MRWxlbWVudCkuc3R5bGUubGluZUhlaWdodCA9IGFyZ3MuaXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5ydGVPYmouZm9ybWF0dGVyLnNhdmVEYXRhKCk7XHJcbiAgICB0aGlzLnJ0ZU9iai5mb3JtYXR0ZXIuZW5hYmxlVW5kbyh0aGlzLnJ0ZU9iaik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFpUXVlcnlTZWxlY3RlZE1lbnUoYXJnczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ3VlT3BlbihhcmdzLml0ZW0udGV4dCk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2d1ZU9wZW4oc2VsZWN0ZWRRdWVyeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB2YXIgc2VsZWN0aW9uVGV4dCA9IHRoaXMucnRlT2JqLmdldFNlbGVjdGVkSHRtbCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1ZXJ5ID0gc2VsZWN0ZWRRdWVyeTtcclxuICAgIGlmIChzZWxlY3Rpb25UZXh0KSB7XHJcbiAgICAgIGxldCByYW5nZTogUmFuZ2UgPSAoXHJcbiAgICAgICAgdGhpcy5ydGVPYmogYXMgYW55XHJcbiAgICAgICkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5nZXRSYW5nZShcclxuICAgICAgICAodGhpcy5ydGVPYmogYXMgYW55KS5jb250ZW50TW9kdWxlLmdldERvY3VtZW50KClcclxuICAgICAgKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5zYXZlKFxyXG4gICAgICAgIHJhbmdlLFxyXG4gICAgICAgICh0aGlzLnJ0ZU9iaiBhcyBhbnkpLmNvbnRlbnRNb2R1bGUuZ2V0RG9jdW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRyb3BWYWxJbmRleCA9IHRoaXMucXVlcnlMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAocSkgPT4gcS50ZXh0LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkUXVlcnkudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnF1ZXJ5Q2F0ZWdvcnkuaW5kZXggPSB0aGlzLmRyb3BWYWxJbmRleDtcclxuICAgICAgdGhpcy5sZWZ0UnRlLnZhbHVlID0gdGhpcy5wcm9tcHRRdWVyeSA9IHNlbGVjdGlvblRleHQ7XHJcbiAgICAgIHRoaXMubGVmdFJ0ZS5yZWZyZXNoVUkoKTtcclxuICAgICAgdGhpcy5BSWRpYWxvZy5zaG93KCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoc2VsZWN0ZWRRdWVyeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dNc2cgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNc2cgPSBmYWxzZTtcclxuICAgICAgfSwgMzAwMCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUGxlYXNlIHNlbGVjdCB0aGUgY29udGVudCB0byBwZXJmb3JtIHRoZSBBSSBvcGVyYXRpb24uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoc2VsZWN0ZWRRdWVyeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2VudGltZW50Q2hlY2sgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAoc2VsZWN0ZWRRdWVyeSkge1xyXG4gICAgICBjYXNlIFwiU3VtbWFyaXplXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiU3VtbWFyaXplIHRoZSB1cGNvbWluZyBzZW50ZW5jZSBzaG9ydGx5LlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiRWxhYm9yYXRlXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiRWxhYm9yYXRlIG9uIHRoZSB1cGNvbWluZyBzZW50ZW5jZS5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlJlcGhyYXNlXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IHRoaXMuY2hpcFZhbHVlICsgXCIgcmVwaHJhc2UgdGhlIHVwY29taW5nIHNlbnRlbmNlLlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiQ29ycmVjdCBHcmFtbWFyXCI6XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9IFwiQ29ycmVjdCB0aGUgZ3JhbW1hciBvZiB0aGUgdXBjb21pbmcgc2VudGVuY2UuXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJUcmFuc2xhdGVcIjpcclxuICAgICAgICB0aGlzLnN1YlF1ZXJ5ID1cclxuICAgICAgICAgIFwiVHJhbnNsYXRlIHRoZSB1cGNvbWluZyBzZW50ZW5jZSB0byBcIiArIHRoaXMudHJhbnNsYXRlbGFuZ3VhZ2UgKyBcIi5cIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlNlbnRpbWVudCBBbmFseXNpc1wiOlxyXG4gICAgICAgIHRoaXMuaXNTZW50aW1lbnRDaGVjayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdWJRdWVyeSA9XHJcbiAgICAgICAgICAnQW5hbHl6ZSB0aGUgc2VudGltZW50IGFuZCBncmFtbWFyIG9mIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBocyBhbmQgcHJvdmlkZSB0aGUgZXhwcmVzc2lvbiBzY29yZSB3aXRoIGFuIGVtb2ppIGZvbGxvd2VkIGJ5IHRoZSBzZW50aW1lbnQgaW4gdGhlIGZvcm1hdDogXCLwn5iKIE5ldXRyYWxcIi4gXFxuXFxuTk9URTogQXZvaWQgYW55IGFkZGl0aW9uYWwgdGV4dCBvciBleHBsYW5hdGlvbjonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBSVN1Z2Vzc3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBSVN1Z2Vzc3Rpb25zKCk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMucHJvbXB0UXVlcnkpIHtcclxuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJza2VsZXRvbklkXCIpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID1cclxuICAgICAgICAgIFwiXCI7XHJcbiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRSdGVcIikgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPVxyXG4gICAgICAgICAgXCJub25lXCI7XHJcbiAgICAgICAgdGhpcy5zZW50aW1lbnRCdXR0b24uZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgdGhpcy5yZWdlbmVyYXRlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvcHlCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVwbGFjZUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hcGlSZXN1bHREYXRhID0gdGhpcy5nZXRSZXNwb25zZUZyb21PcGVuQUkoXHJcbiAgICAgICAgICB0aGlzLnN1YlF1ZXJ5LFxyXG4gICAgICAgICAgdGhpcy5wcm9tcHRRdWVyeVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hcGlSZXN1bHREYXRhLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkFJUmVzdWx0ID0gdGhpcy5pc1NlbnRpbWVudENoZWNrID8gdGhpcy5wcm9tcHRRdWVyeSA6IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuc2VudGltZW50QnV0dG9uLmNvbnRlbnQgPSByZXN1bHRcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKFwicG9zaXRpdmVcIilcclxuICAgICAgICAgICAgPyBcIvCfmIogUG9zaXRpdmVcIlxyXG4gICAgICAgICAgICA6IHJlc3VsdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibmVnYXRpdmVcIilcclxuICAgICAgICAgICAgPyBcIvCfmJ4gTmVnYXRpdmVcIlxyXG4gICAgICAgICAgICA6IFwi8J+YkCBOZXV0cmFsXCI7XHJcbiAgICAgICAgICB0aGlzLnNlbnRpbWVudEJ1dHRvbi5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAhdGhpcy5pc1NlbnRpbWVudENoZWNrXHJcbiAgICAgICAgICAgID8gXCJub25lXCJcclxuICAgICAgICAgICAgOiBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5yaWdodFJ0ZS52YWx1ZSA9IHRoaXMuQUlSZXN1bHQ7XHJcbiAgICAgICAgICB2YXIgbm9SZXN1bHRzRm91bmQgPSAhKHRoaXMuQUlSZXN1bHQgfHwgdGhpcy5wcm9tcHRRdWVyeSk7XHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibm8tcmVzdWx0cy1mb3VuZFwiKSBhcyBIVE1MRWxlbWVudFxyXG4gICAgICAgICAgKS5zdHlsZS5kaXNwbGF5ID0gbm9SZXN1bHRzRm91bmQgPyBcIlwiIDogXCJub25lXCI7XHJcbiAgICAgICAgICB0aGlzLnJlZ2VuZXJhdGVCdXR0b24uZGlzYWJsZWQgPSBub1Jlc3VsdHNGb3VuZDtcclxuICAgICAgICAgIHRoaXMuY29weUJ1dHRvbi5kaXNhYmxlZCA9IG5vUmVzdWx0c0ZvdW5kO1xyXG4gICAgICAgICAgdGhpcy5yZXBsYWNlQnV0dG9uLmRpc2FibGVkID0gbm9SZXN1bHRzRm91bmQ7XHJcbiAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJza2VsZXRvbklkXCIpIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5kaXNwbGF5ID1cclxuICAgICAgICAgICAgXCJub25lXCI7XHJcbiAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFJ0ZVwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9XHJcbiAgICAgICAgICAgIG5vUmVzdWx0c0ZvdW5kID8gXCJub25lXCIgOiBcIlwiO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIG5vUmVzdWx0c0ZvdW5kLFxyXG4gICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyaWdodFJ0ZVwiKSBhcyBIVE1MRWxlbWVudCkuc3R5bGVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIC8vIHRoaXMudG9hc3RPYmouc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UmVzcG9uc2VGcm9tT3BlbkFJKFxyXG4gICAgc3ViUXVlcnk6IHN0cmluZyxcclxuICAgIHByb21wdFF1ZXJ5OiBzdHJpbmdcclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IE9wZW5BaU1vZGVsUlRFKHN1YlF1ZXJ5LCBwcm9tcHRRdWVyeSk7XHJcbiAgICByZXR1cm4gY29udGVudCA/IChjb250ZW50IGFzIHN0cmluZykgOiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZGlhbG9nU2hvdygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnZW5lcmF0ZUJ1dHRvbiEuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUFJU3VnZXNzdGlvbnMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb3B5QnV0dG9uIS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29weVRleHRUb0NsaXBib2FyZCh0aGlzLkFJUmVzdWx0KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXBsYWNlQnV0dG9uIS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgIGxldCByYW5nZTogUmFuZ2UgPSAoXHJcbiAgICAgICAgdGhpcy5ydGVPYmogYXMgYW55XHJcbiAgICAgICkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5nZXRSYW5nZShcclxuICAgICAgICAodGhpcy5ydGVPYmogYXMgYW55KS5jb250ZW50TW9kdWxlLmdldERvY3VtZW50KClcclxuICAgICAgKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZm9ybWF0dGVyLmVkaXRvck1hbmFnZXIubm9kZVNlbGVjdGlvbi5yZXN0b3JlKHJhbmdlKTtcclxuICAgICAgKHRoaXMucnRlT2JqIGFzIGFueSkuZXhlY3V0ZUNvbW1hbmQoXCJpbnNlcnRIVE1MXCIsIHRoaXMuQUlSZXN1bHQsIHtcclxuICAgICAgICB1bmRvOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gICAgfSk7XHJcbiAgICAodGhpcy5BSWRpYWxvZyBhcyBEaWFsb2dDb21wb25lbnQpLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuQUlkaWFsb2cuaGlkZSgpO1xyXG4gICAgdGhpcy5yaWdodFJ0ZS52YWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmxlZnRSdGUudmFsdWUgPSBcIlwiO1xyXG4gICAgdGhpcy5wcm9tcHRRdWVyeSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoaXBWYWx1ZSA9IFwiU3RhbmRhcmRcIjtcclxuICAgIHRoaXMuQUlSZXN1bHQgPSBcIlwiO1xyXG4gICAgdGhpcy5kcm9wVmFsSW5kZXggPSAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1ZXJ5ID0gXCJSZXBocmFzZVwiO1xyXG4gICAgdGhpcy5zZW50aW1lbnRCdXR0b24uY29udGVudCA9IFwi8J+YiiBOZXV0cmFsXCI7XHJcbiAgfVxyXG5cclxuICBjb3B5VGV4dFRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKG5hdmlnYXRvci5jbGlwYm9hcmQpIHtcclxuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZFxyXG4gICAgICAgIC53cml0ZVRleHQodGV4dClcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlRleHQgY29waWVkIHRvIGNsaXBib2FyZCBzdWNjZXNzZnVsbHkhXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0ZXh0OiBcIiwgZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEZhbGxiYWNrIGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoZSBDbGlwYm9hcmQgQVBJXHJcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpO1xyXG4gICAgICB0ZXh0YXJlYS52YWx1ZSA9IHRleHQ7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpO1xyXG4gICAgICB0ZXh0YXJlYS5zZWxlY3QoKTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImNvcHlcIik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJUZXh0IGNvcGllZCB0byBjbGlwYm9hcmQgdXNpbmcgZXhlY0NvbW1hbmRcIik7XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSB0ZXh0OiBcIiwgZXJyKTtcclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRhcmVhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25PdmVybGF5Q2xpY2soKTogdm9pZCB7XHJcbiAgICBsZXQgYWN0aXZlRWxlOiBIVE1MRWxlbWVudCB8IG51bGwgPSB0aGlzLkFJZGlhbG9nLmVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIuY2hhcl9ibG9jay5lLWFjdGl2ZVwiXHJcbiAgICApO1xyXG4gICAgaWYgKGFjdGl2ZUVsZSkge1xyXG4gICAgICBhY3RpdmVFbGUuY2xhc3NMaXN0LnJlbW92ZShcImUtYWN0aXZlXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgb25RdWVyeVNlbGVjdChhcmdzKSB7XHJcbiAgICAvLyB0aGlzLmNoaXBMaXN0LnNlbGVjdGVkQ2hpcHMgPSAwO1xyXG4gICAgdGhpcy50cmFuc2xhdGVsYW5ndWFnZSA9IFwiRU5cIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeSA9IGFyZ3MuaXRlbURhdGEudGV4dDtcclxuICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoYXJncy5pdGVtRGF0YS50ZXh0KTtcclxuICB9XHJcblxyXG4gIG9uTGFuZ3VhZ2VTZWxlY3QoYXJnczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZWxhbmd1YWdlID0gYXJncy5pdGVtRGF0YS5pZDtcclxuICAgIHRoaXMudXBkYXRlQUlTdWdlc3N0aW9uc0RhdGEoXCJUcmFuc2xhdGVcIik7XHJcbiAgfVxyXG5cclxuICBvbkNoaXBDbGljayhhcmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hpcFZhbHVlID0gYXJncy5pdGVtRGF0YS50ZXh0O1xyXG4gICAgLy8g5LqL5Lu25Lya6Kem5Y+R5Lik5qyhIOW/hemhu+WIpOaWrWFyZ3MudGV4dOaYr+WQpuacieWAvFxyXG4gICAgaWYgKGFyZ3MuaXRlbURhdGEudGV4dCkgdGhpcy51cGRhdGVBSVN1Z2Vzc3Rpb25zRGF0YShcIlJlcGhyYXNlXCIpO1xyXG4gIH1cclxuXHJcbiAgX3Rvb2xiYXJDbGljayhhcmdzKSB7XHJcbiAgICB0aGlzLnRvb2xiYXJDbGljay5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgaGlkZVRvYXN0KCkge1xyXG4gICAgdGhpcy5zaG93TXNnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblpvb20oKSB7XHJcbiAgICBpZiAodGhpcy5zaXplID09PSBcImxhcmdlc3RcIikge1xyXG4gICAgICB0aGlzLnNpemUgPSBcIlwiOyAvLyDmgaLlpI3liLDljp/lp4vlpKflsI9cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2l6ZSA9IFwibGFyZ2VzdFwiOyAvLyDorr7nva7kuLrmnIDlpKfljJZcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL3JpY2h0ZXh0ZWRpdG9yL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQ7SUFBQTtRQU1XLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFDYixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHdCQUFtQixHQUFHO1lBQzdCLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7WUFDOUIsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQztRQUVRLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxVQUFVLENBQUM7UUFDcEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixVQUFLLEdBQXlCO1lBQzVCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEtBQUssRUFBRTtnQkFDTCxNQUFNO2dCQUNOLFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxlQUFlO2dCQUNmLFVBQVU7Z0JBQ1YsVUFBVTtnQkFDVixXQUFXO2dCQUNYLGlCQUFpQjtnQkFDakIsV0FBVztnQkFDWCxXQUFXO2dCQUNYLEdBQUc7Z0JBQ0gsYUFBYTtnQkFDYixTQUFTO2dCQUNULFlBQVk7Z0JBQ1osa0JBQWtCO2dCQUNsQixrQkFBa0I7Z0JBQ2xCLFNBQVM7Z0JBQ1QsUUFBUTtnQkFDUixHQUFHO2dCQUNILFlBQVk7Z0JBQ1osR0FBRztnQkFDSCxlQUFlO2dCQUNmLGFBQWE7Z0JBQ2IsR0FBRztnQkFDSCxNQUFNO2dCQUNOLE1BQU07YUFDUDtTQUNGLENBQUM7Ozs7UUFFRix5QkFBb0IsR0FBOEI7WUFDaEQsS0FBSyxFQUFFO2dCQUNMLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHO2dCQUNILFdBQVc7Z0JBQ1gsY0FBYztnQkFDZCxXQUFXO2dCQUNYLEdBQUc7Z0JBQ0gsUUFBUTtnQkFDUixpQkFBaUI7Z0JBQ2pCLFlBQVk7Z0JBQ1osd0JBQXdCO2FBQ3pCO1NBQ0YsQ0FBQztRQUNLLHFCQUFnQixHQUFHO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDL0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQzVCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dCQUM5QixFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDOUIsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDN0I7U0FDRixDQUFDO1FBQ0sscUJBQWdCLEdBQUc7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dCQUMvQixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDeEM7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLEtBQUssRUFBRSxZQUFZO2lCQUNwQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsZUFBZTtvQkFDckIsS0FBSyxFQUFFLFlBQVk7aUJBQ3BCO2dCQUNEO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixLQUFLLEVBQUUsWUFBWTtpQkFDcEI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLEtBQUssRUFBRSxZQUFZO2lCQUNwQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsZUFBZTtvQkFDckIsS0FBSyxFQUFFLFlBQVk7aUJBQ3BCO2dCQUNEO29CQUNFLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLEtBQUssRUFBRSxhQUFhO2lCQUNyQjthQUNGO1NBQ0YsQ0FBQztJQWlESixDQUFDOzs7OztJQS9DQyxpREFBZTs7OztJQUFmLFVBQWdCLElBQUk7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7OztJQUVNLDBDQUFROzs7SUFBZjtRQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7Ozs7SUFFRCwrQ0FBYTs7OztJQUFiLFVBQWMsSUFBSTtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOzs7OztJQUVELDhDQUFZOzs7O0lBQVosVUFBYSxJQUFJO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7SUFFRCx3Q0FBTTs7OztJQUFOLFVBQU8sSUFBSTtRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBRUQsaURBQWU7Ozs7SUFBZixVQUFnQixJQUFJO1FBQ2xCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLE1BQU0sRUFBRTtnQkFDaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGNBQWM7b0JBQ2pELDRDQUE0QyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQzthQUM3RDtTQUNGO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUM3QyxhQUFhLEVBQ2IsYUFBYSxDQUNkLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksYUFBYSxFQUFFO2dCQUN2RSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzdEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7OztJQUVELHdDQUFNOzs7O0lBQU4sVUFBTyxJQUFJO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQzs7Ozs7SUFFRCx1Q0FBSzs7OztJQUFMLFVBQU0sSUFBSTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7O2dCQWpLRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsaTdCQUFxQzs7aUJBRXRDOzs7d0JBRUUsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7aUNBQ0wsS0FBSzsyQkFDTCxLQUFLO3NDQUNMLEtBQUs7K0JBTUwsTUFBTTt5QkFDTixNQUFNOzBCQUNOLE1BQU07OEJBQ04sTUFBTTt3QkFDTixNQUFNO3dCQUNOLE1BQU07dUJBQ04sTUFBTTtpQ0FDTixNQUFNOztJQTBJVCw4QkFBQztDQUFBLEFBbEtELElBa0tDO1NBN0pZLHVCQUF1Qjs7O0lBQ2xDLHdDQUFvQjs7SUFDcEIsMkNBQStCOztJQUMvQix5Q0FBc0I7O0lBQ3RCLGlEQUErQjs7SUFDL0IsMkNBQTBCOztJQUMxQixzREFJRTs7SUFFRiwrQ0FBNEM7O0lBQzVDLHlDQUFzQzs7SUFDdEMsMENBQXVDOztJQUN2Qyw4Q0FBMkM7O0lBQzNDLHdDQUFxQzs7SUFDckMsd0NBQXFDOztJQUNyQyx1Q0FBb0M7O0lBQ3BDLGlEQUE4Qzs7SUFFOUMseUNBQW9COztJQUNwQiwyQ0FBZ0I7O0lBQ2hCLHdDQThCRTs7Ozs7SUFFRix1REFjRTs7SUFDRixtREFRRTs7SUFDRixtREE2QkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgVG9vbGJhclNldHRpbmdzTW9kZWwsXHJcbiAgUXVpY2tUb29sYmFyU2V0dGluZ3NNb2RlbCxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcmljaHRleHRlZGl0b3JcIjtcclxuaW1wb3J0IHsgZm9udEZhbWlseSwgc2l6ZSB9IGZyb20gXCIuL2RhdGEtY29uZmlnXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1yaWNodGV4dC1lZGl0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmljaHRleHRlZGl0b3JDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSBlZGl0b3JJZCA9IFwiZWRpdG9ySWRcIjtcclxuICBASW5wdXQoKSBoZWlnaHQgPSAxNTA7XHJcbiAgQElucHV0KCkgYXV0b1NhdmVPbklkbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaW5zZXJ0SW1hZ2VTZXR0aW5ncyA9IHtcclxuICAgIHNhdmVGb3JtYXQ6IFwiQmxvYlwiLFxyXG4gICAgYWxsb3dlZFR5cGVzOiBbXCIuc3ZnXCIsIFwiLnBuZ1wiXSxcclxuICAgIGRpc3BsYXk6IFwibm9uZVwiLFxyXG4gIH07XHJcblxyXG4gIEBPdXRwdXQoKSB0b29sYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQmVnaW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWN0aW9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGZhbWlseSA9IGZvbnRGYW1pbHk7XHJcbiAgZm9udFNpemUgPSBzaXplO1xyXG4gIHRvb2xzOiBUb29sYmFyU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIGVuYWJsZUZsb2F0aW5nOiBmYWxzZSxcclxuICAgIGl0ZW1zOiBbXHJcbiAgICAgIFwiQm9sZFwiLFxyXG4gICAgICBcIkl0YWxpY1wiLFxyXG4gICAgICBcIlVuZGVybGluZVwiLFxyXG4gICAgICBcIlN0cmlrZVRocm91Z2hcIixcclxuICAgICAgXCJGb250TmFtZVwiLFxyXG4gICAgICBcIkZvbnRTaXplXCIsXHJcbiAgICAgIFwiRm9udENvbG9yXCIsXHJcbiAgICAgIFwiQmFja2dyb3VuZENvbG9yXCIsXHJcbiAgICAgIFwiTG93ZXJDYXNlXCIsXHJcbiAgICAgIFwiVXBwZXJDYXNlXCIsXHJcbiAgICAgIFwifFwiLFxyXG4gICAgICBcIkNyZWF0ZVRhYmxlXCIsXHJcbiAgICAgIFwiRm9ybWF0c1wiLFxyXG4gICAgICBcIkFsaWdubWVudHNcIixcclxuICAgICAgXCJCdWxsZXRGb3JtYXRMaXN0XCIsXHJcbiAgICAgIFwiTnVtYmVyRm9ybWF0TGlzdFwiLFxyXG4gICAgICBcIk91dGRlbnRcIixcclxuICAgICAgXCJJbmRlbnRcIixcclxuICAgICAgXCJ8XCIsXHJcbiAgICAgIFwiQ3JlYXRlTGlua1wiLFxyXG4gICAgICBcInxcIixcclxuICAgICAgXCJGb3JtYXRQYWludGVyXCIsXHJcbiAgICAgIFwiQ2xlYXJGb3JtYXRcIixcclxuICAgICAgXCJ8XCIsXHJcbiAgICAgIFwiVW5kb1wiLFxyXG4gICAgICBcIlJlZG9cIixcclxuICAgIF0sXHJcbiAgfTtcclxuICAvKiog6KGo5qC85b+r5o235bel5YW35qCP77ya5ZCrIFRhYmxlQ2VsbO+8iOWQiOW5ti/mi4bliIbljZXlhYPmoLzvvIkgKi9cclxuICBxdWlja1Rvb2xiYXJTZXR0aW5nczogUXVpY2tUb29sYmFyU2V0dGluZ3NNb2RlbCA9IHtcclxuICAgIHRhYmxlOiBbXHJcbiAgICAgIFwiVGFibGVoZWFkZXJcIixcclxuICAgICAgXCJUYWJsZVJlbW92ZVwiLFxyXG4gICAgICBcInxcIixcclxuICAgICAgXCJUYWJsZVJvd3NcIixcclxuICAgICAgXCJUYWJsZUNvbHVtbnNcIixcclxuICAgICAgXCJUYWJsZUNlbGxcIixcclxuICAgICAgXCJ8XCIsXHJcbiAgICAgIFwiU3R5bGVzXCIsXHJcbiAgICAgIFwiQmFja2dyb3VuZENvbG9yXCIsXHJcbiAgICAgIFwiQWxpZ25tZW50c1wiLFxyXG4gICAgICBcIlRhYmxlQ2VsbFZlcnRpY2FsQWxpZ25cIixcclxuICAgIF0sXHJcbiAgfTtcclxuICBwdWJsaWMgYnVsbGV0Rm9ybWF0TGlzdCA9IHtcclxuICAgIHR5cGVzOiBbXHJcbiAgICAgIHsgdGV4dDogXCJOb25lXCIsIHZhbHVlOiBcIm5vbmVcIiB9LFxyXG4gICAgICB7IHRleHQ6IFwi4pePXCIsIHZhbHVlOiBcImRpc2NcIiB9LFxyXG4gICAgICB7IHRleHQ6IFwi4peLXCIsIHZhbHVlOiBcImNpcmNsZVwiIH0sXHJcbiAgICAgIHsgdGV4dDogXCLilqBcIiwgdmFsdWU6IFwic3F1YXJlXCIgfSxcclxuICAgICAgeyB0ZXh0OiBcIi1cIiwgdmFsdWU6IFwiZGFzaFwiIH0sXHJcbiAgICBdLFxyXG4gIH07XHJcbiAgcHVibGljIG51bWJlckZvcm1hdExpc3QgPSB7XHJcbiAgICB0eXBlczogW1xyXG4gICAgICB7IHRleHQ6IFwiTm9uZVwiLCB2YWx1ZTogXCJub25lXCIgfSxcclxuICAgICAgeyB0ZXh0OiBcIjEsIDIsIDMsIOKAplwiLCB2YWx1ZTogXCJkZWNpbWFsXCIgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6IFwizrEsIM6yLCDOsywg4oCmXCIsXHJcbiAgICAgICAgdmFsdWU6IFwibG93ZXJHcmVla1wiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogXCJpLCBpaSwgaWlpLCDigKZcIixcclxuICAgICAgICB2YWx1ZTogXCJsb3dlclJvbWFuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiBcIkEsIEIsIEMsIOKAplwiLFxyXG4gICAgICAgIHZhbHVlOiBcInVwcGVyQWxwaGFcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6IFwiYSwgYiwgYywg4oCmXCIsXHJcbiAgICAgICAgdmFsdWU6IFwibG93ZXJBbHBoYVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogXCJJLCBJSSwgSUlJLCDigKZcIixcclxuICAgICAgICB2YWx1ZTogXCJ1cHBlclJvbWFuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0ZXh0OiBcIigxKSwgKDIpLCAoMyksIOKAplwiLFxyXG4gICAgICAgIHZhbHVlOiBcInBhcmVudGhlc2VzXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH07XHJcblxyXG4gIG9uQ29udGVudENoYW5nZShhcmdzKSB7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ3JlYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIF90b29sYmFyQ2xpY2soYXJncykge1xyXG4gICAgdGhpcy50b29sYmFyQ2xpY2suZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25CZWdpbihhcmdzKSB7XHJcbiAgICB0aGlzLmFjdGlvbkJlZ2luLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfaW5wdXQoYXJncykge1xyXG4gICAgdGhpcy5pbnB1dC5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2FjdGlvbkNvbXBsZXRlKGFyZ3MpIHtcclxuICAgIGlmIChhcmdzLnJlcXVlc3RUeXBlID09IFwiVUxcIikge1xyXG4gICAgICBpZiAoYXJncy5lbGVtZW50c1swXS5wYXJlbnRFbGVtZW50LnN0eWxlLmxpc3RTdHlsZVR5cGUgPT0gXCJkYXNoXCIpIHtcclxuICAgICAgICBhcmdzLmVsZW1lbnRzWzBdLnBhcmVudEVsZW1lbnQuc3R5bGUubGlzdFN0eWxlSW1hZ2UgPVxyXG4gICAgICAgICAgXCJ1cmwoJy4uLy4uLy4uL2Fzc2V0cy9pbWcvYnVsbGV0LWRhc2guc3ZnJylcIjtcclxuICAgICAgICBhcmdzLmVsZW1lbnRzWzBdLnBhcmVudEVsZW1lbnQuc3R5bGUubGlzdFN0eWxlVHlwZSA9IFwibm9uZVwiO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MucmVxdWVzdFR5cGUgPT0gXCJPTFwiKSB7XHJcbiAgICAgIGFyZ3MuZWxlbWVudHNbMF0ucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFxyXG4gICAgICAgIFwiY3VzdG9tLWxpc3RcIixcclxuICAgICAgICBcInBhcmVudGhlc2VzXCJcclxuICAgICAgKTtcclxuICAgICAgaWYgKGFyZ3MuZWxlbWVudHNbMF0ucGFyZW50RWxlbWVudC5zdHlsZS5saXN0U3R5bGVUeXBlID09IFwicGFyZW50aGVzZXNcIikge1xyXG4gICAgICAgIGFyZ3MuZWxlbWVudHNbMF0ucGFyZW50RWxlbWVudC5jbGFzc0xpc3QgPSBcImN1c3RvbS1saXN0XCI7XHJcbiAgICAgICAgYXJncy5lbGVtZW50c1swXS5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJwYXJlbnRoZXNlc1wiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpb25Db21wbGV0ZS5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX2ZvY3VzKGFyZ3MpIHtcclxuICAgIHRoaXMuZm9jdXMuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9ibHVyKGFyZ3MpIHtcclxuICAgIHRoaXMuYmx1ci5lbWl0KGFyZ3MpO1xyXG4gIH1cclxufVxyXG4iXX0=