@libs-ui/services-config-project 0.1.1-1

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9jb25maWctcHJvamVjdC9zcmMvY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElMaWJzVWlDb25maWdGb250RmFtaWx5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmlfcmVndWxhcjogc3RyaW5nO1xuICB1cmlfbWVkaXVtOiBzdHJpbmc7XG4gIHVyaV9zZW1pYm9sZDogc3RyaW5nO1xuICB1cmlfYm9sZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udFdlaWdodCB7XG4gIHVyaV9yZWd1bGFyOiBzdHJpbmc7XG4gIHVyaV9tZWRpdW06IHN0cmluZztcbiAgdXJpX3NlbWlib2xkOiBzdHJpbmc7XG4gIHVyaV9ib2xkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nIHtcbiAgaDFyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDViOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZSB7XG4gICdmb250LXNpemUnOiBzdHJpbmc7XG4gICdmb250LXdlaWdodCc6IHN0cmluZztcbiAgJ2xpbmUtaGVpZ2h0Jzogc3RyaW5nO1xuICAnbGV0dGVyLXNwYWNpbmcnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiB7XG4gIFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvblRhYjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29sb3JCdXR0b25UYWIge1xuICBjb2xvcjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kX2JhZGdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2xvckJ1dHRvbiB7XG4gIGNvbmZpZ1N0ZXBDb2xvcjoge1xuICAgIHRleHQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2hvdmVyOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGV4dF9hY3RpdmU6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2Rpc2FibGU6IHN0cmluZyB8IG51bWJlcjtcbiAgICBiYWNrZ3JvdW5kPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJhY2tncm91bmRfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9hY3RpdmU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9kaXNhYmxlPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJvcmRlcj86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYm9yZGVyX2FjdGl2ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfZGlzYWJsZT86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcbiAgcm9vdENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblNpemUge1xuICBpY29uOiB7XG4gICAgbGFyZ2U6IHN0cmluZztcbiAgICBtZWRpdW06IHN0cmluZztcbiAgICBzbWFsbDogc3RyaW5nO1xuICAgIHNtYWxsZXI6IHN0cmluZztcbiAgfTtcbiAgbGFyZ2U6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBtZWRpdW06IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBzbWFsbDoge1xuICAgIGZvbnRfc2l6ZTogc3RyaW5nO1xuICAgIGxpbmVfaGVpZ2h0OiBzdHJpbmc7XG4gIH07XG4gIHNtYWxsZXI6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xufVxuIl19
@@ -0,0 +1,331 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Injectable, computed, effect, signal } from '@angular/core';
3
+ import { colorStepContrastFromOrigin, get } from '@libs-ui/utils';
4
+ import { configButtonColor, configButtonStatus, configButtonTab, configHeading, configLinkButton, fontConfig, sizeButtonConfig, styleButtonTab, weights } from './config-project-data';
5
+ import * as i0 from "@angular/core";
6
+ export class LibsUiConfigProjectService {
7
+ themeColor = signal('#226ff5');
8
+ borderColor = signal('#e6e7ea');
9
+ textErrorColor = signal('#ff5454');
10
+ iconHoverDangerColor = signal('#f15767');
11
+ borderErrorColor = signal('#ee2d41');
12
+ backgroundDisableColor = signal('#f8f9fa');
13
+ textReadonlyColor = signal('#071631');
14
+ textDisableColor = signal('#9ca2ad');
15
+ backgroundReadonlyColor = signal('#f8f9fa');
16
+ backgroundUserSelection = signal('#00000040');
17
+ backgroundList = signal('#f8f9fa');
18
+ backgroundListHover = signal('#f8f9fa');
19
+ backgroundListHoverDanger = signal('#fef5f6');
20
+ configFont = signal(fontConfig);
21
+ configHead = signal(configHeading);
22
+ functionGetConfigButtonIncludes = signal(() => {
23
+ return {};
24
+ });
25
+ configButton = computed(() => {
26
+ return { ...configButtonColor(this.themeColor()), ...configLinkButton(this.themeColor()), ...this.functionGetConfigButtonIncludes()(this.themeColor()) };
27
+ });
28
+ configButtonSize = signal(sizeButtonConfig());
29
+ configButtonStatus = signal(configButtonStatus());
30
+ configButtonTab = signal(configButtonTab());
31
+ styleClassGlobalEl = document.createElement('style');
32
+ styleClassHeadEl = document.createElement('style');
33
+ styleClassButtonTabEl = document.createElement('style');
34
+ constructor() {
35
+ effect(() => {
36
+ this.setThemeColor();
37
+ });
38
+ effect(() => {
39
+ this.setupFontFamily();
40
+ });
41
+ effect(() => {
42
+ this.setupFontHead();
43
+ });
44
+ effect(() => {
45
+ this.setupButtonTab();
46
+ });
47
+ effect(() => {
48
+ this.setupButtonSize();
49
+ });
50
+ this.configString();
51
+ this.setClassGlobal();
52
+ }
53
+ set ThemeColor(color) {
54
+ this.themeColor.set(color || '#226ff5');
55
+ }
56
+ set BorderColor(color) {
57
+ this.borderColor.set(color || '#e6e7ea');
58
+ }
59
+ set BorderErrorColor(color) {
60
+ this.borderErrorColor.set(color || '#ee2d41');
61
+ }
62
+ set TextErrorColor(color) {
63
+ this.textErrorColor.set(color || '#ff5454');
64
+ }
65
+ set IconHoverDangerColor(color) {
66
+ this.iconHoverDangerColor.set(color || '#ff5454');
67
+ }
68
+ set BackgroundReadonlyColor(color) {
69
+ this.backgroundReadonlyColor.set(color || '#f15767');
70
+ }
71
+ set TextReadonlyColor(color) {
72
+ this.textReadonlyColor.set(color || '#071631');
73
+ }
74
+ set BackgroundUserSelection(color) {
75
+ this.backgroundUserSelection.set(color || '#00000040');
76
+ }
77
+ set BackgroundList(color) {
78
+ this.backgroundList.set(color || '#f8f9fa');
79
+ }
80
+ set BackgroundListHover(color) {
81
+ this.backgroundListHover.set(color || '#f8f9fa');
82
+ }
83
+ set BackgroundListHoverDanger(color) {
84
+ this.backgroundListHover.set(color || '#fef5f6');
85
+ }
86
+ set BackgroundDisableColor(color) {
87
+ this.backgroundDisableColor.set(color || '#f8f9fa');
88
+ }
89
+ set TextDisableColor(color) {
90
+ this.textDisableColor.set(color || '#9ca2ad');
91
+ }
92
+ set ConfigFont(configFont) {
93
+ this.configFont.set({ ...configFont });
94
+ }
95
+ set ConfigFontHead(configHead) {
96
+ this.configHead.set({ ...configHead });
97
+ }
98
+ get ConfigButton() {
99
+ return this.configButton;
100
+ }
101
+ set FunctionGetConfigButtonIncludes(functionGetConfigButtonIncludes) {
102
+ this.functionGetConfigButtonIncludes.set(functionGetConfigButtonIncludes);
103
+ }
104
+ get ConfigButtonStatus() {
105
+ return this.configButtonStatus();
106
+ }
107
+ set ConfigButtonStatus(config) {
108
+ this.configButtonStatus.set(config);
109
+ }
110
+ set ConfigButtonTab(config) {
111
+ this.configButtonTab.set(config);
112
+ }
113
+ // public hàm để sử dụng cho component input sử dụng tagInput = frameArea;
114
+ setupFontFamily(currentDoc) {
115
+ try {
116
+ currentDoc = currentDoc || document;
117
+ const doc = currentDoc.documentElement;
118
+ doc.style.setProperty('--libs-ui-font-family-name', `${this.configFont().name},Arial, Helvetica, sans-serif`);
119
+ Object.keys(weights).forEach((key) => {
120
+ if (!get(this.configFont(), key)) {
121
+ return;
122
+ }
123
+ const fontFace = new FontFace(this.configFont().name, `url(${get(this.configFont(), key)})`, { weight: get(weights, key) });
124
+ fontFace.load().then((loadedFont) => {
125
+ if (currentDoc && 'add' in currentDoc.fonts) {
126
+ currentDoc.fonts.add(loadedFont);
127
+ }
128
+ });
129
+ });
130
+ }
131
+ catch (error) {
132
+ console.log(error);
133
+ }
134
+ }
135
+ setupFontHead() {
136
+ const configHeadsData = this.configHead();
137
+ let styles = '';
138
+ Object.keys(configHeadsData).forEach((keyConfig) => {
139
+ let style = `font-family:var(--libs-ui-font-family-name,'Arial');`;
140
+ const config = get(configHeadsData, keyConfig);
141
+ Object.keys(config).forEach((key) => {
142
+ style = `${style}${key}:${get(config, key)};`;
143
+ });
144
+ styles = `${styles} .libs-ui-font-${keyConfig}{${style}}.libs-ui-font-${keyConfig}i{${style.replace(/;/g, ' !important;')}}`;
145
+ });
146
+ styles = `*{box-sizing: border-box !important;}${styles}`;
147
+ this.styleClassHeadEl.innerHTML = styles;
148
+ document.head.append(this.styleClassHeadEl);
149
+ }
150
+ setupButtonSize() {
151
+ const configButtonSize = this.configButtonSize();
152
+ const doc = document.documentElement;
153
+ Object.keys(configButtonSize).forEach((keySize) => {
154
+ const config = get(configButtonSize, keySize);
155
+ Object.keys(config).forEach((keyType) => {
156
+ const name = `--libs-ui-button-size-${keySize}-${keyType.replace(/[_]/g, '-')}`;
157
+ doc.style.setProperty(name, get(config, keyType));
158
+ });
159
+ });
160
+ }
161
+ setupButtonTab() {
162
+ const configButtonTab = this.configButtonTab();
163
+ let styles = '';
164
+ Object.keys(configButtonTab).forEach((key) => {
165
+ const config = get(configButtonTab, key);
166
+ const style = config ? styleButtonTab(key, config) : '';
167
+ styles = `${styles}${style}`;
168
+ });
169
+ this.styleClassButtonTabEl.innerHTML = styles;
170
+ document.head.append(this.styleClassButtonTabEl);
171
+ }
172
+ setThemeColor() {
173
+ const doc = document.documentElement;
174
+ [
175
+ {
176
+ group: 'libs-ui',
177
+ type: 'color',
178
+ property: {
179
+ default: colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
180
+ light_1: colorStepContrastFromOrigin(this.themeColor(), 20)?.light,
181
+ light_2: colorStepContrastFromOrigin(this.themeColor(), 90)?.light,
182
+ light_3: colorStepContrastFromOrigin(this.themeColor(), 95)?.light,
183
+ light_4: colorStepContrastFromOrigin(this.themeColor(), 50)?.light,
184
+ light_5: colorStepContrastFromOrigin(this.themeColor(), 70)?.light,
185
+ light_6: colorStepContrastFromOrigin(this.themeColor(), 80)?.light,
186
+ dark: colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
187
+ background_list: this.backgroundList(),
188
+ background_list_hover: this.backgroundListHover(),
189
+ background_list_hover_danger: this.backgroundListHoverDanger(),
190
+ background_selection: this.backgroundUserSelection(),
191
+ border: this.borderColor(),
192
+ border_error: this.borderErrorColor(),
193
+ text_error: this.textErrorColor(),
194
+ icon_hover_danger: this.iconHoverDangerColor(),
195
+ background_readonly: this.backgroundReadonlyColor(),
196
+ text_readonly: this.textReadonlyColor(),
197
+ background_disable: this.backgroundDisableColor(),
198
+ text_disable: this.textDisableColor(),
199
+ gradient_from: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin(this.themeColor(), 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
200
+ gradient_to: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin('#5B2EBB', 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
201
+ },
202
+ },
203
+ ].forEach((item) => {
204
+ const name = `--${item.group.replace(/[_]/g, '-')}-${item.type.replace(/[_]/g, '-')}`;
205
+ Object.keys(item.property).forEach((key) => doc.style.setProperty(`${name}-${key.replace(/[_]/g, '-')}`, item.property[key]));
206
+ });
207
+ }
208
+ colorStepContrastFromOrigin(step, color) {
209
+ return colorStepContrastFromOrigin(color || this.themeColor(), step || 0);
210
+ }
211
+ setClassGlobal() {
212
+ this.styleClassGlobalEl.innerHTML = `
213
+ .libs-ui-border-primary-general{border: 1px solid var(--libs-ui-color-default, #226FF5);}
214
+ .libs-ui-border-primary-focus-general{border: 1px solid var(--libs-ui-color-light-1, #4e8cf7);}
215
+ .libs-ui-border-primary-hover-general{border: 1px solid var(--libs-ui-color-light-3, #f4f8ff);}
216
+ .libs-ui-border-general{ border: 1px solid var(--libs-ui-color-border, #e6e7ea);}
217
+ .libs-ui-border-top-general{border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
218
+ .libs-ui-border-right-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea);}
219
+ .libs-ui-border-bottom-general{border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
220
+ .libs-ui-border-dashed-general{border: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
221
+ .libs-ui-border-top-dashed-general{border-top: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
222
+ .libs-ui-border-left-dashed-general{border-left: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
223
+ .libs-ui-border-right-dashed-general{border-right: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
224
+ .libs-ui-border-bottom-dashed-general{border-bottom: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
225
+ .libs-ui-border-left-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea);}
226
+ .libs-ui-border-x-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-right: 1px solid var(--libs-ui-color-border, #e6e7ea);}
227
+ .libs-ui-border-y-general{border-top: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
228
+ .libs-ui-border-left-top-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
229
+ .libs-ui-border-left-bottom-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
230
+ .libs-ui-border-right-top-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea); border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
231
+ .libs-ui-border-right-bottom-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
232
+ .libs-ui-border-error-general{border: 1px solid var(--libs-ui-color-border-error, #ee2d41) !important;}
233
+ .libs-ui-bg-list {background-color: var(--libs-ui-background-list, #f8f9fa);}
234
+ .libs-ui-bg-list-hover:hover {background-color: var(--libs-ui-background-list-hover, #f8f9fa);}
235
+ .libs-ui-bg-list-active {background-color: var(--libs-ui-color-light-3, #f4f8ff);}
236
+ .libs-ui-bg-list-hover-active:hover {background-color: #f8f9fa;}
237
+ .libs-ui-bg-list-hover-active:active {background-color: var(--libs-ui-color-light-3, #f4f8ff);}
238
+ .libs-ui-bg-list-hover-danger:hover {background-color: var(--libs-ui-background-list-hover-danger, #fef5f6); color: var(--libs-ui-color-icon-hover-danger, #f15767) !important; [class*="libs-ui-icon-"],[class*="icon-font-3rd"]{&:before,&:after{color: var(--libs-ui-color-icon-hover-danger, #f15767) !important;}}}
239
+ .libs-ui-text-error {color: var(--libs-ui-color-text-error, #ff5454) !important;}
240
+ .libs-ui-text-error::before {color: var(--libs-ui-color-text-error, #ff5454) !important;}
241
+ .libs-ui-disable {cursor: not-allowed !important;text-decoration: none;color:var(--libs-ui-color-text-disable, #cdd0d6) !important;}
242
+ .libs-ui-disable::before {color:var(--libs-ui-color-text-disable, #9ca2ad) !important;}
243
+ .libs-ui-disable-background{background: var(--libs-ui-color-background-disable, #f8f9fa) !important;}
244
+ .libs-ui-disable-active {color:var(--libs-ui-color-light-4,#91b7fa) !important;}
245
+ .libs-ui-disable-active::before {color:var(--libs-ui-color-light-4,#91b7fa) !important;}
246
+ .libs-ui-disable-active-background{background: var(--libs-ui-color-light-4,#91b7fa) !important;}
247
+ .libs-ui-readonly {cursor: not-allowed !important;color:var(--libs-ui-color-text-readonly, #071631) !important;}
248
+ .libs-ui-readonly::before {color:var(--libs-ui-color-text-readonly, #071631) !important;}
249
+ .libs-ui-readonly-background{background: var(--libs-ui-color-background-readonly, #f8f9fa) !important;}
250
+ .libs-ui-icon-hover-danger:hover {color: var(--libs-ui-color-icon-hover-danger, #f15767) !important; [class*="libs-ui-icon-"],[class*="icon-font-3rd"]{&:before,&:after{color: var(--libs-ui-color-icon-hover-danger, #f15767) !important;}}}
251
+ .break-word{word-break: break-word !important;}
252
+ .libs-ui-shadow {box-shadow: 0 2px 10px 1px rgba(51, 51, 51, 0.1);}
253
+ .libs-ui-shadow-md {box-shadow: 0 4px 8px 0 rgba(51, 51, 51, 0.1);}
254
+ .libs-ui-shadow-lg {box-shadow: 0 15px 30px 0 rgba(51, 51, 51, 0.1);}
255
+ .libs-ui-shadow-top {box-shadow: 0 -5px 5px -5px rgba(51, 51, 51, 0.1);}
256
+ .libs-ui-shadow-right {box-shadow: -5px 0 5px -5px rgba(51, 51, 51, 0.1);}
257
+ .libs-ui-shadow-bottom {box-shadow: 0 5px 5px -5px rgba(51, 51, 51, 0.1);}
258
+ .libs-ui-shadow-left {box-shadow: 5px 0 5px -5px rgba(51, 51, 51, 0.1);}
259
+ .libs-ui-shadow-sm {box-shadow: 0 1px 2px 0 rgba(51, 51, 51, 0.1);}
260
+ .libs-ui-shadow-popup {box-shadow: -2px 0 4px 0 rgba(51, 51, 51, 0.1);}
261
+ .libs-ui-shadow-none {box-shadow: none !important;}
262
+ .libs-ui-shadow-small {box-shadow: 0px 1px 2px 0px rgba(0,20,51,.04), 0px 1px 1px 0px rgba(0,20,51,.02);}
263
+ .libs-ui-shadow-medium {box-shadow: 0px 4px 8px 0px rgba(0, 20, 51, 0.04), 0px 1px 1px 0px rgba(0, 20, 51, 0.02);}
264
+ .libs-ui-shadow-large {box-shadow: 0px 4px 16px 0px rgba(0,20,51,.1), 0px 1px 1px 0px rgba(0,20,51,.02);}
265
+ .libs-ui-shadow-extra-large {box-shadow: 0px 8px 56px 0px rgba(0,20,51,.05), 0px 1px 1px 0px rgba(0,20,51,.02);}
266
+ ::-moz-selection {background: var(--libs-ui-color-background-selection, #00000040) !important;}
267
+ ::selection {background: var(--libs-ui-color-background-selection, #00000040) !important;}
268
+ `.replace(/\n+/g, '');
269
+ document.head.append(this.styleClassGlobalEl);
270
+ }
271
+ configString() {
272
+ const prototype = String.prototype;
273
+ prototype.replaceAt = function (index, replacement) {
274
+ const values = this.split('');
275
+ values[index] = replacement;
276
+ return values.join('');
277
+ };
278
+ prototype.replaceAll = function (index, separator, replacement) {
279
+ const regex = new RegExp(separator, 'g');
280
+ return `${this.substr(0, index)}${this.substr(index + 1 + (replacement?.length || 0)).replace(regex, replacement)}`;
281
+ };
282
+ prototype.occurrencesByCharacter = function (character) {
283
+ const values = this.split('');
284
+ if (!values || !values.length) {
285
+ return 0;
286
+ }
287
+ return values.filter((char) => char === character).length;
288
+ };
289
+ prototype.indexesOfCharacter = function (character) {
290
+ const values = this.split('');
291
+ const indexes = [];
292
+ if (!values || !values.length) {
293
+ return indexes;
294
+ }
295
+ for (const indexValue in values) {
296
+ if (values[indexValue] === character) {
297
+ indexes.push(+indexValue);
298
+ }
299
+ }
300
+ return indexes;
301
+ };
302
+ prototype.indexesByString = function (str) {
303
+ const values = this;
304
+ const indexes = [];
305
+ if (!values || !values.length || !str || !str.length || values.length < str.length) {
306
+ return indexes;
307
+ }
308
+ for (const indexValue in values) {
309
+ if (values[indexValue] !== str[0] || +indexValue + str.length > values.length) {
310
+ continue;
311
+ }
312
+ for (const index in str.split('')) {
313
+ if (values[+indexValue + +index] !== str[index]) {
314
+ break;
315
+ }
316
+ }
317
+ indexes.push(+indexValue);
318
+ }
319
+ return indexes;
320
+ };
321
+ }
322
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
323
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, providedIn: 'root' });
324
+ }
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, decorators: [{
326
+ type: Injectable,
327
+ args: [{
328
+ providedIn: 'root',
329
+ }]
330
+ }], ctorParameters: () => [] });
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3ZMLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsVUFBVSxHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDM0Msb0JBQW9CLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3QyxzQkFBc0IsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3Qyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsTUFBTSxDQUFTLFdBQVcsQ0FBQyxDQUFDO0lBQ3RE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QUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5RSxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksTUFBTSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzt3R0EvV1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF0aE9mIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4sIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGNvbmZpZ0J1dHRvbkNvbG9yLCBjb25maWdCdXR0b25TdGF0dXMsIGNvbmZpZ0J1dHRvblRhYiwgY29uZmlnSGVhZGluZywgY29uZmlnTGlua0J1dHRvbiwgZm9udENvbmZpZywgc2l6ZUJ1dHRvbkNvbmZpZywgc3R5bGVCdXR0b25UYWIsIHdlaWdodHMgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuaW1wb3J0IHsgSUNvbG9yQnV0dG9uLCBJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZSwgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cywgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiwgSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHksIElMaWJzVWlDb25maWdGb250SGVhZGluZywgSUxpYnNVaUNvbmZpZ0ZvbnRXZWlnaHQgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lQ29sb3IgPSBzaWduYWw8c3RyaW5nPignIzIyNmZmNScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyNlNmU3ZWEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RXJyb3JDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZmY1NDU0Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkhvdmVyRGFuZ2VyQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2YxNTc2NycpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2VlMmQ0MScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmREaXNhYmxlQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRSZWFkb25seUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMwNzE2MzEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RGlzYWJsZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyM5Y2EyYWQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kUmVhZG9ubHlDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZjhmOWZhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24gPSBzaWduYWw8c3RyaW5nPignIzAwMDAwMDQwJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZExpc3QgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXIgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIgPSBzaWduYWw8c3RyaW5nPignI2ZlZjVmNicpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZvbnQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KGZvbnRDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0hlYWQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPihjb25maWdIZWFkaW5nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzID0gc2lnbmFsPChyb290Q29sb3I6IHN0cmluZykgPT4geyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uID0gY29tcHV0ZWQ8eyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLmNvbmZpZ0J1dHRvbkNvbG9yKHRoaXMudGhlbWVDb2xvcigpKSwgLi4uY29uZmlnTGlua0J1dHRvbih0aGlzLnRoZW1lQ29sb3IoKSksIC4uLnRoaXMuZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlcygpKHRoaXMudGhlbWVDb2xvcigpKSB9O1xuICB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b25TaXplID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25TaXplPihzaXplQnV0dG9uQ29uZmlnKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0J1dHRvblN0YXR1cyA9IHNpZ25hbDxJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzPihjb25maWdCdXR0b25TdGF0dXMoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uVGFiID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25UYWI+KGNvbmZpZ0J1dHRvblRhYigpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzR2xvYmFsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NIZWFkRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NCdXR0b25UYWJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwRm9udEZhbWlseSgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBGb250SGVhZCgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBCdXR0b25UYWIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwQnV0dG9uU2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWdTdHJpbmcoKTtcbiAgICB0aGlzLnNldENsYXNzR2xvYmFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IFRoZW1lQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGhlbWVDb2xvci5zZXQoY29sb3IgfHwgJyMyMjZmZjUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQm9yZGVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZTZlN2VhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJvcmRlckVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyRXJyb3JDb2xvci5zZXQoY29sb3IgfHwgJyNlZTJkNDEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dEVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dEVycm9yQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZmY1NDU0Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEljb25Ib3ZlckRhbmdlckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmljb25Ib3ZlckRhbmdlckNvbG9yLnNldChjb2xvciB8fCAnI2ZmNTQ1NCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kUmVhZG9ubHlDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kUmVhZG9ubHlDb2xvci5zZXQoY29sb3IgfHwgJyNmMTU3NjcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dFJlYWRvbmx5Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dFJlYWRvbmx5Q29sb3Iuc2V0KGNvbG9yIHx8ICcjMDcxNjMxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRVc2VyU2VsZWN0aW9uKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRVc2VyU2VsZWN0aW9uLnNldChjb2xvciB8fCAnIzAwMDAwMDQwJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0KGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0LnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kTGlzdEhvdmVyKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0SG92ZXIuc2V0KGNvbG9yIHx8ICcjZjhmOWZhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2dyb3VuZExpc3RIb3Zlci5zZXQoY29sb3IgfHwgJyNmZWY1ZjYnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQmFja2dyb3VuZERpc2FibGVDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kRGlzYWJsZUNvbG9yLnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBUZXh0RGlzYWJsZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHREaXNhYmxlQ29sb3Iuc2V0KGNvbG9yIHx8ICcjOWNhMmFkJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0ZvbnQoY29uZmlnRm9udDogSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHkpIHtcbiAgICB0aGlzLmNvbmZpZ0ZvbnQuc2V0KHsgLi4uY29uZmlnRm9udCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQ29uZmlnRm9udEhlYWQoY29uZmlnSGVhZDogSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nKSB7XG4gICAgdGhpcy5jb25maWdIZWFkLnNldCh7IC4uLmNvbmZpZ0hlYWQgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbmZpZ0J1dHRvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IEZ1bmN0aW9uR2V0Q29uZmlnQnV0dG9uSW5jbHVkZXMoZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlczogKHJvb3RDb2xvcjogc3RyaW5nKSA9PiB7IFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvbiB9KSB7XG4gICAgdGhpcy5mdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzLnNldChmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvblN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdCdXR0b25TdGF0dXMoY29uZmlnOiBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgdGhpcy5jb25maWdCdXR0b25TdGF0dXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0J1dHRvblRhYihjb25maWc6IElMaWJzVWlDb25maWdCdXR0b25UYWIpIHtcbiAgICB0aGlzLmNvbmZpZ0J1dHRvblRhYi5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBow6BtIMSR4buDIHPhu60gZOG7pW5nIGNobyBjb21wb25lbnQgaW5wdXQgc+G7rSBk4bulbmcgdGFnSW5wdXQgPSBmcmFtZUFyZWE7XG4gIHB1YmxpYyBzZXR1cEZvbnRGYW1pbHkoY3VycmVudERvYz86IERvY3VtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGN1cnJlbnREb2MgPSBjdXJyZW50RG9jIHx8IGRvY3VtZW50O1xuICAgICAgY29uc3QgZG9jID0gY3VycmVudERvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUnLCBgJHt0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lfSxBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmYCk7XG4gICAgICBPYmplY3Qua2V5cyh3ZWlnaHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKCFnZXQodGhpcy5jb25maWdGb250KCksIGtleSBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb250RmFjZSA9IG5ldyBGb250RmFjZSh0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lLCBgdXJsKCR7Z2V0KHRoaXMuY29uZmlnRm9udCgpLCBrZXkgYXMgUGF0aE9mPElMaWJzVWlDb25maWdGb250RmFtaWx5Pil9KWAsIHsgd2VpZ2h0OiBnZXQod2VpZ2h0cywga2V5IGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnRm9udFdlaWdodD4pIH0pO1xuICAgICAgICBmb250RmFjZS5sb2FkKCkudGhlbigobG9hZGVkRm9udCkgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50RG9jICYmICdhZGQnIGluIGN1cnJlbnREb2MuZm9udHMpIHtcbiAgICAgICAgICAgIChjdXJyZW50RG9jLmZvbnRzIGFzIGFueSkuYWRkKGxvYWRlZEZvbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb250SGVhZCgpIHtcbiAgICBjb25zdCBjb25maWdIZWFkc0RhdGEgPSB0aGlzLmNvbmZpZ0hlYWQoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG4gICAgT2JqZWN0LmtleXMoY29uZmlnSGVhZHNEYXRhKS5mb3JFYWNoKChrZXlDb25maWcpID0+IHtcbiAgICAgIGxldCBzdHlsZSA9IGBmb250LWZhbWlseTp2YXIoLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUsJ0FyaWFsJyk7YDtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdIZWFkc0RhdGEsIGtleUNvbmZpZyBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPik7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBzdHlsZSA9IGAke3N0eWxlfSR7a2V5fToke2dldChjb25maWcsIGtleSl9O2A7XG4gICAgICB9KTtcbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30gLmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ317JHtzdHlsZX19LmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ31peyR7c3R5bGUucmVwbGFjZSgvOy9nLCAnICFpbXBvcnRhbnQ7Jyl9fWA7XG4gICAgfSk7XG5cbiAgICBzdHlsZXMgPSBgKntib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7fSR7c3R5bGVzfWA7XG5cbiAgICB0aGlzLnN0eWxlQ2xhc3NIZWFkRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0hlYWRFbCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQnV0dG9uU2l6ZSgpIHtcbiAgICBjb25zdCBjb25maWdCdXR0b25TaXplID0gdGhpcy5jb25maWdCdXR0b25TaXplKCk7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIE9iamVjdC5rZXlzKGNvbmZpZ0J1dHRvblNpemUpLmZvckVhY2goKGtleVNpemUpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdCdXR0b25TaXplLCBrZXlTaXplIGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZT4pO1xuICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXlUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgLS1saWJzLXVpLWJ1dHRvbi1zaXplLSR7a2V5U2l6ZX0tJHtrZXlUeXBlLnJlcGxhY2UoL1tfXS9nLCAnLScpfWA7XG4gICAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCBnZXQoY29uZmlnLCBrZXlUeXBlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBCdXR0b25UYWIoKSB7XG4gICAgY29uc3QgY29uZmlnQnV0dG9uVGFiID0gdGhpcy5jb25maWdCdXR0b25UYWIoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdCdXR0b25UYWIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0KGNvbmZpZ0J1dHRvblRhYiwga2V5KTtcbiAgICAgIGNvbnN0IHN0eWxlID0gY29uZmlnID8gc3R5bGVCdXR0b25UYWIoa2V5LCBjb25maWcpIDogJyc7XG5cbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30ke3N0eWxlfWA7XG4gICAgfSk7XG4gICAgdGhpcy5zdHlsZUNsYXNzQnV0dG9uVGFiRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0J1dHRvblRhYkVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGhlbWVDb2xvcigpIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgW1xuICAgICAge1xuICAgICAgICBncm91cDogJ2xpYnMtdWknLFxuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgIGRlZmF1bHQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzE6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5saWdodCxcbiAgICAgICAgICBsaWdodF8yOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDkwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfMzogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA5NSk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgNTApPy5saWdodCxcbiAgICAgICAgICBsaWdodF81OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDcwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfNjogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA4MCk/LmxpZ2h0LFxuICAgICAgICAgIGRhcms6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5kYXJrLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdDogdGhpcy5iYWNrZ3JvdW5kTGlzdCgpLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdF9ob3ZlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9saXN0X2hvdmVyX2RhbmdlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyRGFuZ2VyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9zZWxlY3Rpb246IHRoaXMuYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24oKSxcbiAgICAgICAgICBib3JkZXI6IHRoaXMuYm9yZGVyQ29sb3IoKSxcbiAgICAgICAgICBib3JkZXJfZXJyb3I6IHRoaXMuYm9yZGVyRXJyb3JDb2xvcigpLFxuICAgICAgICAgIHRleHRfZXJyb3I6IHRoaXMudGV4dEVycm9yQ29sb3IoKSxcbiAgICAgICAgICBpY29uX2hvdmVyX2RhbmdlcjogdGhpcy5pY29uSG92ZXJEYW5nZXJDb2xvcigpLFxuICAgICAgICAgIGJhY2tncm91bmRfcmVhZG9ubHk6IHRoaXMuYmFja2dyb3VuZFJlYWRvbmx5Q29sb3IoKSxcbiAgICAgICAgICB0ZXh0X3JlYWRvbmx5OiB0aGlzLnRleHRSZWFkb25seUNvbG9yKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9kaXNhYmxlOiB0aGlzLmJhY2tncm91bmREaXNhYmxlQ29sb3IoKSxcbiAgICAgICAgICB0ZXh0X2Rpc2FibGU6IHRoaXMudGV4dERpc2FibGVDb2xvcigpLFxuICAgICAgICAgIGdyYWRpZW50X2Zyb206IHRoaXMudGhlbWVDb2xvcigpLnRvTG9jYWxlVXBwZXJDYXNlKCkgPT09ICcjMjI2RkY1JyA/IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMTApPy5saWdodCA6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGdyYWRpZW50X3RvOiB0aGlzLnRoZW1lQ29sb3IoKS50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSAnIzIyNkZGNScgPyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oJyM1QjJFQkInLCAxMCk/LmxpZ2h0IDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmRhcmssXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGAtLSR7aXRlbS5ncm91cC5yZXBsYWNlKC9bX10vZywgJy0nKX0tJHtpdGVtLnR5cGUucmVwbGFjZSgvW19dL2csICctJyl9YDtcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydHkpLmZvckVhY2goKGtleSkgPT4gZG9jLnN0eWxlLnNldFByb3BlcnR5KGAke25hbWV9LSR7a2V5LnJlcGxhY2UoL1tfXS9nLCAnLScpfWAsIChpdGVtLnByb3BlcnR5IGFzIGFueSlba2V5XSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihzdGVwOiBudW1iZXIsIGNvbG9yPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihjb2xvciB8fCB0aGlzLnRoZW1lQ29sb3IoKSwgc3RlcCB8fCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NHbG9iYWwoKSB7XG4gICAgdGhpcy5zdHlsZUNsYXNzR2xvYmFsRWwuaW5uZXJIVE1MID0gYFxuICAgIC5saWJzLXVpLWJvcmRlci1wcmltYXJ5LWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0LCAjMjI2RkY1KTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZm9jdXMtZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEsICM0ZThjZjcpO31cbiAgICAubGlicy11aS1ib3JkZXItcHJpbWFyeS1ob3Zlci1nZW5lcmFse2JvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJvcmRlci1nZW5lcmFseyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1ib3R0b20tZ2VuZXJhbHtib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItZGFzaGVkLWdlbmVyYWx7Ym9yZGVyOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXRvcC1kYXNoZWQtZ2VuZXJhbHtib3JkZXItdG9wOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWJvdHRvbS1kYXNoZWQtZ2VuZXJhbHtib3JkZXItYm90dG9tOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXgtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXktZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtdG9wLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1ib3R0b20tZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC10b3AtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtYm90dG9tLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWVycm9yLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXItZXJyb3IsICNlZTJkNDEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWJnLWxpc3Qge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktYmFja2dyb3VuZC1saXN0LCAjZjhmOWZhKTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlcjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlicy11aS1iYWNrZ3JvdW5kLWxpc3QtaG92ZXIsICNmOGY5ZmEpO31cbiAgICAubGlicy11aS1iZy1saXN0LWFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyLWFjdGl2ZTphY3RpdmUge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItZGFuZ2VyOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saWJzLXVpLWJhY2tncm91bmQtbGlzdC1ob3Zlci1kYW5nZXIsICNmZWY1ZjYpOyBjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAubGlicy11aS10ZXh0LWVycm9yIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWVycm9yLCAjZmY1NDU0KSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS10ZXh0LWVycm9yOjpiZWZvcmUge2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZXJyb3IsICNmZjU0NTQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICNjZGQwZDYpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGU6OmJlZm9yZSB7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICM5Y2EyYWQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtZGlzYWJsZSwgI2Y4ZjlmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtNCwjOTFiN2ZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHkge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtcmVhZG9ubHksICMwNzE2MzEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXJlYWRvbmx5OjpiZWZvcmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItdGV4dC1yZWFkb25seSwgIzA3MTYzMSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHktYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtcmVhZG9ubHksICNmOGY5ZmEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWljb24taG92ZXItZGFuZ2VyOmhvdmVyIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAuYnJlYWstd29yZHt3b3JkLWJyZWFrOiBicmVhay13b3JkICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdyB7Ym94LXNoYWRvdzogMCAycHggMTBweCAxcHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctbWQge2JveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWxnIHtib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXRvcCB7Ym94LXNoYWRvdzogMCAtNXB4IDVweCAtNXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXJpZ2h0IHtib3gtc2hhZG93OiAtNXB4IDAgNXB4IC01cHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctYm90dG9tIHtib3gtc2hhZG93OiAwIDVweCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sZWZ0IHtib3gtc2hhZG93OiA1cHggMCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbSB7Ym94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctcG9wdXAge2JveC1zaGFkb3c6IC0ycHggMCA0cHggMCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1ub25lIHtib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbWFsbCB7Ym94LXNoYWRvdzogMHB4IDFweCAycHggMHB4IHJnYmEoMCwyMCw1MSwuMDQpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1tZWRpdW0ge2JveC1zaGFkb3c6IDBweCA0cHggOHB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wNCksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDRweCAxNnB4IDBweCByZ2JhKDAsMjAsNTEsLjEpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1leHRyYS1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDhweCA1NnB4IDBweCByZ2JhKDAsMjAsNTEsLjA1KSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwyMCw1MSwuMDIpO31cbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIDo6c2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIGAucmVwbGFjZSgvXFxuKy9nLCAnJyk7XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZCh0aGlzLnN0eWxlQ2xhc3NHbG9iYWxFbCk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ1N0cmluZygpIHtcbiAgICBjb25zdCBwcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlIGFzIGFueTtcbiAgICBwcm90b3R5cGUucmVwbGFjZUF0ID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc3BsaXQoJycpO1xuXG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuam9pbignJyk7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5yZXBsYWNlQWxsID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHNlcGFyYXRvcjogc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLCAnZycpO1xuXG4gICAgICByZXR1cm4gYCR7dGhpcy5zdWJzdHIoMCwgaW5kZXgpfSR7dGhpcy5zdWJzdHIoaW5kZXggKyAxICsgKHJlcGxhY2VtZW50Py5sZW5ndGggfHwgMCkpLnJlcGxhY2UocmVnZXgsIHJlcGxhY2VtZW50KX1gO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUub2NjdXJyZW5jZXNCeUNoYXJhY3RlciA9IGZ1bmN0aW9uIChjaGFyYWN0ZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0KCcnKTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKChjaGFyOiBzdHJpbmcpID0+IGNoYXIgPT09IGNoYXJhY3RlcikubGVuZ3RoO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUuaW5kZXhlc09mQ2hhcmFjdGVyID0gZnVuY3Rpb24gKGNoYXJhY3Rlcjogc3RyaW5nKTogQXJyYXk8bnVtYmVyPiB7XG4gICAgICBjb25zdCB2YWx1ZXM6IEFycmF5PHN0cmluZz4gPSB0aGlzLnNwbGl0KCcnKTtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGluZGV4VmFsdWUgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaW5kZXhWYWx1ZV0gPT09IGNoYXJhY3Rlcikge1xuICAgICAgICAgIGluZGV4ZXMucHVzaCgraW5kZXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5pbmRleGVzQnlTdHJpbmcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMgYXMgYW55O1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCB8fCAhc3RyIHx8ICFzdHIubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBpbmRleFZhbHVlIGluIHZhbHVlcykge1xuICAgICAgICBpZiAodmFsdWVzW2luZGV4VmFsdWVdICE9PSBzdHJbMF0gfHwgK2luZGV4VmFsdWUgKyBzdHIubGVuZ3RoID4gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBzdHIuc3BsaXQoJycpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlc1sraW5kZXhWYWx1ZSArICtpbmRleF0gIT09IHN0cltpbmRleF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleGVzLnB1c2goK2luZGV4VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './config-project.service';
2
+ export * from './config-project.interface';
3
+ export * from './config-project-data';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2NvbmZpZy1wcm9qZWN0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXByb2plY3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1zZXJ2aWNlcy1jb25maWctcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2xpYnMtdWktc2VydmljZXMtY29uZmlnLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=