aizek-chatbot 1.0.16 → 1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,37 +1,1468 @@
1
- import { useRef, useState, useEffect } from "react";
2
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
- import ReactMarkdown from "react-markdown";
4
- import remarkGfm from "remark-gfm";
5
- import Anthropic from "@anthropic-ai/sdk";
6
- import { Client } from "@modelcontextprotocol/sdk/client";
7
- import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
8
- import "./index.css";
9
-
10
- // src/services/chat-widget-api.ts
11
- var API_BASE_URL = "https://api-alpha.aizek.ai";
12
- var fetchChatWidgetSettings = async (clientId) => {
13
- try {
14
- const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {
15
- method: "GET",
16
- headers: {
17
- "Content-Type": "application/json",
18
- },
19
- });
20
- if (!response.ok) {
21
- throw new Error(`HTTP error! status: ${response.status}`);
22
- }
23
- const data = await response.json();
24
- return data;
25
- } catch (error) {
26
- console.error("Error fetching chat widget settings:", error);
27
- throw error;
1
+ import { useRef, useState, useEffect } from 'react';
2
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
+ import ReactMarkdown from 'react-markdown';
4
+ import remarkGfm from 'remark-gfm';
5
+
6
+ // src/styles/index.module.scss
7
+ var css = `@charset "UTF-8";
8
+ .message-container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: 100%;
12
+ }
13
+ .message-container.user {
14
+ align-items: flex-end;
15
+ }
16
+ .message-container.assistant {
17
+ align-items: flex-start;
18
+ }
19
+
20
+ .message-bubble {
21
+ max-width: 80%;
22
+ padding: 12px 16px;
23
+ margin-bottom: 8px;
24
+ word-wrap: break-word;
25
+ line-height: 1.4;
26
+ font-size: 14px;
27
+ position: relative;
28
+ }
29
+ .message-bubble.user {
30
+ border-radius: 18px 18px 4px 18px;
31
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
32
+ color: #ffffff;
33
+ margin-left: auto;
34
+ margin-right: 0;
35
+ }
36
+ .message-bubble.assistant {
37
+ border-radius: 18px 18px 18px 4px;
38
+ background: #f8fafc;
39
+ color: #334155;
40
+ border: 1px solid #e2e8f0;
41
+ margin-left: 0;
42
+ margin-right: auto;
43
+ }
44
+ .message-bubble .message-typing-indicator {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ margin-left: 8px;
48
+ }
49
+
50
+ .message-time {
51
+ font-size: 11px;
52
+ opacity: 0.7;
53
+ margin-top: 4px;
54
+ }
55
+
56
+ .message-time.user {
57
+ text-align: right;
58
+ }
59
+
60
+ .message-time.assistant {
61
+ text-align: left;
62
+ }
63
+
64
+ .markdown-content {
65
+ line-height: 1.6;
66
+ word-break: break-word;
67
+ }
68
+ .markdown-content + .generative-ui-container {
69
+ margin-top: 16px;
70
+ }
71
+ .markdown-content p {
72
+ margin: 0 0 12px 0;
73
+ line-height: 1.6;
74
+ }
75
+ .markdown-content p:last-child {
76
+ margin-bottom: 0;
77
+ }
78
+ .markdown-content p:first-child {
79
+ margin-top: 0;
80
+ }
81
+ .markdown-content a {
82
+ color: #667eea;
83
+ text-decoration: none;
84
+ transition: all 0.15s ease;
85
+ font-weight: 500;
86
+ border-bottom: 1px solid transparent;
87
+ }
88
+ .markdown-content a:hover {
89
+ color: #764ba2;
90
+ border-bottom-color: #764ba2;
91
+ }
92
+ .markdown-content ul,
93
+ .markdown-content ol {
94
+ margin: 12px 0;
95
+ padding-left: 20px;
96
+ }
97
+ .markdown-content ul {
98
+ list-style: none;
99
+ padding-left: 0;
100
+ }
101
+ .markdown-content ol {
102
+ list-style: decimal;
103
+ }
104
+ .markdown-content li {
105
+ margin-bottom: 8px;
106
+ line-height: 1.6;
107
+ position: relative;
108
+ padding-left: 20px;
109
+ }
110
+ .markdown-content li:last-child {
111
+ margin-bottom: 0;
112
+ }
113
+ .markdown-content li::before {
114
+ content: "\u2022";
115
+ position: absolute;
116
+ left: 0;
117
+ color: #667eea;
118
+ font-weight: bold;
119
+ font-size: 16px;
120
+ }
121
+ .markdown-content li ul,
122
+ .markdown-content li ol {
123
+ margin-top: 4px;
124
+ margin-bottom: 4px;
125
+ }
126
+ .markdown-content ol li {
127
+ padding-left: 0;
128
+ }
129
+ .markdown-content ol li::before {
130
+ content: none;
131
+ }
132
+ .markdown-content code {
133
+ background: rgba(102, 126, 234, 0.1);
134
+ color: #764ba2;
135
+ padding: 2px 6px;
136
+ border-radius: 4px;
137
+ font-family: "Monaco", "Menlo", "Ubuntu Mono", "Courier New", monospace;
138
+ font-size: 0.9em;
139
+ border: 1px solid rgba(102, 126, 234, 0.2);
140
+ }
141
+ .markdown-content pre {
142
+ background: #f8fafc;
143
+ padding: 12px 16px;
144
+ border-radius: 8px;
145
+ overflow-x: auto;
146
+ margin: 12px 0;
147
+ border: 1px solid #e2e8f0;
148
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
149
+ }
150
+ .markdown-content pre code {
151
+ background: none;
152
+ padding: 0;
153
+ border: none;
154
+ color: #1e293b;
155
+ font-size: 12px;
156
+ line-height: 1.5;
157
+ }
158
+ .markdown-content strong,
159
+ .markdown-content b {
160
+ font-weight: 600;
161
+ color: inherit;
162
+ }
163
+ .markdown-content em,
164
+ .markdown-content i {
165
+ font-style: italic;
166
+ }
167
+ .markdown-content h1,
168
+ .markdown-content h2,
169
+ .markdown-content h3,
170
+ .markdown-content h4,
171
+ .markdown-content h5,
172
+ .markdown-content h6 {
173
+ margin: 16px 0 8px 0;
174
+ font-weight: 600;
175
+ line-height: 1.4;
176
+ color: inherit;
177
+ }
178
+ .markdown-content h1:first-child,
179
+ .markdown-content h2:first-child,
180
+ .markdown-content h3:first-child,
181
+ .markdown-content h4:first-child,
182
+ .markdown-content h5:first-child,
183
+ .markdown-content h6:first-child {
184
+ margin-top: 0;
185
+ }
186
+ .markdown-content h1 {
187
+ font-size: 18px;
188
+ border-bottom: 2px solid #e2e8f0;
189
+ padding-bottom: 8px;
190
+ }
191
+ .markdown-content h2 {
192
+ font-size: 16px;
193
+ }
194
+ .markdown-content h3 {
195
+ font-size: 15px;
196
+ }
197
+ .markdown-content h4,
198
+ .markdown-content h5,
199
+ .markdown-content h6 {
200
+ font-size: 14px;
201
+ }
202
+ .markdown-content blockquote {
203
+ border-left: 3px solid #667eea;
204
+ padding-left: 12px;
205
+ margin: 12px 0;
206
+ color: inherit;
207
+ opacity: 0.9;
208
+ font-style: italic;
209
+ background: rgba(102, 126, 234, 0.05);
210
+ padding: 8px 12px;
211
+ border-radius: 0 4px 4px 0;
212
+ }
213
+ .markdown-content blockquote p {
214
+ margin: 0;
215
+ }
216
+ .markdown-content hr {
217
+ border: none;
218
+ border-top: 1px solid #e2e8f0;
219
+ margin: 16px 0;
220
+ }
221
+ .markdown-content table {
222
+ border-collapse: collapse;
223
+ width: 100%;
224
+ margin: 12px 0;
225
+ font-size: 12px;
226
+ border-radius: 8px;
227
+ overflow: hidden;
228
+ border: 1px solid #e2e8f0;
229
+ }
230
+ .markdown-content th,
231
+ .markdown-content td {
232
+ padding: 10px 12px;
233
+ text-align: left;
234
+ border-bottom: 1px solid #e2e8f0;
235
+ }
236
+ .markdown-content th {
237
+ background: #f1f5f9;
238
+ font-weight: 600;
239
+ color: #1e293b;
240
+ border-bottom: 2px solid #cbd5e1;
241
+ }
242
+ .markdown-content tr:last-child td {
243
+ border-bottom: none;
244
+ }
245
+ .markdown-content tbody tr {
246
+ transition: background-color 0.15s ease;
247
+ }
248
+ .markdown-content tbody tr:hover {
249
+ background-color: rgba(102, 126, 234, 0.05);
250
+ }
251
+ .markdown-content img {
252
+ max-width: 100%;
253
+ height: auto;
254
+ border-radius: 8px;
255
+ margin: 8px 0;
256
+ }
257
+ .markdown-content input[type=checkbox] {
258
+ margin-right: 6px;
259
+ }
260
+
261
+ .message-bubble.user .markdown-content {
262
+ color: #ffffff;
263
+ }
264
+ .message-bubble.user .markdown-content a {
265
+ color: #ffffff;
266
+ border-bottom-color: rgba(255, 255, 255, 0.4);
267
+ font-weight: 600;
268
+ }
269
+ .message-bubble.user .markdown-content a:hover {
270
+ border-bottom-color: #ffffff;
271
+ }
272
+ .message-bubble.user .markdown-content li::before {
273
+ color: #ffffff;
274
+ }
275
+ .message-bubble.user .markdown-content code {
276
+ background: rgba(255, 255, 255, 0.2);
277
+ color: #ffffff;
278
+ border-color: rgba(255, 255, 255, 0.3);
279
+ }
280
+ .message-bubble.user .markdown-content pre {
281
+ background: rgba(255, 255, 255, 0.1);
282
+ border-color: rgba(255, 255, 255, 0.2);
283
+ }
284
+ .message-bubble.user .markdown-content pre code {
285
+ color: #ffffff;
286
+ }
287
+ .message-bubble.user .markdown-content h1 {
288
+ border-bottom-color: rgba(255, 255, 255, 0.3);
289
+ }
290
+ .message-bubble.user .markdown-content blockquote {
291
+ border-left-color: #ffffff;
292
+ background: rgba(255, 255, 255, 0.1);
293
+ color: #ffffff;
294
+ }
295
+ .message-bubble.user .markdown-content hr {
296
+ border-top-color: rgba(255, 255, 255, 0.3);
297
+ }
298
+ .message-bubble.user .markdown-content table {
299
+ border-color: rgba(255, 255, 255, 0.3);
300
+ }
301
+ .message-bubble.user .markdown-content th,
302
+ .message-bubble.user .markdown-content td {
303
+ border-bottom-color: rgba(255, 255, 255, 0.2);
304
+ }
305
+ .message-bubble.user .markdown-content th {
306
+ background: rgba(255, 255, 255, 0.15);
307
+ color: #ffffff;
308
+ border-bottom-color: rgba(255, 255, 255, 0.3);
309
+ }
310
+ .message-bubble.user .markdown-content tbody tr:hover {
311
+ background-color: rgba(255, 255, 255, 0.1);
312
+ }
313
+
314
+ .message-bubble.assistant .markdown-content {
315
+ color: #334155;
316
+ }
317
+ .message-bubble.assistant .markdown-content a {
318
+ color: #667eea;
319
+ }
320
+ .message-bubble.assistant .markdown-content a:hover {
321
+ color: #764ba2;
322
+ }
323
+ .message-bubble.assistant .markdown-content li::before {
324
+ color: #667eea;
325
+ }
326
+ .message-bubble.assistant .markdown-content code {
327
+ background: rgba(102, 126, 234, 0.1);
328
+ color: #764ba2;
329
+ border-color: rgba(102, 126, 234, 0.2);
330
+ }
331
+ .message-bubble.assistant .markdown-content pre {
332
+ background: #ffffff;
333
+ border-color: #e2e8f0;
334
+ }
335
+ .message-bubble.assistant .markdown-content pre code {
336
+ color: #1e293b;
337
+ }
338
+ .message-bubble.assistant .markdown-content h1,
339
+ .message-bubble.assistant .markdown-content h2,
340
+ .message-bubble.assistant .markdown-content h3,
341
+ .message-bubble.assistant .markdown-content h4,
342
+ .message-bubble.assistant .markdown-content h5,
343
+ .message-bubble.assistant .markdown-content h6 {
344
+ color: #1e293b;
345
+ }
346
+ .message-bubble.assistant .markdown-content h1 {
347
+ border-bottom-color: #e2e8f0;
348
+ }
349
+ .message-bubble.assistant .markdown-content strong,
350
+ .message-bubble.assistant .markdown-content b {
351
+ color: #0f172a;
352
+ }
353
+ .message-bubble.assistant .markdown-content blockquote {
354
+ border-left-color: #667eea;
355
+ background: rgba(102, 126, 234, 0.05);
356
+ color: #334155;
357
+ }
358
+ .message-bubble.assistant .markdown-content th {
359
+ background: #f1f5f9;
360
+ color: #1e293b;
361
+ }
362
+ .message-bubble.assistant .markdown-content tbody tr:hover {
363
+ background-color: rgba(102, 126, 234, 0.05);
364
+ }
365
+
366
+ .input-container {
367
+ display: flex;
368
+ align-items: flex-end;
369
+ gap: 12px;
370
+ padding: 16px;
371
+ background: #ffffff;
372
+ border-top: 1px solid #e2e8f0;
373
+ border-radius: 0 0 12px 12px;
374
+ }
375
+
376
+ .textarea {
377
+ flex: 1;
378
+ min-height: 44px;
379
+ max-height: 120px;
380
+ padding: 12px 16px;
381
+ border: 1px solid #e2e8f0;
382
+ border-radius: 22px;
383
+ font-size: 14px;
384
+ line-height: 1.4;
385
+ resize: none;
386
+ outline: none;
387
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
388
+ font-family: inherit;
389
+ background: #f8fafc;
390
+ color: #334155;
391
+ }
392
+ .textarea:disabled {
393
+ opacity: 0.6;
394
+ cursor: not-allowed;
395
+ }
396
+ .textarea:focus:not(:disabled) {
397
+ border-color: #3b82f6;
398
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
399
+ }
400
+
401
+ .send-button {
402
+ width: 44px;
403
+ height: 44px;
404
+ border-radius: 50%;
405
+ border: none;
406
+ color: #ffffff;
407
+ cursor: pointer;
408
+ display: flex;
409
+ align-items: center;
410
+ justify-content: center;
411
+ transition: all 0.2s ease;
412
+ font-size: 16px;
413
+ }
414
+ .send-button:disabled {
415
+ background: #e2e8f0;
416
+ cursor: not-allowed;
417
+ }
418
+ .send-button:not(:disabled) {
419
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
420
+ }
421
+ .send-button:not(:disabled):hover {
422
+ transform: scale(1.05);
423
+ }
424
+
425
+ .header {
426
+ padding: 16px 20px;
427
+ color: #ffffff;
428
+ display: flex;
429
+ align-items: center;
430
+ gap: 12px;
431
+ }
432
+
433
+ .logo-container {
434
+ width: 40px;
435
+ height: 40px;
436
+ border-radius: 50%;
437
+ background: rgba(255, 255, 255, 0.2);
438
+ display: flex;
439
+ align-items: center;
440
+ justify-content: center;
441
+ font-size: 18px;
442
+ overflow: hidden;
443
+ }
444
+
445
+ .logo-image {
446
+ width: 100%;
447
+ height: 100%;
448
+ object-fit: cover;
449
+ border-radius: 50%;
450
+ }
451
+
452
+ .logo-text {
453
+ font-size: 16px;
454
+ font-weight: bold;
455
+ }
456
+
457
+ .company-name {
458
+ margin: 0;
459
+ font-size: 16px;
460
+ font-weight: 600;
461
+ }
462
+
463
+ .status-text {
464
+ margin: 0;
465
+ font-size: 12px;
466
+ opacity: 0.8;
467
+ }
468
+
469
+ .button-sizes.small {
470
+ width: 50px;
471
+ height: 50px;
472
+ font-size: 20px;
473
+ }
474
+ .button-sizes.medium {
475
+ width: 60px;
476
+ height: 60px;
477
+ font-size: 24px;
478
+ }
479
+ .button-sizes.large {
480
+ width: 70px;
481
+ height: 70px;
482
+ font-size: 28px;
483
+ }
484
+
485
+ .floating-button {
486
+ position: fixed;
487
+ bottom: 20px;
488
+ border-radius: 50%;
489
+ border: none;
490
+ color: #ffffff;
491
+ cursor: pointer;
492
+ display: flex;
493
+ align-items: center;
494
+ justify-content: center;
495
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
496
+ transition: all 0.3s ease;
497
+ z-index: 1000;
498
+ }
499
+ .floating-button.bottom-left {
500
+ left: 20px;
501
+ }
502
+ .floating-button.bottom-right {
503
+ right: 20px;
504
+ }
505
+ .floating-button.is-open {
506
+ transform: scale(0.9);
507
+ }
508
+ .floating-button:hover {
509
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
510
+ }
511
+
512
+ .chat-container {
513
+ position: fixed;
514
+ bottom: 90px;
515
+ z-index: 9999999;
516
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
517
+ }
518
+ .chat-container.bottom-left {
519
+ left: 20px;
520
+ transform-origin: bottom left;
521
+ }
522
+ .chat-container.bottom-right {
523
+ right: 20px;
524
+ transform-origin: bottom right;
525
+ }
526
+ .chat-container.is-open {
527
+ transform: translateY(0) scale(1);
528
+ opacity: 1;
529
+ visibility: visible;
530
+ }
531
+ .chat-container:not(.is-open) {
532
+ transform: translateY(20px) scale(0.95);
533
+ opacity: 0;
534
+ visibility: hidden;
535
+ }
536
+
537
+ .overlay {
538
+ position: fixed;
539
+ top: 0;
540
+ left: 0;
541
+ right: 0;
542
+ bottom: 0;
543
+ background: rgba(0, 0, 0, 0.1);
544
+ z-index: 998;
545
+ transition: all 0.3s ease;
546
+ }
547
+ .overlay.is-open {
548
+ opacity: 1;
549
+ visibility: visible;
550
+ }
551
+ .overlay:not(.is-open) {
552
+ opacity: 0;
553
+ visibility: hidden;
554
+ }
555
+
556
+ .chatbot-container {
557
+ display: flex;
558
+ flex-direction: column;
559
+ height: 100%;
560
+ background: #ffffff;
561
+ border-radius: 12px;
562
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
563
+ border: 1px solid #e2e8f0;
564
+ overflow: hidden;
565
+ }
566
+
567
+ .messages-container {
568
+ flex: 1;
569
+ overflow-y: auto;
570
+ padding: 16px;
571
+ display: flex;
572
+ flex-direction: column;
573
+ gap: 4px;
574
+ background: #f8fafc;
575
+ }
576
+
577
+ .empty-state {
578
+ display: flex;
579
+ flex-direction: column;
580
+ align-items: center;
581
+ justify-content: center;
582
+ height: 100%;
583
+ color: #64748b;
584
+ text-align: center;
585
+ padding: 40px 20px;
586
+ }
587
+ .empty-state .empty-state-icon {
588
+ font-size: 48px;
589
+ margin-bottom: 16px;
590
+ }
591
+ .empty-state .empty-state-title {
592
+ margin: 0 0 8px 0;
593
+ font-size: 18px;
594
+ }
595
+ .empty-state .empty-state-description {
596
+ margin: 0;
597
+ font-size: 14px;
598
+ opacity: 0.8;
599
+ }
600
+
601
+ @keyframes spin {
602
+ from {
603
+ transform: rotate(0deg);
28
604
  }
29
- };
605
+ to {
606
+ transform: rotate(360deg);
607
+ }
608
+ }
609
+ .loading-spinner {
610
+ width: 16px;
611
+ height: 16px;
612
+ border: 2px solid transparent;
613
+ border-top: 2px solid currentColor;
614
+ border-radius: 50%;
615
+ animation: spin 1s linear infinite;
616
+ }
617
+
618
+ @keyframes slideDown {
619
+ from {
620
+ opacity: 0;
621
+ transform: translateY(-10px);
622
+ }
623
+ to {
624
+ opacity: 1;
625
+ transform: translateY(0);
626
+ }
627
+ }
628
+ .alert-container {
629
+ border-radius: 12px;
630
+ padding: 14px 16px;
631
+ margin: 12px 16px;
632
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
633
+ color: #ffffff;
634
+ font-size: 13px;
635
+ display: flex;
636
+ align-items: flex-start;
637
+ gap: 12px;
638
+ position: relative;
639
+ animation: slideDown 0.3s ease ease-out;
640
+ }
641
+ .alert-container.error {
642
+ background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
643
+ border: 1px solid #dc2626;
644
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2);
645
+ }
646
+ .alert-container.warning {
647
+ background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
648
+ border: 1px solid #d97706;
649
+ box-shadow: 0 4px 12px rgba(245, 158, 11, 0.2);
650
+ }
651
+ .alert-container.success {
652
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
653
+ border: 1px solid #059669;
654
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);
655
+ }
656
+
657
+ .alert-icon-container {
658
+ display: flex;
659
+ align-items: center;
660
+ justify-content: center;
661
+ width: 24px;
662
+ height: 24px;
663
+ flex-shrink: 0;
664
+ margin-top: 2px;
665
+ }
666
+
667
+ .alert-content {
668
+ flex: 1;
669
+ display: flex;
670
+ flex-direction: column;
671
+ gap: 8px;
672
+ }
673
+
674
+ .alert-title {
675
+ font-weight: 600;
676
+ font-size: 14px;
677
+ margin: 0;
678
+ line-height: 1.4;
679
+ }
680
+
681
+ .alert-message {
682
+ margin: 0;
683
+ line-height: 1.5;
684
+ opacity: 0.95;
685
+ }
686
+
687
+ .alert-list {
688
+ margin: 8px 0 0 0;
689
+ padding-left: 20px;
690
+ list-style: none;
691
+ }
692
+
693
+ .alert-list-item {
694
+ margin-bottom: 4px;
695
+ position: relative;
696
+ padding-left: 12px;
697
+ line-height: 1.4;
698
+ }
699
+ .alert-list-item li > span {
700
+ position: "absolute";
701
+ left: 0;
702
+ top: 2px;
703
+ font-weight: bold;
704
+ }
705
+ .alert-list-item li > code {
706
+ background: rgba(255, 255, 255, 0.2);
707
+ padding: 2px 6px;
708
+ border-radius: 4px;
709
+ font-size: 12px;
710
+ }
711
+
712
+ .alert-close-button {
713
+ position: absolute;
714
+ top: 12px;
715
+ right: 12px;
716
+ background: rgba(255, 255, 255, 0.2);
717
+ border: none;
718
+ border-radius: 6px;
719
+ width: 24px;
720
+ height: 24px;
721
+ display: flex;
722
+ align-items: center;
723
+ justify-content: center;
724
+ cursor: pointer;
725
+ color: #ffffff;
726
+ transition: all 0.2s ease;
727
+ padding: 0;
728
+ }
729
+ .alert-close-button:hover {
730
+ background: rgba(255, 255, 255, 0.3);
731
+ }
732
+
733
+ .ui-renderer {
734
+ display: flex;
735
+ flex-direction: column;
736
+ gap: 16px;
737
+ width: 100%;
738
+ }
739
+
740
+ .form-component {
741
+ width: 100%;
742
+ max-width: 500px;
743
+ border: 1px solid #e0e0e0;
744
+ border-radius: 12px;
745
+ padding: 24px;
746
+ background-color: #ffffff;
747
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
748
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
749
+ }
750
+
751
+ .form-title {
752
+ font-weight: 600;
753
+ font-size: 16px;
754
+ margin-bottom: 20px;
755
+ color: #1a1a1a;
756
+ margin-top: 0;
757
+ }
758
+
759
+ .form-fields {
760
+ display: flex;
761
+ flex-direction: column;
762
+ gap: 20px;
763
+ }
764
+
765
+ .form-field {
766
+ display: flex;
767
+ flex-direction: column;
768
+ gap: 8px;
769
+ }
770
+
771
+ .form-label {
772
+ font-weight: 500;
773
+ font-size: 13px;
774
+ color: #475569;
775
+ display: flex;
776
+ align-items: center;
777
+ gap: 4px;
778
+ }
779
+ .form-label span {
780
+ color: #ef4444;
781
+ font-size: 12px;
782
+ }
783
+
784
+ .form-input,
785
+ .form-select {
786
+ border: 1px solid #d1d5db;
787
+ border-radius: 8px;
788
+ padding: 10px 12px;
789
+ font-size: 13px;
790
+ color: #1a1a1a;
791
+ background-color: #ffffff;
792
+ font-family: inherit;
793
+ outline: none;
794
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
795
+ cursor: pointer;
796
+ }
797
+ .form-input:focus,
798
+ .form-select:focus {
799
+ border-color: #3b82f6;
800
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
801
+ }
802
+
803
+ .form-select {
804
+ cursor: pointer;
805
+ }
806
+
807
+ .form-submit-button {
808
+ margin-top: 24px;
809
+ display: inline-flex;
810
+ align-items: center;
811
+ justify-content: center;
812
+ border-radius: 8px;
813
+ padding: 12px 24px;
814
+ font-size: 13px;
815
+ font-weight: 500;
816
+ background-color: #3b82f6;
817
+ color: #ffffff;
818
+ border: none;
819
+ cursor: pointer;
820
+ transition: background-color 0.15s ease, transform 0.1s ease;
821
+ font-family: inherit;
822
+ }
823
+ .form-submit-button:hover {
824
+ background-color: #2563eb;
825
+ }
826
+ .form-submit-button:active {
827
+ transform: scale(0.98);
828
+ }
829
+
830
+ .buttons-component {
831
+ display: flex;
832
+ gap: 12px;
833
+ flex-wrap: wrap;
834
+ }
835
+
836
+ .button-component {
837
+ border-radius: 8px;
838
+ padding: 10px 20px;
839
+ font-size: 13px;
840
+ font-weight: 500;
841
+ border: 1px solid #e0e0e0;
842
+ background-color: #ffffff;
843
+ color: #475569;
844
+ cursor: pointer;
845
+ transition: all 0.15s ease;
846
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
847
+ outline: none;
848
+ }
849
+ .button-component.primary {
850
+ background-color: #3b82f6;
851
+ color: #ffffff;
852
+ border-color: #3b82f6;
853
+ }
854
+ .button-component.primary:hover {
855
+ background-color: #2563eb;
856
+ border-color: #2563eb;
857
+ }
858
+ .button-component.secondary {
859
+ background-color: #f3f4f6;
860
+ color: #475569;
861
+ border-color: #d1d5db;
862
+ }
863
+ .button-component.secondary:hover {
864
+ background-color: #e5e7eb;
865
+ border-color: #9ca3af;
866
+ }
867
+ .button-component.danger {
868
+ background-color: #ef4444;
869
+ color: #ffffff;
870
+ border-color: #ef4444;
871
+ }
872
+ .button-component.danger:hover {
873
+ background-color: #dc2626;
874
+ border-color: #dc2626;
875
+ }
876
+ .button-component:not(.primary):not(.secondary):not(.danger):hover {
877
+ background-color: #f9fafb;
878
+ border-color: #d1d5db;
879
+ }
880
+ .button-component:active {
881
+ transform: scale(0.97);
882
+ }
883
+
884
+ .table-component {
885
+ border: 1px solid #e0e0e0;
886
+ border-radius: 12px;
887
+ overflow: hidden;
888
+ font-size: 13px;
889
+ background-color: #ffffff;
890
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
891
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
892
+ }
893
+
894
+ .table-caption {
895
+ padding: 16px 20px;
896
+ font-weight: 600;
897
+ font-size: 14px;
898
+ border-bottom: 1px solid #e0e0e0;
899
+ background-color: #f8f9fa;
900
+ color: #1a1a1a;
901
+ }
902
+
903
+ .table-wrapper {
904
+ overflow-x: auto;
905
+ }
906
+
907
+ .table {
908
+ width: 100%;
909
+ border-collapse: collapse;
910
+ min-width: 100%;
911
+ }
912
+
913
+ .table-header {
914
+ background-color: #f8f9fa;
915
+ }
916
+
917
+ .table-th {
918
+ border-bottom: 2px solid #e0e0e0;
919
+ padding: 14px 20px;
920
+ text-align: left;
921
+ font-weight: 600;
922
+ font-size: 12px;
923
+ color: #4a5568;
924
+ text-transform: uppercase;
925
+ letter-spacing: 0.5px;
926
+ white-space: nowrap;
927
+ }
928
+
929
+ .table-tbody tr {
930
+ background-color: #ffffff;
931
+ transition: background-color 0.15s ease;
932
+ }
933
+ .table-tbody tr:nth-child(even) {
934
+ background-color: #fafbfc;
935
+ }
936
+ .table-tbody tr:hover {
937
+ background-color: #f0f4f8;
938
+ }
939
+
940
+ .table-td {
941
+ border-bottom: 1px solid #e8e8e8;
942
+ padding: 16px 20px;
943
+ font-size: 13px;
944
+ vertical-align: middle;
945
+ }
946
+ .table-td > span {
947
+ color: #a0a0a0;
948
+ font-style: italic;
949
+ }
950
+
951
+ .table-cell-image {
952
+ display: flex;
953
+ align-items: center;
954
+ }
955
+
956
+ .table-image {
957
+ width: 40px;
958
+ height: 40px;
959
+ border-radius: 8px;
960
+ object-fit: cover;
961
+ border: 1px solid #e0e0e0;
962
+ }
963
+
964
+ .table-cell-text {
965
+ color: #2d3748;
966
+ line-height: 1.5;
967
+ }
968
+
969
+ .table-empty {
970
+ padding: 40px;
971
+ text-align: center;
972
+ color: #9ca3af;
973
+ font-size: 13px;
974
+ }
975
+
976
+ .card-component {
977
+ border: 1px solid #e5e7eb;
978
+ border-radius: 16px;
979
+ padding: 16px;
980
+ background-color: #ffffff;
981
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
982
+ overflow: hidden;
983
+ margin-bottom: 12px;
984
+ }
985
+
986
+ .card-content {
987
+ display: flex;
988
+ gap: 12px;
989
+ }
990
+
991
+ .card-image {
992
+ width: 64px;
993
+ height: 64px;
994
+ border-radius: 8px;
995
+ object-fit: cover;
996
+ flex-shrink: 0;
997
+ }
998
+
999
+ .card-info {
1000
+ flex: 1;
1001
+ min-width: 0;
1002
+ }
1003
+
1004
+ .card-title {
1005
+ font-weight: 600;
1006
+ font-size: 14px;
1007
+ margin-bottom: 8px;
1008
+ overflow: hidden;
1009
+ text-overflow: ellipsis;
1010
+ white-space: nowrap;
1011
+ }
1012
+
1013
+ .card-subtitle {
1014
+ color: #64748b;
1015
+ font-size: 12px;
1016
+ margin-bottom: 4px;
1017
+ margin: 0;
1018
+ }
1019
+
1020
+ .card-status {
1021
+ display: flex;
1022
+ gap: 8px;
1023
+ font-size: 12px;
1024
+ margin-bottom: 4px;
1025
+ }
1026
+
1027
+ .card-status-label {
1028
+ color: #64748b;
1029
+ font-weight: 500;
1030
+ }
1031
+
1032
+ .card-status-value {
1033
+ color: #475569;
1034
+ }
1035
+
1036
+ .card-fields {
1037
+ display: flex;
1038
+ flex-direction: column;
1039
+ gap: 4px;
1040
+ }
1041
+
1042
+ .card-field {
1043
+ display: flex;
1044
+ gap: 8px;
1045
+ font-size: 12px;
1046
+ }
1047
+
1048
+ .card-field-label {
1049
+ color: #64748b;
1050
+ font-weight: 500;
1051
+ }
1052
+
1053
+ .card-field-value {
1054
+ color: #475569;
1055
+ }
1056
+
1057
+ .card-description {
1058
+ color: #64748b;
1059
+ font-size: 12px;
1060
+ margin-top: 8px;
1061
+ margin: 0;
1062
+ }
1063
+
1064
+ .card-list {
1065
+ width: 100%;
1066
+ }
1067
+
1068
+ .card-list-title {
1069
+ font-weight: 600;
1070
+ margin-bottom: 12px;
1071
+ font-size: 14px;
1072
+ color: #1a1a1a;
1073
+ margin-top: 0;
1074
+ }
1075
+
1076
+ .card-list-description {
1077
+ color: #64748b;
1078
+ margin-bottom: 12px;
1079
+ font-size: 12px;
1080
+ margin-top: 0;
1081
+ }
1082
+
1083
+ .card-grid {
1084
+ display: grid;
1085
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1086
+ gap: 12px;
1087
+ }
1088
+
1089
+ .card-item {
1090
+ font-size: 12px;
1091
+ border: 1px solid #e0e0e0;
1092
+ border-radius: 12px;
1093
+ padding: 16px;
1094
+ background-color: #ffffff;
1095
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1096
+ overflow: hidden;
1097
+ }
1098
+
1099
+ .card-item-content {
1100
+ display: flex;
1101
+ gap: 12px;
1102
+ }
1103
+
1104
+ .card-item-image {
1105
+ width: 64px;
1106
+ height: 64px;
1107
+ border-radius: 8px;
1108
+ object-fit: cover;
1109
+ flex-shrink: 0;
1110
+ }
1111
+
1112
+ .card-item-info {
1113
+ flex: 1;
1114
+ min-width: 0;
1115
+ }
1116
+
1117
+ .card-item-title {
1118
+ font-weight: 600;
1119
+ font-size: 14px;
1120
+ margin-bottom: 4px;
1121
+ overflow: hidden;
1122
+ text-overflow: ellipsis;
1123
+ white-space: nowrap;
1124
+ color: #1a1a1a;
1125
+ margin-top: 0;
1126
+ }
1127
+
1128
+ .card-item-subtitle {
1129
+ color: #64748b;
1130
+ font-size: 12px;
1131
+ margin: 0;
1132
+ }
1133
+
1134
+ .card-item-legacy {
1135
+ display: flex;
1136
+ justify-content: space-between;
1137
+ gap: 8px;
1138
+ font-size: 12px;
1139
+ }
1140
+
1141
+ .card-item-legacy-label {
1142
+ color: #64748b;
1143
+ margin: 0;
1144
+ }
1145
+
1146
+ .card-item-legacy-value {
1147
+ font-weight: 500;
1148
+ color: #1a1a1a;
1149
+ margin: 0;
1150
+ }
1151
+
1152
+ .field-image {
1153
+ width: 24px;
1154
+ height: 24px;
1155
+ border-radius: 999px;
1156
+ object-fit: cover;
1157
+ }
1158
+
1159
+ .field-link {
1160
+ text-decoration: underline;
1161
+ }
1162
+
1163
+ .field-badge {
1164
+ display: inline-block;
1165
+ padding: 2px 6px;
1166
+ border-radius: 999px;
1167
+ font-size: 10px;
1168
+ font-weight: 500;
1169
+ }
1170
+ .field-badge.success {
1171
+ background-color: #e0fce5;
1172
+ color: #1a7f36;
1173
+ }
1174
+ .field-badge.warning {
1175
+ background-color: #fff7d6;
1176
+ color: #8a6a00;
1177
+ }
1178
+ .field-badge.danger {
1179
+ background-color: #ffe4e4;
1180
+ color: #b42318;
1181
+ }
1182
+ .field-badge:not(.success):not(.warning):not(.danger) {
1183
+ background-color: #f2f2f2;
1184
+ color: #333;
1185
+ }
1186
+
1187
+ .field-list {
1188
+ margin: 0;
1189
+ padding-left: 16px;
1190
+ }
1191
+
1192
+ .generative-ui-container {
1193
+ display: flex;
1194
+ flex-direction: column;
1195
+ gap: 16px;
1196
+ width: 100%;
1197
+ }
1198
+
1199
+ .generative-ui-header {
1200
+ margin-bottom: 12px;
1201
+ }
1202
+
1203
+ .generative-ui-title {
1204
+ font-size: 18px;
1205
+ font-weight: 600;
1206
+ color: #0f172a;
1207
+ margin: 0 0 8px 0;
1208
+ }
1209
+
1210
+ .generative-ui-description {
1211
+ font-size: 14px;
1212
+ color: #475569;
1213
+ margin: 0;
1214
+ line-height: 1.5;
1215
+ }
1216
+
1217
+ .gen-ui-text {
1218
+ font-size: 13px;
1219
+ color: #1e293b;
1220
+ line-height: 1.6;
1221
+ margin: 0;
1222
+ }
1223
+
1224
+ .gen-ui-input-wrapper {
1225
+ display: flex;
1226
+ flex-direction: column;
1227
+ gap: 8px;
1228
+ }
1229
+
1230
+ .gen-ui-input-label {
1231
+ font-size: 12px;
1232
+ font-weight: 500;
1233
+ color: #334155;
1234
+ margin: 0;
1235
+ }
1236
+
1237
+ .gen-ui-input,
1238
+ .gen-ui-textarea {
1239
+ width: 100%;
1240
+ padding: 10px 12px;
1241
+ border: 1px solid #cbd5e1;
1242
+ border-radius: 8px;
1243
+ font-size: 13px;
1244
+ color: #0f172a;
1245
+ background-color: #ffffff;
1246
+ outline: none;
1247
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1248
+ font-family: inherit;
1249
+ }
1250
+ .gen-ui-input::placeholder,
1251
+ .gen-ui-textarea::placeholder {
1252
+ color: #94a3b8;
1253
+ }
1254
+ .gen-ui-input:focus,
1255
+ .gen-ui-textarea:focus {
1256
+ border-color: #3b82f6;
1257
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1258
+ }
1259
+ .gen-ui-input:disabled,
1260
+ .gen-ui-textarea:disabled {
1261
+ background-color: #f1f5f9;
1262
+ cursor: not-allowed;
1263
+ opacity: 0.6;
1264
+ }
1265
+
1266
+ .gen-ui-textarea {
1267
+ min-height: 80px;
1268
+ resize: vertical;
1269
+ }
1270
+
1271
+ .gen-ui-select-wrapper {
1272
+ display: flex;
1273
+ flex-direction: column;
1274
+ gap: 8px;
1275
+ }
1276
+
1277
+ .gen-ui-select-label {
1278
+ font-size: 12px;
1279
+ font-weight: 500;
1280
+ color: #334155;
1281
+ margin: 0;
1282
+ }
1283
+
1284
+ .gen-ui-select {
1285
+ width: 100%;
1286
+ padding: 10px 12px;
1287
+ border: 1px solid #cbd5e1;
1288
+ border-radius: 8px;
1289
+ font-size: 13px;
1290
+ color: #0f172a;
1291
+ background-color: #ffffff;
1292
+ outline: none;
1293
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1294
+ cursor: pointer;
1295
+ font-family: inherit;
1296
+ }
1297
+ .gen-ui-select:focus {
1298
+ border-color: #3b82f6;
1299
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1300
+ }
1301
+ .gen-ui-select:disabled {
1302
+ background-color: #f1f5f9;
1303
+ cursor: not-allowed;
1304
+ opacity: 0.6;
1305
+ }
1306
+
1307
+ .gen-ui-button {
1308
+ display: inline-flex;
1309
+ align-items: center;
1310
+ justify-content: center;
1311
+ padding: 10px 16px;
1312
+ border-radius: 8px;
1313
+ font-size: 13px;
1314
+ font-weight: 500;
1315
+ border: none;
1316
+ cursor: pointer;
1317
+ transition: all 0.2s ease;
1318
+ font-family: inherit;
1319
+ outline: none;
1320
+ background: #2563eb;
1321
+ color: #ffffff;
1322
+ }
1323
+ .gen-ui-button:hover {
1324
+ background: #1d4ed8;
1325
+ }
1326
+ .gen-ui-button:active {
1327
+ transform: scale(0.98);
1328
+ }
1329
+ .gen-ui-button:disabled {
1330
+ background: #cbd5e1;
1331
+ cursor: not-allowed;
1332
+ opacity: 0.6;
1333
+ }
1334
+
1335
+ .gen-ui-card {
1336
+ border: 1px solid #e2e8f0;
1337
+ border-radius: 12px;
1338
+ padding: 16px;
1339
+ background-color: #ffffff;
1340
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1341
+ transition: box-shadow 0.2s ease;
1342
+ }
1343
+ .gen-ui-card:hover {
1344
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1345
+ }
1346
+
1347
+ .gen-ui-card-title {
1348
+ font-size: 16px;
1349
+ font-weight: 600;
1350
+ color: #0f172a;
1351
+ margin: 0 0 8px 0;
1352
+ }
1353
+
1354
+ .gen-ui-card-content {
1355
+ font-size: 13px;
1356
+ color: #334155;
1357
+ margin: 0;
1358
+ line-height: 1.5;
1359
+ }
1360
+
1361
+ .gen-ui-list {
1362
+ list-style-type: disc;
1363
+ padding-left: 20px;
1364
+ margin: 0;
1365
+ }
1366
+
1367
+ .gen-ui-list-item {
1368
+ font-size: 13px;
1369
+ color: #1e293b;
1370
+ line-height: 1.6;
1371
+ margin-bottom: 4px;
1372
+ }
1373
+ .gen-ui-list-item:last-child {
1374
+ margin-bottom: 0;
1375
+ }
1376
+
1377
+ .gen-ui-image {
1378
+ max-width: 100%;
1379
+ height: auto;
1380
+ border-radius: 8px;
1381
+ display: block;
1382
+ }
1383
+
1384
+ .gen-ui-link {
1385
+ color: #2563eb;
1386
+ text-decoration: none;
1387
+ font-size: 13px;
1388
+ transition: color 0.2s ease;
1389
+ }
1390
+ .gen-ui-link:hover {
1391
+ color: #1d4ed8;
1392
+ text-decoration: underline;
1393
+ }
1394
+ .gen-ui-link:visited {
1395
+ color: #2563eb;
1396
+ }
1397
+
1398
+ .gen-ui-table-wrapper {
1399
+ width: 100%;
1400
+ overflow-x: auto;
1401
+ border: 1px solid #e2e8f0;
1402
+ border-radius: 12px;
1403
+ background-color: #ffffff;
1404
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1405
+ }
1406
+
1407
+ .gen-ui-table {
1408
+ width: 100%;
1409
+ border-collapse: collapse;
1410
+ min-width: 100%;
1411
+ }
1412
+
1413
+ .gen-ui-table-header {
1414
+ background-color: #f8fafc;
1415
+ }
1416
+
1417
+ .gen-ui-table-th {
1418
+ padding: 12px 16px;
1419
+ text-align: left;
1420
+ font-size: 12px;
1421
+ font-weight: 600;
1422
+ color: #334155;
1423
+ border-bottom: 2px solid #e2e8f0;
1424
+ white-space: nowrap;
1425
+ }
1426
+
1427
+ .gen-ui-table-body tr {
1428
+ transition: background-color 0.2s ease;
1429
+ }
1430
+ .gen-ui-table-body tr:hover {
1431
+ background-color: #f8fafc;
1432
+ }
1433
+ .gen-ui-table-body tr:not(:last-child) {
1434
+ border-bottom: 1px solid #e2e8f0;
1435
+ }
1436
+
1437
+ .gen-ui-table-td {
1438
+ padding: 12px 16px;
1439
+ font-size: 13px;
1440
+ color: #1e293b;
1441
+ vertical-align: middle;
1442
+ }
1443
+
1444
+ .gen-ui-form {
1445
+ display: flex;
1446
+ flex-direction: column;
1447
+ gap: 16px;
1448
+ width: 100%;
1449
+ }
1450
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiQzpcXENhbGlzbWFsYXJcXHpla2FpXFxhaXplay13aWRnZXRcXHNyY1xcc3R5bGVzIiwic291cmNlcyI6WyJtZXNzYWdlU3R5bGVzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImlucHV0U3R5bGVzLnNjc3MiLCJoZWFkZXJTdHlsZXMuc2NzcyIsImNvbnRhaW5lclN0eWxlcy5zY3NzIiwibG9hZGluZ1N0eWxlcy5zY3NzIiwiYWxlcnRTdHlsZXMuc2NzcyIsInVpUmVuZGVyZXIuc2NzcyIsImdlbmVyYXRpdmVVSS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDMkJRO0VEMUJSOztBQUVBO0VBQ0U7RUFDQSxZQzFCZTtFRDJCZixPQ3hCSTtFRHlCSjtFQUNBOztBQUdGO0VBQ0U7RUFDQSxZQzdCTTtFRDhCTixPQ3ZCTztFRHdCUDtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUtKO0VBQ0UsV0NMUTtFRE1SO0VBQ0EsWUN0Qlc7OztBRHlCYjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVDdEhRO0VEdUhSO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDL0pNO0VEZ0tOO0VBQ0EsZUMvSFE7RURnSVI7RUFDQTtFQUNBO0VBQ0EsWUNoSFE7O0FEa0hSO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0NuS0s7RURvS0wsV0NuSUk7RURvSUo7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBSUY7QUFBQTtFQUVFOztBQUlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOztBQUlKO0VBQ0UsV0NuS007RURvS047RUFDQTs7QUFHRjtFQUNFLFdDMUtNOztBRDZLUjtFQUNFOztBQUdGO0FBQUE7QUFBQTtFQUdFLFdDckxNOztBRHlMUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsV0N2Tk07RUR3Tk4sZUMvTlE7RURnT1I7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUdGO0VBQ0UsWUM3UU87RUQ4UVA7RUFDQSxPQ3hRTztFRHlRUDs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQSxlQ2xRUTtFRG1RUjs7QUFJRjtFQUNFOzs7QUFNRjtFQUNFLE9DblRJOztBRHNUSjtFQUNFLE9DdlRFO0VEd1RGO0VBQ0E7O0FBRUE7RUFDRSxxQkM1VEE7O0FEaVVKO0VBQ0UsT0NsVUU7O0FEc1VKO0VBQ0U7RUFDQSxPQ3hVRTtFRHlVRjs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRSxPQ2xWQTs7QUR1Vko7RUFDRTs7QUFJRjtFQUNFLG1CQzdWRTtFRDhWRjtFQUNBLE9DL1ZFOztBRG1XSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7RUFDQSxPQ25YRTtFRG9YRjs7QUFHRjtFQUNFOzs7QUFPSjtFQUNFLE9DdlhPOztBRDBYUDtFQUNFOztBQUVBO0VBQ0U7O0FBS0o7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDelpFO0VEMFpGLGNDdFpLOztBRHdaTDtFQUNFLE9DblpHOztBRHdaUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRSxPQzlaSzs7QURpYVA7RUFDRSxxQkN4YUs7O0FENGFQO0FBQUE7RUFFRSxPQ3ZhSzs7QUQyYVA7RUFDRTtFQUNBO0VBQ0EsT0NoYks7O0FEb2JQO0VBQ0UsWUMzYks7RUQ0YkwsT0NyYks7O0FEd2JQO0VBQ0U7OztBRXJjTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNENEJXO0VDM0JYLFlESE07RUNJTjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdEOEJRO0VDN0JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZRG5CUTtFQ29CUixPRGJTOztBQ2VUO0VBQ0U7RUFDQTs7QUFHRjtFQUNFLGNEaEJPO0VDaUJQOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQSxlRENZO0VDQVo7RUFDQSxPRHhDTTtFQ3lDTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxZRDdDTztFQzhDUDs7QUFHRjtFQUNFLFlEekRlOztBQzJEZjtFQUNFOzs7QUMzRE47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxlRjhCWTtFRTdCWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdGaUNRO0VFaENSOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVGaUJZOzs7QUVkZDtFQUNFLFdGb0JRO0VFbkJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZjUTtFRWJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZLUTtFRUpSOzs7QUN4Q0E7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQSxRSFdXO0VHVlgsZUhrQlk7RUdqQlo7RUFDQSxPSHZCTTtFR3dCTjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlINkJVO0VHNUJWO0VBQ0E7O0FBRUE7RUFDRSxNSEZTOztBR0tYO0VBQ0UsT0hOUzs7QUdTWDtFQUNFOztBQUdGO0VBQ0UsWUhhUTs7O0FHVFo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLE1IekJTO0VHMEJUOztBQUdGO0VBQ0UsT0g5QlM7RUcrQlQ7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFlIdkdNO0VHd0dOLGVIbkVVO0VHb0VWO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsU0huRlc7RUdvRlg7RUFDQTtFQUNBLEtIekZXO0VHMEZYLFlIbkhROzs7QUdzSFY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0h2SFM7RUd3SFQ7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUNqSko7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlSjJCWTtFSTFCWjs7O0FDZkY7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFLGVMMEJVO0VLekJWO0VBQ0E7RUFDQTtFQUNBLE9MZk07RUtnQk4sV0w0QlU7RUszQlY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxLTDVCVzs7O0FLK0JiO0VBQ0U7RUFDQSxXTGhCUTtFS2lCUjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLGNMM0NXO0VLNENYOzs7QUFHRjtFQUNFLGVMcERXO0VLcURYO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0xqSE07RUtrSE47RUFDQTs7QUFFQTtFQUNFOzs7QUN4SEo7RUFDRTtFQUNBO0VBQ0EsS042Qlc7RU01Qlg7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsZU4yQlU7RU0xQlYsU05xQlk7RU1wQlosa0JOWk07RU1hTixZTjJDVTtFTTFDVjs7O0FBR0Y7RUFDRTtFQUNBLFdOMkJRO0VNMUJSLGVOV1c7RU1WWCxPTnBCTTtFTXFCTjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS05HVzs7O0FNQWI7RUFDRTtFQUNBO0VBQ0EsS05OVzs7O0FNU2I7RUFDRTtFQUNBLFdOS1U7RU1KVixPTmhDUztFTWlDVDtFQUNBO0VBQ0EsS05oQlc7O0FNa0JYO0VBQ0UsT04zQkk7RU00QkosV05KTTs7O0FNUVY7QUFBQTtFQUVFO0VBQ0EsZU5sQlU7RU1tQlY7RUFDQSxXTlpVO0VNYVYsT054RE07RU15RE4sa0JOMURNO0VNMkROO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRSxjTm5ETztFTW9EUDs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRSxZTjNDWTtFTTRDWjtFQUNBO0VBQ0E7RUFDQSxlTjNDVTtFTTRDVjtFQUNBLFdOckNVO0VNc0NWO0VBQ0Esa0JOckVTO0VNc0VULE9OcEZNO0VNcUZOO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0Usa0JONUVPOztBTStFVDtFQUNFOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRSxlTnZFVTtFTXdFVjtFQUNBLFdOakVVO0VNa0VWO0VBQ0E7RUFDQSxrQk5oSE07RU1pSE4sT056R1M7RU0wR1Q7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxrQk4xR087RU0yR1AsT056SEk7RU0wSEosY041R087O0FNOEdQO0VBQ0Usa0JOOUdLO0VNK0dMLGNOL0dLOztBTW1IVDtFQUNFO0VBQ0EsT041SE87RU02SFA7O0FBRUE7RUFDRTtFQUNBOztBQUlKO0VBQ0Usa0JOM0hJO0VNNEhKLE9OL0lJO0VNZ0pKLGNON0hJOztBTStISjtFQUNFLGtCTi9ITztFTWdJUCxjTmhJTzs7QU1vSVg7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQSxlTmhJVTtFTWlJVjtFQUNBLFdOM0hVO0VNNEhWLGtCTnhLTTtFTXlLTixZTmpIVTtFTWtIVjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV05uSVE7RU1vSVI7RUFDQTtFQUNBLE9ObExNOzs7QU1xTFI7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXTjlKUTtFTStKUjtFQUNBO0VBQ0E7RUFDQTs7O0FBSUE7RUFDRSxrQk5sTkk7RU1tTko7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQSxXTnRMVTtFTXVMVjs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU4vTVU7RU1nTlY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFdOck5VOzs7QU15Tlo7RUFDRTtFQUNBLGVOak9VO0VNa09WLFNOMU9XO0VNMk9YLGtCTnpRTTtFTTBRTjtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5uUFU7RU1vUFY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV050UFE7RU11UFIsZU54UVc7RU15UVg7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9OcFNTO0VNcVNULFdOalFRO0VNa1FSLGVObFJXO0VNbVJYOzs7QUFHRjtFQUNFO0VBQ0EsS052Ulc7RU13UlgsV056UVE7RU0wUVIsZU4xUlc7OztBTTZSYjtFQUNFLE9ObFRTO0VNbVRUOzs7QUFHRjtFQUNFLE9OdFRTOzs7QU15VFg7RUFDRTtFQUNBO0VBQ0EsS056U1c7OztBTTRTYjtFQUNFO0VBQ0EsS043U1c7RU04U1gsV04vUlE7OztBTWtTVjtFQUNFLE9OdlVTO0VNd1VUOzs7QUFHRjtFQUNFLE9OM1VTOzs7QU04VVg7RUFDRSxPTmhWUztFTWlWVCxXTjdTUTtFTThTUixZTjdUVztFTThUWDs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV052VFE7RU13VFIsT05wV007RU1xV047OztBQUdGO0VBQ0UsT05uV1M7RU1vV1Q7RUFDQSxXTmpVUTtFTWtVUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0UsV041VVE7RU02VVI7RUFDQSxlTnBWVTtFTXFWVixTTjVWVztFTTZWWCxrQk4zWE07RU00WE4sWU5wVVU7RU1xVVY7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5wV1U7RU1xV1Y7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV052V1E7RU13V1I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPTnhaTTtFTXlaTjs7O0FBR0Y7RUFDRSxPTnZaUztFTXdaVCxXTnBYUTtFTXFYUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS04xWVc7RU0yWVgsV041WFE7OztBTStYVjtFQUNFLE9OcGFTO0VNcWFUOzs7QUFHRjtFQUNFO0VBQ0EsT05oYk07RU1pYk47OztBQVFGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FDcmVGO0VBQ0U7RUFDQTtFQUNBLEtQNkJXO0VPNUJYOzs7QUFLRjtFQUNFLGVQcUJXOzs7QU9sQmI7RUFDRSxXUG1DUTtFT2xDUjtFQUNBLE9QSFM7RU9JVDs7O0FBR0Y7RUFDRSxXUDBCUTtFT3pCUixPUFpTO0VPYVQ7RUFDQTs7O0FBSUY7RUFDRSxXUGlCVTtFT2hCVixPUGxCUztFT21CVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUFRXOzs7QU9ZYjtFQUNFLFdQRVE7RU9EUjtFQUNBLE9QbENTO0VPbUNUOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0EsZVBoQlU7RU9pQlYsV1BUVTtFT1VWLE9QM0NTO0VPNENULGtCUHZETTtFT3dETjtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNFLE9QdkRPOztBTzBEVDtBQUFBO0VBQ0UsY1BuRE87RU9vRFA7O0FBR0Y7QUFBQTtFQUNFLGtCUG5FTztFT29FUDtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLEtQekRXOzs7QU80RGI7RUFDRSxXUDlDUTtFTytDUjtFQUNBLE9QbEZTO0VPbUZUOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0RVO0VPZ0VWLFdQeERVO0VPeURWLE9QMUZTO0VPMkZULGtCUHRHTTtFT3VHTjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLGNQL0ZPO0VPZ0dQOztBQUdGO0VBQ0Usa0JQL0dPO0VPZ0hQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlUDFGVTtFTzJGVixXUG5GVTtFT29GVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZUHZIUztFT3dIVCxPUHZJTTs7QU95SU47RUFDRSxZUDFITzs7QU82SFQ7RUFDRTs7QUFHRjtFQUNFLFlQN0lPO0VPOElQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQSxlUHRIVTtFT3VIVixTUDlIVztFTytIWCxrQlA3Sk07RU84Sk4sWVB2R1U7RU93R1Y7O0FBRUE7RUFDRSxZUDFHUTs7O0FPOEdaO0VBQ0UsV1B6SFE7RU8wSFI7RUFDQSxPUDlKUztFTytKVDs7O0FBR0Y7RUFDRSxXUGxJVTtFT21JVixPUHRLUztFT3VLVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0EsY1B4Slc7RU95Slg7OztBQUdGO0VBQ0UsV1BoSlU7RU9pSlYsT1BuTFM7RU9vTFQ7RUFDQSxlUHBLVzs7QU9zS1g7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0EsZVB0S1U7RU91S1Y7OztBQUlGO0VBQ0UsT1BqTVM7RU9rTVQ7RUFDQSxXUHRLVTtFT3VLVjs7QUFFQTtFQUNFLE9QdE1PO0VPdU1QOztBQUdGO0VBQ0UsT1A1TU87OztBT2lOWDtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0xVO0VPZ01WLGtCUHJPTTtFT3NPTixZUC9LVTs7O0FPa0xaO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLGtCUDlPUTs7O0FPaVBWO0VBQ0U7RUFDQTtFQUNBLFdQM01RO0VPNE1SO0VBQ0EsT1AvT1M7RU9nUFQ7RUFDQTs7O0FBSUE7RUFDRTs7QUFFQTtFQUNFLGtCUGhRSTs7QU9tUU47RUFDRTs7O0FBS047RUFDRTtFQUNBLFdQak9VO0VPa09WLE9QcFFTO0VPcVFUOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUHhQVztFT3lQWCIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4ubWVzc2FnZS1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi51c2VyIHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICB9XHJcblxyXG4gICYuYXNzaXN0YW50IHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtYnViYmxlIHtcclxuICBtYXgtd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAmLnVzZXIge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweCAxOHB4IDRweCAxOHB4O1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAmLmFzc2lzdGFudCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxOHB4IDE4cHggMThweCA0cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZ3JheS01MDtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC5tZXNzYWdlLXR5cGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ubWVzc2FnZS10aW1lIHtcclxuICBmb250LXNpemU6ICR0ZXh0LXhzO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuICBtYXJnaW4tdG9wOiAkc3BhY2luZy14cztcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS51c2VyIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS5hc3Npc3RhbnQge1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi5tYXJrZG93bi1jb250ZW50IHtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblxyXG4gICYrLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBQYXJhZ3JhZmxhclxyXG4gIHAge1xyXG4gICAgbWFyZ2luOiAwIDAgMTJweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua2xlclxyXG4gIGEge1xyXG4gICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZmFzdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjNzY0YmEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdGVsZXJcclxuICB1bCxcclxuICBvbCB7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICB9XHJcblxyXG4gIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBvbCB7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1bGxldCBwb2ludCBpw6dpblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBjb2xvcjogIzY2N2VlYTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZXN0ZWQgbGlzdCBpw6dpbiBkYWhhIGl5aSBnw7Zyw7xuw7xtXHJcbiAgICB1bCxcclxuICAgIG9sIHtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElubGluZSBrb2RcclxuICBjb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XHJcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XHJcbiAgfVxyXG5cclxuICAvLyBLb2QgYmxva2xhcsSxXHJcbiAgcHJlIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTUwO1xyXG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XHJcblxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6ICRncmF5LTgwMDtcclxuICAgICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZ1cmd1IG1ldG5pXHJcbiAgc3Ryb25nLFxyXG4gIGIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gxLB0YWxpayBtZXRpblxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuXHJcbiAgLy8gQmHFn2zEsWtsYXJcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNiB7XHJcbiAgICBtYXJnaW46IDE2cHggMCA4cHggMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LXhsO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgfVxyXG5cclxuICBoMiB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgaDQsXHJcbiAgaDUsXHJcbiAgaDYge1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICB9XHJcblxyXG4gIC8vIEFsxLFudMSxbGFyXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjdlZWE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgb3BhY2l0eTogMC45O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAkcmFkaXVzLXNtICRyYWRpdXMtc20gMDtcclxuXHJcbiAgICBwIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gWWF0YXkgw6dpemdpXHJcbiAgaHIge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIG1hcmdpbjogMTZweCAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibG9sYXJcclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICB9XHJcblxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIH1cclxuXHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXktMzAwO1xyXG4gIH1cclxuXHJcbiAgdHI6bGFzdC1jaGlsZCB0ZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR8O2cnNlbGxlclxyXG4gIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgbWFyZ2luOiA4cHggMDtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrYm94IGxpc3RlbGVyIChHaXRIdWIgc3R5bGUpXHJcbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLy8gVXNlciBtZXNzYWdlIHNwZWNpZmljIHN0eWxlc1xyXG4ubWVzc2FnZS1idWJibGUudXNlciB7XHJcbiAgLm1hcmtkb3duLWNvbnRlbnQge1xyXG4gICAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgICAvLyBMaW5rbGVyXHJcbiAgICBhIHtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQnVsbGV0IHBvaW50c1xyXG4gICAgbGk6OmJlZm9yZSB7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS29kIGJsb2tsYXLEsVxyXG4gICAgcHJlIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCYcWfbMSxa2xhclxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWzEsW50xLFsYXJcclxuICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWWF0YXkgw6dpemdpXHJcbiAgICBociB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYWJsb2xhclxyXG4gICAgdGFibGUge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQXNzaXN0YW50IG1lc3NhZ2Ugc3BlY2lmaWMgc3R5bGVzXHJcbi5tZXNzYWdlLWJ1YmJsZS5hc3Npc3RhbnQge1xyXG4gIC5tYXJrZG93bi1jb250ZW50IHtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcblxyXG4gICAgLy8gTGlua2xlclxyXG4gICAgYSB7XHJcbiAgICAgIGNvbG9yOiAjNjY3ZWVhO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdWxsZXQgcG9pbnRzXHJcbiAgICBsaTo6YmVmb3JlIHtcclxuICAgICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEtvZCBibG9rbGFyxLFcclxuICAgIHByZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yMDA7XHJcblxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmHFn2zEsWtsYXJcclxuICAgIGgxLFxyXG4gICAgaDIsXHJcbiAgICBoMyxcclxuICAgIGg0LFxyXG4gICAgaDUsXHJcbiAgICBoNiB7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICB9XHJcblxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkZ3JheS0yMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVnVyZ3VcclxuICAgIHN0cm9uZyxcclxuICAgIGIge1xyXG4gICAgICBjb2xvcjogJGdyYXktOTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsxLFudMSxbGFyXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICM2NjdlZWE7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGFibG9sYXJcclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCIvLyBDb2xvciBWYXJpYWJsZXNcclxuJHByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcbiRidXR0b24tZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcblxyXG4kd2hpdGU6ICNmZmZmZmY7XHJcbiRibGFjazogIzFhMWExYTtcclxuJGdyYXktNTA6ICNmOGZhZmM7XHJcbiRncmF5LTEwMDogI2YxZjVmOTtcclxuJGdyYXktMjAwOiAjZTJlOGYwO1xyXG4kZ3JheS0zMDA6ICNjYmQ1ZTE7XHJcbiRncmF5LTQwMDogIzk0YTNiODtcclxuJGdyYXktNTAwOiAjNjQ3NDhiO1xyXG4kZ3JheS02MDA6ICM0NzU1Njk7XHJcbiRncmF5LTcwMDogIzMzNDE1NTtcclxuJGdyYXktODAwOiAjMWUyOTNiO1xyXG4kZ3JheS05MDA6ICMwZjE3MmE7XHJcblxyXG4vLyBCcmFuZCBDb2xvcnNcclxuJGJsdWUtNTAwOiAjM2I4MmY2O1xyXG4kYmx1ZS02MDA6ICMyNTYzZWI7XHJcbiRibHVlLTcwMDogIzFkNGVkODtcclxuXHJcbi8vIFN0YXR1cyBDb2xvcnNcclxuJGVycm9yOiAjZWY0NDQ0O1xyXG4kZXJyb3ItZGFyazogI2RjMjYyNjtcclxuJHdhcm5pbmc6ICNmNTllMGI7XHJcbiR3YXJuaW5nLWRhcms6ICNkOTc3MDY7XHJcbiRzdWNjZXNzOiAjMTBiOTgxO1xyXG4kc3VjY2Vzcy1kYXJrOiAjMDU5NjY5O1xyXG5cclxuLy8gU3BhY2luZ1xyXG4kc3BhY2luZy14czogNHB4O1xyXG4kc3BhY2luZy1zbTogOHB4O1xyXG4kc3BhY2luZy1tZDogMTJweDtcclxuJHNwYWNpbmctbGc6IDE2cHg7XHJcbiRzcGFjaW5nLXhsOiAyMHB4O1xyXG4kc3BhY2luZy0yeGw6IDI0cHg7XHJcblxyXG4vLyBCb3JkZXIgUmFkaXVzXHJcbiRyYWRpdXMtc206IDRweDtcclxuJHJhZGl1cy1tZDogOHB4O1xyXG4kcmFkaXVzLWxnOiAxMnB4O1xyXG4kcmFkaXVzLXhsOiAxNnB4O1xyXG4kcmFkaXVzLWZ1bGw6IDUwJTtcclxuXHJcbi8vIEZvbnQgU2l6ZXNcclxuJHRleHQteHM6IDExcHg7XHJcbiR0ZXh0LXNtOiAxMnB4O1xyXG4kdGV4dC1iYXNlOiAxM3B4O1xyXG4kdGV4dC1tZDogMTRweDtcclxuJHRleHQtbGc6IDE2cHg7XHJcbiR0ZXh0LXhsOiAxOHB4O1xyXG5cclxuLy8gVHJhbnNpdGlvbnNcclxuJHRyYW5zaXRpb24tZmFzdDogMC4xNXMgZWFzZTtcclxuJHRyYW5zaXRpb24tYmFzZTogMC4ycyBlYXNlO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjNzIGVhc2U7XHJcblxyXG4vLyBTaGFkb3dzXHJcbiRzaGFkb3ctc206IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4kc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcclxuJHNoYWRvdy1sZzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4kc2hhZG93LXhsOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcblxyXG4iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkcmFkaXVzLWxnICRyYWRpdXMtbGc7XHJcbn1cclxuXHJcbi50ZXh0YXJlYSB7XHJcbiAgZmxleDogMTtcclxuICBtaW4taGVpZ2h0OiA0NHB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHBhZGRpbmc6IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDIycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIHJlc2l6ZTogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbiAgY29sb3I6ICRncmF5LTcwMDtcclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTtcclxuICB9XHJcbn1cclxuXHJcbi5zZW5kLWJ1dHRvbiB7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1iYXNlO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcblxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMjAwO1xyXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICB9XHJcblxyXG4gICY6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi5oZWFkZXIge1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmxvZ28tY29udGFpbmVyIHtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubG9nby1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxufVxyXG5cclxuLmxvZ28tdGV4dCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1sZztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnN0YXR1cy10ZXh0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4uYnV0dG9uLXNpemVzIHtcclxuICAmLnNtYWxsIHtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5tZWRpdW0ge1xyXG4gICAgd2lkdGg6IDYwcHg7XHJcbiAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAmLmxhcmdlIHtcclxuICAgIHdpZHRoOiA3MHB4O1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmZsb2F0aW5nLWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogJHNwYWNpbmcteGw7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1sZztcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuICB6LWluZGV4OiAxMDAwO1xyXG5cclxuICAmLmJvdHRvbS1sZWZ0IHtcclxuICAgIGxlZnQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20tcmlnaHQge1xyXG4gICAgcmlnaHQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy14bDtcclxuICB9XHJcbn1cclxuXHJcbi5jaGF0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogOTBweDtcclxuICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XHJcblxyXG4gICYuYm90dG9tLWxlZnQge1xyXG4gICAgbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tLXJpZ2h0IHtcclxuICAgIHJpZ2h0OiAkc3BhY2luZy14bDtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5pcy1vcGVuKSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIHotaW5kZXg6IDk5ODtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgJjpub3QoLmlzLW9wZW4pIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhdGJvdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGFpbmVyIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGc7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmcteHM7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbn1cclxuXHJcbi5lbXB0eS1zdGF0ZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDQwcHggJHNwYWNpbmcteGw7XHJcblxyXG4gIC5lbXB0eS1zdGF0ZS1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDAgOHB4IDA7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtZGVzY3JpcHRpb24ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgb3BhY2l0eTogMC44O1xyXG4gIH1cclxufSIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG5Aa2V5ZnJhbWVzIHNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGluZy1zcGlubmVyIHtcclxuICB3aWR0aDogMTZweDtcclxuICBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWZ1bGw7XHJcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1jb250YWluZXIge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy1sZztcclxuICBtYXJnaW46IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBnYXA6IDEycHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFuaW1hdGlvbjogc2xpZGVEb3duICR0cmFuc2l0aW9uLXNsb3cgZWFzZS1vdXQ7XHJcblxyXG4gICYuZXJyb3Ige1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGVycm9yIDAlLCAkZXJyb3ItZGFyayAxMDAlKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRlcnJvci1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgJi53YXJuaW5nIHtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3YXJuaW5nIDAlLCAkd2FybmluZy1kYXJrIDEwMCUpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctZGFyaztcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNDUsIDE1OCwgMTEsIDAuMik7XHJcbiAgfVxyXG5cclxuICAmLnN1Y2Nlc3Mge1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHN1Y2Nlc3MgMCUsICRzdWNjZXNzLWRhcmsgMTAwJSk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3VjY2Vzcy1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1pY29uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBmbGV4LXNocmluazogMDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuXHJcbi5hbGVydC1jb250ZW50IHtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uYWxlcnQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuLmFsZXJ0LW1lc3NhZ2Uge1xyXG4gIG1hcmdpbjogMDtcclxuICBsaW5lLWhlaWdodDogMS41O1xyXG4gIG9wYWNpdHk6IDAuOTU7XHJcbn1cclxuXHJcbi5hbGVydC1saXN0IHtcclxuICBtYXJnaW46ICRzcGFjaW5nLXNtIDAgMCAwO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLmFsZXJ0LWxpc3QtaXRlbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG5cclxuICBsaT5zcGFuIHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgfVxyXG5cclxuICBsaT5jb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYWxlcnQtY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMnB4O1xyXG4gIHJpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgcGFkZGluZzogMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi51aS1yZW5kZXJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5mb3JtLWNvbXBvbmVudCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctMnhsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZm9ybS10aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmZvcm0tZmllbGRzIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy14bDtcclxufVxyXG5cclxuLmZvcm0tZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZm9ybS1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAkc3BhY2luZy14cztcclxuXHJcbiAgc3BhbiB7XHJcbiAgICBjb2xvcjogJGVycm9yO1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICB9XHJcbn1cclxuXHJcbi5mb3JtLWlucHV0LFxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWZhc3QsIGJveC1zaGFkb3cgJHRyYW5zaXRpb24tZmFzdDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcm0tc3VibWl0LWJ1dHRvbiB7XHJcbiAgbWFyZ2luLXRvcDogJHNwYWNpbmctMnhsO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLTJ4bDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdCwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZSB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9ucyBDb21wb25lbnRcclxuLmJ1dHRvbnMtY29tcG9uZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5idXR0b24tY29tcG9uZW50IHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIHBhZGRpbmc6IDEwcHggJHNwYWNpbmcteGw7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuXHJcbiAgJi5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtNjAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRibHVlLTYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuc2Vjb25kYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XHJcbiAgICBjb2xvcjogJGdyYXktNjAwO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM5Y2EzYWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkZXJyb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpub3QoLnByaW1hcnkpOm5vdCguc2Vjb25kYXJ5KTpub3QoLmRhbmdlcik6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcclxuICAgIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUYWJsZSBDb21wb25lbnRcclxuLnRhYmxlLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4udGFibGUtY2FwdGlvbiB7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGcgJHNwYWNpbmcteGw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuLnRhYmxlLXdyYXBwZXIge1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi50YWJsZS1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbn1cclxuXHJcbi50YWJsZS10aCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlMGUwZTA7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy14bDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBjb2xvcjogIzRhNTU2ODtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4udGFibGUtdGJvZHkge1xyXG4gIHRyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdGQge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICA+c3BhbiB7XHJcbiAgICBjb2xvcjogI2EwYTBhMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS1jZWxsLWltYWdlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1pbWFnZSB7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRhYmxlLWNlbGwtdGV4dCB7XHJcbiAgY29sb3I6ICMyZDM3NDg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLnRhYmxlLWVtcHR5IHtcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzljYTNhZjtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbn1cclxuXHJcbi8vIENhcmQgQ29tcG9uZW50XHJcbi5jYXJkLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLXhsO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG59XHJcblxyXG4uY2FyZC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmNhcmQtaW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICBmbGV4OiAxO1xyXG4gIG1pbi13aWR0aDogMDtcclxufVxyXG5cclxuLmNhcmQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbi5jYXJkLXN1YnRpdGxlIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAkc3BhY2luZy1zbTtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMtbGFiZWwge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmNhcmQtc3RhdHVzLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi10b3A6ICRzcGFjaW5nLXNtO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5jYXJkLWxpc3QtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtZ3JpZCB7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0taW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLWluZm8ge1xyXG4gIGZsZXg6IDE7XHJcbiAgbWluLXdpZHRoOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLXRpdGxlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tc3VidGl0bGUge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5LWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtaXRlbS1sZWdhY3ktdmFsdWUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgY29sb3I6ICRibGFjaztcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8vIEZpZWxkIHJlbmRlcmVyXHJcbi5maWVsZC10ZXh0IHtcclxuICAvLyBUZXh0IGZpZWxkIHN0eWxlcyBpZiBuZWVkZWRcclxufVxyXG5cclxuLmZpZWxkLWltYWdlIHtcclxuICB3aWR0aDogMjRweDtcclxuICBoZWlnaHQ6IDI0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5maWVsZC1saW5rIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmZpZWxkLWJhZGdlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgJi5zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGZjZTU7XHJcbiAgICBjb2xvcjogIzFhN2YzNjtcclxuICB9XHJcblxyXG4gICYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmN2Q2O1xyXG4gICAgY29sb3I6ICM4YTZhMDA7XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNGU0O1xyXG4gICAgY29sb3I6ICNiNDIzMTg7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguc3VjY2Vzcyk6bm90KC53YXJuaW5nKTpub3QoLmRhbmdlcikge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gIH1cclxufVxyXG5cclxuLmZpZWxkLWxpc3Qge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcbn0iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy1sZztcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgIFxyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLW1kO1xyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkZ3JheS05MDA7XHJcbiAgbWFyZ2luOiAwIDAgJHNwYWNpbmctc20gMDtcclxufVxyXG5cclxuLmdlbmVyYXRpdmUtdWktZGVzY3JpcHRpb24ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLy8gVGV4dCBDb21wb25lbnRcclxuLmdlbi11aS10ZXh0IHtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTgwMDtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gSW5wdXQgQ29tcG9uZW50XHJcbi5nZW4tdWktaW5wdXQtd3JhcHBlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctc207XHJcbn1cclxuXHJcbi5nZW4tdWktaW5wdXQtbGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmdlbi11aS1pbnB1dCxcclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblxyXG4gICY6OnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkZ3JheS00MDA7XHJcbiAgfVxyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgbWluLWhlaWdodDogODBweDtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG4vLyBTZWxlY3QgQ29tcG9uZW50XHJcbi5nZW4tdWktc2VsZWN0LXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdC1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9uIENvbXBvbmVudFxyXG4uZ2VuLXVpLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAxMHB4ICRzcGFjaW5nLWxnO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tYmFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6ICRibHVlLTYwMDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICRibHVlLTcwMDtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTMwMDtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDYXJkIENvbXBvbmVudFxyXG4uZ2VuLXVpLWNhcmQge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJHRyYW5zaXRpb24tYmFzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS1jYXJkLXRpdGxlIHtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRncmF5LTkwMDtcclxuICBtYXJnaW46IDAgMCAkc3BhY2luZy1zbSAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWNhcmQtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi8vIExpc3QgQ29tcG9uZW50XHJcbi5nZW4tdWktbGlzdCB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWxpc3QtaXRlbSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14cztcclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbWFnZSBDb21wb25lbnRcclxuLmdlbi11aS1pbWFnZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vLyBMaW5rIENvbXBvbmVudFxyXG4uZ2VuLXVpLWxpbmsge1xyXG4gIGNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1iYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAkYmx1ZS03MDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gICY6dmlzaXRlZCB7XHJcbiAgICBjb2xvcjogJGJsdWUtNjAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8gVGFibGUgQ29tcG9uZW50XHJcbi5nZW4tdWktdGFibGUtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1sZztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5nZW4tdWktdGFibGUtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS10aCB7XHJcbiAgcGFkZGluZzogMTJweCAkc3BhY2luZy1sZztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS1ib2R5IHtcclxuICB0ciB7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLWJhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTUwO1xyXG4gICAgfVxyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZ2VuLXVpLXRhYmxlLXRkIHtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLWxnO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktODAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5nZW4tdWktZm9ybSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiJdfQ== */`;
1451
+ document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
30
1452
 
31
1453
  // src/utils/cx.ts
32
1454
  function validateHeaders(headers, authConfig, opts = {}) {
1455
+ if (headers && (!authConfig || Object.keys(authConfig).length === 0)) {
1456
+ return {
1457
+ isValid: false,
1458
+ missingKeys: [],
1459
+ extraKeys: [],
1460
+ emptyValueKeys: [],
1461
+ warning: "Auth config bo\u015F ya da tan\u0131ms\u0131z, header do\u011Frulamas\u0131 yap\u0131lam\u0131yor."
1462
+ };
1463
+ }
33
1464
  const { caseSensitive = false, allowExtra = false } = opts;
34
- const normalize = (s) => (caseSensitive ? s : s.toLowerCase());
1465
+ const normalize = (s) => caseSensitive ? s : s.toLowerCase();
35
1466
  const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);
36
1467
  const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);
