@po-ui/ng-code-editor 15.15.0 → 16.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/{esm2020 → esm2022}/lib/components/po-code-editor/interfaces/po-code-editor-registerable-options.interface.mjs +1 -1
  2. package/{esm2020 → esm2022}/lib/components/po-code-editor/interfaces/po-code-editor-registerable-suggestion.interface.mjs +1 -1
  3. package/{esm2020 → esm2022}/lib/components/po-code-editor/interfaces/po-code-editor-registerable-tokens.interface.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.mjs +1 -1
  5. package/esm2022/lib/components/po-code-editor/po-code-editor-base.component.mjs +261 -0
  6. package/esm2022/lib/components/po-code-editor/po-code-editor-register.service.mjs +72 -0
  7. package/{esm2020 → esm2022}/lib/components/po-code-editor/po-code-editor-suggestion.service.mjs +28 -29
  8. package/esm2022/lib/components/po-code-editor/po-code-editor.component.mjs +234 -0
  9. package/{esm2020 → esm2022}/lib/components/po-code-editor/po-code-editor.module.mjs +37 -37
  10. package/{esm2020 → esm2022}/lib/index.mjs +3 -3
  11. package/{esm2020 → esm2022}/po-ui-ng-code-editor.mjs +4 -4
  12. package/{esm2020 → esm2022}/public-api.mjs +1 -1
  13. package/{fesm2020 → fesm2022}/po-ui-ng-code-editor.mjs +607 -597
  14. package/{fesm2020 → fesm2022}/po-ui-ng-code-editor.mjs.map +1 -1
  15. package/index.d.ts +5 -5
  16. package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-options.interface.d.ts +22 -22
  17. package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-suggestion.interface.d.ts +37 -37
  18. package/lib/components/po-code-editor/interfaces/po-code-editor-registerable-tokens.interface.d.ts +21 -21
  19. package/lib/components/po-code-editor/interfaces/po-code-editor-registerable.interface.d.ts +17 -17
  20. package/lib/components/po-code-editor/po-code-editor-base.component.d.ts +194 -194
  21. package/lib/components/po-code-editor/po-code-editor-register.service.d.ts +70 -70
  22. package/lib/components/po-code-editor/po-code-editor-suggestion.service.d.ts +10 -10
  23. package/lib/components/po-code-editor/po-code-editor.component.d.ts +61 -61
  24. package/lib/components/po-code-editor/po-code-editor.module.d.ts +16 -16
  25. package/lib/index.d.ts +7 -7
  26. package/package.json +12 -18
  27. package/po-ui-ng-code-editor-16.0.0-next.2.tgz +0 -0
  28. package/public-api.d.ts +1 -1
  29. package/schematics/ng-add/index.d.ts +10 -10
  30. package/schematics/ng-add/index.js +38 -38
  31. package/schematics/ng-add/index.spec.d.ts +1 -1
  32. package/schematics/ng-add/index.spec.js +113 -113
  33. package/esm2020/lib/components/po-code-editor/po-code-editor-base.component.mjs +0 -261
  34. package/esm2020/lib/components/po-code-editor/po-code-editor-register.service.mjs +0 -66
  35. package/esm2020/lib/components/po-code-editor/po-code-editor.component.mjs +0 -229
  36. package/fesm2015/po-ui-ng-code-editor.mjs +0 -632
  37. package/fesm2015/po-ui-ng-code-editor.mjs.map +0 -1
  38. package/po-ui-ng-code-editor-15.15.0.tgz +0 -0
