@social.io/catalog 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.smartconfig.json +51 -0
  2. package/dist_bundle/bundle.js +5450 -3267
  3. package/dist_ts_web/00_commitinfo_data.js +3 -3
  4. package/dist_ts_web/elements/index.d.ts +20 -3
  5. package/dist_ts_web/elements/index.js +27 -7
  6. package/dist_ts_web/elements/sio-ai-card.d.ts +39 -0
  7. package/dist_ts_web/elements/sio-ai-card.js +229 -0
  8. package/dist_ts_web/elements/sio-avatar.d.ts +46 -0
  9. package/dist_ts_web/elements/sio-avatar.js +379 -0
  10. package/dist_ts_web/elements/sio-bucket-header.d.ts +36 -0
  11. package/dist_ts_web/elements/sio-bucket-header.js +197 -0
  12. package/dist_ts_web/elements/sio-button.d.ts +7 -3
  13. package/dist_ts_web/elements/sio-button.js +253 -152
  14. package/dist_ts_web/elements/sio-channel-rail.d.ts +37 -0
  15. package/dist_ts_web/elements/sio-channel-rail.js +275 -0
  16. package/dist_ts_web/elements/sio-chip.d.ts +25 -0
  17. package/dist_ts_web/elements/sio-chip.js +188 -0
  18. package/dist_ts_web/elements/sio-cmdk.d.ts +59 -0
  19. package/dist_ts_web/elements/sio-cmdk.js +471 -0
  20. package/dist_ts_web/elements/sio-combox.d.ts +55 -1
  21. package/dist_ts_web/elements/sio-combox.js +458 -261
  22. package/dist_ts_web/elements/sio-composer.d.ts +48 -0
  23. package/dist_ts_web/elements/sio-composer.js +357 -0
  24. package/dist_ts_web/elements/sio-conversation-selector.d.ts +41 -1
  25. package/dist_ts_web/elements/sio-conversation-selector.js +426 -238
  26. package/dist_ts_web/elements/sio-conversation-view.d.ts +34 -6
  27. package/dist_ts_web/elements/sio-conversation-view.js +738 -564
  28. package/dist_ts_web/elements/sio-dropdown-menu.d.ts +6 -6
  29. package/dist_ts_web/elements/sio-dropdown-menu.js +223 -169
  30. package/dist_ts_web/elements/sio-fab.d.ts +23 -5
  31. package/dist_ts_web/elements/sio-fab.js +259 -235
  32. package/dist_ts_web/elements/sio-glass-toolbar.d.ts +22 -0
  33. package/dist_ts_web/elements/sio-glass-toolbar.js +178 -0
  34. package/dist_ts_web/elements/sio-icon.d.ts +1 -0
  35. package/dist_ts_web/elements/sio-icon.js +254 -94
  36. package/dist_ts_web/elements/sio-image-lightbox.d.ts +3 -4
  37. package/dist_ts_web/elements/sio-image-lightbox.js +282 -191
  38. package/dist_ts_web/elements/sio-inset-list.d.ts +28 -0
  39. package/dist_ts_web/elements/sio-inset-list.js +191 -0
  40. package/dist_ts_web/elements/sio-kbd.d.ts +16 -0
  41. package/dist_ts_web/elements/sio-kbd.js +117 -0
  42. package/dist_ts_web/elements/sio-list-row.d.ts +55 -0
  43. package/dist_ts_web/elements/sio-list-row.js +462 -0
  44. package/dist_ts_web/elements/sio-message-input.d.ts +25 -4
  45. package/dist_ts_web/elements/sio-message-input.js +231 -226
  46. package/dist_ts_web/elements/sio-paper-thumb.d.ts +24 -0
  47. package/dist_ts_web/elements/sio-paper-thumb.js +293 -0
  48. package/dist_ts_web/elements/sio-pdf-viewer.d.ts +2 -0
  49. package/dist_ts_web/elements/sio-pdf-viewer.js +344 -244
  50. package/dist_ts_web/elements/sio-segmented.d.ts +32 -0
  51. package/dist_ts_web/elements/sio-segmented.js +217 -0
  52. package/dist_ts_web/elements/sio-step-timeline.d.ts +28 -0
  53. package/dist_ts_web/elements/sio-step-timeline.js +222 -0
  54. package/dist_ts_web/elements/sio-tab-bar.d.ts +36 -0
  55. package/dist_ts_web/elements/sio-tab-bar.js +232 -0
  56. package/dist_ts_web/elements/sio-unread-badge.d.ts +25 -0
  57. package/dist_ts_web/elements/sio-unread-badge.js +203 -0
  58. package/dist_ts_web/elements/sio-waveform.d.ts +34 -0
  59. package/dist_ts_web/elements/sio-waveform.js +304 -0
  60. package/dist_ts_web/elements/tokens.d.ts +70 -0
  61. package/dist_ts_web/elements/tokens.js +277 -0
  62. package/dist_ts_web/pages/firstpage.d.ts +5 -0
  63. package/dist_ts_web/pages/firstpage.js +21 -2
  64. package/dist_ts_web/pages/mainpage.d.ts +6 -0
  65. package/dist_ts_web/pages/mainpage.js +111 -39
  66. package/{license → license.md} +3 -1
  67. package/package.json +23 -29
  68. package/readme.hints.md +81 -0
  69. package/readme.md +85 -151
  70. package/ts_web/00_commitinfo_data.ts +2 -2
  71. package/ts_web/elements/index.ts +30 -7
  72. package/ts_web/elements/sio-ai-card.ts +175 -0
  73. package/ts_web/elements/sio-avatar.ts +295 -0
  74. package/ts_web/elements/sio-bucket-header.ts +157 -0
  75. package/ts_web/elements/sio-button.ts +149 -127
  76. package/ts_web/elements/sio-channel-rail.ts +243 -0
  77. package/ts_web/elements/sio-chip.ts +134 -0
  78. package/ts_web/elements/sio-cmdk.ts +461 -0
  79. package/ts_web/elements/sio-combox.ts +327 -204
  80. package/ts_web/elements/sio-composer.ts +306 -0
  81. package/ts_web/elements/sio-conversation-selector.ts +350 -228
  82. package/ts_web/elements/sio-conversation-view.ts +573 -457
  83. package/ts_web/elements/sio-dropdown-menu.ts +112 -130
  84. package/ts_web/elements/sio-fab.ts +192 -227
  85. package/ts_web/elements/sio-glass-toolbar.ts +140 -0
  86. package/ts_web/elements/sio-icon.ts +147 -25
  87. package/ts_web/elements/sio-image-lightbox.ts +62 -64
  88. package/ts_web/elements/sio-inset-list.ts +140 -0
  89. package/ts_web/elements/sio-kbd.ts +80 -0
  90. package/ts_web/elements/sio-list-row.ts +393 -0
  91. package/ts_web/elements/sio-message-input.ts +142 -221
  92. package/ts_web/elements/sio-paper-thumb.ts +244 -0
  93. package/ts_web/elements/sio-pdf-viewer.ts +58 -60
  94. package/ts_web/elements/sio-segmented.ts +183 -0
  95. package/ts_web/elements/sio-step-timeline.ts +179 -0
  96. package/ts_web/elements/sio-tab-bar.ts +195 -0
  97. package/ts_web/elements/sio-unread-badge.ts +147 -0
  98. package/ts_web/elements/sio-waveform.ts +239 -0
  99. package/ts_web/elements/tokens.ts +297 -0
  100. package/ts_web/pages/firstpage.ts +20 -1
  101. package/ts_web/pages/mainpage.ts +111 -39
  102. package/dist_bundle/bundle.js.map +0 -7
  103. package/dist_ts_web/elements/00colors.d.ts +0 -108
  104. package/dist_ts_web/elements/00colors.js +0 -137
  105. package/dist_ts_web/elements/00fonts.d.ts +0 -60
  106. package/dist_ts_web/elements/00fonts.js +0 -129
  107. package/dist_ts_web/elements/00tokens.d.ts +0 -123
  108. package/dist_ts_web/elements/00tokens.js +0 -176
  109. package/dist_ts_web/elements/sio-conversation-list.d.ts +0 -20
  110. package/dist_ts_web/elements/sio-conversation-list.js +0 -495
  111. package/dist_ts_web/elements/sio-recorder.d.ts +0 -60
  112. package/dist_ts_web/elements/sio-recorder.js +0 -173
  113. package/dist_ts_web/elements/sio-subwidget-conversations.d.ts +0 -16
  114. package/dist_ts_web/elements/sio-subwidget-conversations.js +0 -350
  115. package/dist_ts_web/elements/sio-subwidget-onboardme.d.ts +0 -7
  116. package/dist_ts_web/elements/sio-subwidget-onboardme.js +0 -243
  117. package/dist_watch/bundle.js +0 -81694
  118. package/dist_watch/bundle.js.map +0 -7
  119. package/dist_watch/index.html +0 -25
  120. package/npmextra.json +0 -19
  121. package/ts_web/elements/00colors.ts +0 -164
  122. package/ts_web/elements/00fonts.ts +0 -145
  123. package/ts_web/elements/00tokens.ts +0 -197
  124. package/ts_web/elements/sio-recorder.ts +0 -213