37
1468
  const headerKeys = headerEntries.map(([k]) => k);
@@ -48,174 +1479,63 @@ function validateHeaders(headers, authConfig, opts = {}) {
48
1479
  const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;
49
1480
  return { isValid, missingKeys, extraKeys, emptyValueKeys };
50
1481
  }
51
-
52
- // src/store/static.ts
53
- var defaultConfig = {
54
- auth_config: {
55
- header: "",
56
- },
57
- chat_widget_settings: {
58
- welcome_message: "Merhaba! Size nas\u0131l yard\u0131mc\u0131 olabilirim?",
59
- button_background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
60
- placeholder: "Mesaj\u0131n\u0131z\u0131 yaz\u0131n...",
61
- button_position: "bottom-left",
62
- button_size: "medium",
63
- chat_width: "400px",
64
- chat_height: "600px",
65
- show_typing_indicator: true,
66
- initial_open: true,
67
- header_background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
68
- company_logo: "",
69
- company_name: "Aizek",
70
- api_source_id: 0,
71
- chat_widget_settings_id: 0,
72
- created_at: "",
73
- updated_at: "",
74
- },
75
- mcp_url: "",
76
- openai_key: "",
77
- };
78
- var GENERATIVE_UI_SYSTEM_PROMPT = `
79
- You can generate interactive UI components as part of your responses.
80
- When users need to:
81
- - Provide multiple pieces of information \u2192 Generate a FORM
82
- - Make a choice between options \u2192 Generate BUTTONS
83
- - View structured data \u2192 Generate a TABLE or LIST
84
- - See entity details \u2192 Generate a CARD
85
-
86
- For each component type, include JSON in this format:
87
-
88
- \`\`\`ui-component
89
- {
90
- "version": "1.0",
91
- "title": string,
92
- "description"?: string,
93
- "components": Array<{
94
- id: string,
95
- type:
96
- | "text"
97
- | "input"
98
- | "button"
99
- | "select"
100
- | "card"
101
- | "list"
102
- | "image"
103
- | "link"
104
- | "table"
105
- | "form",
106
- label?: string,
107
- fieldType?: "text" | "number" | "date" | "textarea",
108
- requiredField?: boolean,
109
- placeholder?: string,
110
- options?: string[],
111
- columns?: string[],
112
- rows?: string[][],
113
- url?: string,
114
- fieldName?: string
115
- buttonType?: click | submit
116
- }>
117
- }
118
- \`\`\`
119
-
120
-
121
-
122
-
123
-
124
- Always provide both a conversational text response AND appropriate UI components.
125
-
126
- `;
127
1482
  var HeaderAlert = ({ headerValidation, showAlert, setShowAlert }) => {
128
1483
  if (!headerValidation || !showAlert) return null;
129
- const { isValid, missingKeys, extraKeys, emptyValueKeys } = headerValidation;
130
- if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0) {
1484
+ const { isValid, missingKeys, extraKeys, emptyValueKeys, warning } = headerValidation;
1485
+ if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0 && !warning) {
131
1486
  return null;
132
1487
  }