@@ -1,261 +0,0 @@
1
- import { Input, Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- const PO_CODE_EDITOR_THEMES = ['vs-dark', 'vs', 'hc-black'];
4
- const PO_CODE_EDITOR_THEME_DEFAULT = 'vs';
5
- /**
6
- * @description
7
- *
8
- * O `po-code-editor` é um componente para edição de código fonte baseado no Monaco Editor da Microsoft.
9
- *
10
- * Sendo assim, algumas configurações presentes no Monaco podem ser utilizadas aqui, como a escolha da linguagem
11
- * (utilizando o highlight syntax específico), escolha do tema e opção de diff, além de ser muito similar ao Visual
12
- * Studio Code, com autocomplete e fechamento automático de brackets.
13
- *
14
- * Este componente pode ser usado em qualquer situação que necessite de adição de códigos, como por exemplo, criar
15
- * receitas utilizando Terraform para gerenciar topologias.
16
- * É importante ressaltar que este não é um componente para edição de textos comuns.
17
- *
18
- * O [(ngModel)] deve ser usado para manipular o conteúdo do po-code-editor, ou seja, tanto para incluir um conteúdo quanto
19
- * para recuperar o conteúdo do po-code-editor, utiliza-se uma variável passada por [(ngModel)].
20
- *
21
- * #### Adicionando o pacote @po-ui/ng-code-editor
22
- *
23
- * Para instalar o pacote `po-code-editor` em sua aplicação execute:
24
- *
25
- * ```shell
26
- * ng add @po-ui/ng-code-editor
27
- * ```
28
- *
29
- * O comando `ng add` do `Angular CLI`:
30
- * - inclui o `po-code-editor` no seu projeto;
31
- * - adiciona o módulo `PoCodeEditorModule`:;
32
- *
33
- * ```
34
- * // app.module.ts
35
- * ...
36
- * import { PoModule } from '@po-ui/ng-components';
37
- * import { PoCodeEditorModule } from '@po-ui/ng-code-editor';
38
- * ...
39
- * @NgModule({
40
- * imports: [
41
- * ...
42
- * PoModule,
43
- * PoCodeEditorModule
44
- * ],
45
- * ...
46
- * })
47
- * export class AppModule { }
48
- * ```
49
- *
50
- * - adiciona o tema PO UI e também o *asset* do Monaco no arquivo `angular.json`, conforme abaixo:
51
- *
52
- * <pre ngNonBindable>
53
- * ...
54
- * "assets": [
55
- * { "glob": "&#42;&#42;/&#42;", "input": "node_modules/monaco-editor/min", "output": "/assets/monaco/" }
56
- * ],
57
- * "styles": [
58
- * "./node_modules/@po-ui/style/css/po-theme-default.min.css"
59
- * ]
60
- * ...
61
- * </pre>
62
- */
63
- export class PoCodeEditorBaseComponent {
64
- constructor() {
65
- this.modifiedValue = '';
66
- this.value = '';
67
- this._height = 150;
68
- this._language = 'plainText';
69
- this._readonly = false;
70
- this._showDiff = false;
71
- this._theme = PO_CODE_EDITOR_THEME_DEFAULT;
72
- /* istanbul ignore next */
73
- this.onTouched = (value) => { };
74
- /* istanbul ignore next */
75
- this.onChangePropagate = (value) => { };
76
- }
77
- /**
78
- * @optional
79
- *
80
- * @description
81
- *
82
- * Linguagem na qual será apresentado o código fonte.
83
- * Para saber quais são as linguagens compatíveis, consulte a documentação oficial do
84
- * [**Monaco Editor**](https://microsoft.github.io/monaco-editor/).
85
- *
86
- * Também é possível adicionar uma nova linguagem personalizada utilizando o serviço:
87
- * [**po-code-editor-register**](https://po-ui.io/documentation/po-code-editor-register?view=doc).
88
- *
89
- * @default `plainText`
90
- */
91
- set language(language) {
92
- this._language = language && language.length ? language.trim() : 'plainText';
93
- if (this.editor && this._language) {
94
- this.setLanguage(this._language);
95
- }
96
- }
97
- get language() {
98
- return this._language;
99
- }
100
- /**
101
- * @optional
102
- *
103
- * @description
104
- *
105
- * Indica se o editor será aberto em modo de leitura.
106
- *
107
- * Neste caso, não é possível editar o código inserido.
108
- *
109
- * Obs: Esta propriedade não refletirá efeito se alterada após o carregamento do componente.
110
- *
111
- * @default `false`
112
- */
113
- set readonly(readonly) {
114
- this._readonly = readonly === '' ? true : this.convertToBoolean(readonly);
115
- if (this.editor) {
116
- this.setReadOnly(readonly);
117
- }
118
- }
119
- get readonly() {
120
- return this._readonly;
121
- }
122
- /**
123
- * @optional
124
- *
125
- * @description
126
- *
127
- * Indica se o editor será aberto em modo de comparação.
128
- *
129
- * Caso esteja habilitada esta opção, então o [(ngModel)] deverá ser passado como um array, cuja primeira opção deve
130
- * conter uma string com o código original e na segunda posição uma string código modificado para efeito de
131
- * comparação. Neste caso, o usuário conseguirá editar apenas o código modificado e isso refletirá na segunda posição
132
- * do array consequentemente.
133
- *
134
- * Obs: Esta propriedade não refletirá efeito se alterada após o carregamento do componente.
135
- *
136
- * @default `false`
137
- */
138
- set showDiff(showDiff) {
139
- this._showDiff = showDiff === '' ? true : this.convertToBoolean(showDiff);
140
- }
141
- get showDiff() {
142
- return this._showDiff;
143
- }
144
- /**
145
- * @optional
146
- *
147
- * @description
148
- *
149
- * Lista de sugestões usadas pelo autocomplete dentro do editor.
150
- *
151
- * Para visualizar a lista de sugestões use o comando `CTRL + SPACE`.
152
- *
153
- * Caso o editor esteja usando uma linguagem que já tenha uma lista de sugestões predefinida, o valor passado será adicionado
154
- * a lista preexistente, aumentando as opções para o usuário.
155
- *
156
- * Caso tenha mais de um editor da mesma linguagem na aplicação, as sugestões serão adicionadas para que todos os editores da mesma linguagem
157
- * tenham as mesmas sugestões.
158
- *
159
- * ```
160
- * <po-code-editor
161
- * [p-suggestions]="[{ label: 'po', insertText: 'Portinari UI' }, { label: 'ng', insertText: 'Angular' }]">
162
- * </po-code-editor>
163
- * ```
164
- *
165
- * Ao fornecer uma lista de sugestões é possível acelerar a escrita de scripts pelos usuários.
166
- */
167
- set suggestions(values) {
168
- this._suggestions = values;
169
- if (this.editor && this._suggestions) {
170
- this.setSuggestions(this._suggestions);
171
- }
172
- }
173
- get suggestions() {
174
- return this._suggestions;
175
- }
176
- /**
177
- * @optional
178
- *
179
- * @description
180
- *
181
- * Define um tema para o editor.
182
- *
183
- * Temas válidos:
184
- * - `vs-dark`
185
- * - `vs`
186
- * - `hc-black`
187
- *
188
- * É importante salientar que o tema será aplicados a todos os componentes po-code-editor existentes na tela,
189
- * ou seja, todas as instâncias do componente receberão o último tema atribuído ou o tema da última instância
190
- * criada.
191
- *
192
- * @default `vs`
193
- */
194
- set theme(theme) {
195
- this._theme = PO_CODE_EDITOR_THEMES.includes(theme) ? theme : PO_CODE_EDITOR_THEME_DEFAULT;
196
- if (this.editor) {
197
- this.setTheme(theme);
198
- }
199
- }
200
- get theme() {
201
- return this._theme;
202
- }
203
- /**
204
- * @optional
205
- *
206
- * @description
207
- *
208
- * Define a altura do componente em pixels do po-code-editor.
209
- * Esta propriedade não poderá ser alterada após o componente ter sido iniciado.
210
- * A altura mínima é 150 pixels.
211
- */
212
- set height(height) {
213
- this._height = parseFloat(height) >= 150 ? parseFloat(height) : 150;
214
- }
215
- get height() {
216
- return `${this._height}px`;
217
- }
218
- getOptions() {
219
- return { language: this.language, theme: this.theme, readOnly: this.readonly };
220
- }
221
- registerOnChange(fn) {
222
- this.onChangePropagate = fn;
223
- }
224
- registerOnTouched(fn) {
225
- this.onTouched = fn;
226
- }
227
- convertToBoolean(val) {
228
- if (typeof val === 'string') {
229
- val = val.toLowerCase().trim();
230
- return val === 'true' || val === 'on' || val === '';
231
- }
232
- if (typeof val === 'number') {
233
- return val === 1;
234
- }
235
- return !!val;
236
- }
237
- }
238
- PoCodeEditorBaseComponent.ɵfac = function PoCodeEditorBaseComponent_Factory(t) { return new (t || PoCodeEditorBaseComponent)(); };
239
- PoCodeEditorBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoCodeEditorBaseComponent, inputs: { language: ["p-language", "language"], readonly: ["p-readonly", "readonly"], showDiff: ["p-show-diff", "showDiff"], suggestions: ["p-suggestions", "suggestions"], theme: ["p-theme", "theme"], height: ["p-height", "height"] } });
240
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorBaseComponent, [{
241
- type: Directive
242
- }], null, { language: [{
243
- type: Input,
244
- args: ['p-language']
245
- }], readonly: [{
246
- type: Input,
247
- args: ['p-readonly']
248
- }], showDiff: [{
249
- type: Input,
250
- args: ['p-show-diff']
251
- }], suggestions: [{
252
- type: Input,
253
- args: ['p-suggestions']
254
- }], theme: [{
255
- type: Input,
256
- args: ['p-theme']
257
- }], height: [{
258
- type: Input,
259
- args: ['p-height']
260
- }] }); })();
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcG8tY29kZS1lZGl0b3IvcG8tY29kZS1lZGl0b3ItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS2pELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVELE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFFSCxNQUFNLE9BQWdCLHlCQUF5QjtJQUQvQztRQUdFLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFUixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxXQUFXLENBQUM7UUFDeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLFdBQU0sR0FBRyw0QkFBNEIsQ0FBQztRQStKOUMsMEJBQTBCO1FBQzFCLGNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQy9CLDBCQUEwQjtRQUMxQixzQkFBaUIsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBb0N4QztJQXBNQzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLFFBQWdCO1FBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEs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R0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEdBQVE7UUFDakMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7a0dBck1tQix5QkFBeUI7NEVBQXpCLHlCQUF5Qjt1RkFBekIseUJBQXlCO2NBRDlDLFNBQVM7Z0JBMkJpQixRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF5Qk0sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBNEJPLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYTtZQStCUSxXQUFXO2tCQUF0QyxLQUFLO21CQUFDLGVBQWU7WUE4QkEsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTO1lBcUJPLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyYWJsZS1zdWdnZXN0aW9uLmludGVyZmFjZSc7XHJcblxyXG5jb25zdCBQT19DT0RFX0VESVRPUl9USEVNRVMgPSBbJ3ZzLWRhcmsnLCAndnMnLCAnaGMtYmxhY2snXTtcclxuY29uc3QgUE9fQ09ERV9FRElUT1JfVEhFTUVfREVGQVVMVCA9ICd2cyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIE8gYHBvLWNvZGUtZWRpdG9yYCDDqSB1bSBjb21wb25lbnRlIHBhcmEgZWRpw6fDo28gZGUgY8OzZGlnbyBmb250ZSBiYXNlYWRvIG5vIE1vbmFjbyBFZGl0b3IgZGEgTWljcm9zb2Z0LlxyXG4gKlxyXG4gKiBTZW5kbyBhc3NpbSwgYWxndW1hcyBjb25maWd1cmHDp8O1ZXMgcHJlc2VudGVzIG5vIE1vbmFjbyBwb2RlbSBzZXIgdXRpbGl6YWRhcyBhcXVpLCBjb21vIGEgZXNjb2xoYSBkYSBsaW5ndWFnZW1cclxuICogKHV0aWxpemFuZG8gbyBoaWdobGlnaHQgc3ludGF4IGVzcGVjw61maWNvKSwgZXNjb2xoYSBkbyB0ZW1hIGUgb3DDp8OjbyBkZSBkaWZmLCBhbMOpbSBkZSBzZXIgbXVpdG8gc2ltaWxhciBhbyBWaXN1YWxcclxuICogU3R1ZGlvIENvZGUsIGNvbSBhdXRvY29tcGxldGUgZSBmZWNoYW1lbnRvIGF1dG9tw6F0aWNvIGRlIGJyYWNrZXRzLlxyXG4gKlxyXG4gKiBFc3RlIGNvbXBvbmVudGUgcG9kZSBzZXIgdXNhZG8gZW0gcXVhbHF1ZXIgc2l0dWHDp8OjbyBxdWUgbmVjZXNzaXRlIGRlIGFkacOnw6NvIGRlIGPDs2RpZ29zLCBjb21vIHBvciBleGVtcGxvLCBjcmlhclxyXG4gKiByZWNlaXRhcyB1dGlsaXphbmRvIFRlcnJhZm9ybSBwYXJhIGdlcmVuY2lhciB0b3BvbG9naWFzLlxyXG4gKiDDiSBpbXBvcnRhbnRlIHJlc3NhbHRhciBxdWUgZXN0ZSBuw6NvIMOpIHVtIGNvbXBvbmVudGUgcGFyYSBlZGnDp8OjbyBkZSB0ZXh0b3MgY29tdW5zLlxyXG4gKlxyXG4gKiBPIFsobmdNb2RlbCldIGRldmUgc2VyIHVzYWRvIHBhcmEgbWFuaXB1bGFyIG8gY29udGXDumRvIGRvIHBvLWNvZGUtZWRpdG9yLCBvdSBzZWphLCB0YW50byBwYXJhIGluY2x1aXIgdW0gY29udGXDumRvIHF1YW50b1xyXG4gKiBwYXJhIHJlY3VwZXJhciBvIGNvbnRlw7pkbyBkbyBwby1jb2RlLWVkaXRvciwgdXRpbGl6YS1zZSB1bWEgdmFyacOhdmVsIHBhc3NhZGEgcG9yIFsobmdNb2RlbCldLlxyXG4gKlxyXG4gKiAjIyMjIEFkaWNpb25hbmRvIG8gcGFjb3RlIEBwby11aS9uZy1jb2RlLWVkaXRvclxyXG4gKlxyXG4gKiBQYXJhIGluc3RhbGFyIG8gcGFjb3RlIGBwby1jb2RlLWVkaXRvcmAgZW0gc3VhIGFwbGljYcOnw6NvIGV4ZWN1dGU6XHJcbiAqXHJcbiAqIGBgYHNoZWxsXHJcbiAqIG5nIGFkZCBAcG8tdWkvbmctY29kZS1lZGl0b3JcclxuICogYGBgXHJcbiAqXHJcbiAqIE8gY29tYW5kbyBgbmcgYWRkYCBkbyBgQW5ndWxhciBDTElgOlxyXG4gKiAtIGluY2x1aSBvIGBwby1jb2RlLWVkaXRvcmAgbm8gc2V1IHByb2pldG87XHJcbiAqIC0gYWRpY2lvbmEgbyBtw7NkdWxvIGBQb0NvZGVFZGl0b3JNb2R1bGVgOjtcclxuICpcclxuICogYGBgXHJcbiAqIC8vIGFwcC5tb2R1bGUudHNcclxuICogLi4uXHJcbiAqIGltcG9ydCB7IFBvTW9kdWxlIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG4gKiBpbXBvcnQgeyBQb0NvZGVFZGl0b3JNb2R1bGUgfSBmcm9tICdAcG8tdWkvbmctY29kZS1lZGl0b3InO1xyXG4gKiAuLi5cclxuICogQE5nTW9kdWxlKHtcclxuICogICBpbXBvcnRzOiBbXHJcbiAqICAgICAuLi5cclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgUG9Db2RlRWRpdG9yTW9kdWxlXHJcbiAqICAgXSxcclxuICogICAuLi5cclxuICogfSlcclxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cclxuICogYGBgXHJcbiAqXHJcbiAqIC0gYWRpY2lvbmEgbyB0ZW1hIFBPIFVJIGUgdGFtYsOpbSBvICphc3NldCogZG8gTW9uYWNvIG5vIGFycXVpdm8gYGFuZ3VsYXIuanNvbmAsIGNvbmZvcm1lIGFiYWl4bzpcclxuICpcclxuICogPHByZSBuZ05vbkJpbmRhYmxlPlxyXG4gKiAuLi5cclxuICogXCJhc3NldHNcIjogW1xyXG4gKiAgICB7IFwiZ2xvYlwiOiBcIiYjNDI7JiM0MjsvJiM0MjtcIiwgXCJpbnB1dFwiOiBcIm5vZGVfbW9kdWxlcy9tb25hY28tZWRpdG9yL21pblwiLCBcIm91dHB1dFwiOiBcIi9hc3NldHMvbW9uYWNvL1wiIH1cclxuICogIF0sXHJcbiAqIFwic3R5bGVzXCI6IFtcclxuICogICAgXCIuL25vZGVfbW9kdWxlcy9AcG8tdWkvc3R5bGUvY3NzL3BvLXRoZW1lLWRlZmF1bHQubWluLmNzc1wiXHJcbiAqIF1cclxuICogLi4uXHJcbiAqIDwvcHJlPlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0NvZGVFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGVkaXRvcjogYW55O1xyXG4gIG1vZGlmaWVkVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIHZhbHVlOiBhbnkgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXIgPSAxNTA7XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSAncGxhaW5UZXh0JztcclxuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Nob3dEaWZmOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3VnZ2VzdGlvbnM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+O1xyXG4gIHByaXZhdGUgX3RoZW1lID0gUE9fQ09ERV9FRElUT1JfVEhFTUVfREVGQVVMVDtcclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIExpbmd1YWdlbSBuYSBxdWFsIHNlcsOhIGFwcmVzZW50YWRvIG8gY8OzZGlnbyBmb250ZS5cclxuICAgKiBQYXJhIHNhYmVyIHF1YWlzIHPDo28gYXMgbGluZ3VhZ2VucyBjb21wYXTDrXZlaXMsIGNvbnN1bHRlIGEgZG9jdW1lbnRhw6fDo28gb2ZpY2lhbCBkb1xyXG4gICAqIFsqKk1vbmFjbyBFZGl0b3IqKl0oaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL21vbmFjby1lZGl0b3IvKS5cclxuICAgKlxyXG4gICAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIGFkaWNpb25hciB1bWEgbm92YSBsaW5ndWFnZW0gcGVyc29uYWxpemFkYSB1dGlsaXphbmRvIG8gc2VydmnDp286XHJcbiAgICogWyoqcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXIqKl0oaHR0cHM6Ly9wby11aS5pby9kb2N1bWVudGF0aW9uL3BvLWNvZGUtZWRpdG9yLXJlZ2lzdGVyP3ZpZXc9ZG9jKS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBwbGFpblRleHRgXHJcbiAgICovXHJcbiAgQElucHV0KCdwLWxhbmd1YWdlJykgc2V0IGxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gbGFuZ3VhZ2UgJiYgbGFuZ3VhZ2UubGVuZ3RoID8gbGFuZ3VhZ2UudHJpbSgpIDogJ3BsYWluVGV4dCc7XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuX2xhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UodGhpcy5fbGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHNlIG8gZWRpdG9yIHNlcsOhIGFiZXJ0byBlbSBtb2RvIGRlIGxlaXR1cmEuXHJcbiAgICpcclxuICAgKiBOZXN0ZSBjYXNvLCBuw6NvIMOpIHBvc3PDrXZlbCBlZGl0YXIgbyBjw7NkaWdvIGluc2VyaWRvLlxyXG4gICAqXHJcbiAgICogT2JzOiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcmVmbGV0aXLDoSBlZmVpdG8gc2UgYWx0ZXJhZGEgYXDDs3MgbyBjYXJyZWdhbWVudG8gZG8gY29tcG9uZW50ZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkocmVhZG9ubHk6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlYWRvbmx5ID0gPGFueT5yZWFkb25seSA9PT0gJycgPyB0cnVlIDogdGhpcy5jb252ZXJ0VG9Cb29sZWFuKHJlYWRvbmx5KTtcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgdGhpcy5zZXRSZWFkT25seShyZWFkb25seSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogSW5kaWNhIHNlIG8gZWRpdG9yIHNlcsOhIGFiZXJ0byBlbSBtb2RvIGRlIGNvbXBhcmHDp8Ojby5cclxuICAgKlxyXG4gICAqIENhc28gZXN0ZWphIGhhYmlsaXRhZGEgZXN0YSBvcMOnw6NvLCBlbnTDo28gbyBbKG5nTW9kZWwpXSBkZXZlcsOhIHNlciBwYXNzYWRvIGNvbW8gdW0gYXJyYXksIGN1amEgcHJpbWVpcmEgb3DDp8OjbyBkZXZlXHJcbiAgICogY29udGVyIHVtYSBzdHJpbmcgY29tIG8gY8OzZGlnbyBvcmlnaW5hbCBlIG5hIHNlZ3VuZGEgcG9zacOnw6NvIHVtYSBzdHJpbmcgY8OzZGlnbyBtb2RpZmljYWRvIHBhcmEgZWZlaXRvIGRlXHJcbiAgICogY29tcGFyYcOnw6NvLiBOZXN0ZSBjYXNvLCBvIHVzdcOhcmlvIGNvbnNlZ3VpcsOhIGVkaXRhciBhcGVuYXMgbyBjw7NkaWdvIG1vZGlmaWNhZG8gZSBpc3NvIHJlZmxldGlyw6EgbmEgc2VndW5kYSBwb3Npw6fDo29cclxuICAgKiBkbyBhcnJheSBjb25zZXF1ZW50ZW1lbnRlLlxyXG4gICAqXHJcbiAgICogT2JzOiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcmVmbGV0aXLDoSBlZmVpdG8gc2UgYWx0ZXJhZGEgYXDDs3MgbyBjYXJyZWdhbWVudG8gZG8gY29tcG9uZW50ZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcclxuICAgKi9cclxuICBASW5wdXQoJ3Atc2hvdy1kaWZmJykgc2V0IHNob3dEaWZmKHNob3dEaWZmOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93RGlmZiA9IDxhbnk+c2hvd0RpZmYgPT09ICcnID8gdHJ1ZSA6IHRoaXMuY29udmVydFRvQm9vbGVhbihzaG93RGlmZik7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0RpZmYoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RpZmY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAb3B0aW9uYWxcclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogTGlzdGEgZGUgc3VnZXN0w7VlcyB1c2FkYXMgcGVsbyBhdXRvY29tcGxldGUgZGVudHJvIGRvIGVkaXRvci5cclxuICAgKlxyXG4gICAqIFBhcmEgdmlzdWFsaXphciBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgdXNlIG8gY29tYW5kbyBgQ1RSTCArIFNQQUNFYC5cclxuICAgKlxyXG4gICAqIENhc28gbyBlZGl0b3IgZXN0ZWphIHVzYW5kbyB1bWEgbGluZ3VhZ2VtIHF1ZSBqw6EgdGVuaGEgdW1hIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgcHJlZGVmaW5pZGEsIG8gdmFsb3IgcGFzc2FkbyBzZXLDoSBhZGljaW9uYWRvXHJcbiAgICogYSBsaXN0YSBwcmVleGlzdGVudGUsIGF1bWVudGFuZG8gYXMgb3DDp8O1ZXMgcGFyYSBvIHVzdcOhcmlvLlxyXG4gICAqXHJcbiAgICogQ2FzbyB0ZW5oYSBtYWlzIGRlIHVtIGVkaXRvciBkYSBtZXNtYSBsaW5ndWFnZW0gbmEgYXBsaWNhw6fDo28sIGFzIHN1Z2VzdMO1ZXMgc2Vyw6NvIGFkaWNpb25hZGFzIHBhcmEgcXVlIHRvZG9zIG9zIGVkaXRvcmVzIGRhIG1lc21hIGxpbmd1YWdlbVxyXG4gICAqIHRlbmhhbSBhcyBtZXNtYXMgc3VnZXN0w7Vlcy5cclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqICA8cG8tY29kZS1lZGl0b3JcclxuICAgKiAgICBbcC1zdWdnZXN0aW9uc109XCJbeyBsYWJlbDogJ3BvJywgaW5zZXJ0VGV4dDogJ1BvcnRpbmFyaSBVSScgfSwgeyBsYWJlbDogJ25nJywgaW5zZXJ0VGV4dDogJ0FuZ3VsYXInIH1dXCI+XHJcbiAgICogIDwvcG8tY29kZS1lZGl0b3I+XHJcbiAgICogYGBgXHJcbiAgICpcclxuICAgKiBBbyBmb3JuZWNlciB1bWEgbGlzdGEgZGUgc3VnZXN0w7VlcyDDqSBwb3Nzw612ZWwgYWNlbGVyYXIgYSBlc2NyaXRhIGRlIHNjcmlwdHMgcGVsb3MgdXN1w6FyaW9zLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgncC1zdWdnZXN0aW9ucycpIHNldCBzdWdnZXN0aW9ucyh2YWx1ZXM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+KSB7XHJcbiAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHZhbHVlcztcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5fc3VnZ2VzdGlvbnMpIHtcclxuICAgICAgdGhpcy5zZXRTdWdnZXN0aW9ucyh0aGlzLl9zdWdnZXN0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3VnZ2VzdGlvbnMoKTogQXJyYXk8UG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSB1bSB0ZW1hIHBhcmEgbyBlZGl0b3IuXHJcbiAgICpcclxuICAgKiBUZW1hcyB2w6FsaWRvczpcclxuICAgKiAgLSBgdnMtZGFya2BcclxuICAgKiAgLSBgdnNgXHJcbiAgICogIC0gYGhjLWJsYWNrYFxyXG4gICAqXHJcbiAgICogw4kgaW1wb3J0YW50ZSBzYWxpZW50YXIgcXVlIG8gdGVtYSBzZXLDoSBhcGxpY2Fkb3MgYSB0b2RvcyBvcyBjb21wb25lbnRlcyBwby1jb2RlLWVkaXRvciBleGlzdGVudGVzIG5hIHRlbGEsXHJcbiAgICogb3Ugc2VqYSwgdG9kYXMgYXMgaW5zdMOibmNpYXMgZG8gY29tcG9uZW50ZSByZWNlYmVyw6NvIG8gw7psdGltbyB0ZW1hIGF0cmlidcOtZG8gb3UgbyB0ZW1hIGRhIMO6bHRpbWEgaW5zdMOibmNpYVxyXG4gICAqIGNyaWFkYS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IGB2c2BcclxuICAgKi9cclxuICBASW5wdXQoJ3AtdGhlbWUnKSBzZXQgdGhlbWUodGhlbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGhlbWUgPSBQT19DT0RFX0VESVRPUl9USEVNRVMuaW5jbHVkZXModGhlbWUpID8gdGhlbWUgOiBQT19DT0RFX0VESVRPUl9USEVNRV9ERUZBVUxUO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0aGlzLnNldFRoZW1lKHRoZW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB0aGVtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RoZW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQG9wdGlvbmFsXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIERlZmluZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIGVtIHBpeGVscyBkbyBwby1jb2RlLWVkaXRvci5cclxuICAgKiBFc3RhIHByb3ByaWVkYWRlIG7Do28gcG9kZXLDoSBzZXIgYWx0ZXJhZGEgYXDDs3MgbyBjb21wb25lbnRlIHRlciBzaWRvIGluaWNpYWRvLlxyXG4gICAqIEEgYWx0dXJhIG3DrW5pbWEgw6kgMTUwIHBpeGVscy5cclxuICAgKi9cclxuICBASW5wdXQoJ3AtaGVpZ2h0Jykgc2V0IGhlaWdodChoZWlnaHQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gcGFyc2VGbG9hdChoZWlnaHQpID49IDE1MCA/IHBhcnNlRmxvYXQoaGVpZ2h0KSA6IDE1MDtcclxuICB9XHJcblxyXG4gIGdldCBoZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLl9oZWlnaHR9cHhgO1xyXG4gIH1cclxuXHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBvblRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBvbkNoYW5nZVByb3BhZ2F0ZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuXHJcbiAgZ2V0T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB7IGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlLCB0aGVtZTogdGhpcy50aGVtZSwgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHkgfTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjb252ZXJ0VG9Cb29sZWFuKHZhbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdmFsID0gdmFsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICByZXR1cm4gdmFsID09PSAndHJ1ZScgfHwgdmFsID09PSAnb24nIHx8IHZhbCA9PT0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHJldHVybiB2YWwgPT09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICEhdmFsO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTtcclxuXHJcbiAgYWJzdHJhY3Qgc2V0TGFuZ3VhZ2UodmFsdWU6IGFueSk7XHJcblxyXG4gIGFic3RyYWN0IHNldFRoZW1lKHZhbHVlOiBhbnkpO1xyXG5cclxuICBhYnN0cmFjdCBzZXRSZWFkT25seSh2YWx1ZTogYW55KTtcclxuXHJcbiAgYWJzdHJhY3Qgc2V0U3VnZ2VzdGlvbnModmFsdWU6IGFueSk7XHJcbn1cclxuIl19
@@ -1,66 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * @description
5
- *
6
- * Wrapper para registro de sintaxes customizadas para o po-code-editor.
7
- *
8
- * Para utilização do serviço de idiomas **PoCodeEditorRegister**,
9
- * deve-se importar o módulo PoCodeEditorModule mesmo já tendo importado
10
- * o módulo PoModule.
11
- * Na importação opcionalmente pode ser invocado o método **forRegister** informando um objeto para configuração.
12
- *
13
- * Exemplo de configuração:
14
- * ```
15
- * import { PoCodeEditorModule, PoCodeEditorRegisterable } from '@po-ui/ng-code-editor';
16
- *
17
- * declare const monaco: any; // Importante para usar configurações com tipos definidos pelo Monaco
18
- *
19
- * // A função `provideCompletionItems` precisa ser exportada para ser compatível com AOT.
20
- * export function provideCompletionItems() {
21
- * const suggestions = [{
22
- * label: 'terraform',
23
- * insertText: '#terraform language'
24
- * }, {
25
- * label: 'server',
26
- * insertText: 'server ${1:ip}'
27
- * }];
28
- *
29
- * return { suggestions: suggestions };
30
- * }
31
- *
32
- * const customEditor: PoCodeEditorRegisterable = {
33
- * language: 'terraform',
34
- * options: {
35
- * keywords: ['resource', 'provider', 'variable', 'output', 'module', 'true', 'false'],
36
- * operators: ['{', '}', '(', ')', '[', ']', '?', ':'],
37
- * symbols: /[=><!~?:&|+\-*\/\^%]+/,
38
- * escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
39
- * tokenizer: {
40
- * ...
41
- * }
42
- * },
43
- * suggestions: { provideCompletionItems: provideCompletionItems }
44
- * };
45
- *
46
- * @NgModule({
47
- * declarations: [],
48
- * imports: [
49
- * PoModule,
50
- * PoCodeEditorModule.forRegister(customEditor)
51
- * ],
52
- * bootstrap: [AppComponent]
53
- * })
54
- * ```
55
- *
56
- * > As configurações para o registro de uma nova sintaxe no Monaco code editor podem ser encontradas em
57
- * > [**Monaco Editor**](https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-custom-languages).
58
- */
59
- export class PoCodeEditorRegister {
60
- }
61
- PoCodeEditorRegister.ɵfac = function PoCodeEditorRegister_Factory(t) { return new (t || PoCodeEditorRegister)(); };
62
- PoCodeEditorRegister.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoCodeEditorRegister, factory: PoCodeEditorRegister.ɵfac });
63
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorRegister, [{
64
- type: Injectable
65
- }], null, null); })();
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3ItcmVnaXN0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9wby1jb2RlLWVkaXRvci9wby1jb2RlLWVkaXRvci1yZWdpc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjs7d0ZBQXBCLG9CQUFvQjswRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQjt1RkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZU9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlU3VnZ2VzdGlvblR5cGUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXN1Z2dlc3Rpb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogV3JhcHBlciBwYXJhIHJlZ2lzdHJvIGRlIHNpbnRheGVzIGN1c3RvbWl6YWRhcyBwYXJhIG8gcG8tY29kZS1lZGl0b3IuXHJcbiAqXHJcbiAqIFBhcmEgdXRpbGl6YcOnw6NvIGRvIHNlcnZpw6dvIGRlIGlkaW9tYXMgKipQb0NvZGVFZGl0b3JSZWdpc3RlcioqLFxyXG4gKiBkZXZlLXNlIGltcG9ydGFyIG8gbcOzZHVsbyBQb0NvZGVFZGl0b3JNb2R1bGUgbWVzbW8gasOhIHRlbmRvIGltcG9ydGFkb1xyXG4gKiBvIG3Ds2R1bG8gUG9Nb2R1bGUuXHJcbiAqIE5hIGltcG9ydGHDp8OjbyBvcGNpb25hbG1lbnRlIHBvZGUgc2VyIGludm9jYWRvIG8gbcOpdG9kbyAqKmZvclJlZ2lzdGVyKiogaW5mb3JtYW5kbyB1bSBvYmpldG8gcGFyYSBjb25maWd1cmHDp8Ojby5cclxuICpcclxuICogRXhlbXBsbyBkZSBjb25maWd1cmHDp8OjbzpcclxuICogYGBgXHJcbiAqIGltcG9ydCB7IFBvQ29kZUVkaXRvck1vZHVsZSwgUG9Db2RlRWRpdG9yUmVnaXN0ZXJhYmxlIH0gZnJvbSAnQHBvLXVpL25nLWNvZGUtZWRpdG9yJztcclxuICpcclxuICogZGVjbGFyZSBjb25zdCBtb25hY286IGFueTsgLy8gSW1wb3J0YW50ZSBwYXJhIHVzYXIgY29uZmlndXJhw6fDtWVzIGNvbSB0aXBvcyBkZWZpbmlkb3MgcGVsbyBNb25hY29cclxuICpcclxuICogLy8gQSBmdW7Dp8OjbyBgcHJvdmlkZUNvbXBsZXRpb25JdGVtc2AgcHJlY2lzYSBzZXIgZXhwb3J0YWRhIHBhcmEgc2VyIGNvbXBhdMOtdmVsIGNvbSBBT1QuXHJcbiAqIGV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29tcGxldGlvbkl0ZW1zKCkge1xyXG4gKiAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gW3tcclxuICogICAgIGxhYmVsOiAndGVycmFmb3JtJyxcclxuICogICAgIGluc2VydFRleHQ6ICcjdGVycmFmb3JtIGxhbmd1YWdlJ1xyXG4gKiAgIH0sIHtcclxuICogICAgIGxhYmVsOiAnc2VydmVyJyxcclxuICogICAgIGluc2VydFRleHQ6ICdzZXJ2ZXIgJHsxOmlwfSdcclxuICogICB9XTtcclxuICpcclxuICogICByZXR1cm4geyBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMgfTtcclxuICogfVxyXG4gKlxyXG4gKiBjb25zdCBjdXN0b21FZGl0b3I6IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZSA9IHtcclxuICogICBsYW5ndWFnZTogJ3RlcnJhZm9ybScsXHJcbiAqICAgb3B0aW9uczoge1xyXG4gKiAgICAga2V5d29yZHM6IFsncmVzb3VyY2UnLCAncHJvdmlkZXInLCAndmFyaWFibGUnLCAnb3V0cHV0JywgJ21vZHVsZScsICd0cnVlJywgJ2ZhbHNlJ10sXHJcbiAqICAgICBvcGVyYXRvcnM6IFsneycsICd9JywgJygnLCAnKScsICdbJywgJ10nLCAnPycsICc6J10sXHJcbiAqICAgICBzeW1ib2xzOiAgL1s9Pjwhfj86JnwrXFwtKlxcL1xcXiVdKy8sXHJcbiAqICAgICBlc2NhcGVzOiAvXFxcXCg/OlthYmZucnR2XFxcXFwiJ118eFswLTlBLUZhLWZdezEsNH18dVswLTlBLUZhLWZdezR9fFVbMC05QS1GYS1mXXs4fSkvLFxyXG4gKiAgICAgdG9rZW5pemVyOiB7XHJcbiAqICAgICAgLi4uXHJcbiAqICAgICB9XHJcbiAqICAgfSxcclxuICogICBzdWdnZXN0aW9uczogeyBwcm92aWRlQ29tcGxldGlvbkl0ZW1zOiBwcm92aWRlQ29tcGxldGlvbkl0ZW1zIH1cclxuICogfTtcclxuICpcclxuICogQE5nTW9kdWxlKHtcclxuICogICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gKiAgIGltcG9ydHM6IFtcclxuICogICAgIFBvTW9kdWxlLFxyXG4gKiAgICAgUG9Db2RlRWRpdG9yTW9kdWxlLmZvclJlZ2lzdGVyKGN1c3RvbUVkaXRvcilcclxuICogICBdLFxyXG4gKiAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF1cclxuICogfSlcclxuICogYGBgXHJcbiAqXHJcbiAqID4gQXMgY29uZmlndXJhw6fDtWVzIHBhcmEgbyByZWdpc3RybyBkZSB1bWEgbm92YSBzaW50YXhlIG5vIE1vbmFjbyBjb2RlIGVkaXRvciBwb2RlbSBzZXIgZW5jb250cmFkYXMgZW1cclxuICogPiBbKipNb25hY28gRWRpdG9yKipdKGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9tb25hY28tZWRpdG9yL3BsYXlncm91bmQuaHRtbCNleHRlbmRpbmctbGFuZ3VhZ2Utc2VydmljZXMtY3VzdG9tLWxhbmd1YWdlcykuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQb0NvZGVFZGl0b3JSZWdpc3RlciBpbXBsZW1lbnRzIFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZSB7XHJcbiAgLyoqIFNpbnRheGUgYSBzZXIgcmVnaXN0cmFkYS4gKi9cclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICAvKiogT3DDp8O1ZXMgZGEgc2ludGF4ZSBwYXJhIHJlZ2lzdHJvIG5vIHBvLWNvZGUtZWRpdG9yLiAqL1xyXG4gIG9wdGlvbnM6IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZU9wdGlvbnM7XHJcblxyXG4gIC8qKiBMaXN0YSBkZSBzdWdlc3TDtWVzIHBhcmEgYSBmdW7Dp8OjbyBkZSBhdXRvY29tcGxldGUgKENUUkwgKyBTUEFDRSkuICovXHJcbiAgc3VnZ2VzdGlvbnM/OiBQb0NvZGVFZGl0b3JSZWdpc3RlcmFibGVTdWdnZXN0aW9uVHlwZTtcclxufVxyXG4iXX0=
@@ -1,229 +0,0 @@
1
- import { Component, forwardRef, ViewChild } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { PoCodeEditorBaseComponent } from './po-code-editor-base.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./po-code-editor-suggestion.service";
6
- import * as i2 from "./po-code-editor-register.service";
7
- const _c0 = ["editorContainer"];
8
- // variáveis relacionadas ao Monaco
9
- let loadedMonaco = false;
10
- let loadPromise;
11
- /* istanbul ignore next */
12
- const providers = [
13
- {
14
- provide: NG_VALUE_ACCESSOR,
15
- // eslint-disable-next-line
16
- useExisting: forwardRef(() => PoCodeEditorComponent),
17
- multi: true
18
- }
19
- ];
20
- /**
21
- * @docsExtends PoCodeEditorBaseComponent
22
- *
23
- * @example
24
- *
25
- * <example name="po-code-editor-basic" title="PO Code Editor Basic">
26
- * <file name="sample-po-code-editor-basic/sample-po-code-editor-basic.component.html"> </file>
27
- * <file name="sample-po-code-editor-basic/sample-po-code-editor-basic.component.ts"> </file>
28
- * </example>
29
- *
30
- * <example name="po-code-editor-labs" title="PO Code Editor Labs">
31
- * <file name="sample-po-code-editor-labs/sample-po-code-editor-labs.component.html"> </file>
32
- * <file name="sample-po-code-editor-labs/sample-po-code-editor-labs.component.ts"> </file>
33
- * </example>
34
- *
35
- * <example name="po-code-editor-diff" title="PO Code Editor - Diff">
36
- * <file name="sample-po-code-editor-diff/sample-po-code-editor-diff.component.html"> </file>
37
- * <file name="sample-po-code-editor-diff/sample-po-code-editor-diff.component.ts"> </file>
38
- * </example>
39
- *
40
- * <example name="po-code-editor-terraform" title="PO Code Editor - Terraform">
41
- * <file name="sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.html"> </file>
42
- * <file name="sample-po-code-editor-terraform/sample-po-code-editor-terraform.component.ts"> </file>
43
- * <file name="sample-po-code-editor-terraform/sample-po-code-editor-terraform.constant.ts"> </file>
44
- * <file name="sample-po-code-editor-terraform/sample-po-code-editor-terraform.module.ts"> </file>
45
- * </example>
46
- *
47
- * <example name="po-code-editor-suggestion" title="PO Code Editor Suggestion">
48
- * <file name="sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.html"> </file>
49
- * <file name="sample-po-code-editor-suggestion/sample-po-code-editor-suggestion.component.ts"> </file>
50
- * </example>
51
- */
52
- export class PoCodeEditorComponent extends PoCodeEditorBaseComponent {
53
- constructor(zone, el, poCodeEditorSuggestionService, codeEditorRegister) {
54
- super();
55
- this.zone = zone;
56
- this.el = el;
57
- this.poCodeEditorSuggestionService = poCodeEditorSuggestionService;
58
- this.codeEditorRegister = codeEditorRegister;
59
- this.canLoad = false;
60
- }
61
- /* istanbul ignore next */
62
- ngAfterViewInit() {
63
- if (loadedMonaco) {
64
- /* istanbul ignore next */
65
- loadPromise.then(() => {
66
- setTimeout(() => {
67
- if (this.el.nativeElement.offsetWidth) {
68
- this.registerCustomLanguage();
69
- this.initMonaco(this.getOptions());
70
- }
71
- else {
72
- this.canLoad = true;
73
- }
74
- });
75
- });
76
- }
77
- else {
78
- loadedMonaco = true;
79
- loadPromise = new Promise((resolve) => {
80
- /* istanbul ignore next */
81
- const onGotAmdLoader = () => {
82
- window.require.config({ paths: { 'vs': './assets/monaco/vs' } });
83
- window.require(['vs/editor/editor.main'], () => {
84
- setTimeout(() => {
85
- if (this.el.nativeElement.offsetWidth) {
86
- this.registerCustomLanguage();
87
- this.initMonaco(this.getOptions());
88
- }
89
- else {
90
- this.canLoad = true;
91
- }
92
- resolve();
93
- });
94
- });
95
- };
96
- if (!window.require) {
97
- const loaderScript = document.createElement('script');
98
- loaderScript.type = 'text/javascript';
99
- loaderScript.src = './assets/monaco/vs/loader.js';
100
- loaderScript.addEventListener('load', onGotAmdLoader);
101
- document.body.appendChild(loaderScript);
102
- }
103
- });
104
- }
105
- }
106
- ngDoCheck() {
107
- if (this.canLoad && this.el.nativeElement.offsetWidth) {
108
- this.registerCustomLanguage();
109
- this.initMonaco(this.getOptions());
110
- this.canLoad = false;
111
- }
112
- }
113
- /* istanbul ignore next */
114
- monacoCreateModel(value) {
115
- return monaco.editor.createModel(value);
116
- }
117
- setValueInEditor() {
118
- if (this.showDiff) {
119
- setTimeout(() => {
120
- if (this.editor) {
121
- this.editor.setModel({
122
- original: this.monacoCreateModel(this.value),
123
- modified: this.monacoCreateModel(this.modifiedValue)
124
- });
125
- }
126
- });
127
- }
128
- else {
129
- setTimeout(() => {
130
- if (this.editor) {
131
- this.editor.setValue(this.value);
132
- }
133
- });
134
- }
135
- }
136
- setLanguage(language) {
137
- if (this.showDiff) {
138
- this.setMonacoLanguage(this.editor.getModel().original, language);
139
- this.setMonacoLanguage(this.editor.getModel().modified, language);
140
- }
141
- else {
142
- this.setMonacoLanguage(this.editor.getModel(), language);
143
- }
144
- }
145
- /* istanbul ignore next */
146
- setTheme(theme) {
147
- monaco.editor.setTheme(theme);
148
- }
149
- setReadOnly(readOnly) {
150
- this.editor.updateOptions({ readOnly: readOnly });
151
- }
152
- /* istanbul ignore next */
153
- setSuggestions(newSuggestions, language = this.language) {
154
- if (!newSuggestions) {
155
- return;
156
- }
157
- const suggestions = this.poCodeEditorSuggestionService.getSuggestion(language, newSuggestions);
158
- monaco.languages.registerCompletionItemProvider(language, {
159
- provideCompletionItems: () => ({ suggestions })
160
- });
161
- }
162
- writeValue(value) {
163
- this.value = value && value instanceof Array ? value[0] : value;
164
- this.modifiedValue = value && value instanceof Array && value.length > 0 ? value[1] : '';
165
- this.setValueInEditor();
166
- }
167
- /* istanbul ignore next */
168
- initMonaco(options) {
169
- if (this.showDiff) {
170
- this.editor = monaco.editor.createDiffEditor(this.editorContainer.nativeElement, options);
171
- this.editor.setModel({
172
- original: monaco.editor.createModel(this.value),
173
- modified: monaco.editor.createModel(this.modifiedValue)
174
- });
175
- this.editor.onDidUpdateDiff((e) => {
176
- const original = this.editor.getModel().original.getValue();
177
- const modified = this.editor.getModel().modified.getValue();
178
- this.onChangePropagate([original, modified]);
179
- });
180
- }
181
- else {
182
- this.editor = monaco.editor.create(this.editorContainer.nativeElement, options);
183
- this.editor.setValue(this.value);
184
- this.editor.onDidChangeModelContent((e) => {
185
- const value = this.editor.getValue();
186
- this.onChangePropagate(value);
187
- this.zone.run(() => (this.value = value));
188
- });
189
- }
190
- setTimeout(() => {
191
- this.setLanguage(this.language);
192
- this.setSuggestions(this.suggestions);
193
- }, 500);
194
- }
195
- /* istanbul ignore next */
196
- setMonacoLanguage(model, language) {
197
- monaco.editor.setModelLanguage(model, language);
198
- }
199
- registerCustomLanguage() {
200
- if (this.codeEditorRegister.language) {
201
- monaco.languages.register({ id: this.codeEditorRegister.language });
202
- if (this.codeEditorRegister.options) {
203
- monaco.languages.setMonarchTokensProvider(this.codeEditorRegister.language, this.codeEditorRegister.options);
204
- }
205
- if (this.codeEditorRegister.suggestions) {
206
- this.setSuggestions(this.codeEditorRegister.suggestions.provideCompletionItems().suggestions, this.codeEditorRegister.language);
207
- }
208
- }
209
- }
210
- }
211
- PoCodeEditorComponent.ɵfac = function PoCodeEditorComponent_Factory(t) { return new (t || PoCodeEditorComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.PoCodeEditorSuggestionService), i0.ɵɵdirectiveInject(i2.PoCodeEditorRegister)); };
212
- PoCodeEditorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoCodeEditorComponent, selectors: [["po-code-editor"]], viewQuery: function PoCodeEditorComponent_Query(rf, ctx) { if (rf & 1) {
213
- i0.ɵɵviewQuery(_c0, 7);
214
- } if (rf & 2) {
215
- let _t;
216
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editorContainer = _t.first);
217
- } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 2, consts: [["editorContainer", ""]], template: function PoCodeEditorComponent_Template(rf, ctx) { if (rf & 1) {
218
- i0.ɵɵelement(0, "div", null, 0);
219
- } if (rf & 2) {
220
- i0.ɵɵstyleProp("height", ctx.height);
221
- } }, encapsulation: 2 });
222
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCodeEditorComponent, [{
223
- type: Component,
224
- args: [{ selector: 'po-code-editor', providers: providers, template: "<div #editorContainer [style.height]=\"height\"></div>\r\n" }]
225
- }], function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.PoCodeEditorSuggestionService }, { type: i2.PoCodeEditorRegister }]; }, { editorContainer: [{
226
- type: ViewChild,
227
- args: ['editorContainer', { static: true }]
228
- }] }); })();
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BvLWNvZGUtZWRpdG9yL3BvLWNvZGUtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9wby1jb2RlLWVkaXRvci9wby1jb2RlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBdUIsVUFBVSxFQUFVLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFLNUUsbUNBQW1DO0FBQ25DLElBQUksWUFBWSxHQUFZLEtBQUssQ0FBQztBQUNsQyxJQUFJLFdBQTBCLENBQUM7QUFNL0IsMEJBQTBCO0FBQzFCLE1BQU0sU0FBUyxHQUFvQjtJQUNqQztRQUNFLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7UUFDcEQsS0FBSyxFQUFFLElBQUk7S0FDWjtDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQU1ILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx5QkFBeUI7SUFLbEUsWUFDVSxJQUFZLEVBQ1osRUFBYyxFQUNkLDZCQUE0RCxFQUM1RCxrQkFBeUM7UUFFakQsS0FBSyxFQUFFLENBQUM7UUFMQSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGtD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ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgTmdab25lLCBWaWV3Q2hpbGQsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgUG9Db2RlRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tY29kZS1lZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb0NvZGVFZGl0b3JSZWdpc3RlciB9IGZyb20gJy4vcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29kZS1lZGl0b3ItcmVnaXN0ZXJhYmxlLXN1Z2dlc3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9Db2RlRWRpdG9yU3VnZ2VzdGlvblNlcnZpY2UgfSBmcm9tICcuL3BvLWNvZGUtZWRpdG9yLXN1Z2dlc3Rpb24uc2VydmljZSc7XHJcblxyXG4vLyB2YXJpw6F2ZWlzIHJlbGFjaW9uYWRhcyBhbyBNb25hY29cclxubGV0IGxvYWRlZE1vbmFjbzogYm9vbGVhbiA9IGZhbHNlO1xyXG5sZXQgbG9hZFByb21pc2U6IFByb21pc2U8dm9pZD47XHJcblxyXG5kZWNsYXJlIGNvbnN0IG1vbmFjbzogYW55O1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcclxuZGVjbGFyZSBjb25zdCByZXF1aXJlOiBhbnk7XHJcblxyXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG5jb25zdCBwcm92aWRlcnM6IEFycmF5PFByb3ZpZGVyPiA9IFtcclxuICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Db2RlRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfVxyXG5dO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzRXh0ZW5kcyBQb0NvZGVFZGl0b3JCYXNlQ29tcG9uZW50XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb2RlLWVkaXRvci1iYXNpY1wiIHRpdGxlPVwiUE8gQ29kZSBFZGl0b3IgQmFzaWNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29kZS1lZGl0b3ItYmFzaWMvc2FtcGxlLXBvLWNvZGUtZWRpdG9yLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29kZS1lZGl0b3ItYmFzaWMvc2FtcGxlLXBvLWNvZGUtZWRpdG9yLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvZGUtZWRpdG9yLWxhYnNcIiB0aXRsZT1cIlBPIENvZGUgRWRpdG9yIExhYnNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29kZS1lZGl0b3ItbGFicy9zYW1wbGUtcG8tY29kZS1lZGl0b3ItbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvZGUtZWRpdG9yLWxhYnMvc2FtcGxlLXBvLWNvZGUtZWRpdG9yLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29kZS1lZGl0b3ItZGlmZlwiIHRpdGxlPVwiUE8gQ29kZSBFZGl0b3IgLSBEaWZmXCI+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvZGUtZWRpdG9yLWRpZmYvc2FtcGxlLXBvLWNvZGUtZWRpdG9yLWRpZmYuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb2RlLWVkaXRvci1kaWZmL3NhbXBsZS1wby1jb2RlLWVkaXRvci1kaWZmLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvZGUtZWRpdG9yLXRlcnJhZm9ybVwiIHRpdGxlPVwiUE8gQ29kZSBFZGl0b3IgLSBUZXJyYWZvcm1cIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29kZS1lZGl0b3ItdGVycmFmb3JtL3NhbXBsZS1wby1jb2RlLWVkaXRvci10ZXJyYWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb2RlLWVkaXRvci10ZXJyYWZvcm0vc2FtcGxlLXBvLWNvZGUtZWRpdG9yLXRlcnJhZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb2RlLWVkaXRvci10ZXJyYWZvcm0vc2FtcGxlLXBvLWNvZGUtZWRpdG9yLXRlcnJhZm9ybS5jb25zdGFudC50c1wiPiA8L2ZpbGU+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvZGUtZWRpdG9yLXRlcnJhZm9ybS9zYW1wbGUtcG8tY29kZS1lZGl0b3ItdGVycmFmb3JtLm1vZHVsZS50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvZGUtZWRpdG9yLXN1Z2dlc3Rpb25cIiB0aXRsZT1cIlBPIENvZGUgRWRpdG9yIFN1Z2dlc3Rpb25cIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29kZS1lZGl0b3Itc3VnZ2VzdGlvbi9zYW1wbGUtcG8tY29kZS1lZGl0b3Itc3VnZ2VzdGlvbi5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvZGUtZWRpdG9yLXN1Z2dlc3Rpb24vc2FtcGxlLXBvLWNvZGUtZWRpdG9yLXN1Z2dlc3Rpb24uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby1jb2RlLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWNvZGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnNcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvQ29kZUVkaXRvckNvbXBvbmVudCBleHRlbmRzIFBvQ29kZUVkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrIHtcclxuICBAVmlld0NoaWxkKCdlZGl0b3JDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0b3JDb250YWluZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhbkxvYWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHBvQ29kZUVkaXRvclN1Z2dlc3Rpb25TZXJ2aWNlOiBQb0NvZGVFZGl0b3JTdWdnZXN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29kZUVkaXRvclJlZ2lzdGVyPzogUG9Db2RlRWRpdG9yUmVnaXN0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmIChsb2FkZWRNb25hY28pIHtcclxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICAgICAgbG9hZFByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDdXN0b21MYW5ndWFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRNb25hY28odGhpcy5nZXRPcHRpb25zKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jYW5Mb2FkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2FkZWRNb25hY28gPSB0cnVlO1xyXG4gICAgICBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlOiBhbnkpID0+IHtcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gICAgICAgIGNvbnN0IG9uR290QW1kTG9hZGVyOiBhbnkgPSAoKSA9PiB7XHJcbiAgICAgICAgICAoPGFueT53aW5kb3cpLnJlcXVpcmUuY29uZmlnKHsgcGF0aHM6IHsgJ3ZzJzogJy4vYXNzZXRzL21vbmFjby92cycgfSB9KTtcclxuICAgICAgICAgICg8YW55PndpbmRvdykucmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDdXN0b21MYW5ndWFnZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMuZ2V0T3B0aW9ucygpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5Mb2FkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICghKDxhbnk+d2luZG93KS5yZXF1aXJlKSB7XHJcbiAgICAgICAgICBjb25zdCBsb2FkZXJTY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICBsb2FkZXJTY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG4gICAgICAgICAgbG9hZGVyU2NyaXB0LnNyYyA9ICcuL2Fzc2V0cy9tb25hY28vdnMvbG9hZGVyLmpzJztcclxuICAgICAgICAgIGxvYWRlclNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Hb3RBbWRMb2FkZXIpO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkZXJTY3JpcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAodGhpcy5jYW5Mb2FkICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCkge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tTGFuZ3VhZ2UoKTtcclxuICAgICAgdGhpcy5pbml0TW9uYWNvKHRoaXMuZ2V0T3B0aW9ucygpKTtcclxuICAgICAgdGhpcy5jYW5Mb2FkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gIG1vbmFjb0NyZWF0ZU1vZGVsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlSW5FZGl0b3IoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93RGlmZikge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yLnNldE1vZGVsKHtcclxuICAgICAgICAgICAgb3JpZ2luYWw6IHRoaXMubW9uYWNvQ3JlYXRlTW9kZWwodGhpcy52YWx1ZSksXHJcbiAgICAgICAgICAgIG1vZGlmaWVkOiB0aGlzLm1vbmFjb0NyZWF0ZU1vZGVsKHRoaXMubW9kaWZpZWRWYWx1ZSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zaG93RGlmZikge1xyXG4gICAgICB0aGlzLnNldE1vbmFjb0xhbmd1YWdlKHRoaXMuZWRpdG9yLmdldE1vZGVsKCkub3JpZ2luYWwsIGxhbmd1YWdlKTtcclxuICAgICAgdGhpcy5zZXRNb25hY29MYW5ndWFnZSh0aGlzLmVkaXRvci5nZXRNb2RlbCgpLm1vZGlmaWVkLCBsYW5ndWFnZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldE1vbmFjb0xhbmd1YWdlKHRoaXMuZWRpdG9yLmdldE1vZGVsKCksIGxhbmd1YWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgc2V0VGhlbWUodGhlbWU6IHN0cmluZykge1xyXG4gICAgbW9uYWNvLmVkaXRvci5zZXRUaGVtZSh0aGVtZSk7XHJcbiAgfVxyXG5cclxuICBzZXRSZWFkT25seShyZWFkT25seTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3IudXBkYXRlT3B0aW9ucyh7IHJlYWRPbmx5OiByZWFkT25seSB9KTtcclxuICB9XHJcblxyXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXHJcbiAgc2V0U3VnZ2VzdGlvbnMobmV3U3VnZ2VzdGlvbnM6IEFycmF5PFBvQ29kZUVkaXRvclJlZ2lzdGVyYWJsZVN1Z2dlc3Rpb24+LCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2UpIHtcclxuICAgIGlmICghbmV3U3VnZ2VzdGlvbnMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gdGhpcy5wb0NvZGVFZGl0b3JTdWdnZXN0aW9uU2VydmljZS5nZXRTdWdnZXN0aW9uKGxhbmd1YWdlLCBuZXdTdWdnZXN0aW9ucyk7XHJcblxyXG4gICAgbW9uYWNvLmxhbmd1YWdlcy5yZWdpc3RlckNvbXBsZXRpb25JdGVtUHJvdmlkZXIobGFuZ3VhZ2UsIHtcclxuICAgICAgcHJvdmlkZUNvbXBsZXRpb25JdGVtczogKCkgPT4gKHsgc3VnZ2VzdGlvbnMgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZVswXSA6IHZhbHVlO1xyXG4gICAgdGhpcy5tb2RpZmllZFZhbHVlID0gdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWVbMV0gOiAnJztcclxuICAgIHRoaXMuc2V0VmFsdWVJbkVkaXRvcigpO1xyXG4gIH1cclxuXHJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cclxuICBwcml2YXRlIGluaXRNb25hY28ob3B0aW9uczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93RGlmZikge1xyXG4gICAgICB0aGlzLmVkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlRGlmZkVkaXRvcih0aGlzLmVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBvcHRpb25zKTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdG9yLnNldE1vZGVsKHtcclxuICAgICAgICBvcmlnaW5hbDogbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLnZhbHVlKSxcclxuICAgICAgICBtb2RpZmllZDogbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLm1vZGlmaWVkVmFsdWUpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5lZGl0b3Iub25EaWRVcGRhdGVEaWZmKChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMuZWRpdG9yLmdldE1vZGVsKCkub3JpZ2luYWwuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCBtb2RpZmllZCA9IHRoaXMuZWRpdG9yLmdldE1vZGVsKCkubW9kaWZpZWQuZ2V0VmFsdWUoKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKFtvcmlnaW5hbCwgbW9kaWZpZWRdKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuZWRpdG9yQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIG9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgdGhpcy5lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5lZGl0b3IuZ2V0VmFsdWUoKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+ICh0aGlzLnZhbHVlID0gdmFsdWUpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRMYW5ndWFnZSh0aGlzLmxhbmd1YWdlKTtcclxuICAgICAgdGhpcy5zZXRTdWdnZXN0aW9ucyh0aGlzLnN1Z2dlc3Rpb25zKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xyXG4gIHByaXZhdGUgc2V0TW9uYWNvTGFuZ3VhZ2UobW9kZWwsIGxhbmd1YWdlKSB7XHJcbiAgICBtb25hY28uZWRpdG9yLnNldE1vZGVsTGFuZ3VhZ2UobW9kZWwsIGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJDdXN0b21MYW5ndWFnZSgpIHtcclxuICAgIGlmICh0aGlzLmNvZGVFZGl0b3JSZWdpc3Rlci5sYW5ndWFnZSkge1xyXG4gICAgICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyKHsgaWQ6IHRoaXMuY29kZUVkaXRvclJlZ2lzdGVyLmxhbmd1YWdlIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29kZUVkaXRvclJlZ2lzdGVyLm9wdGlvbnMpIHtcclxuICAgICAgICBtb25hY28ubGFuZ3VhZ2VzLnNldE1vbmFyY2hUb2tlbnNQcm92aWRlcih0aGlzLmNvZGVFZGl0b3JSZWdpc3Rlci5sYW5ndWFnZSwgdGhpcy5jb2RlRWRpdG9yUmVnaXN0ZXIub3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvZGVFZGl0b3JSZWdpc3Rlci5zdWdnZXN0aW9ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3VnZ2VzdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLmNvZGVFZGl0b3JSZWdpc3Rlci5zdWdnZXN0aW9ucy5wcm92aWRlQ29tcGxldGlvbkl0ZW1zKCkuc3VnZ2VzdGlvbnMsXHJcbiAgICAgICAgICB0aGlzLmNvZGVFZGl0b3JSZWdpc3Rlci5sYW5ndWFnZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjZWRpdG9yQ29udGFpbmVyIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCI+PC9kaXY+XHJcbiJdfQ==