@@ -1,313 +1,510 @@
1
- import { DeesElement, property, html, customElement, cssManager, css, unsafeCSS, state, } from '@design.estate/dees-element';
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, html, property, state, customElement, css, cssManager, } from '@design.estate/dees-element';
2
36
  import * as domtools from '@design.estate/dees-domtools';
3
- // Import design tokens
4
- import { colors, bdTheme } from './00colors.js';
5
- import { spacing, radius, shadows, transitions } from './00tokens.js';
6
- import { fontFamilies, typography } from './00fonts.js';
7
- // Import components
37
+ import { sioElementStyles } from './tokens.js';
8
38
  import { SioConversationSelector } from './sio-conversation-selector.js';
9
- import { SioConversationView } from './sio-conversation-view.js';
39
+ import { SioConversationView, } from './sio-conversation-view.js';
10
40
  import { SioImageLightbox } from './sio-image-lightbox.js';
11
- // Make sure components are loaded
12
41
  SioConversationSelector;
13
42
  SioConversationView;
14
43
  SioImageLightbox;
15
- @customElement('sio-combox')
16
- export class SioCombox extends DeesElement {
17
- static demo = () => html ` <sio-combox></sio-combox> `;
18
- @property({ type: Object })
19
- accessor referenceObject;
20
- @state()
21
- accessor selectedConversationId = null;
22
- @state()
23
- accessor conversations = [
24
- {
25
- id: '1',
26
- title: 'Technical Support',
27
- lastMessage: 'Thanks for your help with the login issue!',
28
- time: '2 min ago',
29
- unread: true,
30
- },
31
- {
32
- id: '2',
33
- title: 'Billing Question',
34
- lastMessage: 'I need help understanding my invoice',
35
- time: '1 hour ago',
36
- },
37
- {
38
- id: '3',
39
- title: 'Feature Request',
40
- lastMessage: 'That would be great! Looking forward to it',
41
- time: 'Yesterday',
42
- },
43
- {
44
- id: '4',
45
- title: 'General Inquiry',
46
- lastMessage: 'Thank you for the information',
47
- time: '2 days ago',
44
+ /**
45
+ * sio-combox — the widget panel (v7 SocialIOWidget.jsx SIOWidgetShell).
46
+ *
47
+ * 380×620 panel, radius 20 on --sio-surface, floating shadow with a
48
+ * 0.5px ring, anchored above the sio-fab launcher. Slides between the
49
+ * home/welcome state (sio-conversation-selector) and the conversation
50
+ * state (sio-conversation-view); the away/email-fallback state is the
51
+ * conversation state with `away` set. Every state carries the centered
52
+ * "Powered by social.io" footer with the mini brand glyph.
53
+ *
54
+ * Singleton API: SioCombox.createOnBody() / getInstance(), plus
55
+ * open() / close() / toggle() / getIsOpen(). Full-screen on phablet.
56
+ */
57
+ let SioCombox = (() => {
58
+ let _classDecorators = [customElement('sio-combox')];
59
+ let _classDescriptor;
60
+ let _classExtraInitializers = [];
61
+ let _classThis;
62
+ let _classSuper = DeesElement;
63
+ let _away_decorators;
64
+ let _away_initializers = [];
65
+ let _away_extraInitializers = [];
66
+ let _selectedConversationId_decorators;
67
+ let _selectedConversationId_initializers = [];
68
+ let _selectedConversationId_extraInitializers = [];
69
+ let _isKeyboardVisible_decorators;
70
+ let _isKeyboardVisible_initializers = [];
71
+ let _isKeyboardVisible_extraInitializers = [];
72
+ let _isOpen_decorators;
73
+ let _isOpen_initializers = [];
74
+ let _isOpen_extraInitializers = [];
75
+ let _conversations_decorators;
76
+ let _conversations_initializers = [];
77
+ let _conversations_extraInitializers = [];
78
+ let _messages_decorators;
79
+ let _messages_initializers = [];
80
+ let _messages_extraInitializers = [];
81
+ var SioCombox = class extends _classSuper {
82
+ static { _classThis = this; }
83
+ static {
84
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
85
+ _away_decorators = [property({ type: Boolean })];
86
+ _selectedConversationId_decorators = [state()];
87
+ _isKeyboardVisible_decorators = [state()];
88
+ _isOpen_decorators = [state()];
89
+ _conversations_decorators = [state()];
90
+ _messages_decorators = [state()];
91
+ __esDecorate(this, null, _away_decorators, { kind: "accessor", name: "away", static: false, private: false, access: { has: obj => "away" in obj, get: obj => obj.away, set: (obj, value) => { obj.away = value; } }, metadata: _metadata }, _away_initializers, _away_extraInitializers);
92
+ __esDecorate(this, null, _selectedConversationId_decorators, { kind: "accessor", name: "selectedConversationId", static: false, private: false, access: { has: obj => "selectedConversationId" in obj, get: obj => obj.selectedConversationId, set: (obj, value) => { obj.selectedConversationId = value; } }, metadata: _metadata }, _selectedConversationId_initializers, _selectedConversationId_extraInitializers);
93
+ __esDecorate(this, null, _isKeyboardVisible_decorators, { kind: "accessor", name: "isKeyboardVisible", static: false, private: false, access: { has: obj => "isKeyboardVisible" in obj, get: obj => obj.isKeyboardVisible, set: (obj, value) => { obj.isKeyboardVisible = value; } }, metadata: _metadata }, _isKeyboardVisible_initializers, _isKeyboardVisible_extraInitializers);
94
+ __esDecorate(this, null, _isOpen_decorators, { kind: "accessor", name: "isOpen", static: false, private: false, access: { has: obj => "isOpen" in obj, get: obj => obj.isOpen, set: (obj, value) => { obj.isOpen = value; } }, metadata: _metadata }, _isOpen_initializers, _isOpen_extraInitializers);
95
+ __esDecorate(this, null, _conversations_decorators, { kind: "accessor", name: "conversations", static: false, private: false, access: { has: obj => "conversations" in obj, get: obj => obj.conversations, set: (obj, value) => { obj.conversations = value; } }, metadata: _metadata }, _conversations_initializers, _conversations_extraInitializers);
96
+ __esDecorate(this, null, _messages_decorators, { kind: "accessor", name: "messages", static: false, private: false, access: { has: obj => "messages" in obj, get: obj => obj.messages, set: (obj, value) => { obj.messages = value; } }, metadata: _metadata }, _messages_initializers, _messages_extraInitializers);
97
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
98
+ SioCombox = _classThis = _classDescriptor.value;
99
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
48
100
  }
49
- ];
50
- @state()
51
- accessor messages = {
52
- '1': [
53
- { id: '1', text: 'Hi, I\'m having trouble logging in', sender: 'user', time: '10:00 AM' },
54
- { id: '2', text: 'I can help you with that. Can you tell me what error you\'re seeing?', sender: 'support', time: '10:02 AM' },
55
- { id: '3', text: 'It says "Invalid credentials" but I\'m sure my password is correct', sender: 'user', time: '10:03 AM' },
56
- { id: '4', text: 'Let me check your account. Please try resetting your password using the forgot password link.', sender: 'support', time: '10:05 AM' },
57
- {
58
- id: '5',
59
- text: 'Here\'s a screenshot of the error',
60
- sender: 'user',
61
- time: '10:08 AM',
62
- attachments: [{
63
- id: 'att1',
64
- name: 'error-screenshot.png',
65
- size: 245780,
66
- type: 'image/png',
67
- url: 'https://picsum.photos/400/300?random=1'
68
- }]
69
- },
70
- { id: '6', text: 'Thanks for your help with the login issue!', sender: 'user', time: '10:10 AM' },
101
+ static demo = () => html `
102
+ <div style="min-height: 660px; padding: 20px; background: var(--sio-bg);">
103
+ <sio-combox class="open" style="position: relative; bottom: auto; right: auto;"></sio-combox>
104
+ </div>
105
+ `;
106
+ // Singleton instance
107
+ static instance = null;
108
+ /**
109
+ * Creates and appends a singleton combox to document.body
110
+ */
111
+ static createOnBody() {
112
+ if (!SioCombox.instance) {
113
+ SioCombox.instance = new SioCombox();
114
+ document.body.appendChild(SioCombox.instance);
115
+ }
116
+ return SioCombox.instance;
117
+ }
118
+ /**
119
+ * Gets the singleton instance if it exists
120
+ */
121
+ static getInstance() {
122
+ return SioCombox.instance;
123
+ }
124
+ #away_accessor_storage = __runInitializers(this, _away_initializers, false);
125
+ /** team is away — the conversation state falls back to email capture */
126
+ get away() { return this.#away_accessor_storage; }
127
+ set away(value) { this.#away_accessor_storage = value; }
128
+ #selectedConversationId_accessor_storage = (__runInitializers(this, _away_extraInitializers), __runInitializers(this, _selectedConversationId_initializers, null));
129
+ get selectedConversationId() { return this.#selectedConversationId_accessor_storage; }
130
+ set selectedConversationId(value) { this.#selectedConversationId_accessor_storage = value; }
131
+ #isKeyboardVisible_accessor_storage = (__runInitializers(this, _selectedConversationId_extraInitializers), __runInitializers(this, _isKeyboardVisible_initializers, false));
132
+ get isKeyboardVisible() { return this.#isKeyboardVisible_accessor_storage; }
133
+ set isKeyboardVisible(value) { this.#isKeyboardVisible_accessor_storage = value; }
134
+ #isOpen_accessor_storage = (__runInitializers(this, _isKeyboardVisible_extraInitializers), __runInitializers(this, _isOpen_initializers, false));
135
+ get isOpen() { return this.#isOpen_accessor_storage; }
136
+ set isOpen(value) { this.#isOpen_accessor_storage = value; }
137
+ keyboardBlurTimeout = __runInitializers(this, _isOpen_extraInitializers);
138
+ #conversations_accessor_storage = __runInitializers(this, _conversations_initializers, [
71
139
  {
72
- id: '7',
73
- text: 'Here is the documentation you requested',
74
- sender: 'support',
75
- time: '10:15 AM',
76
- attachments: [{
77
- id: 'att2',
78
- name: 'user-guide.pdf',
79
- size: 2457600,
80
- type: 'application/pdf',
81
- url: 'data:application/pdf;base64,JVBERi0xLjMKJeLjz9MKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iagoyIDAgb2JqCjw8Ci9UeXBlIC9PdXRsaW5lcwovQ291bnQgMAo+PgplbmRvYmoKMyAwIG9iago8PAovVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzQgMCBSXQo+PgplbmRvYmoKNCAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Db250ZW50cyA1IDAgUgovUmVzb3VyY2VzIDw8Ci9Gb250IDw8Ci9GMSA2IDAgUgo+Pgo+Pgo+PgplbmRvYmoKNSAwIG9iago8PAovTGVuZ3RoIDQ0Cj4+CnN0cmVhbQpCVApxCjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8gV29ybGQpIFRqCkVUClEKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1RpbWVzLVJvbWFuCj4+CmVuZG9iagp4cmVmCjAgNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA3NCAwMDAwMCBuIAowMDAwMDAwMTIwIDAwMDAwIG4gCjAwMDAwMDAxNzkgMDAwMDAgbiAKMDAwMDAwMDM2NCAwMDAwMCBuIAowMDAwMDAwNDY2IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgNwovUm9vdCAxIDAgUgo+PgpzdGFydHhyZWYKNTY1CiUlRU9G'
82
- }]
140
+ id: 'orbit-launch',
141
+ title: 'Lena · Orbit',
142
+ lastMessage: 'Glad that sorted it — anything else, just write!',
143
+ time: '2d',
144
+ initials: 'LP',
145
+ tint: '#FF2D55',
146
+ status: 'resolved',
83
147
  },
84
- ],
85
- '2': [
86
- { id: '1', text: 'I need help understanding my invoice', sender: 'user', time: '9:00 AM' },
87
- { id: '2', text: 'I\'d be happy to help explain your invoice. Which part is unclear?', sender: 'support', time: '9:05 AM' },
88
- ],
89
- '3': [
90
- { id: '1', text: 'I\'d love to see dark mode support in your app!', sender: 'user', time: 'Yesterday' },
91
- { id: '2', text: 'Thanks for the suggestion! We\'re actually working on dark mode and it should be available next month.', sender: 'support', time: 'Yesterday' },
92
- { id: '3', text: 'That would be great! Looking forward to it', sender: 'user', time: 'Yesterday' },
93
- ],
94
- '4': [
95
- { id: '1', text: 'Can you tell me more about your enterprise plans?', sender: 'user', time: '2 days ago' },
96
- { id: '2', text: 'Of course! Our enterprise plans include advanced features like SSO, dedicated support, and custom integrations.', sender: 'support', time: '2 days ago' },
97
- { id: '3', text: 'Thank you for the information', sender: 'user', time: '2 days ago' },
98
- ]
99
- };
100
- constructor() {
101
- super();
102
- domtools.DomTools.setupDomTools();
103
- }
104
- static styles = [
105
- cssManager.defaultStyles,
106
- css `
148
+ ]);
149
+ // demo data — the prototype's Lena/Orbit launch-banner thread
150
+ get conversations() { return this.#conversations_accessor_storage; }
151
+ set conversations(value) { this.#conversations_accessor_storage = value; }
152
+ #messages_accessor_storage = (__runInitializers(this, _conversations_extraInitializers), __runInitializers(this, _messages_initializers, {
153
+ 'orbit-launch': [
154
+ {
155
+ id: '1',
156
+ text: 'Hey! 👋 You wrote about the launch banner — what would you like to change?',
157
+ sender: 'support',
158
+ time: '14:02',
159
+ },
160
+ {
161
+ id: '2',
162
+ text: 'The headline is cut off on tablet. Can we shorten it before Thursday?',
163
+ sender: 'user',
164
+ time: '14:03',
165
+ },
166
+ {
167
+ id: '3',
168
+ text: "Good catch. We can ship the short variant today — I'll send a preview here in ~10 min.",
169
+ sender: 'support',
170
+ time: '14:04',
171
+ },
172
+ { id: '4', text: 'Perfect, thanks!', sender: 'user', time: '14:04' },
173
+ ],
174
+ }));
175
+ get messages() { return this.#messages_accessor_storage; }
176
+ set messages(value) { this.#messages_accessor_storage = value; }
177
+ constructor() {
178
+ super();
179
+ domtools.DomTools.setupDomTools();
180
+ }
181
+ async connectedCallback() {
182
+ await super.connectedCallback();
183
+ this.addEventListener('input-focus', this.handleInputFocus);
184
+ this.addEventListener('input-blur', this.handleInputBlur);
185
+ }
186
+ async disconnectedCallback() {
187
+ await super.disconnectedCallback();
188
+ this.removeEventListener('input-focus', this.handleInputFocus);
189
+ this.removeEventListener('input-blur', this.handleInputBlur);
190
+ if (this.keyboardBlurTimeout) {
191
+ clearTimeout(this.keyboardBlurTimeout);
192
+ }
193
+ }
194
+ handleInputFocus = (__runInitializers(this, _messages_extraInitializers), () => {
195
+ if (this.keyboardBlurTimeout) {
196
+ clearTimeout(this.keyboardBlurTimeout);
197
+ this.keyboardBlurTimeout = undefined;
198
+ }
199
+ this.isKeyboardVisible = true;
200
+ });
201
+ handleInputBlur = () => {
202
+ if (this.keyboardBlurTimeout) {
203
+ clearTimeout(this.keyboardBlurTimeout);
204
+ }
205
+ this.keyboardBlurTimeout = window.setTimeout(() => {
206
+ this.isKeyboardVisible = false;
207
+ this.keyboardBlurTimeout = undefined;
208
+ }, 150);
209
+ };
210
+ updated(changedProperties) {
211
+ super.updated(changedProperties);
212
+ if (changedProperties.has('isKeyboardVisible')) {
213
+ if (this.isKeyboardVisible) {
214
+ this.setAttribute('keyboard-visible', '');
215
+ }
216
+ else {
217
+ this.removeAttribute('keyboard-visible');
218
+ }
219
+ }
220
+ if (changedProperties.has('isOpen')) {
221
+ if (this.isOpen) {
222
+ this.classList.add('open');
223
+ this.dispatchEvent(new CustomEvent('opened', { bubbles: true, composed: true }));
224
+ }
225
+ else {
226
+ this.classList.remove('open');
227
+ this.dispatchEvent(new CustomEvent('closed', { bubbles: true, composed: true }));
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Opens the combox
233
+ */
234
+ open() {
235
+ this.isOpen = true;
236
+ }
237
+ /**
238
+ * Closes the combox
239
+ */
240
+ close() {
241
+ this.isOpen = false;
242
+ this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));
243
+ }
244
+ /**
245
+ * Toggles the combox open/closed state
246
+ */
247
+ toggle() {
248
+ if (this.isOpen) {
249
+ this.close();
250
+ }
251
+ else {
252
+ this.open();
253
+ }
254
+ }
255
+ /**
256
+ * Returns whether the combox is currently open
257
+ */
258
+ getIsOpen() {
259
+ return this.isOpen;
260
+ }
261
+ static styles = [
262
+ ...sioElementStyles,
263
+ css `
107
264
  :host {
108
- display: block;
109
- height: 600px;
110
- width: 800px;
111
- background: ${bdTheme('background')};
112
- border-radius: ${unsafeCSS(radius['2xl'])};
113
- border: 1px solid ${bdTheme('border')};
114
- box-shadow: ${unsafeCSS(shadows.xl)};
265
+ position: fixed;
266
+ bottom: 96px;
267
+ right: 24px;
268
+ width: 380px;
269
+ height: 620px;
270
+ display: flex;
271
+ flex-direction: column;
272
+ background: var(--sio-surface);
273
+ border-radius: 20px;
115
274
  overflow: hidden;
116
- font-family: ${unsafeCSS(fontFamilies.sans)};
117
- position: relative;
275
+ box-shadow:
276
+ 0 24px 64px rgba(0, 0, 0, 0.22),
277
+ 0 0 0 0.5px rgba(0, 0, 0, 0.08);
278
+ font-family: var(--sio-font-sf);
118
279
  transform-origin: bottom right;
119
- }
120
-
121
- :host(.animate-in) {
122
- animation: scaleIn 300ms cubic-bezier(0.34, 1.56, 0.64, 1);
123
- }
124
-
125
- @keyframes scaleIn {
126
- from {
127
- opacity: 0;
128
- transform: scale(0.9) translateY(10px);
129
- }
130
- to {
131
- opacity: 1;
132
- transform: scale(1) translateY(0);
133
- }
134
- }
135
-
136
- :host::before {
137
- content: '';
138
- position: absolute;
139
- inset: 0;
140
- border-radius: ${unsafeCSS(radius['2xl'])};
141
- padding: 1px;
142
- background: linear-gradient(145deg, ${bdTheme('border')}, transparent 50%);
143
- -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
144
- -webkit-mask-composite: exclude;
145
- mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
146
- mask-composite: exclude;
147
- opacity: 0.5;
280
+ z-index: 10001;
281
+
282
+ /* hidden by default */
283
+ opacity: 0;
148
284
  pointer-events: none;
285
+ transform: scale(0.95) translateY(10px);
286
+ transition:
287
+ opacity 200ms ease,
288
+ transform 200ms ease;
289
+ }
290
+
291
+ :host(.open) {
292
+ opacity: 1;
293
+ pointer-events: all;
294
+ transform: scale(1) translateY(0);
149
295
  }
150
296
 
151
297
  .container {
152
- display: flex;
153
- height: 100%;
154
- overflow: visible;
155
- border-radius: ${unsafeCSS(radius['2xl'])};
298
+ position: relative;
299
+ flex: 1;
300
+ min-height: 0;
301
+ overflow: hidden;
156
302
  }
157
303
 
158
- /* Responsive layout */
159
- @media (max-width: 600px) {
160
- :host {
161
- width: 100%;
162
- height: 100%;
163
- border-radius: 0;
164
- }
304
+ sio-conversation-selector,
305
+ sio-conversation-view {
306
+ position: absolute;
307
+ top: 0;
308
+ width: 100%;
309
+ height: 100%;
310
+ transition:
311
+ left 280ms cubic-bezier(0.4, 0, 0.2, 1),
312
+ opacity 200ms ease;
313
+ }
165
314
 
166
- .container {
167
- position: relative;
168
- }
315
+ .container.show-list sio-conversation-selector {
316
+ left: 0;
317
+ opacity: 1;
318
+ }
169
319
 
170
- sio-conversation-selector {
171
- position: absolute;
172
- width: 100%;
173
- height: 100%;
174
- transition: left 300ms ease, opacity 200ms ease;
175
- }
320
+ .container.show-list sio-conversation-view {
321
+ left: 100%;
322
+ opacity: 0;
323
+ pointer-events: none;
324
+ }
176
325
 
177
- sio-conversation-view {
178
- position: absolute;
179
- width: 100%;
180
- height: 100%;
181
- transition: left 300ms ease, opacity 200ms ease;
182
- }
326
+ .container.show-conversation sio-conversation-selector {
327
+ left: -100%;
328
+ opacity: 0;
329
+ pointer-events: none;
330
+ }
183
331
 
184
- /* Mobile navigation states */
185
- .container.show-list sio-conversation-selector {
186
- left: 0;
187
- opacity: 1;
188
- }
332
+ .container.show-conversation sio-conversation-view {
333
+ left: 0;
334
+ opacity: 1;
335
+ }
189
336
 
190
- .container.show-list sio-conversation-view {
191
- left: 100%;
192
- opacity: 0;
193
- }
337
+ /* footer — every state (v7 SIOWidgetShell) */
338
+ .footer {
339
+ flex-shrink: 0;
340
+ padding: 8px 0 10px;
341
+ display: flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ gap: 5px;
345
+ font-size: 10.5px;
346
+ color: color-mix(in oklab, var(--sio-label-3) 75%, transparent);
347
+ user-select: none;
348
+ }
194
349
 
195
- .container.show-conversation sio-conversation-selector {
196
- left: -100%;
197
- opacity: 0;
198
- }
350
+ .footer svg {
351
+ display: block;
352
+ }
199
353
 
200
- .container.show-conversation sio-conversation-view {
201
- left: 0;
202
- opacity: 1;
203
- }
354
+ .footer span {
355
+ font-weight: 500;
356
+ }
357
+ `,
358
+ // phablet: full-screen sheet
359
+ cssManager.cssForPhablet(css `
360
+ :host {
361
+ top: 0;
362
+ left: 0;
363
+ right: 0;
364
+ bottom: 0;
365
+ width: 100vw;
366
+ height: 100vh;
367
+ height: 100dvh;
368
+ border-radius: 0;
369
+ transform-origin: center center;
204
370
  }
205
371
 
206
- @media (min-width: 601px) {
207
- sio-conversation-selector {
208
- width: 320px;
209
- flex-shrink: 0;
210
- }
372
+ :host(.open) {
373
+ transform: scale(1) translateY(0);
374
+ }
211
375
 
212
- sio-conversation-view {
213
- flex: 1;
214
- }
376
+ :host([keyboard-visible]) {
377
+ height: 100vh;
378
+ height: 100dvh;
215
379
  }
216
- `,
217
- ];
218
- render() {
219
- const selectedConversation = this.selectedConversationId
220
- ? this.conversations.find(c => c.id === this.selectedConversationId)
221
- : null;
222
- const conversationData = selectedConversation
223
- ? {
224
- id: selectedConversation.id,
225
- title: selectedConversation.title,
226
- messages: this.messages[selectedConversation.id] || []
227
- }
228
- : null;
229
- const containerClass = this.selectedConversationId ? 'show-conversation' : 'show-list';
230
- return html `
380
+ `),
381
+ ];
382
+ render() {
383
+ const selectedConversation = this.selectedConversationId
384
+ ? this.conversations.find((c) => c.id === this.selectedConversationId)
385
+ : null;
386
+ const conversationData = selectedConversation
387
+ ? {
388
+ id: selectedConversation.id,
389
+ title: selectedConversation.title,
390
+ agentInitials: selectedConversation.initials,
391
+ agentTint: selectedConversation.tint,
392
+ dateStamp: 'Today, 14:02',
393
+ messages: this.messages[selectedConversation.id] || [],
394
+ }
395
+ : null;
396
+ const containerClass = this.selectedConversationId ? 'show-conversation' : 'show-list';
397
+ return html `
231
398
  <div class="container ${containerClass}">
232
399
  <sio-conversation-selector
233
400
  .conversations=${this.conversations}
234
401
  .selectedConversationId=${this.selectedConversationId}
235
402
  @conversation-selected=${this.handleConversationSelected}
403
+ @new-conversation=${this.handleNewConversation}
404
+ @close=${() => this.close()}
236
405
  ></sio-conversation-selector>
237
-
406
+
238
407
  <sio-conversation-view
239
408
  .conversation=${conversationData}
409
+ ?away=${this.away}
240
410
  @back=${this.handleBack}
241
411
  @send-message=${this.handleSendMessage}
242
412
  @open-image=${this.handleOpenImage}
243
413
  @open-file=${this.handleOpenImage}
244
414
  ></sio-conversation-view>
245
415
  </div>
246
-
416
+
417
+ <div class="footer">
418
+ <!-- mini social.io brand glyph -->
419
+ <svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
420
+ <path
421
+ d="M12 3C7 3 3 6.6 3 11c0 2.5 1.3 4.7 3.3 6.2-.1 1-.5 2.1-1.3 2.9 1.6-.1 3-.7 4-1.4.9.2 1.9.3 3 .3 5 0 9-3.6 9-8S17 3 12 3z"
422
+ />
423
+ </svg>
424
+ <span>Powered by social.io</span>
425
+ </div>
426
+
247
427
  <sio-image-lightbox></sio-image-lightbox>
248
428
  `;
249
- }
250
- handleConversationSelected(event) {
251
- const conversation = event.detail.conversation;
252
- this.selectedConversationId = conversation.id;
253
- // Mark conversation as read
254
- const convIndex = this.conversations.findIndex(c => c.id === conversation.id);
255
- if (convIndex !== -1) {
256
- this.conversations[convIndex] = { ...this.conversations[convIndex], unread: false };
257
- this.conversations = [...this.conversations];
258
429
  }
259
- }
260
- handleBack() {
261
- // For mobile view, go back to conversation list
262
- this.selectedConversationId = null;
263
- }
264
- handleSendMessage(event) {
265
- const message = event.detail.message;
266
- const conversationId = this.selectedConversationId;
267
- if (conversationId) {
268
- // Add message to the conversation
269
- if (!this.messages[conversationId]) {
270
- this.messages[conversationId] = [];
430
+ handleConversationSelected(event) {
431
+ const conversation = event.detail.conversation;
432
+ this.selectedConversationId = conversation.id;
433
+ // Mark conversation as read
434
+ const convIndex = this.conversations.findIndex((c) => c.id === conversation.id);
435
+ if (convIndex !== -1) {
436
+ this.conversations[convIndex] = { ...this.conversations[convIndex], unread: false };
437
+ this.conversations = [...this.conversations];
438
+ }
439
+ }
440
+ handleNewConversation = () => {
441
+ const newConversation = {
442
+ id: `new-${Date.now()}`,
443
+ title: 'Lena · Orbit',
444
+ lastMessage: '',
445
+ time: 'now',
446
+ initials: 'LP',
447
+ tint: '#FF2D55',
448
+ status: 'new',
449
+ };
450
+ this.conversations = [newConversation, ...this.conversations];
451
+ this.messages = { ...this.messages, [newConversation.id]: [] };
452
+ this.selectedConversationId = newConversation.id;
453
+ };
454
+ handleBack() {
455
+ // back to the home / welcome state
456
+ this.selectedConversationId = null;
457
+ }
458
+ handleSendMessage(event) {
459
+ const message = event.detail.message;
460
+ const conversationId = this.selectedConversationId;
461
+ if (conversationId) {
462
+ // Add message to the conversation
463
+ if (!this.messages[conversationId]) {
464
+ this.messages[conversationId] = [];
465
+ }
466
+ this.messages[conversationId] = [...this.messages[conversationId], message];
467
+ this.messages = { ...this.messages };
468
+ // Update conversation's last message
469
+ const convIndex = this.conversations.findIndex((c) => c.id === conversationId);
470
+ if (convIndex !== -1) {
471
+ this.conversations[convIndex] = {
472
+ ...this.conversations[convIndex],
473
+ lastMessage: message.text,
474
+ time: 'now',
475
+ };
476
+ // Move conversation to top
477
+ const [conv] = this.conversations.splice(convIndex, 1);
478
+ this.conversations = [conv, ...this.conversations];
479
+ }
271
480
  }
272
- this.messages[conversationId] = [...this.messages[conversationId], message];
481
+ }
482
+ /**
483
+ * Append an inbound (support-side) message to a conversation.
484
+ * The host application calls this when a reply arrives.
485
+ */
486
+ receiveMessage(conversationId, message) {
487
+ this.messages[conversationId] = [...(this.messages[conversationId] ?? []), message];
273
488
  this.messages = { ...this.messages };
274
- // Update conversation's last message
275
- const convIndex = this.conversations.findIndex(c => c.id === conversationId);
276
- if (convIndex !== -1) {
277
- this.conversations[convIndex] = {
278
- ...this.conversations[convIndex],
279
- lastMessage: message.text,
280
- time: 'Just now'
489
+ }
490
+ handleOpenImage(event) {
491
+ const attachment = event.detail.attachment;
492
+ const lightbox = this.shadowRoot?.querySelector('sio-image-lightbox');
493
+ if (lightbox && attachment) {
494
+ const lightboxFile = {
495
+ url: attachment.url,
496
+ name: attachment.name,
497
+ size: attachment.size,
498
+ type: attachment.type,
281
499
  };
282
- // Move conversation to top
283
- const [conv] = this.conversations.splice(convIndex, 1);
284
- this.conversations = [conv, ...this.conversations];
500
+ lightbox.open(lightboxFile);
285
501
  }
286
- // Simulate a response after a delay (remove in production)
287
- setTimeout(() => {
288
- const responseMessage = {
289
- id: Date.now().toString(),
290
- text: 'Thanks for your message! We\'ll get back to you shortly.',
291
- sender: 'support',
292
- time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
293
- };
294
- this.messages[conversationId] = [...this.messages[conversationId], responseMessage];
295
- this.messages = { ...this.messages };
296
- }, 3000);
297
502
  }
298
- }
299
- handleOpenImage(event) {
300
- const attachment = event.detail.attachment;
301
- const lightbox = this.shadowRoot?.querySelector('sio-image-lightbox');
302
- if (lightbox && attachment) {
303
- const lightboxFile = {
304
- url: attachment.url,
305
- name: attachment.name,
306
- size: attachment.size,
307
- type: attachment.type
308
- };
309
- lightbox.open(lightboxFile);
503
+ static {
504
+ __runInitializers(_classThis, _classExtraInitializers);
310
505
  }
311
- }
312
- }
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNvbWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tY29tYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLElBQUksRUFDSixhQUFhLEVBRWIsVUFBVSxFQUNWLEdBQUcsRUFDSCxTQUFTLEVBQ1QsS0FBSyxHQUNOLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCx1QkFBdUI7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV4RCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLHVCQUF1QixFQUFzQixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxtQkFBbUIsRUFBMkQsTUFBTSw0QkFBNEIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFFaEYsa0NBQWtDO0FBQ2xDLHVCQUF1QixDQUFDO0FBQ3hCLG1CQUFtQixDQUFDO0FBQ3BCLGdCQUFnQixDQUFDO0FBUWpCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztBQUM1QixNQUFNLE9BQU8sU0FBVSxTQUFRLFdBQVc7SUFDakMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUEsNkJBQTZCLENBQUM7SUFFN0QsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEIsUUFBUSxDQUFDLGVBQWUsQ0FBYztJQUU3QyxDQUFDLEtBQUssRUFB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
506
+ };
507
+ return SioCombox = _classThis;
508
+ })();
509
+ export { SioCombox };
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvLWNvbWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zaW8tY29tYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsS0FBSyxFQUNMLGFBQWEsRUFDYixHQUFHLEVBQ0gsVUFBVSxHQUVYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFzQixNQUFNLGdDQUFnQyxDQUFDO0FBQzdGLE9BQU8sRUFDTCxtQkFBbUIsR0FJcEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsdUJBQXVCLENBQUM7QUFDeEIsbUJBQW1CLENBQUM7QUFDcEIsZ0JBQWdCLENBQUM7QUFRakI7Ozs7Ozs7Ozs7OztHQVlHO0lBRVUsU0FBUzs0QkFEckIsYUFBYSxDQUFDLFlBQVksQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCQUFuQixTQUFRLFdBQVc7Ozs7Z0NBNkJ2QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7a0RBRzNCLEtBQUssRUFBRTs2Q0FHUCxLQUFLLEVBQUU7a0NBR1AsS0FBSyxFQUFFO3lDQU1QLEtBQUssRUFBRTtvQ0FhUCxLQUFLLEVBQUU7WUEzQlIsaUtBQWdCLElBQUksNkJBQUosSUFBSSxtRkFBUztZQUc3Qix1TkFBaUIsc0JBQXNCLDZCQUF0QixzQkFBc0IsdUhBQXVCO1lBRzlELHdNQUFpQixpQkFBaUIsNkJBQWpCLGlCQUFpQiw2R0FBa0I7WUFHcEQsdUtBQWlCLE1BQU0sNkJBQU4sTUFBTSx1RkFBa0I7WUFNekMsNExBQWlCLGFBQWEsNkJBQWIsYUFBYSxxR0FVNUI7WUFHRiw2S0FBaUIsUUFBUSw2QkFBUixRQUFRLDJGQXNCdkI7WUFoRkosNktBNmFDOzs7O1FBNWFRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7O0dBSTlCLENBQUM7UUFFRixxQkFBcUI7UUFDYixNQUFNLENBQUMsUUFBUSxHQUFxQixJQUFJLENBQUM7UUFFakQ7O1dBRUc7UUFDSSxNQUFNLENBQUMsWUFBWTtZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4QixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQzVCLENBQUM7UUFFRDs7V0FFRztRQUNJLE1BQU0sQ0FBQyxXQUFXO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUM1QixDQUFDO1FBSUQscUVBQXVCLEtBQUssRUFBQztRQUY3Qix3RUFBd0U7UUFFeEUsSUFBZ0IsSUFBSSwwQ0FBUztRQUE3QixJQUFnQixJQUFJLGdEQUFTO1FBRzdCLDRKQUF5RCxJQUFJLEdBQUM7UUFBOUQsSUFBaUIsc0JBQXNCLDREQUF1QjtRQUE5RCxJQUFpQixzQkFBc0Isa0VBQXVCO1FBRzlELG9LQUE4QyxLQUFLLEdBQUM7UUFBcEQsSUFBaUIsaUJBQWlCLHVEQUFrQjtRQUFwRCxJQUFpQixpQkFBaUIsNkRBQWtCO1FBR3BELHlJQUFtQyxLQUFLLEdBQUM7UUFBekMsSUFBaUIsTUFBTSw0Q0FBa0I7UUFBekMsSUFBaUIsTUFBTSxrREFBa0I7UUFFakMsbUJBQW1CLHNEQUFVO1FBSXJDLHVGQUFrRDtZQUNoRDtnQkFDRSxFQUFFLEVBQUUsY0FBYztnQkFDbEIsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLFdBQVcsRUFBRSxrREFBa0Q7Z0JBQy9ELElBQUksRUFBRSxJQUFJO2dCQUNWLFFBQVEsRUFBRSxJQUFJO2dCQUNkLElBQUksRUFBRSxTQUFTO2dCQUNmLE1BQU0sRUFBRSxVQUFVO2FBQ25CO1NBQ0YsRUFBQztRQVpGLDhEQUE4RDtRQUU5RCxJQUFpQixhQUFhLG1EQVU1QjtRQVZGLElBQWlCLGFBQWEseURBVTVCO1FBR0YseUlBQXNFO1lBQ3BFLGNBQWMsRUFBRTtnQkFDZDtvQkFDRSxFQUFFLEVBQUUsR0FBRztvQkFDUCxJQUFJLEVBQUUsNEVBQTRFO29CQUNsRixNQUFNLEVBQUUsU0FBUztvQkFDakIsSUFBSSxFQUFFLE9BQU87aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsSUFBSSxFQUFFLHVFQUF1RTtvQkFDN0UsTUFBTSxFQUFFLE1BQU07b0JBQ2QsSUFBSSxFQUFFLE9BQU87aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsSUFBSSxFQUFFLHdGQUF3RjtvQkFDOUYsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxPQUFPO2lCQUNkO2dCQUNELEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO2FBQ3JFO1NBQ0YsR0FBQztRQXRCRixJQUFpQixRQUFRLDhDQXNCdkI7UUF0QkYsSUFBaUIsUUFBUSxvREFzQnZCO1FBRUY7WUFDRSxLQUFLLEVBQUUsQ0FBQztZQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUVELEtBQUssQ0FBQyxpQkFBaUI7WUFDckIsTUFBTSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBaUMsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWdDLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsS0FBSyxDQUFDLG9CQUFvQjtZQUN4QixNQUFNLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFpQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZ0MsQ0FBQyxDQUFDO1lBQzlFLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzdCLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQztRQUVPLGdCQUFnQiwwREFBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLENBQUMsRUFBQztRQUVNLGVBQWUsR0FBRyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDN0IsWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDO1FBRUYsT0FBTyxDQUFDLGlCQUFtQztZQUN6QyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakMsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ0ksSUFBSTtZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRDs7V0FFRztRQUNJLEtBQUs7WUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQ7O1dBRUc7UUFDSSxNQUFNO1lBQ1gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ0ksU0FBUztZQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO1FBRU0sTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixHQUFHLGdCQUFnQjtZQUNuQixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E4RkY7WUFDRCw2QkFBNkI7WUFDN0IsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXFCM0IsQ0FBQztTQUNILENBQUM7UUFFSyxNQUFNO1lBQ1gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCO2dCQUN0RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLHNCQUFzQixDQUFDO2dCQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRVQsTUFBTSxnQkFBZ0IsR0FBNkIsb0JBQW9CO2dCQUNyRSxDQUFDLENBQUM7b0JBQ0UsRUFBRSxFQUFFLG9CQUFvQixDQUFDLEVBQUU7b0JBQzNCLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxLQUFLO29CQUNqQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsUUFBUTtvQkFDNUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLElBQUk7b0JBQ3BDLFNBQVMsRUFBRSxjQUFjO29CQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO2lCQUN2RDtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRVQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBRXZGLE9BQU8sSUFBSSxDQUFBOzhCQUNlLGNBQWM7OzJCQUVqQixJQUFJLENBQUMsYUFBYTtvQ0FDVCxJQUFJLENBQUMsc0JBQXNCO21DQUM1QixJQUFJLENBQUMsMEJBQTBCOzhCQUNwQyxJQUFJLENBQUMscUJBQXFCO21CQUNyQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFOzs7OzBCQUlYLGdCQUFnQjtrQkFDeEIsSUFBSSxDQUFDLElBQUk7a0JBQ1QsSUFBSSxDQUFDLFVBQVU7MEJBQ1AsSUFBSSxDQUFDLGlCQUFpQjt3QkFDeEIsSUFBSSxDQUFDLGVBQWU7dUJBQ3JCLElBQUksQ0FBQyxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7S0FldEMsQ0FBQztRQUNKLENBQUM7UUFFTywwQkFBMEIsQ0FBQyxLQUFrQjtZQUNuRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQTZCLENBQUM7WUFDaEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFFOUMsNEJBQTRCO1lBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRixJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDcEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBRU8scUJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQ25DLE1BQU0sZUFBZSxHQUFrQjtnQkFDckMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN2QixLQUFLLEVBQUUsY0FBYztnQkFDckIsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUVNLFVBQVU7WUFDaEIsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFDckMsQ0FBQztRQUVPLGlCQUFpQixDQUFDLEtBQWtCO1lBQzFDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBbUIsQ0FBQztZQUNqRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7WUFFbkQsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRXJDLHFDQUFxQztnQkFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssY0FBYyxDQUFDLENBQUM7Z0JBQy9FLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUc7d0JBQzlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7d0JBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSTt3QkFDekIsSUFBSSxFQUFFLEtBQUs7cUJBQ1osQ0FBQztvQkFDRiwyQkFBMkI7b0JBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3JELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVEOzs7V0FHRztRQUNJLGNBQWMsQ0FBQyxjQUFzQixFQUFFLE9BQWlCO1lBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUVPLGVBQWUsQ0FBQyxLQUFrQjtZQUN4QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQXlCLENBQUM7WUFDMUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsb0JBQW9CLENBQXFCLENBQUM7WUFFMUYsSUFBSSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sWUFBWSxHQUFrQjtvQkFDbEMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHO29CQUNuQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7b0JBQ3JCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtvQkFDckIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2lCQUN0QixDQUFDO2dCQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7O1lBNWFVLHVEQUFTOzs7OztTQUFULFNBQVMifQ==