133
1488
  const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;
134
- const hasWarnings = extraKeys.length > 0;
1489
+ const hasWarnings = extraKeys.length > 0 || !!warning;
135
1490
  const alertType = hasErrors ? "error" : "warning";
136
1491
  const getAlertIcon = () => {
137
1492
  if (hasErrors) {
138
- return /* @__PURE__ */ jsx("svg", {
139
- width: "20",
140
- height: "20",
141
- viewBox: "0 0 24 24",
142
- fill: "currentColor",
143
- children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }),
144
- });
1493
+ return /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) });
145
1494
  }
146
1495
  return /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
147
1496
  };
148
- return /* @__PURE__ */ jsx(Fragment, {
149
- children: /* @__PURE__ */ jsxs("div", {
150
- className: `alert-container ${alertType}`,
151
- children: [
152
- /* @__PURE__ */ jsx("div", { className: "alert-icon-container", children: getAlertIcon() }),
153
- /* @__PURE__ */ jsxs("div", {
154
- className: "alert-content",
155
- children: [
156
- /* @__PURE__ */ jsx("h4", { className: "alert-title", children: hasErrors ? "Header Do\u011Frulama Hatas\u0131" : "Header Uyar\u0131s\u0131" }),
157
- /* @__PURE__ */ jsx("p", {
158
- className: "alert-message",
159
- children:
160
- hasErrors && hasWarnings
161
- ? "Header yap\u0131land\u0131rman\u0131zda hatalar ve uyar\u0131lar bulundu."
162
- : hasErrors
163
- ? "Header yap\u0131land\u0131rman\u0131zda hatalar bulundu."
164
- : "Header yap\u0131land\u0131rman\u0131zda fazla anahtarlar bulundu.",
165
- }),
166
- missingKeys.length > 0 &&
167
- /* @__PURE__ */ jsxs("div", {
168
- children: [
169
- /* @__PURE__ */ jsx("strong", { children: "Eksik Header'lar:" }),
170
- /* @__PURE__ */ jsx("ul", {
171
- className: "alert-list",
172
- children: missingKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [/* @__PURE__ */ jsx("span", { children: "\u2022" }), /* @__PURE__ */ jsx("code", { children: key })] }, index)),
173
- }),
174
- ],
175
- }),
176
- emptyValueKeys.length > 0 &&
177
- /* @__PURE__ */ jsxs("div", {
178
- children: [
179
- /* @__PURE__ */ jsx("strong", { children: "Bo\u015F De\u011Ferli Header'lar:" }),
180
- /* @__PURE__ */ jsx("ul", {
181
- className: "alert-list",
182
- children: emptyValueKeys.map((key, index) =>
183
- /* @__PURE__ */ jsxs(
184
- "li",
185
- { className: "alert-list-item", children: [/* @__PURE__ */ jsx("span", { children: "\u2022" }), /* @__PURE__ */ jsx("code", { children: key }), /* @__PURE__ */ jsx("span", { children: "(de\u011Fer bo\u015F olamaz)" })] },
186
- index
187
- )
188
- ),
189
- }),
190
- ],
191
- }),
192
- extraKeys.length > 0 &&
193
- /* @__PURE__ */ jsxs("div", {
194
- children: [
195
- /* @__PURE__ */ jsx("strong", { children: "Fazla Header'lar:" }),
196
- /* @__PURE__ */ jsx("ul", {
197
- className: "alert-list",
198
- children: extraKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [/* @__PURE__ */ jsx("span", { children: "\u2022" }), /* @__PURE__ */ jsx("code", { children: key })] }, index)),
199
- }),
200
- ],
201
- }),
202
- ],
203
- }),
204
- /* @__PURE__ */ jsx("button", {
205
- onClick: () => setShowAlert(false),
206
- className: "alert-close-button",
207
- "aria-label": "Uyar\u0131y\u0131 kapat",
208
- children: /* @__PURE__ */ jsx("svg", {
209
- width: "16",
210
- height: "16",
211
- viewBox: "0 0 24 24",
212
- fill: "currentColor",
213
- children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }),
214
- }),
215
- }),
216
- ],
217
- }),
218
- });
1497
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: `alert-container ${alertType}`, children: [
1498
+ /* @__PURE__ */ jsx("div", { className: "alert-icon-container", children: getAlertIcon() }),
1499
+ /* @__PURE__ */ jsxs("div", { className: "alert-content", children: [
1500
+ /* @__PURE__ */ jsx("h4", { className: "alert-title", children: hasErrors ? "Header Do\u011Frulama Hatas\u0131" : "Header Uyar\u0131s\u0131" }),
1501
+ /* @__PURE__ */ jsx("p", { className: "alert-message", children: hasErrors && hasWarnings ? "Header yap\u0131land\u0131rman\u0131zda hatalar ve uyar\u0131lar bulundu." : hasErrors ? "Header yap\u0131land\u0131rman\u0131zda hatalar bulundu." : "Header yap\u0131land\u0131rman\u0131zda fazla anahtarlar bulundu." }),
1502
+ missingKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1503
+ /* @__PURE__ */ jsx("strong", { children: "Eksik Header'lar:" }),
1504
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: missingKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1505
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1506
+ /* @__PURE__ */ jsx("code", { children: key })
1507
+ ] }, index)) })
1508
+ ] }),
1509
+ emptyValueKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1510
+ /* @__PURE__ */ jsx("strong", { children: "Bo\u015F De\u011Ferli Header'lar:" }),
1511
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: emptyValueKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1512
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1513
+ /* @__PURE__ */ jsx("code", { children: key }),
1514
+ /* @__PURE__ */ jsx("span", { children: "(de\u011Fer bo\u015F olamaz)" })
1515
+ ] }, index)) })
1516
+ ] }),
1517
+ extraKeys.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
1518
+ /* @__PURE__ */ jsx("strong", { children: "Fazla Header'lar:" }),
1519
+ /* @__PURE__ */ jsx("ul", { className: "alert-list", children: extraKeys.map((key, index) => /* @__PURE__ */ jsxs("li", { className: "alert-list-item", children: [
1520
+ /* @__PURE__ */ jsx("span", { children: "\u2022" }),
1521
+ /* @__PURE__ */ jsx("code", { children: key })
1522
+ ] }, index)) })
1523
+ ] }),
1524
+ warning && /* @__PURE__ */ jsxs("div", { children: [
1525
+ /* @__PURE__ */ jsx("strong", { children: "Uyar\u0131:" }),
1526
+ /* @__PURE__ */ jsx("p", { className: "alert-message", children: warning })
1527
+ ] })
1528
+ ] }),
1529
+ /* @__PURE__ */ jsx(
1530
+ "button",
1531
+ {
1532
+ onClick: () => setShowAlert(false),
1533
+ className: "alert-close-button",
1534
+ "aria-label": "Uyar\u0131y\u0131 kapat",
1535
+ children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
1536
+ }
1537
+ )
1538
+ ] }) });
219
1539
  };
220
1540
  var LoadingSpinner = () => {
221
1541
  return /* @__PURE__ */ jsx("div", { className: "loading-spinner" });
@@ -245,29 +1565,29 @@ var ChatInput = ({ isLoading, placeholder, handleSendMessage }) => {
245
1565
  textarea.style.height = "auto";
246
1566
  textarea.style.height = Math.min(textarea.scrollHeight, 120) + "px";
247
1567
  };
248
- return /* @__PURE__ */ jsxs("form", {
249
- onSubmit: handleSubmit,
250
- className: "input-container",
251
- children: [
252
- /* @__PURE__ */ jsx("textarea", {
1568
+ return /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "input-container", children: [
1569
+ /* @__PURE__ */ jsx(
1570
+ "textarea",
1571
+ {
253
1572
  ref: textareaRef,
254
1573
  value: message,
255
1574
  onChange: handleInputChange,
256
1575
  onKeyDown: handleKeyDown,
257
1576
  placeholder,
258
1577
  disabled: isLoading,
259
- className: "textarea",
260
- }),
261
- /* @__PURE__ */ jsx("button", {
1578
+ className: "textarea"
1579
+ }
1580
+ ),
1581
+ /* @__PURE__ */ jsx(
1582
+ "button",
1583
+ {
262
1584
  type: "submit",
263
1585
  disabled: isLoading || !message.trim(),
264
1586
  className: "send-button",
265
- children: isLoading
266
- ? /* @__PURE__ */ jsx(LoadingSpinner, {})
267
- : /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }) }),
268
- }),
269
- ],
270
- });
1587
+ children: isLoading ? /* @__PURE__ */ jsx(LoadingSpinner, {}) : /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }) })
1588
+ }
1589
+ )
1590
+ ] });
271
1591
  };
272
1592
  var GenericUIRenderer = ({ uiData, onInteraction }) => {
273
1593
  const containerRef = useRef(null);
@@ -297,40 +1617,30 @@ var GenericUIRenderer = ({ uiData, onInteraction }) => {
297
1617
  case "text":
298
1618
  return /* @__PURE__ */ jsx("p", { className: "gen-ui-text", children: comp.value ?? comp.label }, comp.id);
299
1619
  case "input":
300
- return /* @__PURE__ */ jsxs(
301
- "div",
302
- {
303
- className: "gen-ui-input-wrapper",
304
- children: [
305
- comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-input-label", children: comp.label }),
306
- comp.fieldType === "textarea"
307
- ? /* @__PURE__ */ jsx("textarea", {
308
- name: comp.id,
309
- placeholder: comp.placeholder,
310
- className: "gen-ui-textarea",
311
- })
312
- : /* @__PURE__ */ jsx("input", {
313
- name: comp.id,
314
- type: comp.fieldType || "text",
315
- placeholder: comp.placeholder,
316
- className: "gen-ui-input",
317
- }),
318
- ],
319
- },
320
- comp.id
321
- );
1620
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-input-wrapper", children: [
1621
+ comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-input-label", children: comp.label }),
1622
+ comp.fieldType === "textarea" ? /* @__PURE__ */ jsx(
1623
+ "textarea",
1624
+ {
1625
+ name: comp.id,
1626
+ placeholder: comp.placeholder,
1627
+ className: "gen-ui-textarea"
1628
+ }
1629
+ ) : /* @__PURE__ */ jsx(
1630
+ "input",
1631
+ {
1632
+ name: comp.id,
1633
+ type: comp.fieldType || "text",
1634
+ placeholder: comp.placeholder,
1635
+ className: "gen-ui-input"
1636
+ }
1637
+ )
1638
+ ] }, comp.id);
322
1639
  case "select":
323
- return /* @__PURE__ */ jsxs(
324
- "div",
325
- {
326
- className: "gen-ui-select-wrapper",
327
- children: [
328
- comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-select-label", children: comp.label }),
329
- /* @__PURE__ */ jsx("select", { name: comp.id, className: "gen-ui-select", children: comp.options?.map((opt) => /* @__PURE__ */ jsx("option", { value: opt, children: opt }, opt)) }),
330
- ],
331
- },
332
- comp.id
333
- );
1640
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-select-wrapper", children: [
1641
+ comp.label && /* @__PURE__ */ jsx("label", { className: "gen-ui-select-label", children: comp.label }),
1642
+ /* @__PURE__ */ jsx("select", { name: comp.id, className: "gen-ui-select", children: comp.options?.map((opt) => /* @__PURE__ */ jsx("option", { value: opt, children: opt }, opt)) })
1643
+ ] }, comp.id);
334
1644
  case "button":
335
1645
  return /* @__PURE__ */ jsx(
336
1646
  "button",
@@ -340,20 +1650,19 @@ var GenericUIRenderer = ({ uiData, onInteraction }) => {
340
1650
  onInteraction({
341
1651
  action: comp.label,
342
1652
  buttonId: comp.buttonType,
343
- formData: formValues,
1653
+ formData: formValues
344
1654
  });
345
1655
  },
346
1656
  className: "gen-ui-button",
347
- children: comp.label,
1657
+ children: comp.label
348
1658
  },
349
1659
  comp.id
350
1660
  );
351
1661
  case "card":
352
- return /* @__PURE__ */ jsxs(
353
- "div",
354
- { className: "gen-ui-card", children: [comp.label && /* @__PURE__ */ jsx("h2", { className: "gen-ui-card-title", children: comp.label }), comp.value && /* @__PURE__ */ jsx("p", { className: "gen-ui-card-content", children: comp.value })] },
355
- comp.id
356
- );
1662
+ return /* @__PURE__ */ jsxs("div", { className: "gen-ui-card", children: [
1663
+ comp.label && /* @__PURE__ */ jsx("h2", { className: "gen-ui-card-title", children: comp.label }),
1664
+ comp.value && /* @__PURE__ */ jsx("p", { className: "gen-ui-card-content", children: comp.value })
1665
+ ] }, comp.id);
357
1666
  case "list":
358
1667
  return /* @__PURE__ */ jsx("ul", { className: "gen-ui-list", children: comp.items?.map((item) => /* @__PURE__ */ jsx("li", { className: "gen-ui-list-item", children: item.label ?? String(item.value ?? "") }, item.id)) }, comp.id);
359
1668
  case "image":
@@ -362,7 +1671,7 @@ var GenericUIRenderer = ({ uiData, onInteraction }) => {
362
1671
  {
363
1672
  src: comp.url,
364
1673
  alt: comp.label || "",
365
- className: "gen-ui-image",
1674
+ className: "gen-ui-image"
366
1675
  },
367
1676
  comp.id
368
1677
  );
@@ -372,48 +1681,28 @@ var GenericUIRenderer = ({ uiData, onInteraction }) => {
372
1681
  {
373
1682
  href: comp.url,
374
1683
  className: "gen-ui-link",
375
- children: comp.label || comp.url,
1684
+ children: comp.label || comp.url
376
1685
  },
377
1686
  comp.id
378
1687
  );
379
1688
  case "table":
380
- return /* @__PURE__ */ jsx(
381
- "div",
382
- {
383
- className: "gen-ui-table-wrapper",
384
- children: /* @__PURE__ */ jsxs("table", {
385
- className: "gen-ui-table",
386
- children: [
387
- comp.columns &&
388
- /* @__PURE__ */ jsx("thead", { className: "gen-ui-table-header", children: /* @__PURE__ */ jsx("tr", { children: comp.columns.map((col) => /* @__PURE__ */ jsx("th", { className: "gen-ui-table-th", children: col }, col)) }) }),
389
- comp.rows &&
390
- /* @__PURE__ */ jsx("tbody", {
391
- className: "gen-ui-table-body",
392
- children: comp.rows.map((row, ridx) => /* @__PURE__ */ jsx("tr", { children: row.map((cell, cidx) => /* @__PURE__ */ jsx("td", { className: "gen-ui-table-td", children: cell }, cidx)) }, ridx)),
393
- }),
394
- ],
395
- }),
396
- },
397
- comp.id
398
- );
1689
+ return /* @__PURE__ */ jsx("div", { className: "gen-ui-table-wrapper", children: /* @__PURE__ */ jsxs("table", { className: "gen-ui-table", children: [
1690
+ comp.columns && /* @__PURE__ */ jsx("thead", { className: "gen-ui-table-header", children: /* @__PURE__ */ jsx("tr", { children: comp.columns.map((col) => /* @__PURE__ */ jsx("th", { className: "gen-ui-table-th", children: col }, col)) }) }),
1691
+ comp.rows && /* @__PURE__ */ jsx("tbody", { className: "gen-ui-table-body", children: comp.rows.map((row, ridx) => /* @__PURE__ */ jsx("tr", { children: row.map((cell, cidx) => /* @__PURE__ */ jsx("td", { className: "gen-ui-table-td", children: cell }, cidx)) }, ridx)) })
1692
+ ] }) }, comp.id);
399
1693
  case "form":
400
1694
  return /* @__PURE__ */ jsx("form", { className: "gen-ui-form", children: comp.items?.map((field) => renderComponent(field)) }, comp.id);
401
1695
  default:
402
1696
  return null;
403
1697
  }
404
1698
  };
405
- return /* @__PURE__ */ jsxs("div", {
406
- className: "generative-ui-container",
407
- ref: containerRef,
408
- children: [
409
- (uiData.title || uiData.description) &&
410
- /* @__PURE__ */ jsxs("div", {
411
- className: "generative-ui-header",
412
- children: [uiData.title && /* @__PURE__ */ jsx("h1", { className: "generative-ui-title", children: uiData.title }), uiData.description && /* @__PURE__ */ jsx("p", { className: "generative-ui-description", children: uiData.description })],
413
- }),
414
- uiData.components.map((comp) => renderComponent(comp)),
415
- ],
416
- });
1699
+ return /* @__PURE__ */ jsxs("div", { className: "generative-ui-container", ref: containerRef, children: [
1700
+ (uiData.title || uiData.description) && /* @__PURE__ */ jsxs("div", { className: "generative-ui-header", children: [
1701
+ uiData.title && /* @__PURE__ */ jsx("h1", { className: "generative-ui-title", children: uiData.title }),
1702
+ uiData.description && /* @__PURE__ */ jsx("p", { className: "generative-ui-description", children: uiData.description })
1703
+ ] }),
1704
+ uiData.components.map((comp) => renderComponent(comp))
1705
+ ] });
417
1706
  };
418
1707
  var MessageBubble = ({ message, onAction }) => {
419
1708
  console.log("MESSAGE", message);
@@ -422,40 +1711,29 @@ var MessageBubble = ({ message, onAction }) => {
422
1711
  if (approval) {
423
1712
  return /* @__PURE__ */ jsx(Fragment, {});
424
1713
  }
425
- return /* @__PURE__ */ jsxs("div", {
426
- className: `message-container ${isUser ? "user" : "assistant"}`,
427
- children: [
428
- /* @__PURE__ */ jsx("div", {
429
- className: `message-bubble ${isUser ? "user" : "assistant"}`,
430
- children: isUser
431
- ? message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: message.text })
432
- : /* @__PURE__ */ jsxs(Fragment, {
433
- children: [
434
- message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: message.text }) }),
435
- message.ui &&
436
- /* @__PURE__ */ jsx(GenericUIRenderer, {
437
- uiData: message.ui,
438
- onInteraction: (event) => {
439
- console.log("event", event);
440
- if (event.buttonId === "submit") {
441
- onAction(JSON.stringify(event.formData), true);
442
- } else {
443
- onAction(event.action, true);
444
- }
445
- },
446
- }),
447
- ],
448
- }),
449
- }),
450
- /* @__PURE__ */ jsx("div", {
451
- className: `message-time ${isUser ? "user" : "assistant"}`,
452
- children: message.timestamp.toLocaleTimeString("tr-TR", {
453
- hour: "2-digit",
454
- minute: "2-digit",
455
- }),
456
- }),
457
- ],
458
- });
1714
+ return /* @__PURE__ */ jsxs("div", { className: `message-container ${isUser ? "user" : "assistant"}`, children: [
1715
+ /* @__PURE__ */ jsx("div", { className: `message-bubble ${isUser ? "user" : "assistant"}`, children: isUser ? message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: message.text }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1716
+ message.text && /* @__PURE__ */ jsx("div", { className: "markdown-content", children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: message.text }) }),
1717
+ message.ui && /* @__PURE__ */ jsx(
1718
+ GenericUIRenderer,
1719
+ {
1720
+ uiData: message.ui,
1721
+ onInteraction: (event) => {
1722
+ console.log("event", event);
1723
+ if (event.buttonId === "submit") {
1724
+ onAction(JSON.stringify(event.formData), true);
1725
+ } else {
1726
+ onAction(event.action, true);
1727
+ }
1728
+ }
1729
+ }
1730
+ )
1731
+ ] }) }),
1732
+ /* @__PURE__ */ jsx("div", { className: `message-time ${isUser ? "user" : "assistant"}`, children: message.timestamp.toLocaleTimeString("tr-TR", {
1733
+ hour: "2-digit",
1734
+ minute: "2-digit"
1735
+ }) })
1736
+ ] });
459
1737
  };
460
1738
  var TypingDots = () => {
461
1739
  const [dots, setDots] = useState("");
@@ -468,10 +1746,7 @@ var TypingDots = () => {
468
1746
  }, 500);
469
1747
  return () => clearInterval(interval);
470
1748
  }, []);
471
- return /* @__PURE__ */ jsx("div", {
472
- className: "message-container assistant",
473
- children: /* @__PURE__ */ jsx("div", { className: "message-bubble assistant", children: /* @__PURE__ */ jsx("div", { className: "message-typing-indicator", children: /* @__PURE__ */ jsx("span", { children: dots }) }) }),
474
- });
1749
+ return /* @__PURE__ */ jsx("div", { className: "message-container assistant", children: /* @__PURE__ */ jsx("div", { className: "message-bubble assistant", children: /* @__PURE__ */ jsx("div", { className: "message-typing-indicator", children: /* @__PURE__ */ jsx("span", { children: dots }) }) }) });
475
1750
  };
476
1751
 
477
1752
  // src/utils/chatbot.ts
@@ -504,7 +1779,9 @@ var extractUIJsonFromText = (text) => {
504
1779
  const firstOption = comp.options[0];
505
1780
  if (typeof firstOption === "object" && firstOption !== null) {
506
1781
  if ("label" in firstOption || "value" in firstOption) {
507
- comp.options = comp.options.map((opt) => opt.label || opt.value || String(opt));
1782
+ comp.options = comp.options.map(
1783
+ (opt) => opt.label || opt.value || String(opt)
1784
+ );
508
1785
  }
509
1786
  }
510
1787
  }
@@ -513,7 +1790,9 @@ var extractUIJsonFromText = (text) => {
513
1790
  if (comp.columns && Array.isArray(comp.columns)) {
514
1791
  const firstCol = comp.columns[0];
515
1792
  if (typeof firstCol === "object" && firstCol !== null) {
516
- comp.columns = comp.columns.map((col) => col.label || col.id || String(col));
1793
+ comp.columns = comp.columns.map(
1794
+ (col) => col.label || col.id || String(col)
1795
+ );
517
1796
  }
518
1797
  }
519
1798
  if (comp.rows && Array.isArray(comp.rows)) {
@@ -551,7 +1830,9 @@ var extractUIJsonFromText = (text) => {
551
1830
  if (field.type === "select" && field.options && Array.isArray(field.options)) {
552
1831
  const firstOpt = field.options[0];
553
1832
  if (typeof firstOpt === "object" && firstOpt !== null) {
554
- field.options = field.options.map((opt) => opt.label || opt.value || String(opt));
1833
+ field.options = field.options.map(
1834
+ (opt) => opt.label || opt.value || String(opt)
1835
+ );
555
1836
  }
556
1837
  }
557
1838
  return field;
@@ -564,7 +1845,7 @@ var extractUIJsonFromText = (text) => {
564
1845
  id: `list-item-${itemIndex}-${Date.now()}`,
565
1846
  type: "text",
566
1847
  value: item,
567
- label: item,
1848
+ label: item
568
1849
  };
569
1850
  }
570
1851
  if (!item.id || !item.id.trim()) {
@@ -585,162 +1866,96 @@ var extractUIJsonFromText = (text) => {
585
1866
  }
586
1867
  return {
587
1868
  cleanedText: cleaned,
588
- uiData,
1869
+ uiData
589
1870
  };
590
1871
  };
591
- var historyMessages = (history, currentUserText) => {
592
- const claudeHistory = history
593
- .filter((m) => m.role === "user" || m.role === "assistant")
594
- .map((m) => ({
595
- role: m.role,
596
- content: m.text ?? JSON.stringify(m.ui ?? ""),
597
- }));
598
- claudeHistory.push({
599
- role: "user",
600
- content: currentUserText,
601
- });
602
- return claudeHistory;
603
- };
604
- var generateId = () => Date.now().toString() + Math.random().toString(36).substr(2, 9);
605
- var normalizeHeaders = (headers) => {
606
- const result = {};
607
- for (const [key, value] of Object.entries(headers)) {
608
- if (!value) continue;
609
- if (key.toLowerCase() === "cookie") {
610
- result["x-cookie"] = value;
611
- } else {
612
- result[key] = value;
613
- }
614
- }
615
- return result;
616
- };
617
- var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall }) => {
1872
+ var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall, onDisconnect }) => {
618
1873
  const messagesEndRef = useRef(null);
619
- const [config, setConfig] = useState(defaultConfig);
620
- const [anthropic, setAnthropic] = useState();
1874
+ const [config, setConfig] = useState();
621
1875
  const [messages, setMessages] = useState([]);
622
1876
  const [isLoading, setIsLoading] = useState(false);
623
- const [mcpClient, setMcpClient] = useState();
624
1877
  const [isConfigLoading, setIsConfigLoading] = useState(true);
625
1878
  const [isOpen, setIsOpen] = useState(false);
626
1879
  const [headerValidation, setHeaderValidation] = useState(null);
627
1880
  const [showAlert, setShowAlert] = useState(true);
628
- const { button_background, button_position, button_size, chat_height, chat_width, company_logo, company_name, header_background, initial_open, placeholder, show_typing_indicator, welcome_message } = config.chat_widget_settings;
629
- useEffect(() => {
630
- onMounted?.();
631
- }, []);
632
- useEffect(() => {
633
- if (!isConfigLoading && mcpClient && anthropic && config) {
634
- onReady?.({
635
- config,
1881
+ const loadConfig = async () => {
1882
+ try {
1883
+ setIsConfigLoading(true);
1884
+ const response = await fetch("https://proxy.aizek.ai/api/aizek-connect", {
1885
+ method: "POST",
1886
+ headers: {
1887
+ "Content-Type": "application/json",
1888
+ ...headers
1889
+ },
1890
+ body: JSON.stringify({ clientId }),
1891
+ credentials: "include"
636
1892
  });
637
- }
638
- }, [isConfigLoading, mcpClient, anthropic, config]);
639
- useEffect(() => {
640
- const loadConfig = async () => {
641
- try {
642
- setIsConfigLoading(true);
643
- const apiResponse = await fetchChatWidgetSettings(clientId);
644
- if (apiResponse.success) {
645
- const anthropic2 = new Anthropic({
646
- apiKey: apiResponse.data.openai_key,
647
- dangerouslyAllowBrowser: true,
648
- });
649
- const mcpClient2 = new Client({
650
- name: "mcp-client-cli",
651
- version: "1.0.0",
652
- });
653
- const transport = new SSEClientTransport(new URL("", apiResponse.data.mcp_url), {
654
- eventSourceInit: {
655
- fetch: (url, init) => {
656
- if (headers) {
657
- const dynamicHeaders = normalizeHeaders(headers);
658
- return fetch(url, {
659
- headers: {
660
- ...(init?.headers ?? {}),
661
- ...dynamicHeaders,
662
- },
663
- });
664
- } else {
665
- return fetch(url, {
666
- headers: {
667
- ...(init?.headers ?? {}),
668
- },
669
- });
670
- }
671
- },
672
- },
673
- });
674
- await mcpClient2.connect(transport);
675
- setMcpClient(mcpClient2);
676
- setAnthropic(anthropic2);
677
- if (headers && apiResponse.data.auth_config) {
678
- const validationResult = validateHeaders(headers, apiResponse.data.auth_config, {
1893
+ const data = await response.json();
1894
+ if (data.success) {
1895
+ setIsOpen(data.data.chat_widget_settings.initial_open);
1896
+ setConfig(data.data);
1897
+ console.log(data.data);
1898
+ if (headers) {
1899
+ const validationResult = validateHeaders(
1900
+ headers,
1901
+ data.data.auth_config,
1902
+ {
679
1903
  allowExtra: false,
680
- caseSensitive: true,
681
- });
682
- setHeaderValidation(validationResult);
683
- }
684
- if (!apiResponse.data.chat_widget_settings) {
685
- setConfig({
686
- auth_config: apiResponse.data.auth_config,
687
- mcp_url: apiResponse.data.mcp_url,
688
- openai_key: apiResponse.data.openai_key,
689
- chat_widget_settings: {
690
- api_source_id: 0,
691
- chat_widget_settings_id: 0,
692
- created_at: "",
693
- updated_at: "",
694
- button_background: defaultConfig.chat_widget_settings.button_background,
695
- button_position: defaultConfig.chat_widget_settings.button_position,
696
- button_size: defaultConfig.chat_widget_settings.button_size,
697
- chat_height: defaultConfig.chat_widget_settings.chat_height,
698
- chat_width: defaultConfig.chat_widget_settings.chat_width,
699
- company_logo: defaultConfig.chat_widget_settings.company_logo,
700
- company_name: defaultConfig.chat_widget_settings.company_name,
701
- header_background: defaultConfig.chat_widget_settings.header_background,
702
- initial_open: defaultConfig.chat_widget_settings.initial_open,
703
- placeholder: defaultConfig.chat_widget_settings.placeholder,
704
- show_typing_indicator: defaultConfig.chat_widget_settings.show_typing_indicator,
705
- welcome_message: defaultConfig.chat_widget_settings.welcome_message,
706
- },
707
- });
708
- } else {
709
- setConfig(apiResponse.data);
710
- }
1904
+ caseSensitive: true
1905
+ }
1906
+ );
1907
+ setHeaderValidation(validationResult);
711
1908
  }
712
- } catch (error) {
713
- console.error("Failed to load chat widget config:", error);
714
- } finally {
715
- setIsConfigLoading(false);
1909
+ onReady?.({ config: { ...data.data } });
1910
+ } else {
1911
+ setIsOpen(false);
716
1912
  }
717
- };
1913
+ } catch (error) {
1914
+ console.error("Failed to load chat widget config:", error);
1915
+ } finally {
1916
+ setIsConfigLoading(false);
1917
+ }
1918
+ };
1919
+ const disconnect = async () => {
1920
+ try {
1921
+ setIsConfigLoading(true);
1922
+ await fetch("http://localhost:3001/api/aizek-disconnect", {
1923
+ method: "POST",
1924
+ headers: {
1925
+ "Content-Type": "application/json",
1926
+ ...headers
1927
+ },
1928
+ credentials: "include"
1929
+ });
1930
+ onDisconnect?.();
1931
+ } catch (error) {
1932
+ console.error("Failed to load chat widget config:", error);
1933
+ } finally {
1934
+ setIsConfigLoading(false);
1935
+ }
1936
+ };
1937
+ useEffect(() => {
1938
+ onMounted?.();
718
1939
  loadConfig();
1940
+ return () => {
1941
+ disconnect();
1942
+ };
719
1943
  }, []);
720
1944
  useEffect(() => {
721
- setIsOpen(initial_open);
722
1945
  const newIsOpen = !isOpen;
723
1946
  setIsOpen(newIsOpen);
724
1947
  if (newIsOpen) onOpen?.();
725
1948
  else onClose?.();
726
- }, [initial_open]);
1949
+ }, [config?.chat_widget_settings.initial_open]);
727
1950
  useEffect(() => {
728
1951
  messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
729
1952
  }, [messages]);
730
- if (isConfigLoading || !mcpClient || !anthropic) {
731
- return /* @__PURE__ */ jsx("button", {
732
- className: `floating-button ${button_position} button-sizes ${button_size}`,
733
- style: { background: button_background },
734
- children: /* @__PURE__ */ jsx("div", { className: "loading-spinner" }),
735
- });
736
- }
737
1953
  const addMessage = (payload) => {
738
1954
  const newMessage = {
739
- id: generateId(),
740
1955
  text: payload.text,
741
1956
  ui: payload.ui,
742
1957
  role: payload.role,
743
- timestamp: /* @__PURE__ */ new Date(),
1958
+ timestamp: /* @__PURE__ */ new Date()
744
1959
  };
745
1960
  onMessage?.(newMessage);
746
1961
  setMessages((prev) => [...prev, newMessage]);
@@ -750,72 +1965,69 @@ var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, on
750
1965
  const sendMessage = async (message, approval) => {
751
1966
  if (!message.trim() || isLoading) return;
752
1967
  const newMessage = {
753
- id: generateId(),
754
1968
  text: message,
755
1969
  ui: void 0,
756
1970
  role: approval ? "approval" : "user",
757
- timestamp: /* @__PURE__ */ new Date(),
1971
+ timestamp: /* @__PURE__ */ new Date()
758
1972
  };
759
1973
  setMessages((prev) => [...prev, newMessage]);
760
1974
  setIsLoading(true);
761
- const toolsResult = await mcpClient.listTools();
762
- const tools = toolsResult.tools.map((tool) => ({ name: tool.name, description: tool.description, input_schema: tool.inputSchema }));
763
1975
  try {
764
- const historyForContext = historyMessages([...messages, newMessage], message);
765
- const response = await anthropic.beta.messages.create({
766
- model: "claude-sonnet-4-5",
767
- betas: ["structured-outputs-2025-11-13"],
768
- max_tokens: 5e3,
769
- messages: historyForContext,
770
- tools,
771
- system: [
772
- {
773
- type: "text",
774
- text: GENERATIVE_UI_SYSTEM_PROMPT,
775
- cache_control: {
776
- type: "ephemeral",
777
- ttl: "1h",
778
- },
779
- },
780
- ],
1976
+ const response = await fetch("http://localhost:3001/api/aizek-chat", {
1977
+ method: "POST",
1978
+ headers: {
1979
+ "Content-Type": "application/json"
1980
+ },
1981
+ body: JSON.stringify({ message }),
1982
+ credentials: "include"
781
1983
  });
782
- for (const content of response.content) {
783
- if (content.type === "tool_use") {
784
- const toolCall = await mcpClient.callTool({ name: content.name, arguments: content.input });
785
- onToolCall?.({ name: content.name, args: content.input, result: toolCall });
786
- const toolMessagesForContext = historyMessages([...messages, newMessage], JSON.stringify(toolCall.structuredContent));
787
- const finalResponse = await anthropic.beta.messages.create({
788
- model: "claude-sonnet-4-5",
789
- max_tokens: 1024,
790
- betas: ["structured-outputs-2025-11-13"],
791
- messages: toolMessagesForContext,
792
- tools,
793
- system: [
794
- {
795
- type: "text",
796
- text: GENERATIVE_UI_SYSTEM_PROMPT,
797
- cache_control: {
798
- type: "ephemeral",
799
- ttl: "1h",
800
- },
801
- },
802
- ],
803
- });
804
- const textBlock = finalResponse.content.find((x) => x.type === "text");
805
- const { cleanedText, uiData } = extractUIJsonFromText(textBlock?.text ?? "");
806
- addMessage({ ui: uiData, text: cleanedText || void 0, role: "assistant" });
807
- } else if (content.type === "text") {
808
- const { cleanedText, uiData } = extractUIJsonFromText(content?.text);
809
- addMessage({ ui: uiData, text: cleanedText || void 0, role: "assistant" });
1984
+ if (!response.ok) {
1985
+ throw new Error(`HTTP error ${response.status}`);
1986
+ }
1987
+ if (!response.body) {
1988
+ throw new Error("Streaming desteklenmiyor (response.body yok)");
1989
+ }
1990
+ const reader = response.body.getReader();
1991
+ const decoder = new TextDecoder();
1992
+ let buffer = "";
1993
+ while (true) {
1994
+ const { value, done } = await reader.read();
1995
+ if (done) break;
1996
+ buffer += decoder.decode(value, { stream: true });
1997
+ const chunks = buffer.split("\n\n");
1998
+ buffer = chunks.pop() ?? "";
1999
+ for (const rawChunk of chunks) {
2000
+ const line = rawChunk.split("\n").find((l) => l.startsWith("data:"));
2001
+ if (!line) continue;
2002
+ const jsonStr = line.replace(/^data:\s*/, "").trim();
2003
+ if (!jsonStr) continue;
2004
+ const event = JSON.parse(jsonStr);
2005
+ if (event.type === "assistant_text" && event.content) {
2006
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2007
+ addMessage({
2008
+ text: cleanedText,
2009
+ ui: uiData,
2010
+ role: "assistant"
2011
+ });
2012
+ }
2013
+ if (event.type === "assistant_tool_result" && event.content) {
2014
+ const toolInfoParsed = JSON.parse(event.content);
2015
+ onToolCall?.(toolInfoParsed);
2016
+ }
2017
+ if (event.type === "error" && event.content) {
2018
+ const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2019
+ addMessage({
2020
+ text: cleanedText,
2021
+ ui: uiData,
2022
+ role: "assistant"
2023
+ });
2024
+ }
810
2025
  }
811
2026
  }
812
- setIsLoading(false);
813
2027
  } catch (error) {
814
2028
  console.error("Error sending message:", error);
815
- addMessage({
816
- text: "\xDCzg\xFCn\xFCm, bir hata olu\u015Ftu. L\xFCtfen tekrar deneyin.",
817
- role: "assistant",
818
- });
2029
+ addMessage({ text: "\xDCzg\xFCn\xFCm, bir hata olu\u015Ftu. L\xFCtfen tekrar deneyin.", role: "assistant" });
2030
+ } finally {
819
2031
  setIsLoading(false);
820
2032
  }
821
2033
  };
@@ -825,108 +2037,78 @@ var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, on
825
2037
  if (newIsOpen) onOpen?.();
826
2038
  else onClose?.();
827
2039
  };
828
- return /* @__PURE__ */ jsxs(Fragment, {
829
- children: [
830
- isOpen &&
831
- /* @__PURE__ */ jsx("div", {
832
- className: `overlay floating-chat-overlay ${isOpen ? "is-open" : ""}`,
833
- onClick: toggleChat,
834
- }),
835
- /* @__PURE__ */ jsx("div", {
836
- className: `chat-container ${button_position} ${isOpen ? "is-open" : ""}`,
837
- style: { width: chat_width, height: chat_height },
838
- children: /* @__PURE__ */ jsxs("div", {
839
- className: "chatbot-container",
840
- children: [
841
- /* @__PURE__ */ jsxs("div", {
842
- className: "header",
843
- style: { background: header_background },
844
- children: [
845
- /* @__PURE__ */ jsx("div", {
846
- className: "logo-container",
847
- children: company_logo
848
- ? company_logo.startsWith("http") || company_logo.startsWith("data:")
849
- ? /* @__PURE__ */ jsx("img", {
850
- src: company_logo,
851
- alt: "Company Logo",
852
- className: "logo-image",
853
- })
854
- : /* @__PURE__ */ jsx("span", { className: "logo-text", children: company_logo })
855
- : "\u{1F916}",
856
- }),
857
- /* @__PURE__ */ jsxs("div", {
858
- children: [/* @__PURE__ */ jsx("h3", { className: "company-name", children: company_name }), /* @__PURE__ */ jsx("p", { className: "status-text", children: isLoading ? "Yaz\u0131yor..." : "\xC7evrimi\xE7i" })],
859
- }),
860
- ],
861
- }),
862
- /* @__PURE__ */ jsxs("div", {
863
- className: "messages-container",
864
- children: [
865
- /* @__PURE__ */ jsx(HeaderAlert, {
866
- headerValidation,
867
- setShowAlert,
868
- showAlert,
869
- }),
870
- messages.length === 0
871
- ? /* @__PURE__ */ jsxs("div", {
872
- className: "empty-state",
873
- children: [
874
- /* @__PURE__ */ jsx("div", { className: "empty-state-icon", children: "\u{1F4AC}" }),
875
- /* @__PURE__ */ jsx("h4", { className: "empty-state-title", children: welcome_message }),
876
- /* @__PURE__ */ jsx("p", { className: "empty-state-description", children: "A\u015Fa\u011F\u0131daki alana mesaj\u0131n\u0131z\u0131 yazarak ba\u015Flayabilirsiniz." }),
877
- ],
878
- })
879
- : /* @__PURE__ */ jsxs(Fragment, {
880
- children: [
881
- messages.map((message) =>
882
- /* @__PURE__ */ jsx(
883
- MessageBubble,
884
- {
885
- message,
886
- onAction: sendMessage,
887
- },
888
- message.id
889
- )
890
- ),
891
- show_typing_indicator && isLoading && /* @__PURE__ */ jsx(TypingDots, {}),
892
- ],
893
- }),
894
- /* @__PURE__ */ jsx("div", { ref: messagesEndRef }),
895
- ],
896
- }),
897
- /* @__PURE__ */ jsx(ChatInput, {
898
- handleSendMessage: sendMessage,
899
- isLoading,
900
- placeholder,
901
- }),
902
- ],
903
- }),
904
- }),
905
- /* @__PURE__ */ jsx("button", {
2040
+ return /* @__PURE__ */ jsx(Fragment, { children: isConfigLoading ? /* @__PURE__ */ jsx(
2041
+ "button",
2042
+ {
2043
+ className: "floating-button bottom-right button-sizes medium loading-state",
2044
+ style: { background: "#4f46e5" },
2045
+ "aria-label": "Y\xFCkleniyor",
2046
+ children: /* @__PURE__ */ jsx("div", { className: "loading-spinner" })
2047
+ }
2048
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2049
+ isOpen && /* @__PURE__ */ jsx("div", { className: `overlay floating-chat-overlay ${isOpen ? "is-open" : ""}`, onClick: toggleChat }),
2050
+ /* @__PURE__ */ jsx("div", { className: `chat-container ${config?.chat_widget_settings.button_position} ${isOpen ? "is-open" : ""}`, style: { width: config?.chat_widget_settings.chat_width, height: config?.chat_widget_settings.chat_height }, children: /* @__PURE__ */ jsxs("div", { className: "chatbot-container", children: [
2051
+ /* @__PURE__ */ jsxs("div", { className: "header", style: { background: config?.chat_widget_settings.header_background }, children: [
2052
+ /* @__PURE__ */ jsx("div", { className: "logo-container", children: config?.chat_widget_settings.company_logo ? config?.chat_widget_settings.company_logo.startsWith("http") || config?.chat_widget_settings.company_logo.startsWith("data:") ? /* @__PURE__ */ jsx(
2053
+ "img",
2054
+ {
2055
+ src: config?.chat_widget_settings.company_logo,
2056
+ alt: "Company Logo",
2057
+ className: "logo-image"
2058
+ }
2059
+ ) : /* @__PURE__ */ jsx("span", { className: "logo-text", children: config?.chat_widget_settings.company_logo }) : "\u{1F916}" }),
2060
+ /* @__PURE__ */ jsxs("div", { children: [
2061
+ /* @__PURE__ */ jsx("h3", { className: "company-name", children: config?.chat_widget_settings.company_name }),
2062
+ /* @__PURE__ */ jsx("p", { className: "status-text", children: isLoading ? "Yaz\u0131yor..." : "\xC7evrimi\xE7i" })
2063
+ ] })
2064
+ ] }),
2065
+ /* @__PURE__ */ jsxs("div", { className: "messages-container", children: [
2066
+ /* @__PURE__ */ jsx(
2067
+ HeaderAlert,
2068
+ {
2069
+ headerValidation,
2070
+ setShowAlert,
2071
+ showAlert
2072
+ }
2073
+ ),
2074
+ messages.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "empty-state", children: [
2075
+ /* @__PURE__ */ jsx("div", { className: "empty-state-icon", children: "\u{1F4AC}" }),
2076
+ /* @__PURE__ */ jsx("h4", { className: "empty-state-title", children: config?.chat_widget_settings.welcome_message }),
2077
+ /* @__PURE__ */ jsx("p", { className: "empty-state-description", children: "A\u015Fa\u011F\u0131daki alana mesaj\u0131n\u0131z\u0131 yazarak ba\u015Flayabilirsiniz." })
2078
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2079
+ messages.map((message, index) => /* @__PURE__ */ jsx(
2080
+ MessageBubble,
2081
+ {
2082
+ message,
2083
+ onAction: sendMessage
2084
+ },
2085
+ index
2086
+ )),
2087
+ config?.chat_widget_settings.show_typing_indicator && isLoading && /* @__PURE__ */ jsx(TypingDots, {})
2088
+ ] })
2089
+ ] }),
2090
+ /* @__PURE__ */ jsx(
2091
+ ChatInput,
2092
+ {
2093
+ handleSendMessage: sendMessage,
2094
+ isLoading,
2095
+ placeholder: config?.chat_widget_settings.placeholder ?? ""
2096
+ }
2097
+ )
2098
+ ] }) }),
2099
+ /* @__PURE__ */ jsx(
2100
+ "button",
2101
+ {
906
2102
  onClick: toggleChat,
907
- className: `floating-button ${button_position} button-sizes ${button_size} ${isOpen ? "is-open" : ""}`,
908
- style: { background: button_background },
2103
+ className: `floating-button ${config?.chat_widget_settings.button_position} button-sizes ${config?.chat_widget_settings.button_size} ${isOpen ? "is-open" : ""}`,
2104
+ style: { background: config?.chat_widget_settings.button_background },
909
2105
  "aria-label": isOpen ? "Chati kapat" : "Chati a\xE7",
910
- children: isOpen
911
- ? /* @__PURE__ */ jsx("svg", {
912
- width: "24",
913
- height: "24",
914
- viewBox: "0 0 24 24",
915
- fill: "currentColor",
916
- children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }),
917
- })
918
- : /* @__PURE__ */ jsx("svg", {
919
- width: "24",
920
- height: "24",
921
- viewBox: "0 0 24 24",
922
- fill: "currentColor",
923
- children: /* @__PURE__ */ jsx("path", { d: "M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" }),
924
- }),
925
- }),
926
- ],
927
- });
2106
+ children: isOpen ? /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) : /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" }) })
2107
+ }
2108
+ )
2109
+ ] }) });
928
2110
  };
929
2111
 
930
2112
  export { AizekChatBot };
931
2113
  //# sourceMappingURL=index.mjs.map
932
- //# sourceMappingURL=index.mjs.map
2114
+ //# sourceMappingURL=index.mjs.map