@promptbook/components 0.103.0-51 โ 0.103.0-53
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/esm/index.es.js +862 -104
- package/esm/index.es.js.map +1 -1
- package/esm/typings/servers.d.ts +8 -1
- package/esm/typings/src/_packages/components.index.d.ts +2 -0
- package/esm/typings/src/_packages/core.index.d.ts +6 -0
- package/esm/typings/src/_packages/types.index.d.ts +2 -0
- package/esm/typings/src/_packages/utils.index.d.ts +2 -0
- package/esm/typings/src/book-2.0/agent-source/AgentBasicInformation.d.ts +1 -0
- package/esm/typings/src/book-2.0/agent-source/AgentModelRequirements.d.ts +7 -0
- package/esm/typings/src/book-2.0/agent-source/createCommitmentRegex.d.ts +2 -2
- package/esm/typings/src/book-components/Chat/Chat/ChatProps.d.ts +10 -0
- package/esm/typings/src/book-components/PromptbookAgent/PromptbookAgent.d.ts +6 -0
- package/esm/typings/src/book-components/_common/HamburgerMenu/HamburgerMenu.d.ts +12 -0
- package/esm/typings/src/book-components/icons/MicIcon.d.ts +8 -0
- package/esm/typings/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +17 -0
- package/esm/typings/src/commitments/MESSAGE/AgentMessageCommitmentDefinition.d.ts +28 -0
- package/esm/typings/src/commitments/MESSAGE/UserMessageCommitmentDefinition.d.ts +28 -0
- package/esm/typings/src/commitments/META_COLOR/META_COLOR.d.ts +38 -0
- package/esm/typings/src/commitments/_base/BaseCommitmentDefinition.d.ts +2 -1
- package/esm/typings/src/commitments/index.d.ts +22 -1
- package/esm/typings/src/execution/LlmExecutionTools.d.ts +9 -0
- package/esm/typings/src/llm-providers/agent/Agent.d.ts +1 -0
- package/esm/typings/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +2 -1
- package/esm/typings/src/llm-providers/agent/RemoteAgent.d.ts +10 -1
- package/esm/typings/src/utils/normalization/normalizeMessageText.d.ts +9 -0
- package/esm/typings/src/utils/normalization/normalizeMessageText.test.d.ts +1 -0
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/umd/index.umd.js +862 -103
- package/umd/index.umd.js.map +1 -1
package/umd/index.umd.js
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* @generated
|
|
32
32
|
* @see https://github.com/webgptorg/promptbook
|
|
33
33
|
*/
|
|
34
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.103.0-
|
|
34
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.103.0-53';
|
|
35
35
|
/**
|
|
36
36
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
37
37
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
@@ -80,9 +80,9 @@
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
var css_248z$
|
|
84
|
-
var styles$
|
|
85
|
-
styleInject(css_248z$
|
|
83
|
+
var css_248z$9 = ".AvatarChip-module_AvatarChip__4sA0u{align-items:center;background:#e0e7ef;border:1px solid #b3c2d1;border-radius:16px;color:#2a3b4d;cursor:pointer;display:inline-flex;font-size:.95em;font-weight:500;margin:2px;padding:4px 12px}.AvatarChip-module_Avatar__mN2sc{border-radius:50%;height:24px;margin-right:8px;object-fit:cover;width:24px}.AvatarChip-module_TemplateLabel__-7vVI{background:#f0f4f8;border-radius:12px;color:#3a4752;font-size:.8em;margin-left:8px;margin-right:0;padding:2px 6px;text-transform:uppercase}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhckNoaXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsa0JBQW1CLENBS25CLHdCQUF5QixDQU56QixrQkFBbUIsQ0FFbkIsYUFBYyxDQU1kLGNBQWUsQ0FYZixtQkFBb0IsQ0FPcEIsZUFBaUIsQ0FEakIsZUFBZ0IsQ0FFaEIsVUFBVyxDQU5YLGdCQVVKLENBRUEsaUNBR0ksaUJBQWtCLENBRGxCLFdBQVksQ0FHWixnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSGpCLFVBS0osQ0FFQSx3Q0FDSSxrQkFBbUIsQ0FJbkIsa0JBQW1CLENBSG5CLGFBQWMsQ0FDZCxjQUFnQixDQUdoQixlQUFnQixDQUNoQixjQUFlLENBSGYsZUFBZ0IsQ0FJaEIsd0JBQ0oiLCJmaWxlIjoiQXZhdGFyQ2hpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhckNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTBlN2VmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgbWFyZ2luOiAycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2IzYzJkMTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLkF2YXRhciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLlRlbXBsYXRlTGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICNmMGY0Zjg7XG4gICAgY29sb3I6ICMzYTQ3NTI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiJdfQ== */";
|
|
84
|
+
var styles$8 = {"AvatarChip":"AvatarChip-module_AvatarChip__4sA0u","Avatar":"AvatarChip-module_Avatar__mN2sc","TemplateLabel":"AvatarChip-module_TemplateLabel__-7vVI"};
|
|
85
|
+
styleInject(css_248z$9);
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Shows a chip with avatar's avatar and name
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
function AvatarChip(props) {
|
|
93
93
|
const { avatarBasicInformation, className, onSelect, isSelected, isTemplate } = props;
|
|
94
94
|
const { agentName, meta } = avatarBasicInformation;
|
|
95
|
-
return (jsxRuntime.jsxs("div", { className: classNames(styles$
|
|
95
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$8.AvatarChip, className, isSelected ? styles$8.Selected : undefined), onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(avatarBasicInformation), style: { cursor: onSelect ? 'pointer' : undefined }, children: [jsxRuntime.jsx("img", { src: meta.image, alt: agentName || '', className: styles$8.Avatar }), meta.fullname || agentName, isTemplate && jsxRuntime.jsx("span", { className: styles$8.TemplateLabel, children: "Template" })] }));
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
/**
|
|
@@ -187,6 +187,17 @@
|
|
|
187
187
|
* TODO: [๐คน] Figure out best placeholder image generator https://i.pravatar.cc/1000?u=568
|
|
188
188
|
*/
|
|
189
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Core Promptbook server configuration.
|
|
192
|
+
*
|
|
193
|
+
* This server is also used for auto-federation in the Agents Server.
|
|
194
|
+
*/
|
|
195
|
+
const CORE_SERVER = {
|
|
196
|
+
title: 'Promptbook Core',
|
|
197
|
+
description: `Core Promptbook server used for auto-federation`,
|
|
198
|
+
owner: 'AI Web, LLC <legal@ptbk.io> (https://www.ptbk.io/)',
|
|
199
|
+
urls: ['https://core.ptbk.io/'],
|
|
200
|
+
};
|
|
190
201
|
/**
|
|
191
202
|
* Available remote servers for the Promptbook
|
|
192
203
|
*
|
|
@@ -208,6 +219,7 @@
|
|
|
208
219
|
owner: 'AI Web, LLC <legal@ptbk.io> (https://www.ptbk.io/)',
|
|
209
220
|
urls: ['https://s6.ptbk.io/'],
|
|
210
221
|
},
|
|
222
|
+
CORE_SERVER,
|
|
211
223
|
/*
|
|
212
224
|
Note: Working on older version of Promptbook and not supported anymore
|
|
213
225
|
{
|
|
@@ -220,7 +232,14 @@
|
|
|
220
232
|
*/
|
|
221
233
|
];
|
|
222
234
|
/**
|
|
223
|
-
*
|
|
235
|
+
* Remote servers that are auto-federated by the Agents Server.
|
|
236
|
+
*
|
|
237
|
+
* These servers are always added in addition to the `FEDERATED_SERVERS` metadata.
|
|
238
|
+
*
|
|
239
|
+
* @public exported from `@promptbook/core`
|
|
240
|
+
*/
|
|
241
|
+
CORE_SERVER.urls;
|
|
242
|
+
/**
|
|
224
243
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
225
244
|
*/
|
|
226
245
|
|
|
@@ -2910,6 +2929,61 @@
|
|
|
2910
2929
|
return replacedTemplates;
|
|
2911
2930
|
}
|
|
2912
2931
|
|
|
2932
|
+
/**
|
|
2933
|
+
* Tag function for notating a prompt as template literal
|
|
2934
|
+
*
|
|
2935
|
+
* Note: There are 3 similar functions:
|
|
2936
|
+
* 1) `prompt` for notating single prompt exported from `@promptbook/utils`
|
|
2937
|
+
* 2) `promptTemplate` alias for `prompt`
|
|
2938
|
+
* 3) `book` for notating and validating entire books exported from `@promptbook/utils`
|
|
2939
|
+
*
|
|
2940
|
+
* @param strings
|
|
2941
|
+
* @param values
|
|
2942
|
+
* @returns the prompt string
|
|
2943
|
+
* @public exported from `@promptbook/utils`
|
|
2944
|
+
*/
|
|
2945
|
+
function prompt(strings, ...values) {
|
|
2946
|
+
if (values.length === 0) {
|
|
2947
|
+
return spaceTrim__default["default"](strings.join(''));
|
|
2948
|
+
}
|
|
2949
|
+
const stringsWithHiddenParameters = strings.map((stringsItem) =>
|
|
2950
|
+
// TODO: [0] DRY
|
|
2951
|
+
stringsItem.split('{').join(`${REPLACING_NONCE}beginbracket`).split('}').join(`${REPLACING_NONCE}endbracket`));
|
|
2952
|
+
const placeholderParameterNames = values.map((value, i) => `${REPLACING_NONCE}${i}`);
|
|
2953
|
+
const parameters = Object.fromEntries(values.map((value, i) => [placeholderParameterNames[i], value]));
|
|
2954
|
+
// Combine strings and values
|
|
2955
|
+
let pipelineString = stringsWithHiddenParameters.reduce((result, stringsItem, i) => placeholderParameterNames[i] === undefined
|
|
2956
|
+
? `${result}${stringsItem}`
|
|
2957
|
+
: `${result}${stringsItem}{${placeholderParameterNames[i]}}`, '');
|
|
2958
|
+
pipelineString = spaceTrim__default["default"](pipelineString);
|
|
2959
|
+
try {
|
|
2960
|
+
pipelineString = templateParameters(pipelineString, parameters);
|
|
2961
|
+
}
|
|
2962
|
+
catch (error) {
|
|
2963
|
+
if (!(error instanceof PipelineExecutionError)) {
|
|
2964
|
+
throw error;
|
|
2965
|
+
}
|
|
2966
|
+
console.error({ pipelineString, parameters, placeholderParameterNames, error });
|
|
2967
|
+
throw new UnexpectedError(spaceTrim__default["default"]((block) => `
|
|
2968
|
+
Internal error in prompt template literal
|
|
2969
|
+
|
|
2970
|
+
${block(JSON.stringify({ strings, values }, null, 4))}}
|
|
2971
|
+
|
|
2972
|
+
`));
|
|
2973
|
+
}
|
|
2974
|
+
// TODO: [0] DRY
|
|
2975
|
+
pipelineString = pipelineString
|
|
2976
|
+
.split(`${REPLACING_NONCE}beginbracket`)
|
|
2977
|
+
.join('{')
|
|
2978
|
+
.split(`${REPLACING_NONCE}endbracket`)
|
|
2979
|
+
.join('}');
|
|
2980
|
+
return pipelineString;
|
|
2981
|
+
}
|
|
2982
|
+
/**
|
|
2983
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
2984
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
2985
|
+
*/
|
|
2986
|
+
|
|
2913
2987
|
/**
|
|
2914
2988
|
* Detects if the code is running in a browser environment in main thread (Not in a web worker)
|
|
2915
2989
|
*
|
|
@@ -3227,6 +3301,18 @@
|
|
|
3227
3301
|
* TODO: [๐บ] Use some intermediate util splitWords
|
|
3228
3302
|
*/
|
|
3229
3303
|
|
|
3304
|
+
/**
|
|
3305
|
+
* Normalizes message text for comparison
|
|
3306
|
+
*
|
|
3307
|
+
* @param text The message text to normalize
|
|
3308
|
+
* @returns The normalized message text
|
|
3309
|
+
*
|
|
3310
|
+
* @public exported from `@promptbook/utils`
|
|
3311
|
+
*/
|
|
3312
|
+
function normalizeMessageText(text) {
|
|
3313
|
+
return spaceTrim.spaceTrim(text);
|
|
3314
|
+
}
|
|
3315
|
+
|
|
3230
3316
|
/**
|
|
3231
3317
|
* Normalizes a given text to PascalCase format.
|
|
3232
3318
|
*
|
|
@@ -3509,9 +3595,13 @@
|
|
|
3509
3595
|
*
|
|
3510
3596
|
* @private - TODO: [๐ง ] Maybe should be public?
|
|
3511
3597
|
*/
|
|
3512
|
-
function createCommitmentRegex(commitment) {
|
|
3513
|
-
const
|
|
3514
|
-
const
|
|
3598
|
+
function createCommitmentRegex(commitment, aliases = []) {
|
|
3599
|
+
const allCommitments = [commitment, ...aliases];
|
|
3600
|
+
const patterns = allCommitments.map((c) => {
|
|
3601
|
+
const escapedCommitment = c.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3602
|
+
return escapedCommitment.split(/\s+/).join('\\s+');
|
|
3603
|
+
});
|
|
3604
|
+
const keywordPattern = patterns.join('|');
|
|
3515
3605
|
const regex = new RegExp(`^\\s*(?<type>${keywordPattern})\\b\\s+(?<contents>.+)$`, 'gim');
|
|
3516
3606
|
return regex;
|
|
3517
3607
|
}
|
|
@@ -3524,9 +3614,13 @@
|
|
|
3524
3614
|
*
|
|
3525
3615
|
* @private
|
|
3526
3616
|
*/
|
|
3527
|
-
function createCommitmentTypeRegex(commitment) {
|
|
3528
|
-
const
|
|
3529
|
-
const
|
|
3617
|
+
function createCommitmentTypeRegex(commitment, aliases = []) {
|
|
3618
|
+
const allCommitments = [commitment, ...aliases];
|
|
3619
|
+
const patterns = allCommitments.map((c) => {
|
|
3620
|
+
const escapedCommitment = c.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3621
|
+
return escapedCommitment.split(/\s+/).join('\\s+');
|
|
3622
|
+
});
|
|
3623
|
+
const keywordPattern = patterns.join('|');
|
|
3530
3624
|
const regex = new RegExp(`^\\s*(?<type>${keywordPattern})\\b`, 'gim');
|
|
3531
3625
|
return regex;
|
|
3532
3626
|
}
|
|
@@ -3538,22 +3632,23 @@
|
|
|
3538
3632
|
* @private
|
|
3539
3633
|
*/
|
|
3540
3634
|
class BaseCommitmentDefinition {
|
|
3541
|
-
constructor(type) {
|
|
3635
|
+
constructor(type, aliases = []) {
|
|
3542
3636
|
this.type = type;
|
|
3637
|
+
this.aliases = aliases;
|
|
3543
3638
|
}
|
|
3544
3639
|
/**
|
|
3545
3640
|
* Creates a regex pattern to match this commitment in agent source
|
|
3546
3641
|
* Uses the existing createCommitmentRegex function as internal helper
|
|
3547
3642
|
*/
|
|
3548
3643
|
createRegex() {
|
|
3549
|
-
return createCommitmentRegex(this.type);
|
|
3644
|
+
return createCommitmentRegex(this.type, this.aliases);
|
|
3550
3645
|
}
|
|
3551
3646
|
/**
|
|
3552
3647
|
* Creates a regex pattern to match just the commitment type
|
|
3553
3648
|
* Uses the existing createCommitmentTypeRegex function as internal helper
|
|
3554
3649
|
*/
|
|
3555
3650
|
createTypeRegex() {
|
|
3556
|
-
return createCommitmentTypeRegex(this.type);
|
|
3651
|
+
return createCommitmentTypeRegex(this.type, this.aliases);
|
|
3557
3652
|
}
|
|
3558
3653
|
/**
|
|
3559
3654
|
* Helper method to create a new requirements object with updated system message
|
|
@@ -4181,6 +4276,77 @@
|
|
|
4181
4276
|
function keepUnused(...valuesToKeep) {
|
|
4182
4277
|
}
|
|
4183
4278
|
|
|
4279
|
+
/**
|
|
4280
|
+
* AGENT MESSAGE commitment definition
|
|
4281
|
+
*
|
|
4282
|
+
* The AGENT MESSAGE commitment defines a message from the agent in the conversation history.
|
|
4283
|
+
* It is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4284
|
+
*
|
|
4285
|
+
* Example usage in agent source:
|
|
4286
|
+
*
|
|
4287
|
+
* ```book
|
|
4288
|
+
* AGENT MESSAGE What seems to be the issue?
|
|
4289
|
+
* ```
|
|
4290
|
+
*
|
|
4291
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4292
|
+
*/
|
|
4293
|
+
class AgentMessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4294
|
+
constructor() {
|
|
4295
|
+
super('AGENT MESSAGE');
|
|
4296
|
+
}
|
|
4297
|
+
/**
|
|
4298
|
+
* Short one-line description of AGENT MESSAGE.
|
|
4299
|
+
*/
|
|
4300
|
+
get description() {
|
|
4301
|
+
return 'Defines a **message from the agent** in the conversation history.';
|
|
4302
|
+
}
|
|
4303
|
+
/**
|
|
4304
|
+
* Markdown documentation for AGENT MESSAGE commitment.
|
|
4305
|
+
*/
|
|
4306
|
+
get documentation() {
|
|
4307
|
+
return spaceTrim.spaceTrim(`
|
|
4308
|
+
# ${this.type}
|
|
4309
|
+
|
|
4310
|
+
Defines a message from the agent in the conversation history. This is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4311
|
+
|
|
4312
|
+
## Key aspects
|
|
4313
|
+
|
|
4314
|
+
- Represents a message sent by the agent.
|
|
4315
|
+
- Used for setting up conversation context.
|
|
4316
|
+
- Can be used in conjunction with USER MESSAGE.
|
|
4317
|
+
|
|
4318
|
+
## Examples
|
|
4319
|
+
|
|
4320
|
+
\`\`\`book
|
|
4321
|
+
Conversation History
|
|
4322
|
+
|
|
4323
|
+
USER MESSAGE Hello, I have a problem.
|
|
4324
|
+
AGENT MESSAGE What seems to be the issue?
|
|
4325
|
+
USER MESSAGE My computer is not starting.
|
|
4326
|
+
\`\`\`
|
|
4327
|
+
`);
|
|
4328
|
+
}
|
|
4329
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4330
|
+
// AGENT MESSAGE is for UI display purposes / conversation history construction
|
|
4331
|
+
// and typically doesn't need to be added to the system prompt or model requirements directly.
|
|
4332
|
+
// It is extracted separately for the chat interface.
|
|
4333
|
+
var _a;
|
|
4334
|
+
const pendingUserMessage = (_a = requirements.metadata) === null || _a === void 0 ? void 0 : _a.pendingUserMessage;
|
|
4335
|
+
if (pendingUserMessage) {
|
|
4336
|
+
const newSample = { question: pendingUserMessage, answer: content };
|
|
4337
|
+
const newSamples = [...(requirements.samples || []), newSample];
|
|
4338
|
+
const newMetadata = { ...requirements.metadata };
|
|
4339
|
+
delete newMetadata.pendingUserMessage;
|
|
4340
|
+
return {
|
|
4341
|
+
...requirements,
|
|
4342
|
+
samples: newSamples,
|
|
4343
|
+
metadata: newMetadata,
|
|
4344
|
+
};
|
|
4345
|
+
}
|
|
4346
|
+
return requirements;
|
|
4347
|
+
}
|
|
4348
|
+
}
|
|
4349
|
+
|
|
4184
4350
|
/**
|
|
4185
4351
|
* INITIAL MESSAGE commitment definition
|
|
4186
4352
|
*
|
|
@@ -4345,6 +4511,67 @@
|
|
|
4345
4511
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4346
4512
|
*/
|
|
4347
4513
|
|
|
4514
|
+
/**
|
|
4515
|
+
* USER MESSAGE commitment definition
|
|
4516
|
+
*
|
|
4517
|
+
* The USER MESSAGE commitment defines a message from the user in the conversation history.
|
|
4518
|
+
* It is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4519
|
+
*
|
|
4520
|
+
* Example usage in agent source:
|
|
4521
|
+
*
|
|
4522
|
+
* ```book
|
|
4523
|
+
* USER MESSAGE Hello, I have a problem.
|
|
4524
|
+
* ```
|
|
4525
|
+
*
|
|
4526
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4527
|
+
*/
|
|
4528
|
+
class UserMessageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4529
|
+
constructor() {
|
|
4530
|
+
super('USER MESSAGE');
|
|
4531
|
+
}
|
|
4532
|
+
/**
|
|
4533
|
+
* Short one-line description of USER MESSAGE.
|
|
4534
|
+
*/
|
|
4535
|
+
get description() {
|
|
4536
|
+
return 'Defines a **message from the user** in the conversation history.';
|
|
4537
|
+
}
|
|
4538
|
+
/**
|
|
4539
|
+
* Markdown documentation for USER MESSAGE commitment.
|
|
4540
|
+
*/
|
|
4541
|
+
get documentation() {
|
|
4542
|
+
return spaceTrim.spaceTrim(`
|
|
4543
|
+
# ${this.type}
|
|
4544
|
+
|
|
4545
|
+
Defines a message from the user in the conversation history. This is used to pre-fill the chat with a conversation history or to provide few-shot examples.
|
|
4546
|
+
|
|
4547
|
+
## Key aspects
|
|
4548
|
+
|
|
4549
|
+
- Represents a message sent by the user.
|
|
4550
|
+
- Used for setting up conversation context.
|
|
4551
|
+
- Can be used in conjunction with AGENT MESSAGE.
|
|
4552
|
+
|
|
4553
|
+
## Examples
|
|
4554
|
+
|
|
4555
|
+
\`\`\`book
|
|
4556
|
+
Conversation History
|
|
4557
|
+
|
|
4558
|
+
USER MESSAGE Hello, I have a problem.
|
|
4559
|
+
AGENT MESSAGE What seems to be the issue?
|
|
4560
|
+
USER MESSAGE My computer is not starting.
|
|
4561
|
+
\`\`\`
|
|
4562
|
+
`);
|
|
4563
|
+
}
|
|
4564
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4565
|
+
return {
|
|
4566
|
+
...requirements,
|
|
4567
|
+
metadata: {
|
|
4568
|
+
...requirements.metadata,
|
|
4569
|
+
pendingUserMessage: content,
|
|
4570
|
+
},
|
|
4571
|
+
};
|
|
4572
|
+
}
|
|
4573
|
+
}
|
|
4574
|
+
|
|
4348
4575
|
/**
|
|
4349
4576
|
* META commitment definition
|
|
4350
4577
|
*
|
|
@@ -4482,6 +4709,165 @@
|
|
|
4482
4709
|
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4483
4710
|
*/
|
|
4484
4711
|
|
|
4712
|
+
/**
|
|
4713
|
+
* META COLOR commitment definition
|
|
4714
|
+
*
|
|
4715
|
+
* The META COLOR commitment sets the agent's accent color.
|
|
4716
|
+
* This commitment is special because it doesn't affect the system message,
|
|
4717
|
+
* but is handled separately in the parsing logic.
|
|
4718
|
+
*
|
|
4719
|
+
* Example usage in agent source:
|
|
4720
|
+
*
|
|
4721
|
+
* ```book
|
|
4722
|
+
* META COLOR #ff0000
|
|
4723
|
+
* META COLOR #00ff00
|
|
4724
|
+
* ```
|
|
4725
|
+
*
|
|
4726
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4727
|
+
*/
|
|
4728
|
+
class MetaColorCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4729
|
+
constructor() {
|
|
4730
|
+
super('META COLOR', ['COLOR']);
|
|
4731
|
+
}
|
|
4732
|
+
/**
|
|
4733
|
+
* Short one-line description of META COLOR.
|
|
4734
|
+
*/
|
|
4735
|
+
get description() {
|
|
4736
|
+
return "Set the agent's accent color.";
|
|
4737
|
+
}
|
|
4738
|
+
/**
|
|
4739
|
+
* Markdown documentation for META COLOR commitment.
|
|
4740
|
+
*/
|
|
4741
|
+
get documentation() {
|
|
4742
|
+
return spaceTrim.spaceTrim(`
|
|
4743
|
+
# META COLOR
|
|
4744
|
+
|
|
4745
|
+
Sets the agent's accent color.
|
|
4746
|
+
|
|
4747
|
+
## Key aspects
|
|
4748
|
+
|
|
4749
|
+
- Does not modify the agent's behavior or responses.
|
|
4750
|
+
- Only one \`META COLOR\` should be used per agent.
|
|
4751
|
+
- If multiple are specified, the last one takes precedence.
|
|
4752
|
+
- Used for visual representation in user interfaces.
|
|
4753
|
+
|
|
4754
|
+
## Examples
|
|
4755
|
+
|
|
4756
|
+
\`\`\`book
|
|
4757
|
+
Professional Assistant
|
|
4758
|
+
|
|
4759
|
+
META COLOR #3498db
|
|
4760
|
+
PERSONA You are a professional business assistant
|
|
4761
|
+
\`\`\`
|
|
4762
|
+
|
|
4763
|
+
\`\`\`book
|
|
4764
|
+
Creative Helper
|
|
4765
|
+
|
|
4766
|
+
META COLOR #e74c3c
|
|
4767
|
+
PERSONA You are a creative and inspiring assistant
|
|
4768
|
+
\`\`\`
|
|
4769
|
+
`);
|
|
4770
|
+
}
|
|
4771
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4772
|
+
// META COLOR doesn't modify the system message or model requirements
|
|
4773
|
+
// It's handled separately in the parsing logic for profile color extraction
|
|
4774
|
+
// This method exists for consistency with the CommitmentDefinition interface
|
|
4775
|
+
return requirements;
|
|
4776
|
+
}
|
|
4777
|
+
/**
|
|
4778
|
+
* Extracts the profile color from the content
|
|
4779
|
+
* This is used by the parsing logic
|
|
4780
|
+
*/
|
|
4781
|
+
extractProfileColor(content) {
|
|
4782
|
+
const trimmedContent = content.trim();
|
|
4783
|
+
return trimmedContent || null;
|
|
4784
|
+
}
|
|
4785
|
+
}
|
|
4786
|
+
/**
|
|
4787
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4788
|
+
*/
|
|
4789
|
+
|
|
4790
|
+
/**
|
|
4791
|
+
* META IMAGE commitment definition
|
|
4792
|
+
*
|
|
4793
|
+
* The META IMAGE commitment sets the agent's avatar/profile image URL.
|
|
4794
|
+
* This commitment is special because it doesn't affect the system message,
|
|
4795
|
+
* but is handled separately in the parsing logic.
|
|
4796
|
+
*
|
|
4797
|
+
* Example usage in agent source:
|
|
4798
|
+
*
|
|
4799
|
+
* ```book
|
|
4800
|
+
* META IMAGE https://example.com/avatar.jpg
|
|
4801
|
+
* META IMAGE /assets/agent-avatar.png
|
|
4802
|
+
* ```
|
|
4803
|
+
*
|
|
4804
|
+
* @private [๐ช] Maybe export the commitments through some package
|
|
4805
|
+
*/
|
|
4806
|
+
class MetaImageCommitmentDefinition extends BaseCommitmentDefinition {
|
|
4807
|
+
constructor() {
|
|
4808
|
+
super('META IMAGE', ['IMAGE']);
|
|
4809
|
+
}
|
|
4810
|
+
/**
|
|
4811
|
+
* Short one-line description of META IMAGE.
|
|
4812
|
+
*/
|
|
4813
|
+
get description() {
|
|
4814
|
+
return "Set the agent's profile image URL.";
|
|
4815
|
+
}
|
|
4816
|
+
/**
|
|
4817
|
+
* Markdown documentation for META IMAGE commitment.
|
|
4818
|
+
*/
|
|
4819
|
+
get documentation() {
|
|
4820
|
+
return spaceTrim.spaceTrim(`
|
|
4821
|
+
# META IMAGE
|
|
4822
|
+
|
|
4823
|
+
Sets the agent's avatar/profile image URL.
|
|
4824
|
+
|
|
4825
|
+
## Key aspects
|
|
4826
|
+
|
|
4827
|
+
- Does not modify the agent's behavior or responses.
|
|
4828
|
+
- Only one \`META IMAGE\` should be used per agent.
|
|
4829
|
+
- If multiple are specified, the last one takes precedence.
|
|
4830
|
+
- Used for visual representation in user interfaces.
|
|
4831
|
+
|
|
4832
|
+
## Examples
|
|
4833
|
+
|
|
4834
|
+
\`\`\`book
|
|
4835
|
+
Professional Assistant
|
|
4836
|
+
|
|
4837
|
+
META IMAGE https://example.com/professional-avatar.jpg
|
|
4838
|
+
PERSONA You are a professional business assistant
|
|
4839
|
+
STYLE Maintain a formal and courteous tone
|
|
4840
|
+
\`\`\`
|
|
4841
|
+
|
|
4842
|
+
\`\`\`book
|
|
4843
|
+
Creative Helper
|
|
4844
|
+
|
|
4845
|
+
META IMAGE /assets/creative-bot-avatar.png
|
|
4846
|
+
PERSONA You are a creative and inspiring assistant
|
|
4847
|
+
STYLE Be enthusiastic and encouraging
|
|
4848
|
+
ACTION Can help with brainstorming and ideation
|
|
4849
|
+
\`\`\`
|
|
4850
|
+
`);
|
|
4851
|
+
}
|
|
4852
|
+
applyToAgentModelRequirements(requirements, content) {
|
|
4853
|
+
// META IMAGE doesn't modify the system message or model requirements
|
|
4854
|
+
// It's handled separately in the parsing logic for profile image extraction
|
|
4855
|
+
// This method exists for consistency with the CommitmentDefinition interface
|
|
4856
|
+
return requirements;
|
|
4857
|
+
}
|
|
4858
|
+
/**
|
|
4859
|
+
* Extracts the profile image URL from the content
|
|
4860
|
+
* This is used by the parsing logic
|
|
4861
|
+
*/
|
|
4862
|
+
extractProfileImageUrl(content) {
|
|
4863
|
+
const trimmedContent = content.trim();
|
|
4864
|
+
return trimmedContent || null;
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
/**
|
|
4868
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
4869
|
+
*/
|
|
4870
|
+
|
|
4485
4871
|
/**
|
|
4486
4872
|
* MODEL commitment definition
|
|
4487
4873
|
*
|
|
@@ -5389,6 +5775,8 @@
|
|
|
5389
5775
|
new ModelCommitmentDefinition('MODELS'),
|
|
5390
5776
|
new ActionCommitmentDefinition('ACTION'),
|
|
5391
5777
|
new ActionCommitmentDefinition('ACTIONS'),
|
|
5778
|
+
new MetaImageCommitmentDefinition(),
|
|
5779
|
+
new MetaColorCommitmentDefinition(),
|
|
5392
5780
|
new MetaCommitmentDefinition(),
|
|
5393
5781
|
new NoteCommitmentDefinition('NOTE'),
|
|
5394
5782
|
new NoteCommitmentDefinition('NOTES'),
|
|
@@ -5397,6 +5785,8 @@
|
|
|
5397
5785
|
new GoalCommitmentDefinition('GOAL'),
|
|
5398
5786
|
new GoalCommitmentDefinition('GOALS'),
|
|
5399
5787
|
new InitialMessageCommitmentDefinition(),
|
|
5788
|
+
new UserMessageCommitmentDefinition(),
|
|
5789
|
+
new AgentMessageCommitmentDefinition(),
|
|
5400
5790
|
new MessageCommitmentDefinition('MESSAGE'),
|
|
5401
5791
|
new MessageCommitmentDefinition('MESSAGES'),
|
|
5402
5792
|
new ScenarioCommitmentDefinition('SCENARIO'),
|
|
@@ -5637,6 +6027,14 @@
|
|
|
5637
6027
|
links.push(spaceTrim__default["default"](commitment.content));
|
|
5638
6028
|
continue;
|
|
5639
6029
|
}
|
|
6030
|
+
if (commitment.type === 'META IMAGE') {
|
|
6031
|
+
meta.image = spaceTrim__default["default"](commitment.content);
|
|
6032
|
+
continue;
|
|
6033
|
+
}
|
|
6034
|
+
if (commitment.type === 'META COLOR') {
|
|
6035
|
+
meta.color = spaceTrim__default["default"](commitment.content);
|
|
6036
|
+
continue;
|
|
6037
|
+
}
|
|
5640
6038
|
if (commitment.type !== 'META') {
|
|
5641
6039
|
continue;
|
|
5642
6040
|
}
|
|
@@ -5652,6 +6050,10 @@
|
|
|
5652
6050
|
if (!meta.image) {
|
|
5653
6051
|
meta.image = generatePlaceholderAgentProfileImageUrl(parseResult.agentName || '!!');
|
|
5654
6052
|
}
|
|
6053
|
+
// Generate fullname fallback if no meta fullname specified
|
|
6054
|
+
if (!meta.fullname) {
|
|
6055
|
+
meta.fullname = parseResult.agentName || createDefaultAgentName(agentSource);
|
|
6056
|
+
}
|
|
5655
6057
|
// Parse parameters using unified approach - both @Parameter and {parameter} notations
|
|
5656
6058
|
// are treated as the same syntax feature with unified representation
|
|
5657
6059
|
const parameters = parseParameters(agentSource);
|
|
@@ -5685,9 +6087,9 @@
|
|
|
5685
6087
|
return jsxRuntime.jsx(AvatarChip, { avatarBasicInformation: avatarBasicInformation, ...props });
|
|
5686
6088
|
}
|
|
5687
6089
|
|
|
5688
|
-
var css_248z$
|
|
5689
|
-
var styles$
|
|
5690
|
-
styleInject(css_248z$
|
|
6090
|
+
var css_248z$8 = ".Modal-module_scrim__jKO-A{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9000000}.Modal-module_Modal__k49dY{background:#fff;border-radius:8px;max-height:90%;max-width:90%;min-height:30vh;min-width:50vw;overflow:auto;padding:20px;position:relative}.Modal-module_closeButton__dzf6l{background:transparent;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBU0ksa0JBQW1CLENBSG5CLCtCQUFvQyxDQUNwQyxZQUFhLENBRmIsV0FBWSxDQUdaLHNCQUF1QixDQUx2QixNQUFPLENBRlAsY0FBZSxDQUNmLEtBQU0sQ0FFTixVQUFXLENBTVgsZUFDSixDQUVBLDJCQUNJLGVBQWlCLENBRWpCLGlCQUFrQixDQUdsQixjQUFlLENBRGYsYUFBYyxDQUdkLGVBQWdCLENBRGhCLGNBQWUsQ0FFZixhQUFjLENBUGQsWUFBYSxDQUViLGlCQU1KLENBRUEsaUNBSUksc0JBQXVCLENBQ3ZCLFdBQVksQ0FFWixjQUFlLENBRGYsY0FBZSxDQUxmLGlCQUFrQixDQUVsQixVQUFXLENBRFgsUUFNSiIsImZpbGUiOiJNb2RhbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNjcmltIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogOTAwMDAwMDtcbn1cblxuLk1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgbWF4LWhlaWdodDogOTAlO1xuICAgIG1pbi13aWR0aDogNTB2dztcbiAgICBtaW4taGVpZ2h0OiAzMHZoO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uY2xvc2VCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iXX0= */";
|
|
6091
|
+
var styles$7 = {"scrim":"Modal-module_scrim__jKO-A","Modal":"Modal-module_Modal__k49dY","closeButton":"Modal-module_closeButton__dzf6l"};
|
|
6092
|
+
styleInject(css_248z$8);
|
|
5691
6093
|
|
|
5692
6094
|
/**
|
|
5693
6095
|
*
|
|
@@ -5705,7 +6107,7 @@
|
|
|
5705
6107
|
window.removeEventListener('keydown', handleKeyDown);
|
|
5706
6108
|
};
|
|
5707
6109
|
}, [onClose]);
|
|
5708
|
-
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$
|
|
6110
|
+
return reactDom.createPortal(jsxRuntime.jsx("div", { className: styles$7.scrim, onClick: onClose, children: jsxRuntime.jsxs("div", { className: classNames(styles$7.Modal, className), onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsx("button", { className: styles$7.closeButton, onClick: onClose, children: "\u00D7" }), children] }) }), document.body);
|
|
5709
6111
|
}
|
|
5710
6112
|
|
|
5711
6113
|
/**
|
|
@@ -5790,9 +6192,9 @@
|
|
|
5790
6192
|
// <- [๐ฑโ๐] Buttons into genesis book
|
|
5791
6193
|
// <- TODO: [๐ฑโ๐] generateBookBoilerplate and deprecate `DEFAULT_BOOK`
|
|
5792
6194
|
|
|
5793
|
-
var css_248z$
|
|
5794
|
-
var styles$
|
|
5795
|
-
styleInject(css_248z$
|
|
6195
|
+
var css_248z$7 = ".BookEditor-module_BookEditor__s-0PU{width:100%}.BookEditor-module_bookEditorContainer__wLMwM{box-sizing:border-box;height:100%;padding:10px 25px 0;position:relative;width:100%}.BookEditor-module_bookEditorContainer__wLMwM.BookEditor-module_isVerbose__VQ6iL{background-color:rgba(0,0,0,.05);outline:1px dotted rgba(0,0,0,.5)}.BookEditor-module_isVerbose__VQ6iL{outline:2px dotted #ff7526}.BookEditor-module_bookEditorWrapper__twppD{background-color:#fff;border:1px solid rgba(209,213,219,.8);border-radius:1rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);overflow:hidden;padding-top:10px;transition:box-shadow .2s ease-in-out}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorWrapper__twppD{overflow:visible}.BookEditor-module_bookEditorWrapper__twppD:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.BookEditor-module_bookEditorWrapper__twppD.BookEditor-module_isBorderRadiusDisabled__h1I3v{border-radius:0}.BookEditor-module_dropOverlay__xWWoX{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;color:#fff;display:flex;font-size:1.5rem;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:100}.BookEditor-module_bookEditorActionbar__KW6dc{position:absolute;right:55px;top:10px;z-index:100}.BookEditor-module_fullscreen__rktsl{border:none;border-radius:0;bottom:0;box-shadow:none;height:100%;left:0;padding-top:50px;position:fixed;right:0;top:0;width:100%;z-index:9999}.BookEditor-module_button__hS390{align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);color:#374151;cursor:pointer;display:inline-flex;gap:.5rem;padding:.5rem 1rem;transition:all .2s ease-in-out}.BookEditor-module_button__hS390:hover{background-color:#f9fafb;border-color:#b7bcce;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2tFZGl0b3IubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxVQUNKLENBRUEsOENBS0kscUJBQXNCLENBSHRCLFdBQVksQ0FFWixtQkFBb0IsQ0FEcEIsaUJBQWtCLENBRmxCLFVBS0osQ0FFQSxpRkFFSSxnQ0FBcUMsQ0FDckMsaUNBRUosQ0FFQSxvQ0FDSSwwQkFDSixDQUVBLDRDQUtJLHFCQUF1QixDQUR2QixxQ0FBMEMsQ0FGMUMsa0JBQW1CLENBSW5CLHNDQUEyQyxDQUwzQyxlQUFnQixDQUVoQixnQkFBaUIsQ0FJakIscUNBQ0osQ0FDQSxnRkFFSSxnQkFFSixDQUVBLGtEQUNJLHVFQUNKLENBVUEsNEZBQ0ksZUFDSixDQUVBLHNDQVNJLGtCQUFtQixDQUhuQiwrQkFBb0MsQ0FEcEMsUUFBUyxDQUVULFVBQVksQ0FDWixZQUFhLENBR2IsZ0JBQWlCLENBRGpCLHNCQUF1QixDQVB2QixNQUFPLENBVVAsbUJBQW9CLENBWnBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVVOLFdBRUosQ0FRQSw4Q0FDSSxpQkFBa0IsQ0FFbEIsVUFBVyxDQURYLFFBQVMsQ0FFVCxXQUNKLENBRUEscUNBV0ksV0FBWSxDQUZaLGVBQWdCLENBSmhCLFFBQVMsQ0FPVCxlQUFnQixDQUxoQixXQUFZLENBSlosTUFBTyxDQU9QLGdCQUFpQixDQVRqQixjQUFlLENBR2YsT0FBUSxDQUZSLEtBQU0sQ0FJTixVQUFXLENBRVgsWUFLSixDQUVBLGlDQU9JLGtCQUFtQixDQU5uQixxQkFBc0IsQ0FDdEIsd0JBQXlCLENBQ3pCLHFCQUF1QixDQU92QixzQ0FBMkMsQ0FEM0MsYUFBYyxDQUpkLGNBQWUsQ0FDZixtQkFBb0IsQ0FFcEIsU0FBVyxDQUpYLGtCQUFvQixDQU9wQiw4QkFDSixDQUVBLHVDQUNJLHdCQUF5QixDQUN6QixvQkFBcUIsQ0FDckIsaUVBQ0oiLCJmaWxlIjoiQm9va0VkaXRvci5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkJvb2tFZGl0b3Ige1xuICAgIC8qIGhlaWdodDogNDUwcHg7ICovXG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDEwcHggMjVweCAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyLmlzVmVyYm9zZSB7XG4gICAgLyoqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLyoqL1xufVxuXG4uaXNWZXJib3NlIHtcbiAgICBvdXRsaW5lOiAycHggZG90dGVkIHJnYigyNTUgMTE3IDM4KTtcbn1cblxuLmJvb2tFZGl0b3JXcmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDksIDIxMywgMjE5LCAwLjgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0O1xufVxuLmlzVmVyYm9zZSAuYm9va0VkaXRvcldyYXBwZXIge1xuICAgIC8qKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9yV3JhcHBlcjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICAvKlxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LCAxMDIsIDI0MSwgMC40KTtcbiAgICAqL1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXIuaXNCb3JkZXJSYWRpdXNEaXNhYmxlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmRyb3BPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLypcbi5ib29rRWRpdG9yQ29udGFpbmVyIDpnbG9iYWwoLnZpZXctbGluZSkge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOyAvKiA8LSBOb3RlOiBgUFJPTVBUQk9PS19TWU5UQVhfQ09MT1JTLkxJTkVgICogL1xufVxuKi9cblxuLmJvb2tFZGl0b3JBY3Rpb25iYXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDU1cHg7XG4gICAgei1pbmRleDogMTAwO1xufVxuXG4uZnVsbHNjcmVlbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgY29sb3I6ICMzNzQxNTE7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuLmJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcbiAgICBib3JkZXItY29sb3I6ICNiN2JjY2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuIl19 */";
|
|
6196
|
+
var styles$6 = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","dropOverlay":"BookEditor-module_dropOverlay__xWWoX","bookEditorActionbar":"BookEditor-module_bookEditorActionbar__KW6dc","fullscreen":"BookEditor-module_fullscreen__rktsl","button":"BookEditor-module_button__hS390"};
|
|
6197
|
+
styleInject(css_248z$7);
|
|
5796
6198
|
|
|
5797
6199
|
/**
|
|
5798
6200
|
* Converts Blob, File or MediaSource to url using URL.createObjectURL
|
|
@@ -5912,9 +6314,9 @@
|
|
|
5912
6314
|
* Note: [๐ต] Code in this file should never be published outside of `@promptbook/browser`
|
|
5913
6315
|
*/
|
|
5914
6316
|
|
|
5915
|
-
var css_248z$5 = ".MarkdownContent-module_MarkdownContent__2JuyX h1{font-size:2em}.MarkdownContent-module_MarkdownContent__2JuyX h2{font-size:1.75em}.MarkdownContent-module_MarkdownContent__2JuyX h3{font-size:1.5em}.MarkdownContent-module_MarkdownContent__2JuyX h4{font-size:1.25em}.MarkdownContent-module_MarkdownContent__2JuyX h5{font-size:1.1em}.MarkdownContent-module_MarkdownContent__2JuyX p{text-wrap:auto}.MarkdownContent-module_MarkdownContent__2JuyX ul{list-style:disc;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX ol{list-style:decimal;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX blockquote,.MarkdownContent-module_MarkdownContent__2JuyX img,.MarkdownContent-module_MarkdownContent__2JuyX pre,.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:8px;margin-bottom:10px;margin-top:10px}.MarkdownContent-module_MarkdownContent__2JuyX pre{background:#000;border:none;box-shadow:none;color:#fff;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX blockquote{background:#ffffffcc;border:none;box-shadow:none;color:#000;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.MarkdownContent-module_MarkdownContent__2JuyX pre code{background-color:#000000cc;border-radius:8px}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.MarkdownContent-module_MarkdownContent__2JuyX table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.MarkdownContent-module_MarkdownContent__2JuyX td,.MarkdownContent-module_MarkdownContent__2JuyX th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.MarkdownContent-module_MarkdownContent__2JuyX th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.MarkdownContent-module_MarkdownContent__2JuyX tr:last-child td{border-bottom:none}.MarkdownContent-module_MarkdownContent__2JuyX tr:nth-child(2n) td{background:#eaf3fa}.MarkdownContent-module_MarkdownContent__2JuyX tr:hover td{background:#cbe0f7;transition:background .2s}.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:12px;overflow:hidden}.MarkdownContent-module_MarkdownContent__2JuyX td:first-child,.MarkdownContent-module_MarkdownContent__2JuyX th:first-child{border-top-left-radius:12px}.MarkdownContent-module_MarkdownContent__2JuyX td:last-child,.MarkdownContent-module_MarkdownContent__2JuyX th:last-child{border-top-right-radius:12px}.MarkdownContent-module_citation__11SMw{background:#e7f1ff;border-radius:4px;color:#007bff;cursor:default;display:inline-block;font-size:.7em;font-weight:700;margin:0 2px;padding:0 4px;user-select:none;vertical-align:super}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcmtkb3duQ29udGVudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUNJLGFBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxpREFDSSxjQUNKLENBRUEsa0RBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxrREFDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSxxTkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxtREFJSSxlQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsVUFBVyxDQU5YLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBQ0osQ0FFQSwwREFJSSxvQkFBcUIsQ0FGckIsV0FBWSxDQUNaLGVBQWdCLENBSWhCLFVBQVcsQ0FOWCxhQUFjLENBSWQsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUVwQixXQUNKLENBRUEsb0RBTUksb0JBQXFCLENBRnJCLFdBQVksQ0FDWixlQUFnQixDQUloQixhQUFjLENBUmQsb0JBQXFCLENBTXJCLGlCQUFrQixDQUNsQixtQkFBb0IsQ0FOcEIsUUFBUyxDQUNULFNBT0osQ0FFQSx3REFDSSwwQkFBMkIsQ0FDM0IsaUJBQ0osQ0FFQSw4RkFDSSxrQkFBbUIsQ0FLbkIsb0JBQXFCLENBQ3JCLG9DQUF5QyxDQUx6QyxhQUFjLENBTWQsOERBQTJFLENBTDNFLGNBQWUsQ0FDZixlQUFnQixDQUNoQixlQUlKLENBQ0EsbUdBQ0kseUJBQTJCLENBSzNCLHFCQUF1QixDQUN2Qix5QkFBMkIsQ0FMM0IsdUJBQXlCLENBU3pCLGFBQWMsQ0FSZCw2QkFBK0IsQ0FDL0IsMkJBQTZCLENBTTdCLGVBQWdCLENBTGhCLG1CQUFxQixDQUdyQixlQUFnQixDQUNoQixxQkFHSixDQUNBLHFEQUtJLGtCQUFtQixDQUhuQix3QkFBeUIsQ0FDekIsZ0JBQWlCLENBS2pCLG9DQUF5QyxDQUV6QyxhQUFjLENBRGQsY0FBZSxDQUxmLGFBQWMsQ0FIZCxVQVVKLENBQ0Esb0dBTUksZUFBZ0IsQ0FIaEIsK0JBQWdDLENBRWhDLGFBQWMsQ0FIZCxpQkFBa0IsQ0FFbEIsZUFHSixDQUNBLGtEQUNJLHFEQUE2RCxDQUc3RCwrQkFBZ0MsQ0FEaEMsYUFBYyxDQURkLGVBR0osQ0FDQSxnRUFDSSxrQkFDSixDQUNBLG1FQUNJLGtCQUNKLENBQ0EsMkRBQ0ksa0JBQW1CLENBQ25CLHlCQUNKLENBQ0EscURBQ0ksa0JBQW1CLENBQ25CLGVBQ0osQ0FDQSw0SEFFSSwyQkFDSixDQUNBLDBIQUVJLDRCQUNKLENBRUEsd0NBTUksa0JBQW1CLENBRW5CLGlCQUFrQixDQUhsQixhQUFjLENBS2QsY0FBZSxDQVRmLG9CQUFxQixDQUVyQixjQUFnQixDQUNoQixlQUFpQixDQUtqQixZQUFhLENBRmIsYUFBYyxDQUlkLGdCQUFpQixDQVRqQixvQkFVSiIsImZpbGUiOiJNYXJrZG93bkNvbnRlbnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5NYXJrZG93bkNvbnRlbnQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgaDUge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgcCB7XG4gICAgdGV4dC13cmFwOiBhdXRvO1xufVxuXG4uTWFya2Rvd25Db250ZW50IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IGltZyxcbi5NYXJrZG93bkNvbnRlbnQgcHJlLFxuLk1hcmtkb3duQ29udGVudCBibG9ja3F1b3RlLFxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLk1hcmtkb3duQ29udGVudCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGJsb2NrcXVvdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmZjYztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uTWFya2Rvd25Db250ZW50IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLk1hcmtkb3duQ29udGVudCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4uTWFya2Rvd25Db250ZW50IHRoLFxuLk1hcmtkb3duQ29udGVudCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLk1hcmtkb3duQ29udGVudCB0aDpmaXJzdC1jaGlsZCxcbi5NYXJrZG93bkNvbnRlbnQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4uTWFya2Rvd25Db250ZW50IHRoOmxhc3QtY2hpbGQsXG4uTWFya2Rvd25Db250ZW50IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2l0YXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAwN2JmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZTdmMWZmO1xuICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyoqXG4gKiBUT0RPOiBb8J+MiV0gRFJZIE1hcmtkb3duIHByaW1pdGl2ZXMgc3R5bGluZ1xuICovXG4iXX0= */";
|
|
5916
|
-
var styles$
|
|
5917
|
-
styleInject(css_248z$
|
|
6317
|
+
var css_248z$6 = ".MarkdownContent-module_MarkdownContent__2JuyX h1{font-size:2em}.MarkdownContent-module_MarkdownContent__2JuyX h2{font-size:1.75em}.MarkdownContent-module_MarkdownContent__2JuyX h3{font-size:1.5em}.MarkdownContent-module_MarkdownContent__2JuyX h4{font-size:1.25em}.MarkdownContent-module_MarkdownContent__2JuyX h5{font-size:1.1em}.MarkdownContent-module_MarkdownContent__2JuyX p{text-wrap:auto}.MarkdownContent-module_MarkdownContent__2JuyX ul{list-style:disc;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX ol{list-style:decimal;margin-left:20px}.MarkdownContent-module_MarkdownContent__2JuyX blockquote,.MarkdownContent-module_MarkdownContent__2JuyX img,.MarkdownContent-module_MarkdownContent__2JuyX pre,.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:8px;margin-bottom:10px;margin-top:10px}.MarkdownContent-module_MarkdownContent__2JuyX pre{background:#000;border:none;box-shadow:none;color:#fff;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX blockquote{background:#ffffffcc;border:none;box-shadow:none;color:#000;display:block;font-size:inherit;line-height:inherit;padding:1em}.MarkdownContent-module_MarkdownContent__2JuyX code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.MarkdownContent-module_MarkdownContent__2JuyX pre code{background-color:#000000cc;border-radius:8px}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.MarkdownContent-module_MarkdownContent__2JuyX .MarkdownContent-module_chat-code-block__ZffFg code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.MarkdownContent-module_MarkdownContent__2JuyX table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.MarkdownContent-module_MarkdownContent__2JuyX td,.MarkdownContent-module_MarkdownContent__2JuyX th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.MarkdownContent-module_MarkdownContent__2JuyX th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.MarkdownContent-module_MarkdownContent__2JuyX tr:last-child td{border-bottom:none}.MarkdownContent-module_MarkdownContent__2JuyX tr:nth-child(2n) td{background:#eaf3fa}.MarkdownContent-module_MarkdownContent__2JuyX tr:hover td{background:#cbe0f7;transition:background .2s}.MarkdownContent-module_MarkdownContent__2JuyX table{border-radius:12px;overflow:hidden}.MarkdownContent-module_MarkdownContent__2JuyX td:first-child,.MarkdownContent-module_MarkdownContent__2JuyX th:first-child{border-top-left-radius:12px}.MarkdownContent-module_MarkdownContent__2JuyX td:last-child,.MarkdownContent-module_MarkdownContent__2JuyX th:last-child{border-top-right-radius:12px}.MarkdownContent-module_citation__11SMw{background:#e7f1ff;border-radius:4px;color:#007bff;cursor:default;display:inline-block;font-size:.7em;font-weight:700;margin:0 2px;padding:0 4px;user-select:none;vertical-align:super}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcmtkb3duQ29udGVudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUNJLGFBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxrREFDSSxnQkFDSixDQUVBLGtEQUNJLGVBQ0osQ0FFQSxpREFDSSxjQUNKLENBRUEsa0RBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxrREFDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSxxTkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxtREFJSSxlQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsVUFBVyxDQU5YLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBQ0osQ0FFQSwwREFJSSxvQkFBcUIsQ0FGckIsV0FBWSxDQUNaLGVBQWdCLENBSWhCLFVBQVcsQ0FOWCxhQUFjLENBSWQsaUJBQWtCLENBQ2xCLG1CQUFvQixDQUVwQixXQUNKLENBRUEsb0RBTUksb0JBQXFCLENBRnJCLFdBQVksQ0FDWixlQUFnQixDQUloQixhQUFjLENBUmQsb0JBQXFCLENBTXJCLGlCQUFrQixDQUNsQixtQkFBb0IsQ0FOcEIsUUFBUyxDQUNULFNBT0osQ0FFQSx3REFDSSwwQkFBMkIsQ0FDM0IsaUJBQ0osQ0FFQSw4RkFDSSxrQkFBbUIsQ0FLbkIsb0JBQXFCLENBQ3JCLG9DQUF5QyxDQUx6QyxhQUFjLENBTWQsOERBQTJFLENBTDNFLGNBQWUsQ0FDZixlQUFnQixDQUNoQixlQUlKLENBQ0EsbUdBQ0kseUJBQTJCLENBSzNCLHFCQUF1QixDQUN2Qix5QkFBMkIsQ0FMM0IsdUJBQXlCLENBU3pCLGFBQWMsQ0FSZCw2QkFBK0IsQ0FDL0IsMkJBQTZCLENBTTdCLGVBQWdCLENBTGhCLG1CQUFxQixDQUdyQixlQUFnQixDQUNoQixxQkFHSixDQUNBLHFEQUtJLGtCQUFtQixDQUhuQix3QkFBeUIsQ0FDekIsZ0JBQWlCLENBS2pCLG9DQUF5QyxDQUV6QyxhQUFjLENBRGQsY0FBZSxDQUxmLGFBQWMsQ0FIZCxVQVVKLENBQ0Esb0dBTUksZUFBZ0IsQ0FIaEIsK0JBQWdDLENBRWhDLGFBQWMsQ0FIZCxpQkFBa0IsQ0FFbEIsZUFHSixDQUNBLGtEQUNJLHFEQUE2RCxDQUc3RCwrQkFBZ0MsQ0FEaEMsYUFBYyxDQURkLGVBR0osQ0FDQSxnRUFDSSxrQkFDSixDQUNBLG1FQUNJLGtCQUNKLENBQ0EsMkRBQ0ksa0JBQW1CLENBQ25CLHlCQUNKLENBQ0EscURBQ0ksa0JBQW1CLENBQ25CLGVBQ0osQ0FDQSw0SEFFSSwyQkFDSixDQUNBLDBIQUVJLDRCQUNKLENBRUEsd0NBTUksa0JBQW1CLENBRW5CLGlCQUFrQixDQUhsQixhQUFjLENBS2QsY0FBZSxDQVRmLG9CQUFxQixDQUVyQixjQUFnQixDQUNoQixlQUFpQixDQUtqQixZQUFhLENBRmIsYUFBYyxDQUlkLGdCQUFpQixDQVRqQixvQkFVSiIsImZpbGUiOiJNYXJrZG93bkNvbnRlbnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5NYXJrZG93bkNvbnRlbnQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLk1hcmtkb3duQ29udGVudCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgaDUge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5NYXJrZG93bkNvbnRlbnQgcCB7XG4gICAgdGV4dC13cmFwOiBhdXRvO1xufVxuXG4uTWFya2Rvd25Db250ZW50IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IGltZyxcbi5NYXJrZG93bkNvbnRlbnQgcHJlLFxuLk1hcmtkb3duQ29udGVudCBibG9ja3F1b3RlLFxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLk1hcmtkb3duQ29udGVudCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGJsb2NrcXVvdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmZjYztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4uTWFya2Rvd25Db250ZW50IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG4uTWFya2Rvd25Db250ZW50IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uTWFya2Rvd25Db250ZW50IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLk1hcmtkb3duQ29udGVudCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4uTWFya2Rvd25Db250ZW50IHRoLFxuLk1hcmtkb3duQ29udGVudCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4uTWFya2Rvd25Db250ZW50IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5NYXJrZG93bkNvbnRlbnQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLk1hcmtkb3duQ29udGVudCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLk1hcmtkb3duQ29udGVudCB0aDpmaXJzdC1jaGlsZCxcbi5NYXJrZG93bkNvbnRlbnQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4uTWFya2Rvd25Db250ZW50IHRoOmxhc3QtY2hpbGQsXG4uTWFya2Rvd25Db250ZW50IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2l0YXRpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzAwN2JmZjtcbiAgICBiYWNrZ3JvdW5kOiAjZTdmMWZmO1xuICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLyoqXG4gKiBUT0RPOiBb8J+MiV0gRFJZIE1hcmtkb3duIHByaW1pdGl2ZXMgc3R5bGluZ1xuICovXG4iXX0= */";
|
|
6318
|
+
var styles$5 = {"MarkdownContent":"MarkdownContent-module_MarkdownContent__2JuyX","chat-code-block":"MarkdownContent-module_chat-code-block__ZffFg","citation":"MarkdownContent-module_citation__11SMw"};
|
|
6319
|
+
styleInject(css_248z$6);
|
|
5918
6320
|
|
|
5919
6321
|
/**
|
|
5920
6322
|
* @@@
|
|
@@ -5958,7 +6360,7 @@
|
|
|
5958
6360
|
type: 'lang',
|
|
5959
6361
|
regex: /ใ(.*?)โ sourceใ/g,
|
|
5960
6362
|
replace: (match, content) => {
|
|
5961
|
-
return `<span class="${styles$
|
|
6363
|
+
return `<span class="${styles$5.citation}">${content}</span>`;
|
|
5962
6364
|
},
|
|
5963
6365
|
}),
|
|
5964
6366
|
],
|
|
@@ -6113,7 +6515,7 @@
|
|
|
6113
6515
|
function MarkdownContent(props) {
|
|
6114
6516
|
const { content, className } = props;
|
|
6115
6517
|
const htmlContent = react.useMemo(() => renderMarkdown(content), [content]);
|
|
6116
|
-
return (jsxRuntime.jsx("div", { className: classNames(styles$
|
|
6518
|
+
return (jsxRuntime.jsx("div", { className: classNames(styles$5.MarkdownContent, className), dangerouslySetInnerHTML: {
|
|
6117
6519
|
__html: htmlContent,
|
|
6118
6520
|
} }));
|
|
6119
6521
|
}
|
|
@@ -6282,14 +6684,17 @@
|
|
|
6282
6684
|
return (jsxRuntime.jsxs("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [jsxRuntime.jsx("path", { d: "M4 20L10 14M4 20V16M4 20H8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M20 4L14 10M20 4V8M20 4H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M4 4L10 10M4 4V8M4 4H8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), jsxRuntime.jsx("path", { d: "M20 20L14 14M20 20V16M20 20H16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
6283
6685
|
}
|
|
6284
6686
|
|
|
6687
|
+
var css_248z$5 = ".HamburgerMenu-module_MenuHamburger__Jd-wk{align-items:center;cursor:pointer;display:flex;height:48px;justify-content:center;width:48px}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L{align-items:center;display:flex;height:24px;justify-content:center;position:relative;width:24px}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB{background-color:currentColor;border-radius:2px;display:block;height:2px;position:absolute;transition:all .3s cubic-bezier(.645,.045,.355,1);width:100%}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar1__5xeCB{transform:translateY(-7px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar2__Y-Ilp{opacity:1;transform:translateY(0)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar3__m1m7T{transform:translateY(7px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar1__5xeCB{transform:translateY(0) rotate(45deg)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar2__Y-Ilp{opacity:0;transform:translateX(-10px)}.HamburgerMenu-module_MenuHamburger__Jd-wk .HamburgerMenu-module_MenuHamburgerInner__Li47L.HamburgerMenu-module_open__5O7zI .HamburgerMenu-module_bar__-HXPB.HamburgerMenu-module_bar3__m1m7T{transform:translateY(0) rotate(-45deg)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhhbWJ1cmdlck1lbnUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FJSSxrQkFBbUIsQ0FIbkIsY0FBZSxDQUVmLFlBQWEsQ0FJYixXQUFZLENBRlosc0JBQXVCLENBQ3ZCLFVBRUosQ0FFQSwyRkFNSSxrQkFBbUIsQ0FGbkIsWUFBYSxDQUZiLFdBQVksQ0FHWixzQkFBdUIsQ0FGdkIsaUJBQWtCLENBRmxCLFVBTUosQ0FFQSw0SEFHSSw2QkFBOEIsQ0FFOUIsaUJBQWtCLENBRGxCLGFBQWMsQ0FIZCxVQUFXLENBTVgsaUJBQWtCLENBRGxCLGlEQUF5RCxDQUp6RCxVQU1KLENBRUEsNkpBQ0ksMEJBQ0osQ0FFQSw2SkFFSSxTQUFVLENBRFYsdUJBRUosQ0FFQSw2SkFDSSx5QkFDSixDQUVBLDhMQUNJLHFDQUNKLENBRUEsOExBQ0ksU0FBVSxDQUNWLDJCQUNKLENBRUEsOExBQ0ksc0NBQ0oiLCJmaWxlIjoiSGFtYnVyZ2VyTWVudS5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLk1lbnVIYW1idXJnZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAvKiA8LSBOb3RlOiBAc2VlIGh0dHA6Ly9lbGVrdHJvbm90ZGllbnN0LW51ZXJuYmVyZy5kZS9idWdzL2N1cnNvci5odG1sICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIgLmJhciB7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4uTWVudUhhbWJ1cmdlciAuTWVudUhhbWJ1cmdlcklubmVyIC5iYXIuYmFyMSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpO1xufVxuXG4uTWVudUhhbWJ1cmdlciAuTWVudUhhbWJ1cmdlcklubmVyIC5iYXIuYmFyMiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIgLmJhci5iYXIzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoN3B4KTtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lci5vcGVuIC5iYXIuYmFyMSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSg0NWRlZyk7XG59XG5cbi5NZW51SGFtYnVyZ2VyIC5NZW51SGFtYnVyZ2VySW5uZXIub3BlbiAuYmFyLmJhcjIge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcbn1cblxuLk1lbnVIYW1idXJnZXIgLk1lbnVIYW1idXJnZXJJbm5lci5vcGVuIC5iYXIuYmFyMyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgtNDVkZWcpO1xufVxuIl19 */";
|
|
6688
|
+
var styles$4 = {"MenuHamburger":"HamburgerMenu-module_MenuHamburger__Jd-wk","MenuHamburgerInner":"HamburgerMenu-module_MenuHamburgerInner__Li47L","bar":"HamburgerMenu-module_bar__-HXPB","bar1":"HamburgerMenu-module_bar1__5xeCB","bar2":"HamburgerMenu-module_bar2__Y-Ilp","bar3":"HamburgerMenu-module_bar3__m1m7T","open":"HamburgerMenu-module_open__5O7zI"};
|
|
6689
|
+
styleInject(css_248z$5);
|
|
6690
|
+
|
|
6285
6691
|
/**
|
|
6286
6692
|
* @@@
|
|
6287
6693
|
*
|
|
6288
|
-
* @private
|
|
6694
|
+
* @private Internal component
|
|
6289
6695
|
*/
|
|
6290
|
-
function
|
|
6291
|
-
|
|
6292
|
-
return (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size || 24, height: size || 24, viewBox: "0 0 24 24", fill: "currentColor", ...rest, children: jsxRuntime.jsx("path", { d: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" }) }));
|
|
6696
|
+
function HamburgerMenu({ isOpen, onClick, className }) {
|
|
6697
|
+
return (jsxRuntime.jsx("div", { className: classNames(styles$4.MenuHamburger, className), onClick: onClick, children: jsxRuntime.jsxs("div", { className: classNames(styles$4.MenuHamburgerInner, isOpen && styles$4.open), children: [jsxRuntime.jsx("div", { className: classNames(styles$4.bar, styles$4.bar1) }), jsxRuntime.jsx("div", { className: classNames(styles$4.bar, styles$4.bar2) }), jsxRuntime.jsx("div", { className: classNames(styles$4.bar, styles$4.bar3) })] }) }));
|
|
6293
6698
|
}
|
|
6294
6699
|
|
|
6295
6700
|
var css_248z$4 = ".Dropdown-module_dropdown__ZShv1{display:inline-block;position:relative}.Dropdown-module_button__WzWhM{align-items:center;background-color:transparent;border:none;cursor:pointer;display:flex;font-size:16px;gap:10px;padding:10px;transition:background-color .2s ease-in-out}.Dropdown-module_button__WzWhM:hover{background-color:rgba(0,0,0,.05)}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:first-child{transform:rotate(45deg) translate(5px,5px)}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:nth-child(2){opacity:0}.Dropdown-module_button__WzWhM.Dropdown-module_isOpen__917OA .Dropdown-module_menuIcon__Mp4p8 line:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.Dropdown-module_menu__-N5tr{background-color:#f9f9f9;border-radius:5px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);min-width:160px;overflow:hidden;position:absolute;right:0;top:100%;z-index:1}.Dropdown-module_menuItem__7FpAz{text-align:left;width:100%}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRyb3Bkb3duLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBRUksb0JBQXFCLENBRHJCLGlCQUVKLENBRUEsK0JBT0ksa0JBQW1CLENBTm5CLDRCQUE2QixDQUM3QixXQUFZLENBQ1osY0FBZSxDQUdmLFlBQWEsQ0FEYixjQUFlLENBR2YsUUFBUyxDQUpULFlBQWEsQ0FLYiwyQ0FDSixDQUVBLHFDQUNJLGdDQUNKLENBRUEsK0dBQ0ksMENBQ0osQ0FFQSxnSEFDSSxTQUNKLENBRUEsZ0hBQ0ksNENBQ0osQ0FFQSw2QkFJSSx3QkFBeUIsQ0FJekIsaUJBQWtCLENBRmxCLHNDQUErQyxDQUQvQyxlQUFnQixDQUloQixlQUFnQixDQVJoQixpQkFBa0IsQ0FFbEIsT0FBUSxDQURSLFFBQVMsQ0FLVCxTQUdKLENBRUEsaUNBRUksZUFBZ0IsQ0FEaEIsVUFFSiIsImZpbGUiOiJEcm9wZG93bi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4uYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4uYnV0dG9uLmlzT3BlbiAubWVudUljb24gbGluZTpudGgtY2hpbGQoMSkge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCA1cHgpO1xufVxuXG4uYnV0dG9uLmlzT3BlbiAubWVudUljb24gbGluZTpudGgtY2hpbGQoMikge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbi5idXR0b24uaXNPcGVuIC5tZW51SWNvbiBsaW5lOm50aC1jaGlsZCgzKSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcbn1cblxuLm1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbiAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgIGJveC1zaGFkb3c6IDBweCA4cHggMTZweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZW51SXRlbSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbiJdfQ== */";
|
|
@@ -6303,7 +6708,7 @@
|
|
|
6303
6708
|
*/
|
|
6304
6709
|
function Dropdown({ actions }) {
|
|
6305
6710
|
const [isOpen, setIsOpen] = react.useState(false);
|
|
6306
|
-
return (jsxRuntime.jsxs("div", { className: styles$3.dropdown, children: [jsxRuntime.jsx(
|
|
6711
|
+
return (jsxRuntime.jsxs("div", { className: styles$3.dropdown, children: [jsxRuntime.jsx(HamburgerMenu, { className: classNames(styles$3.button, isOpen && styles$3.isOpen), isOpen: isOpen, onClick: () => setIsOpen(!isOpen) }), isOpen && (jsxRuntime.jsx("div", { className: styles$3.menu, children: actions.map(({ icon, name, onClick }) => (jsxRuntime.jsxs("button", { className: classNames(styles$3.button, styles$3.menuItem), onClick: () => {
|
|
6307
6712
|
onClick();
|
|
6308
6713
|
setIsOpen(false);
|
|
6309
6714
|
}, children: [icon, jsxRuntime.jsx("span", { children: name })] }, name))) }))] }));
|
|
@@ -6343,9 +6748,9 @@
|
|
|
6343
6748
|
});
|
|
6344
6749
|
}
|
|
6345
6750
|
if (isFullscreen) {
|
|
6346
|
-
return (jsxRuntime.jsx("div", { className: styles$
|
|
6751
|
+
return (jsxRuntime.jsx("div", { className: styles$6.bookEditorActionbar, children: jsxRuntime.jsx("button", { className: styles$6.button, onClick: onFullscreenClick, children: jsxRuntime.jsx(ExitFullscreenIcon, {}) }) }));
|
|
6347
6752
|
}
|
|
6348
|
-
return (jsxRuntime.jsxs("div", { className: styles$
|
|
6753
|
+
return (jsxRuntime.jsxs("div", { className: styles$6.bookEditorActionbar, children: [actions.length >= 2 ? (jsxRuntime.jsx(Dropdown, { actions: actions })) : (actions.map(({ icon, name, onClick }) => (jsxRuntime.jsx("button", { className: styles$6.button, onClick: onClick, children: icon }, name)))), isAboutModalOpen && (jsxRuntime.jsx(Modal, { onClose: () => {
|
|
6349
6754
|
setIsAboutModalOpen(false);
|
|
6350
6755
|
}, children: jsxRuntime.jsx(AboutPromptbookInformation, {}) }))] }));
|
|
6351
6756
|
}
|
|
@@ -6662,12 +7067,12 @@
|
|
|
6662
7067
|
event.preventDefault();
|
|
6663
7068
|
setIsDragOver(false);
|
|
6664
7069
|
}, []);
|
|
6665
|
-
return (jsxRuntime.jsxs("div", { className: classNames(styles$
|
|
7070
|
+
return (jsxRuntime.jsxs("div", { className: classNames(styles$6.bookEditorContainer, instanceClass), onDrop: handleDrop, onDragOver: handleDragOver, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, children: [(isDownloadButtonShown || isAboutButtonShown || isFullscreenButtonShown) && (jsxRuntime.jsx(BookEditorActionbar, { value,
|
|
6666
7071
|
isDownloadButtonShown,
|
|
6667
7072
|
isAboutButtonShown,
|
|
6668
7073
|
isFullscreenButtonShown,
|
|
6669
7074
|
onFullscreenClick,
|
|
6670
|
-
isFullscreen })), isDragOver && jsxRuntime.jsx("div", { className: styles$
|
|
7075
|
+
isFullscreen })), isDragOver && jsxRuntime.jsx("div", { className: styles$6.dropOverlay, children: "Drop files to upload" }), jsxRuntime.jsxs("div", { style: {
|
|
6671
7076
|
position: 'relative',
|
|
6672
7077
|
flex: 1,
|
|
6673
7078
|
height: '100%',
|
|
@@ -6732,7 +7137,7 @@
|
|
|
6732
7137
|
arrowSize: 0,
|
|
6733
7138
|
useShadows: false,
|
|
6734
7139
|
},
|
|
6735
|
-
}, loading: jsxRuntime.jsx("div", { className: styles$
|
|
7140
|
+
}, loading: jsxRuntime.jsx("div", { className: styles$6.loading, children: "\uD83D\uDCD6" }) })] })] }));
|
|
6736
7141
|
}
|
|
6737
7142
|
|
|
6738
7143
|
/**
|
|
@@ -6754,7 +7159,7 @@
|
|
|
6754
7159
|
const handleFullscreenToggle = () => {
|
|
6755
7160
|
setIsFullscreen(!isFullscreen);
|
|
6756
7161
|
};
|
|
6757
|
-
const editorContent = (jsxRuntime.jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$
|
|
7162
|
+
const editorContent = (jsxRuntime.jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$6.BookEditor, isVerbose && styles$6.isVerbose, styles$6.bookEditorWrapper, isBorderRadiusDisabled && styles$6.isBorderRadiusDisabled, isFullscreen && styles$6.fullscreen, className), style: isFullscreen
|
|
6758
7163
|
? style
|
|
6759
7164
|
: {
|
|
6760
7165
|
...(style || {}),
|
|
@@ -6782,7 +7187,7 @@
|
|
|
6782
7187
|
const { agent, agentSource, className, style } = props;
|
|
6783
7188
|
const { agentName, personaDescription, meta } = agent;
|
|
6784
7189
|
const [isBookEditorVisible, setIsBookEditorVisible] = react.useState(false);
|
|
6785
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: classNames(styles$2.AvatarProfile, className), style: style, children: [jsxRuntime.jsx("img", { src: meta.image, alt: agentName || '', className: styles$2.Avatar }), jsxRuntime.jsxs("div", { className: styles$2.AgentInfo, children: [jsxRuntime.jsx("h2", { className: styles$2.AgentName, children: agentName
|
|
7190
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: classNames(styles$2.AvatarProfile, className), style: style, children: [jsxRuntime.jsx("img", { src: meta.image, alt: agentName || '', className: styles$2.Avatar }), jsxRuntime.jsxs("div", { className: styles$2.AgentInfo, children: [jsxRuntime.jsx("h2", { className: styles$2.AgentName, children: meta.fullname || agentName || 'Agent' }), jsxRuntime.jsx("p", { className: styles$2.AgentDescription, children: personaDescription }), agentSource !== undefined && (jsxRuntime.jsx("button", { className: styles$2.viewSourceButton, onClick: (event) => {
|
|
6786
7191
|
event.stopPropagation();
|
|
6787
7192
|
setIsBookEditorVisible(true);
|
|
6788
7193
|
}, children: "View Source" }))] })] }), isBookEditorVisible && (jsxRuntime.jsx(Modal, { onClose: () => {
|
|
@@ -7076,6 +7481,13 @@
|
|
|
7076
7481
|
return (jsxRuntime.jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
7077
7482
|
}
|
|
7078
7483
|
|
|
7484
|
+
/**
|
|
7485
|
+
* Shows simple microphone icon
|
|
7486
|
+
*
|
|
7487
|
+
* @public exported from `@promptbook/components`
|
|
7488
|
+
*/
|
|
7489
|
+
const MicIcon = ({ size }) => (jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", children: [jsxRuntime.jsx("path", { d: "M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z" }), jsxRuntime.jsx("path", { d: "M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z" })] }));
|
|
7490
|
+
|
|
7079
7491
|
/**
|
|
7080
7492
|
* Shows simple reset icon
|
|
7081
7493
|
*
|
|
@@ -7537,8 +7949,8 @@
|
|
|
7537
7949
|
return CHAT_SAVE_FORMATS.filter((saveFormatDefinition) => formatNames.includes(saveFormatDefinition.formatName));
|
|
7538
7950
|
}
|
|
7539
7951
|
|
|
7540
|
-
var css_248z$2 = "@font-face{font-family:OpenMojiBlack;src:url(https://s6.ptbk.io/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"๐ฆ\" min-content \"๐ฌ\" 1fr \"๐\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:๐ฆ;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:๐ฆ;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;display:flex;gap:8px;grid-area:๐ฌ;height:min-content;justify-self:self-end;margin:16px 20px 0;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:๐ฌ;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:๐ฌ;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_ratingStar__rRfqC{color:var(--star-inactive-color,#ccc);cursor:pointer;font-size:20px;transition:color .2s}.Chat-module_ratingStar__rRfqC.Chat-module_active__lbYL-{color:gold}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:var(--avatar-bg-color,#eef6fb);border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);background-color:var(--message-bg-color);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--message-text-color);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:๐;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:๐;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingModalStar__XkbHr{cursor:pointer;font-size:24px;transition:color .2s}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_saveButtonContainer__lSNUJ{display:inline-block;position:relative}.Chat-module_saveMenu__-ph8y{background:#fff;border:1px solid #ddd;box-shadow:0 2px 8px rgba(0,0,0,.08);left:0;min-width:120px;position:absolute;top:100%;z-index:10}.Chat-module_saveMenuItem__ISApL{background:none;border:none;color:#111;cursor:pointer;display:block;padding:8px 16px;text-align:left;width:100%}.Chat-module_saveMenuItem__ISApL:hover{background-color:#f0f0f0}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:๐ฆ;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUNJLHlCQUE0QixDQUM1QiwyRUFBOEUsQ0FDOUUsaXJFQXVCSixDQUVBLDZDQUtJLGVBQWdCLENBR2hCLGlCQUFrQixDQUVsQixxQ0FBMEMsQ0FKMUMsVUFBVyxDQUdYLGVBQWdCLENBTmhCLFFBQVMsQ0FRVCxXQUFhLENBSmIsaUJBQWtCLENBS2xCLG1CQUFvQixDQVhwQixjQUFlLENBQ2YsUUFBUyxDQUVULDBCQUEyQixDQVMzQixZQUNKLENBRUEseUJBR0ksWUFBYSxDQUNiLHFCQUFzQixDQUV0QixvREFBMEQsQ0FKMUQsV0FBWSxDQURaLFVBT0osQ0FFQSxpQ0FJSSxZQUFhLENBQ2IsNERBSVMsQ0FQVCxXQUFZLENBQ1osZUFBZ0IsQ0FGaEIsVUFTSixDQUVBLDZEQUtJLHFCQUF5QixDQUN6QiwwQ0FBK0MsQ0FGL0MsYUFBYyxDQUlkLGVBQWdCLENBUGhCLFlBQWEsQ0FFYixpQkFBa0IsQ0FJbEIsaUJBQWtCLENBTGxCLFVBT0osQ0FFQSxvQ0FJSSxpQkFBa0IsQ0FIbEIsWUFBYSxDQUViLGtCQUFtQixDQUVuQixxQkFBc0IsQ0FDdEIsZUFBZ0IsQ0FKaEIsVUFLSixDQUVBLDRCQVNJLGtCQUFtQixDQUpuQixxQkFBc0IsQ0FHdEIsWUFBYSxDQUViLE9BQVEsQ0FUUixZQUFhLENBRWIsa0JBQW1CLENBR25CLHFCQUFzQixDQUN0QixrQkFBbUIsQ0FMbkIsVUFBVyxDQUVYLFdBT0osQ0FFQSxvREFDSSx1QkFDSixDQUVBLHFEQUNJLHFCQUNKLENBR0EseUJBQ0ksK0JBQ0ksMkJBQTZCLENBTTdCLGVBQWlCLENBSmpCLHFCQUF1QixDQUt2QixrQkFBb0IsQ0FIcEIseUJBQTJCLENBRDNCLHdCQUEwQixDQUUxQixtQkFBcUIsQ0FKckIsb0JBT0osQ0FFQSxtQ0FFSSxxQkFBdUIsQ0FEdkIsb0JBRUosQ0FFQSxtQ0FDSSxzQkFDSixDQUVBLHNDQUNJLDJCQUE2QixDQU03QixlQUFpQixDQUpqQixxQkFBdUIsQ0FLdkIsa0JBQW9CLENBSHBCLHlCQUEyQixDQUQzQix3QkFBMEIsQ0FFMUIsbUJBQXFCLENBSnJCLG9CQU9KLENBRUEsMENBRUkscUJBQXVCLENBRHZCLG9CQUVKLENBRUEseUVBQ0ksc0JBQ0osQ0FDSixDQUdBLHlCQUNJLDRCQUVJLE9BQVEsQ0FEUixrQkFFSixDQUNKLENBRUEsa0VBQ0ksWUFBYSxDQUViLFdBQVksQ0FEWixVQUFXLENBRVgsV0FDSixDQUdBLGtFQUNJLFlBQWEsQ0FFYixXQUFZLENBSVosaUJBQWtCLENBRGxCLGVBQWdCLENBRGhCLHNCQUF1QixDQUd2QixzQkFBdUIsQ0FOdkIsVUFBVyxDQUVYLFVBS0osQ0FHQSxxRkFDSSxTQUNKLENBRUEsMkZBQ0ksc0JBQ0osQ0FFQSwyRkFDSSw0QkFBb0MsQ0FDcEMsaUJBQWtCLENBQ2xCLHVCQUNKLENBRUEsaUdBQ0ksNEJBQ0osQ0FHQSxpRUFHSSxvQkFBcUIsQ0FHckIsNkVBQW1FLENBTG5FLFlBQWEsQ0FHYixrQkFBbUIsQ0FGbkIsa0JBQW1CLENBS25CLGNBQWUsQ0FGZixpQkFHSixDQUdBLG9EQUNJLGVBQ0osQ0FFQSw2Q0FDSSxHQUNJLFNBQVUsQ0FDVixxQ0FDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLGdDQUNKLENBQ0osQ0FFQSx5Q0FLSSxVQUFZLENBQ1osaUJBQ0osQ0FFQSw2Q0FDSSxpQkFDSixDQUdBLCtFQVNJLG1FQUFpRCxDQUZqRCwyRUFBc0YsQ0FDdEYsaUJBQWtCLENBTGxCLFVBQVcsQ0FGWCxVQUFXLENBS1gsVUFBVyxDQUpYLGlCQUFrQixDQUVsQixVQUFXLENBQ1gsVUFLSixDQUVBLDJDQUNJLE1BRUksVUFBWSxDQUNaLG9CQUNKLENBQ0EsSUFDSSxTQUFVLENBQ1YscUJBQ0osQ0FDSixDQUdBLG9DQUVJLG9CQUFxQixDQUVyQiw2RUFBbUUsQ0FIbkUsWUFBYSxDQUViLGtCQUVKLENBRUEsK0RBSUksYUFBYyxDQUZkLFdBQVksQ0FDWixpQkFBa0IsQ0FGbEIsVUFJSixDQUVBLG1FQUVJLGdCQUFtQixDQUduQix3QkFBeUIsQ0FDekIsa0NBQTBDLENBSDFDLGlCQUFrQixDQUNsQixnQkFBaUIsQ0FIakIsVUFNSixDQUVBLGlDQU1JLDBCQUEyQixDQUYzQixrQ0FBMEMsQ0FGMUMsa0JBQW1CLENBQ25CLDZCQUE4QixDQUU5QixtQ0FBd0MsQ0FLeEMsZUFBZ0IsQ0FUaEIsaUJBVUosQ0FFQSxnRUFMSSxrQkFBbUIsQ0FEbkIsWUFBYSxDQUViLE9BUUosQ0FFQSw4QkFLSSxtRUFBaUQsQ0FEakQsNERBQThFLENBRDlFLGlCQUFrQixDQUdsQixtQ0FBd0MsQ0FKeEMsVUFBVyxDQURYLFNBTUosQ0FFQSwwQ0FDSSxxQkFDSixDQUVBLDJDQUNJLHFCQUNKLENBRUEsMkNBQ0ksa0JBQ0osQ0FFQSwyQ0FDSSxVQUlJLFVBQVksQ0FEWixpQ0FFSixDQUNBLElBRUksU0FBVSxDQURWLHFDQUVKLENBQ0osQ0FFQSx5RkFDSSxvQkFBcUIsQ0FDckIsMEJBQTJCLENBQzNCLDBCQUNKLENBRUEseUhBQ0ksOEJBQ0osQ0FFQSwrQkFJSSxxQ0FBdUMsQ0FIdkMsY0FBZSxDQUNmLGNBQWUsQ0FDZixvQkFFSixDQUVBLHlEQUNJLFVBQ0osQ0FHQSw0RkFFSSxnQkFBbUIsQ0FFbkIsYUFBYyxDQURkLGlCQUFrQixDQUVsQixpQkFBa0IsQ0FKbEIsVUFLSixDQUVBLGdHQUVJLGdCQUFtQixDQUduQiwrQ0FBaUQsQ0FDakQsa0NBQTBDLENBSDFDLGlCQUFrQixDQUNsQixnQkFBaUIsQ0FHakIsaURBQXFELENBTnJELFVBT0osQ0FFQSxzR0FFSSxxQ0FBMEMsQ0FEMUMscUJBRUosQ0FHQSxpR0FXSSxvQkFBcUIsQ0FHckIsMEJBQTJCLENBYjNCLHdDQUF5QyxDQUl6QyxrQkFBbUIsQ0FJbkIsbUNBQXdDLENBUHhDLCtCQUFnQyxDQVdoQyxjQUFlLENBSGYsZUFBZ0IsQ0FGaEIsaUJBQWtCLENBRmxCLHdCQUEwQixDQUYxQixpQkFBa0IsQ0FEbEIsaUJBQWtCLENBSWxCLGVBQWdCLENBS2hCLHVCQUdKLENBR0Esd0NBS0ksa0JBQW1CLENBSm5CLFdBQVksQ0FLWix3QkFBeUIsQ0FDekIsbUJBQW9CLENBSnBCLFVBQVcsQ0FEWCxPQUFRLENBT1IsaUJBQWtCLENBTGxCLFNBTUosQ0FDQSxvTUFHSSxtQkFBb0IsQ0FEcEIsa0JBRUosQ0FFQSwrQkFTSSxrQkFBbUIsQ0FSbkIsNkJBQW9DLENBQ3BDLHFCQUFzQixDQUN0QixpQkFBa0IsQ0FHbEIsb0NBQXlDLENBRHpDLGNBQWUsQ0FHZixZQUFhLENBRWIsVUFBWSxDQU5aLGVBQWdCLENBT2hCLGlCQUFrQixDQUpsQiwrQ0FLSixDQUVBLGtDQWdCSSxvREFBbUMsQ0FYbkMsZUFBZ0IsQ0FHaEIsaUJBQWtCLENBRWxCLHFDQUEwQyxDQUoxQyxVQUFXLENBR1gsZUFBaUIsQ0FQakIsUUFBUyxDQWFULGNBQWUsQ0FFZixlQUFnQixDQU5oQixXQUFhLENBT2Isd0JBQXlCLENBWHpCLGdCQUFpQixDQUtqQixtQkFBb0IsQ0FYcEIsaUJBQWtCLENBRWxCLFFBQVMsQ0FDVCwwQkFBMkIsQ0FVM0Isa0JBQW1CLENBS25CLHFCQUFzQixDQU50QixXQU9KLENBRUEsc0NBQ0ksZ0JBQWtCLENBQ2xCLHdCQUNKLENBRUEsdUNBQ0ksbUJBQXFCLENBQ3JCLGlCQUFtQixDQUNuQix3QkFDSixDQUlBLGtEQUNJLEdBQ0ksU0FBVSxDQUNWLHFEQUNKLENBQ0EsR0FDSSxXQUFhLENBQ2IsaURBQ0osQ0FDSixDQUVBLDBFQUVJLHVCQUF3QixDQUV4Qix1Q0FBNEMsQ0FENUMsU0FFSixDQUVBLG1DQUNJLGFBQ0osQ0FFQSxtQ0FDSSxhQUNKLENBRUEsbUNBQ0ksZ0JBQ0osQ0FFQSxtQ0FDSSxlQUNKLENBRUEsbUNBQ0ksZ0JBQ0osQ0FFQSxtQ0FDSSxlQUNKLENBRUEsbUNBQ0ksZUFBZ0IsQ0FDaEIsZ0JBQ0osQ0FFQSxtQ0FDSSxrQkFBbUIsQ0FDbkIsZ0JBQ0osQ0FFQSx5SkFNSSxpQkFBa0IsQ0FEbEIsa0JBQW1CLENBRG5CLGVBR0osQ0FFQSxvQ0FJSSxlQUFxQixDQUdyQixVQUVKLENBRUEsK0VBVEksV0FBWSxDQUNaLGVBQWdCLENBRmhCLGFBQWMsQ0FJZCxpQkFBa0IsQ0FDbEIsbUJBQW9CLENBRXBCLFdBWUosQ0FUQSwyQ0FJSSxvQkFBcUIsQ0FHckIsVUFFSixDQUVBLHFDQU1JLG9CQUFxQixDQUZyQixXQUFZLENBQ1osZUFBZ0IsQ0FJaEIsYUFBYyxDQVJkLG9CQUFxQixDQU1yQixpQkFBa0IsQ0FDbEIsbUJBQW9CLENBTnBCLFFBQVMsQ0FDVCxTQU9KLENBRUEseUNBQ0ksMEJBQTJCLENBQzNCLGlCQUNKLENBRUEsb0VBQ0ksa0JBQW1CLENBS25CLG9CQUFxQixDQUNyQixvQ0FBeUMsQ0FMekMsYUFBYyxDQU1kLDhEQUEyRSxDQUwzRSxjQUFlLENBQ2YsZUFBZ0IsQ0FDaEIsZUFJSixDQUNBLHlFQUNJLHlCQUEyQixDQUszQixxQkFBdUIsQ0FDdkIseUJBQTJCLENBTDNCLHVCQUF5QixDQVN6QixhQUFjLENBUmQsNkJBQStCLENBQy9CLDJCQUE2QixDQU03QixlQUFnQixDQUxoQixtQkFBcUIsQ0FHckIsZUFBZ0IsQ0FDaEIscUJBR0osQ0FDQSxzQ0FLSSxrQkFBbUIsQ0FIbkIsd0JBQXlCLENBQ3pCLGdCQUFpQixDQUtqQixvQ0FBeUMsQ0FFekMsYUFBYyxDQURkLGNBQWUsQ0FMZixhQUFjLENBSGQsVUFVSixDQUNBLHNFQU1JLGVBQWdCLENBSGhCLCtCQUFnQyxDQUVoQyxhQUFjLENBSGQsaUJBQWtCLENBRWxCLGVBR0osQ0FDQSxtQ0FDSSxxREFBNkQsQ0FHN0QsK0JBQWdDLENBRGhDLGFBQWMsQ0FEZCxlQUdKLENBQ0EsaURBQ0ksa0JBQ0osQ0FDQSxvREFDSSxrQkFDSixDQUNBLDRDQUNJLGtCQUFtQixDQUNuQix5QkFDSixDQUNBLHNDQUNJLGtCQUFtQixDQUNuQixlQUNKLENBQ0EsOEZBRUksMkJBQ0osQ0FDQSw0RkFFSSw0QkFDSixDQUVBLHVHQUNJLHFDQUEwQyxDQUMxQywwQkFDSixDQUdBLG1DQU1JLHVDQUE4QyxDQUw5QyxZQUFhLENBQ2IsY0FBZSxDQUNmLE9BQVEsQ0FDUixlQUFnQixDQUNoQixnQkFFSixDQUdBLGtDQVlJLHVDQUF3QyxDQVZ4QyxrQkFBbUIsQ0FTbkIsMEJBQTJCLENBUDNCLDRCQUFvQyxDQUNwQyxrQ0FBMEMsQ0FDMUMsa0JBQW1CLENBR25CLGNBQWUsQ0FSZixtQkFBb0IsQ0FNcEIsY0FBZSxDQUNmLGVBQWdCLENBTGhCLGdCQUFpQixDQVVqQix5QkFBMEIsQ0FIMUIsdUJBQXlCLENBSXpCLGdCQUNKLENBRUEsd0NBQ0ksNkJBQWtDLENBQ2xDLCtCQUFvQyxDQUVwQyx3Q0FBNkMsQ0FEN0MsMEJBRUosQ0FFQSx5Q0FDSSxvQkFBc0IsQ0FDdEIsNkJBQ0osQ0FHQSxvQ0FHSSxtQkFBb0IsQ0FGcEIsUUFBUyxDQUNULFNBRUosQ0FFQSx5Q0FDSSxlQUNKLENBRUEscUNBQ0ksaUJBQ0osQ0FHQSw0RkFNSSxrQkFBbUIsQ0FNbkIsMEJBQTJCLENBSDNCLHlCQUE4QixDQUM5QixrQkFBbUIsQ0FSbkIsV0FBWSxDQUVaLFlBQWEsQ0FDYixPQUFRLENBRVIsY0FBZSxDQU1mLFNBQVUsQ0FGVixlQUFnQixDQVZoQixpQkFBa0IsQ0FFbEIsU0FBVSxDQVdWLHlCQUEwQixDQUMxQixnREFBeUQsQ0FQekQsU0FRSixDQUVBLGtHQUNJLFNBQVUsQ0FDVix1QkFDSixDQUVBLGtHQUNJLHlCQUE4QixDQUU5QixvQ0FBeUMsQ0FEekMsZUFFSixDQUVBLGlHQUdJLGNBQWUsQ0FEZixvQkFBcUIsQ0FFckIsY0FBZSxDQUhmLDRDQUlKLENBRUEsdUdBQ0ksb0JBQ0osQ0FHQSwrREFLSSwwQkFBMkIsQ0FDM0Isc0NBQThDLENBQzlDLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsUUFBUyxDQVBULFlBQWEsQ0FFYixZQUFhLENBTWIsaUJBQWtCLENBUGxCLFVBQVcsQ0FGWCxVQVVKLENBR0EsMkZBQ0kseUVBQTRGLENBQzVGLHVDQUNKLENBR0EseUNBQ0ksWUFBYSxDQUNiLGNBQWUsQ0FDZixPQUFRLENBQ1IsaUJBQ0osQ0FHQSxnQ0FFSSxrQkFBbUIsQ0FPbkIsMEJBQTJCLENBSjNCLDRCQUFvQyxDQUNwQyxrQ0FBMEMsQ0FDMUMsaUJBQWtCLENBTmxCLFlBQWEsQ0FPYixjQUFlLENBTGYsT0FBUSxDQUNSLGdCQUFpQixDQU1qQix1QkFDSixDQUVBLHNDQUNJLDZCQUFxQyxDQUNyQyw4QkFDSixDQUVBLDZCQUNJLGNBQWUsQ0FDZixVQUNKLENBRUEsNkJBQ0ksWUFBYSxDQUNiLHFCQUFzQixDQUN0QixPQUFRLENBQ1IsV0FDSixDQUVBLDZCQUVJLFVBQVksQ0FEWixlQUFnQixDQUtoQixlQUFnQixDQUZoQixlQUFnQixDQUNoQixzQkFBdUIsQ0FGdkIsa0JBSUosQ0FFQSw2QkFDSSxhQUFjLENBQ2QsY0FDSixDQUVBLHFDQUVJLGtCQUFtQixDQUtuQiwyQkFBZ0MsQ0FEaEMsV0FBWSxDQUdaLGlCQUFrQixDQURsQixVQUFjLENBRWQsY0FBZSxDQVRmLFlBQWEsQ0FXYixhQUFjLENBUGQsV0FBWSxDQUZaLHNCQUF1QixDQVF2Qix1QkFBeUIsQ0FQekIsVUFTSixDQUVBLDJDQUNJLDJCQUFnQyxDQUNoQyxvQkFDSixDQUdBLG1DQUVJLGtCQUFtQixDQURuQixZQUFhLENBRWIsUUFDSixDQUVBLHlEQUNJLGFBQWMsQ0FDZCxVQUNKLENBR0EscUNBUUksa0JBQW1CLENBSW5CLDBCQUEyQixDQVIzQiw2QkFBcUMsQ0FEckMsa0NBQTBDLENBRzFDLGlCQUFrQixDQURsQixhQUFjLENBS2QsY0FBZSxDQUhmLFlBQWEsQ0FNYixhQUFjLENBWGQsV0FBWSxDQU9aLHNCQUF1QixDQUV2Qix1QkFBeUIsQ0FWekIsVUFhSixDQUVBLDBEQUNJLDZCQUFrQyxDQUNsQywrQkFBb0MsQ0FDcEMsYUFBYyxDQUNkLHFCQUNKLENBRUEsOENBRUksa0JBQW1CLENBRG5CLFVBQVksQ0FFWixjQUNKLENBR0EsbUNBRUksa0JBQW1CLENBR25CLDZCQUFrQyxDQUNsQyxtQ0FBd0MsQ0FDeEMsaUJBQWtCLENBRWxCLGFBQWMsQ0FSZCxZQUFhLENBT2IsY0FBZSxDQUxmLFFBQVMsQ0FDVCxnQkFNSixDQUVBLHNDQUdJLDZCQUFrQyxDQUNsQyxpQkFBa0IsQ0FIbEIsTUFBTyxDQUNQLFVBQVcsQ0FHWCxlQUNKLENBRUEsdUNBSUkscUVBQW1ELENBRm5ELDREQUFtRSxDQUNuRSxpQkFBa0IsQ0FGbEIsV0FJSixDQUVBLDZDQUNJLEdBQ0ksMkJBQ0osQ0FDQSxJQUNJLHVCQUNKLENBQ0EsR0FDSSwwQkFDSixDQUNKLENBR0EsZ0NBVUksa0JBQW1CLENBRW5CLDBCQUEyQixDQU4zQiw2QkFBa0MsQ0FDbEMsb0NBQXlDLENBQ3pDLGtCQUFtQixDQUhuQixRQUFTLENBSVQsWUFBYSxDQUViLHNCQUF1QixDQVJ2QixNQUFPLENBV1AsbUJBQW9CLENBYnBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVdOLFVBRUosQ0FFQSx1Q0FHSSxrQkFBbUIsQ0FFbkIsYUFBYyxDQUpkLFlBQWEsQ0FDYixxQkFBc0IsQ0FJdEIsZUFBZ0IsQ0FGaEIsUUFBUyxDQUdULGlCQUNKLENBRUEsMkNBQ0ksVUFDSixDQUdBLHdFQWlCSSx1Q0FBd0MsQ0FGeEMsZUFBZ0IsQ0FDaEIsdUJBQXdCLENBVHhCLDBCQUEyQixDQUQzQiw2QkFBcUMsQ0FEckMsa0JBQW1CLENBR25CLFVBQVksQ0FQWixNQUFPLENBVVAsY0FBZSxDQUNmLGVBQWdCLENBRmhCLGdCQUFpQixDQURqQixlQUFnQixDQUxoQixZQUFhLENBRmIsaUJBQWtCLENBV2xCLFdBQVksQ0FLWix5QkFBMEIsQ0FKMUIsZ0RBS0osQ0FFQSw4RUFFSSw2QkFBcUMsQ0FEckMsb0JBQXFCLENBRXJCLHNFQUFnRixDQUNoRiwwQkFDSixDQUVBLGlGQUVJLGtCQUFtQixDQURuQixVQUFZLENBRVosY0FDSixDQUVBLHFGQUNJLGFBQWMsQ0FDZCxVQUNKLENBR0Esc0VBcUJJLHVDQUF3QyxDQVh4QyxrQkFBbUIsQ0FHbkIsZ0JBQW1CLENBTm5CLCtDQUE2RCxDQUQ3RCxXQUFZLENBTVosMkJBQTZCLENBUTdCLHdDQUE2QyxDQVo3QyxVQUFjLENBQ2QsWUFBYSxDQVBiLFdBQVksQ0FTWixzQkFBdUIsQ0FSdkIsa0JBQW9CLENBWXBCLDBCQUE0QixDQUQ1Qix5QkFBMkIsQ0FVM0IsZ0JBQWlCLENBcEJqQixtQkFBcUIsQ0FZckIsa0JBQW1CLENBQ25CLG1CQUFvQixDQUtwQix5QkFBMEIsQ0FIMUIsZ0RBQXlELENBSXpELGdCQUFpQixDQXRCakIsVUF3QkosQ0FFQSwwRUFFSSxXQUFZLENBQ1osa0JBQW1CLENBRm5CLFNBR0osQ0FJQSw0Q0FXSSxzQkFBdUIsQ0FGdkIsWUFBYSxDQUhiLFlBQWEsQ0FFYixXQUFZLENBRVosc0JBQXVCLENBR3ZCLG1CQUFvQixDQU5wQixVQUFXLENBRlgsVUFTSixDQUVBLCtFQWlCSSx1Q0FBd0MsQ0FUeEMsa0JBQW1CLENBY25CLDZEQUE0QyxDQVY1Qyx5QkFBMEIsQ0FEMUIseUJBQTZCLENBRjdCLFdBQVksQ0FJWixpQkFBa0IsQ0FRbEIsb0NBQXlDLENBTnpDLFVBQVksQ0FDWixjQUFlLENBVmYsWUFBYSxDQVFiLGVBQWlCLENBVGpCLFdBQVksQ0FFWixzQkFBdUIsQ0FHdkIsWUFBYSxDQVRiLGtCQUFtQixDQWlCbkIseUJBQTBCLENBZjFCLCtCQUFpQyxDQWlCakMsZ0RBQXlELENBRHpELGdCQUFpQixDQWZqQixVQW1CSixDQUVBLGtEQUNJLEdBQ0ksU0FBVSxDQUNWLHdDQUNKLENBQ0EsR0FDSSxVQUFZLENBQ1osa0NBQ0osQ0FDSixDQUVBLHlDQUNJLDJDQUNKLENBRUEsMENBQ0ksMENBQTZDLENBQzdDLDZCQUNKLENBR0EsZ0NBWUksa0JBQW1CLENBRW5CLHFEQUFvQyxDQU5wQyx5QkFBMEIsQ0FEMUIsK0JBQW9DLENBRnBDLFFBQVMsQ0FLVCxZQUFhLENBQ2Isc0JBQXVCLENBUnZCLE1BQU8sQ0FGUCxjQUFlLENBR2YsT0FBUSxDQUZSLEtBQU0sQ0FXTixZQUVKLENBRUEsMENBQ0ksR0FFSSx1QkFBMEIsQ0FEMUIsU0FFSixDQUNBLEdBRUkseUJBQTBCLENBRDFCLFNBRUosQ0FDSixDQUVBLHVDQVVJLDJFQUFpRSxDQURqRSwwQkFBMkIsQ0FSM0IsZUFBbUIsQ0FPbkIsa0NBQTBDLENBSjFDLGtCQUFtQixDQUduQixxQ0FBMEMsQ0FMMUMsYUFBYyxDQVVkLG9EQUEwRCxDQU4xRCxlQUFnQixDQUhoQixZQUFhLENBRWIsU0FTSixDQUVBLDJDQUNJLEdBQ0ksU0FBVSxDQUNWLHFDQUNKLENBQ0EsR0FDSSxTQUFVLENBQ1YsZ0NBQ0osQ0FDSixDQUVBLDBDQUdJLFVBQVksQ0FDWixjQUFlLENBQ2YsZUFBZ0IsQ0FKaEIsZUFBa0IsQ0FDbEIsaUJBSUosQ0FFQSwwQkFDSSxZQUFhLENBRWIsT0FBUSxDQURSLHNCQUF1QixDQUV2QixrQkFDSixDQUVBLCtCQUtJLGlCQUFrQixDQUhsQixjQUFlLENBRGYsY0FBZSxDQUdmLFdBQVksQ0FEWix1QkFHSixDQUVBLHFDQUVJLDZCQUFrQyxDQURsQyxvQkFFSixDQUVBLG9DQUNJLGNBQWUsQ0FDZixjQUFlLENBQ2Ysb0JBQ0osQ0FFQSxnQ0FRSSw2QkFBcUMsQ0FKckMsa0NBQTBDLENBQzFDLGtCQUFtQixDQUluQixhQUFjLENBQ2QsY0FBZSxDQUNmLGVBQWdCLENBTGhCLGtCQUFtQixDQUpuQixnQkFBaUIsQ0FDakIsWUFBYSxDQUliLGVBQWdCLENBS2hCLHVCQUF5QixDQVh6QixVQVlKLENBRUEsc0NBRUksNkJBQXFDLENBRHJDLG9CQUFxQixDQUVyQix1Q0FBNEMsQ0FDNUMsWUFDSixDQUVBLDBDQUVJLDZCQUFxQyxDQURyQyxrQ0FFSixDQUVBLGtDQUNJLFlBQWEsQ0FFYixRQUFTLENBRFQsd0JBRUosQ0FFQSx5Q0FFSSxXQUFZLENBQ1osaUJBQWtCLENBQ2xCLGNBQWUsQ0FDZixjQUFlLENBQ2YsZUFBZ0IsQ0FFaEIsY0FBZSxDQVBmLGlCQUFrQixDQU1sQix1QkFFSixDQUVBLHFEQUNJLGtDQUEwQyxDQUUxQyxrQ0FBMEMsQ0FEMUMsYUFFSixDQUVBLDBFQUNJLGtDQUEwQyxDQUMxQyxhQUNKLENBRUEsb0RBQ0ksK0NBQTZELENBQzdELFVBQ0osQ0FFQSx5RUFDSSxrREFBNkQsQ0FFN0Qsd0NBQTZDLENBRDdDLDBCQUVKLENBRUEsNkRBRUksa0JBQW1CLENBRG5CLFVBRUosQ0FHQSwrQkFrQkksaURBQW1ELENBaEJuRCw0QkFBOEIsQ0FlOUIsb0NBQXNDLENBVnRDLHlEQUF3RSxDQUV4RSxxQkFBdUIsQ0FDdkIsNEJBQThCLENBTTlCLGtEQUF3RCxDQVJ4RCxvQkFBeUIsQ0FNekIsd0JBQTBCLENBYjFCLDZCQUErQixDQVUvQix3QkFBMEIsQ0FDMUIseUJBQTJCLENBUjNCLGlCQUFtQixDQURuQixnQ0FBa0MsQ0FVbEMseUJBQTJCLENBUDNCLGtCQUFvQixDQWVwQix5QkFBMkIsQ0FDM0IseUJBQTJCLENBRTNCLHlCQUEyQixDQW5CM0IsMkJBQTZCLENBa0I3QiwyQkFBNkIsQ0FKN0IsbUNBQXFDLENBSnJDLDBEQUFvRSxDQUtwRSwwQkFLSixDQUVBLHNDQU9JLDRFQUFzRixDQU50RixVQUFXLENBS1gsV0FBWSxDQUZaLFVBQVcsQ0FGWCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUtOLHdCQUEwQixDQUgxQixVQUlKLENBRUEsNENBQ0ksU0FDSixDQUVBLG9EQUNJLDRDQUE2RCxDQUU3RCx3Q0FBNkMsQ0FEN0Msc0NBRUosQ0FFQSxzQ0FHSSx3Q0FBNkMsQ0FGN0MscUNBQXVDLENBQ3ZDLDZCQUVKLENBRUEscUNBRUkscUVBQStFLENBRC9FLFlBRUosQ0FFQSxtQ0FNSSw0Q0FBaUQsQ0FIakQsYUFBYyxDQURkLFdBQVksQ0FFWixTQUFVLENBQ1YsZ0RBQXlELENBSnpELFVBTUosQ0FFQSx5Q0FFSSw0Q0FBaUQsQ0FEakQsbUNBRUosQ0FFQSxtQ0FFSSxlQUFnQixDQUdoQixTQUFVLENBRFYsb0NBQXlDLENBRHpDLHVCQUF5QixDQUZ6QixrQkFLSixDQUVBLHdFQUNJLHlCQUNKLENBR0Esc0NBa0JJLGlEQUFtRCxDQWhCbkQsNEJBQThCLENBZTlCLG9DQUFzQyxDQVZ0Qyx5REFBd0UsQ0FFeEUscUJBQXVCLENBQ3ZCLDRCQUE4QixDQU05QixrREFBd0QsQ0FSeEQsb0JBQXlCLENBTXpCLHdCQUEwQixDQWIxQiw2QkFBK0IsQ0FVL0Isd0JBQTBCLENBQzFCLHlCQUEyQixDQVIzQixpQkFBbUIsQ0FEbkIsZ0NBQWtDLENBVWxDLHlCQUEyQixDQVAzQixrQkFBb0IsQ0FlcEIseUJBQTJCLENBQzNCLHlCQUEyQixDQUUzQix5QkFBMkIsQ0FuQjNCLDJCQUE2QixDQWtCN0IsMkJBQTZCLENBSjdCLG1DQUFxQyxDQUpyQywwREFBb0UsQ0FLcEUsMEJBS0osQ0FFQSw2Q0FPSSw0RUFBc0YsQ0FOdEYsVUFBVyxDQUtYLFdBQVksQ0FGWixVQUFXLENBRlgsaUJBQWtCLENBQ2xCLEtBQU0sQ0FLTix3QkFBMEIsQ0FIMUIsVUFJSixDQUVBLG1EQUNJLFNBQ0osQ0FFQSwyREFDSSw0Q0FBNkQsQ0FFN0Qsd0NBQTZDLENBRDdDLHNDQUVKLENBRUEsNkNBR0ksd0NBQTZDLENBRjdDLHFDQUF1QyxDQUN2Qyw2QkFFSixDQUVBLDRDQUVJLHFFQUErRSxDQUQvRSxZQUVKLENBRUEsMENBTUksNENBQWlELENBSGpELGFBQWMsQ0FEZCxXQUFZLENBRVosU0FBVSxDQUNWLGdEQUF5RCxDQUp6RCxVQU1KLENBRUEsZ0RBRUksNENBQWlELENBRGpELG9CQUVKLENBRUEsK0VBQ0kseUJBQ0osQ0FFQSx3Q0FDSSxvQkFBcUIsQ0FDckIsaUJBQ0osQ0FFQSw2QkFJSSxlQUFnQixDQUNoQixxQkFBc0IsQ0FHdEIsb0NBQXlDLENBTHpDLE1BQU8sQ0FJUCxlQUFnQixDQU5oQixpQkFBa0IsQ0FDbEIsUUFBUyxDQUlULFVBR0osQ0FFQSxpQ0FLSSxlQUFnQixDQURoQixXQUFZLENBSVosVUFBVyxDQURYLGNBQWUsQ0FOZixhQUFjLENBRWQsZ0JBQWlCLENBR2pCLGVBQWdCLENBSmhCLFVBT0osQ0FFQSx1Q0FDSSx3QkFDSixDQUdBLGdDQUNJLDREQUNKLENBRUEscURBQ0ksNERBQ0osQ0FFQSwyREFFSSxxQkFBdUIsQ0FEdkIsb0JBRUosQ0FFQSwwREFDSSw0REFDSixDQUVBLCtFQUNJLDREQUF3RSxDQUV4RSwwQ0FBK0MsQ0FEL0Msc0NBRUosQ0FFQSxvQ0FDSSw2QkFDSixDQUVBLDhEQUNJLG9CQUNKLENBRUEsK0RBQ0ksVUFDSixDQUdBLDBDQVFJLGtCQUFtQixDQUNuQiwwQkFBMkIsQ0FMM0IseUVBQTRGLENBQzVGLDBDQUErQyxDQUMvQyxZQUFhLENBTGIsWUFBYSxDQU1iLHNCQUF1QixDQUp2QixpQkFBa0IsQ0FEbEIsVUFRSixDQUdBLHVDQUVJLGtCQUFtQixDQVNuQiwwQkFBMkIsQ0FOM0IseUVBQTRGLENBQzVGLG1DQUF3QyxDQUN4QyxrQkFBbUIsQ0FLbkIsdUNBQTRDLENBSjVDLGFBQWMsQ0FQZCxtQkFBb0IsQ0FRcEIsY0FBZSxDQUNmLGVBQWdCLENBUGhCLE9BQVEsQ0FDUixnQkFBaUIsQ0FTakIsaUJBQ0osQ0FFQSwyQ0FJSSx1RUFBcUQsQ0FEckQsYUFBYyxDQURkLFdBQVksQ0FEWixVQUlKLENBRUEsNENBQ0ksZUFBZ0IsQ0FDaEIsb0NBQ0osQ0FHQSxtQ0FTSSxxRUFBbUQsQ0FGbkQsa0JBQW1CLENBQ25CLGlCQUFrQixDQUZsQixVQUFXLENBTFgsaUJBQWtCLENBQ2xCLFNBQVUsQ0FDVixPQUFRLENBQ1IsMEJBQTJCLENBQzNCLFNBS0osQ0FFQSxpREFDSSxNQUdJLFNBQVUsQ0FEVixrQkFFSixDQUNBLElBRUksVUFBWSxDQURaLG9CQUVKLENBQ0osQ0FFQSw2Q0FDSSxNQUdJLFNBQVUsQ0FEVixtQ0FFSixDQUNBLElBRUksVUFBWSxDQURaLHFDQUVKLENBQ0osQ0FHQSx1RUFJSSxrQkFBbUIsQ0FEbkIsY0FBZSxDQUZmLGlCQUFrQixDQUNsQixnQkFHSixDQUVBLDJFQUVJLFdBQVksQ0FEWixVQUVKLENBR0EsdUNBWUksb0JBQXFCLENBRnJCLDZEQUE0QyxDQUk1QywwQkFBMkIsQ0FWM0Isa0RBQTZELENBRzdELGtCQUFtQixDQUNuQix5Q0FBOEMsQ0FIOUMsVUFBWSxDQVFaLGVBQWdCLENBRmhCLGVBQWdCLENBTGhCLGlCQUFrQixDQUxsQixjQUFlLENBRWYsVUFBVyxDQURYLFFBQVMsQ0FPVCxZQU1KLENBRUEsa0RBQ0ksR0FFSSxTQUFVLENBRFYsMEJBRUosQ0FDQSxHQUVJLFNBQVUsQ0FEVix1QkFFSixDQUNKLENBR0EseUJBQ0ksNEJBRUksT0FBUSxDQURSLGtCQUVKLENBRUEsa0VBQ0ksaUJBQ0osQ0FFQSxpRUFDSSxrQkFDSixDQUVBLGlHQUlJLGtCQUFtQixDQURuQixjQUFlLENBRmYsYUFBYyxDQUNkLGlCQUdKLENBRUEsNEZBRUksV0FBWSxDQUNaLGlCQUFrQixDQUZsQixVQUdKLENBRUEsZ0dBRUksZ0JBQW1CLENBRG5CLFVBRUosQ0FFQSwrREFFSSxRQUFTLENBRFQsaUJBRUosQ0FFQSx3RUFHSSxrQkFBbUIsQ0FGbkIsY0FBZSxDQUNmLGlCQUVKLENBRUEsc0VBRUksV0FBWSxDQURaLFVBRUosQ0FFQSxtQ0FHSSxjQUFlLENBRGYsV0FBWSxDQUVaLHNCQUF1QixDQUh2QixVQUlKLENBRUEsK0JBQ0ksMkJBQTZCLENBTTdCLGVBQWlCLENBSmpCLHFCQUF1QixDQUt2QixrQkFBb0IsQ0FIcEIseUJBQTJCLENBRDNCLHdCQUEwQixDQUUxQixtQkFBcUIsQ0FKckIsb0JBT0osQ0FFQSxtQ0FFSSxxQkFBdUIsQ0FEdkIsb0JBRUosQ0FFQSxtQ0FDSSxzQkFDSixDQUVBLHNDQUNJLDJCQUE2QixDQU03QixlQUFpQixDQUpqQixxQkFBdUIsQ0FLdkIsa0JBQW9CLENBSHBCLHlCQUEyQixDQUQzQix3QkFBMEIsQ0FFMUIsbUJBQXFCLENBSnJCLG9CQU9KLENBRUEsMENBRUkscUJBQXVCLENBRHZCLG9CQUVKLENBRUEseUVBQ0ksc0JBQ0osQ0FFQSx1Q0FHSSxrQkFBbUIsQ0FGbkIsV0FBWSxDQUdaLGVBQWdCLENBQ2hCLGVBQWdCLENBSGhCLGlCQUlKLENBRUEsMEJBQ0ksT0FBUSxDQUNSLGtCQUNKLENBRUEsK0JBQ0ksY0FBZSxDQUNmLFdBQ0osQ0FFQSxrQ0FDSSw2QkFBOEIsQ0FDOUIsT0FDSixDQUVBLHlDQUlJLGtCQUFtQixDQURuQixjQUFlLENBRGYsWUFBYSxDQURiLFVBSUosQ0FDSixDQUVBLHlCQUNJLDRCQUVJLE9BQVEsQ0FEUixpQkFFSixDQUVBLGtFQUNJLGdCQUNKLENBRUEsaUdBSUksa0JBQW1CLENBRG5CLGNBQWUsQ0FGZixhQUFjLENBQ2QsaUJBR0osQ0FFQSw0RkFFSSxXQUFZLENBQ1osZ0JBQWlCLENBRmpCLFVBR0osQ0FFQSxnR0FFSSxnQkFBbUIsQ0FEbkIsVUFFSixDQUVBLCtEQUVJLE9BQVEsQ0FEUixnQkFFSixDQUVBLHdFQUVJLGtCQUFtQixDQUNuQixjQUFlLENBRmYsaUJBR0osQ0FFQSxzRUFFSSxXQUFZLENBRFosVUFFSixDQUVBLCtCQUNJLDJCQUE2QixDQU03QixlQUFpQixDQUpqQixxQkFBdUIsQ0FLdkIsa0JBQW9CLENBSHBCLHlCQUEyQixDQUQzQix3QkFBMEIsQ0FFMUIsbUJBQXFCLENBSnJCLG9CQU9KLENBRUEsbUNBRUkscUJBQXVCLENBRHZCLG9CQUVKLENBRUEsbUNBQ0ksc0JBQ0osQ0FFQSxzQ0FDSSwyQkFBNkIsQ0FNN0IsZUFBaUIsQ0FKakIscUJBQXVCLENBS3ZCLGtCQUFvQixDQUhwQix5QkFBMkIsQ0FEM0Isd0JBQTBCLENBRTFCLG1CQUFxQixDQUpyQixvQkFPSixDQUVBLDBDQUVJLHFCQUF1QixDQUR2QixvQkFFSixDQUVBLHlFQUNJLHNCQUNKLENBRUEsbUNBR0ksY0FBZSxDQURmLFdBQVksQ0FFWixzQkFBdUIsQ0FIdkIsVUFJSixDQUVBLGdDQUVJLG9CQUFxQixDQURyQixTQUVKLENBRUEsdUNBR0ksMkJBQTRCLENBRjVCLFFBQVMsQ0FHVCxlQUFnQixDQUNoQixzQkFBdUIsQ0FIdkIsVUFJSixDQUNKLENBR0EsdUNBQ0ksa05BS0ksY0FDSixDQUVBLDhXQUtJLGVBQ0osQ0FDSixDQUdBLCtCQUNJLGlHQUNJLGdCQUNKLENBRUEsd0VBQ0ksZ0JBQ0osQ0FFQSxzRUFDSSxnQkFDSixDQUNKIiwiZmlsZSI6IkNoYXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnT3Blbk1vamlCbGFjayc7XG4gICAgc3JjOiB1cmwoJ2h0dHBzOi8vczYucHRiay5pby9mb250cy9PcGVuTW9qaS1ibGFjay1nbHlmLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpOyAvKiA8LSBUT0RPOiBb8J+QseKAjfCfmoBdIER5bmFtaWNhbGx5IGxvYWQgZnJvbSAvc2VydmVycy50cyAqL1xuICAgIHVuaWNvZGUtcmFuZ2U6IFUrMjMsIFUrMkEsIFUrMkQsIFUrMzAtMzksIFUrQTksIFUrQUUsIFUrMjAwRCwgVSsyMDNDLCBVKzIwNDksIFUrMjBFMywgVSsyMTE3LCBVKzIxMjAsIFUrMjEyMiwgVSsyMTM5LFxuICAgICAgICBVKzIxOTQtMjE5OSwgVSsyMUE5LCBVKzIxQUEsIFUrMjI5QywgVSsyMzFBLCBVKzIzMUIsIFUrMjMyOCwgVSsyM0NGLCBVKzIzRTktMjNGMywgVSsyM0Y4LTIzRkUsIFUrMjRDMiwgVSsyNUExLFxuICAgICAgICBVKzI1QUEtMjVBRSwgVSsyNUI2LCBVKzI1QzAsIFUrMjVDOSwgVSsyNUQwLCBVKzI1RDEsIFUrMjVFNy0yNUVBLCBVKzI1RUQsIFUrMjVFRSwgVSsyNUZCLTI1RkUsIFUrMjYwMC0yNjA1LFxuICAgICAgICBVKzI2MEUsIFUrMjYxMSwgVSsyNjE0LCBVKzI2MTUsIFUrMjYxOCwgVSsyNjFELCBVKzI2MjAsIFUrMjYyMiwgVSsyNjIzLCBVKzI2MjYsIFUrMjYyQSwgVSsyNjJFLCBVKzI2MkYsXG4gICAgICAgIFUrMjYzOC0yNjNBLCBVKzI2NDAsIFUrMjY0MiwgVSsyNjQ4LTI2NTMsIFUrMjY1RiwgVSsyNjYwLCBVKzI2NjMsIFUrMjY2NSwgVSsyNjY2LCBVKzI2NjgsIFUrMjY3QiwgVSsyNjdFLCBVKzI2N0YsXG4gICAgICAgIFUrMjY5MS0yNjk3LCBVKzI2OTksIFUrMjY5QiwgVSsyNjlDLCBVKzI2QTAsIFUrMjZBMSwgVSsyNkE3LCBVKzI2QUEsIFUrMjZBQiwgVSsyNkIwLCBVKzI2QjEsIFUrMjZCRCwgVSsyNkJFLFxuICAgICAgICBVKzI2QzQsIFUrMjZDNSwgVSsyNkM4LCBVKzI2Q0UsIFUrMjZDRiwgVSsyNkQxLCBVKzI2RDMsIFUrMjZENCwgVSsyNkU5LCBVKzI2RUEsIFUrMjZGMC0yNkY1LCBVKzI2RjctMjZGQSwgVSsyNkZELFxuICAgICAgICBVKzI3MDIsIFUrMjcwNSwgVSsyNzA4LTI3MEQsIFUrMjcwRiwgVSsyNzEyLCBVKzI3MTQsIFUrMjcxNiwgVSsyNzFELCBVKzI3MjEsIFUrMjcyOCwgVSsyNzMzLCBVKzI3MzQsIFUrMjc0NCxcbiAgICAgICAgVSsyNzQ3LCBVKzI3NEMsIFUrMjc0RSwgVSsyNzUzLTI3NTUsIFUrMjc1NywgVSsyNzYzLCBVKzI3NjQsIFUrMjc5NS0yNzk3LCBVKzI3QTEsIFUrMjdCMCwgVSsyN0JGLCBVKzI5MzQsIFUrMjkzNSxcbiAgICAgICAgVSsyQjA1LTJCMDcsIFUrMkIwQywgVSsyQjBELCBVKzJCMUIsIFUrMkIxQywgVSsyQjFGLTJCMjQsIFUrMkIyRSwgVSsyQjJGLCBVKzJCNTAsIFUrMkI1NSwgVSsyQjU4LCBVKzJCOEYsXG4gICAgICAgIFUrMkJCQS0yQkJDLCBVKzJCQzMsIFUrMkJDNCwgVSsyQkVBLCBVKzJCRUIsIFUrMzAzMCwgVSszMDNELCBVKzMyOTcsIFUrMzI5OSwgVStFMDAwLUUwMDksIFUrRTAxMCwgVStFMDExLFxuICAgICAgICBVK0UwNDAtRTA2RCwgVStFMDgwLUUwQjQsIFUrRTBDMC1FMENDLCBVK0UwRkYtRTEwRCwgVStFMTQwLUUxNEEsIFUrRTE1MC1FMTU3LCBVK0UxODEtRTE4OSwgVStFMUMwLUUxQzQsXG4gICAgICAgIFUrRTFDNi1FMUQ5LCBVK0UyMDAtRTIxNiwgVStFMjQwLUUyNjksIFUrRTI4MC1FMjgzLCBVK0UyQzAtRTJDNCwgVStFMkM2LUUyREEsIFUrRTMwMC1FMzAzLCBVK0UzMDUtRTMwRixcbiAgICAgICAgVStFMzEyLUUzMTYsIFUrRTMxOC1FMzIyLCBVK0UzMjQtRTMyOSwgVStFMzJCLCBVK0UzNDAtRTM0OCwgVStFMzgwLCBVK0UzODEsIFUrRjAwMCwgVStGNzdBLCBVK0Y4RkYsIFUrRkUwRixcbiAgICAgICAgVSsxRjAwNCwgVSsxRjBDRiwgVSsxRjEwRC0xRjEwRiwgVSsxRjEyRiwgVSsxRjE2RC0xRjE3MSwgVSsxRjE3RSwgVSsxRjE3RiwgVSsxRjE4RSwgVSsxRjE5MS0xRjE5QSwgVSsxRjFFNi0xRjFGRixcbiAgICAgICAgVSsxRjIwMSwgVSsxRjIwMiwgVSsxRjIxQSwgVSsxRjIyRiwgVSsxRjIzMi0xRjIzQSwgVSsxRjI1MCwgVSsxRjI1MSwgVSsxRjI2MC0xRjI2NSwgVSsxRjMwMC0xRjMyMSwgVSsxRjMyNC0xRjM5MyxcbiAgICAgICAgVSsxRjM5NiwgVSsxRjM5NywgVSsxRjM5OS0xRjM5QiwgVSsxRjM5RS0xRjNGMCwgVSsxRjNGMy0xRjNGNSwgVSsxRjNGNy0xRjRGRCwgVSsxRjRGRi0xRjUzRCwgVSsxRjU0OS0xRjU0RSxcbiAgICAgICAgVSsxRjU1MC0xRjU2NywgVSsxRjU2RiwgVSsxRjU3MCwgVSsxRjU3My0xRjU3QSwgVSsxRjU4NywgVSsxRjU4QS0xRjU4RCwgVSsxRjU5MCwgVSsxRjU5NSwgVSsxRjU5NiwgVSsxRjVBNCxcbiAgICAgICAgVSsxRjVBNSwgVSsxRjVBOCwgVSsxRjVCMSwgVSsxRjVCMiwgVSsxRjVCQywgVSsxRjVDMi0xRjVDNCwgVSsxRjVEMS0xRjVEMywgVSsxRjVEQy0xRjVERSwgVSsxRjVFMSwgVSsxRjVFMyxcbiAgICAgICAgVSsxRjVFOCwgVSsxRjVFRiwgVSsxRjVGMywgVSsxRjVGQS0xRjY0RiwgVSsxRjY4MC0xRjZDNSwgVSsxRjZDQi0xRjZEMiwgVSsxRjZENS0xRjZENywgVSsxRjZEQy0xRjZFNSwgVSsxRjZFOSxcbiAgICAgICAgVSsxRjZFQiwgVSsxRjZFQywgVSsxRjZGMCwgVSsxRjZGMy0xRjZGQywgVSsxRjdFMC0xRjdFQiwgVSsxRjdGMCwgVSsxRjkwQy0xRjkzQSwgVSsxRjkzQy0xRjk0NSwgVSsxRjk0Ny0xRjlGRixcbiAgICAgICAgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OCwgVSsxRkE5MC0xRkFCRCwgVSsxRkFCRi0xRkFDNSwgVSsxRkFDRS0xRkFEQiwgVSsxRkFFMC0xRkFFOCwgVSsxRkFGMC0xRkFGOCxcbiAgICAgICAgVSsxRkJDNS0xRkJDOSwgVStFMDA2MS1FMDA2NywgVStFMDA2OSwgVStFMDA2Qy1FMDA3OSwgVStFMDA3Rjtcbn1cblxuLmNvcGllZFRvQ2xpcGJvYXJkTWVzc2FnZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMzJweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJhY2tncm91bmQ6ICMyMjI7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMTBweCAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICBvcGFjaXR5OiAwLjk3O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDk5OTk7XG59XG5cbi5DaGF0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYsICdPcGVuTW9qaUJsYWNrJztcbiAgICAvKiA8LSBUT0RPOiBb8J+noF1b8J+OsV0gQmV0dGVyLCBkZWZpbmUgb3RoZXIgZm9udHMgKi9cbn1cblxuLmNoYXRNYWluRmxvdyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAn8J+fpicgbWluLWNvbnRlbnRcbiAgICAgICAgJ/CfkqwnIDFmclxuICAgICAgICAn8J+TnScgbWluLWNvbnRlbnRcbiAgICAgICAgLyAxZnI7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgY29sb3I6ICMwZjE3MjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDM2LCAwLjA2KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLlRhc2tzSW5Qcm9ncmVzcyB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgbWFyZ2luOiA4cHggMTZweDtcbn1cblxuLmFjdGlvbnMge1xuICAgIGdyaWQtYXJlYTog8J+SrDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IG1pbi1jb250ZW50O1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICBhbGlnbi1zZWxmOiBzZWxmLXN0YXJ0O1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgbWFyZ2luOiAxNnB4IDIwcHggMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5hY3Rpb25zLmxlZnQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1zdGFydDtcbn1cblxuLmFjdGlvbnMucmlnaHQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG59XG5cbi8qIExhcmdlIHRhYmxldCBhbmQgc21hbGwgZGVza3RvcCBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBNZWRpdW0gc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDE0cHggMThweCAwO1xuICAgICAgICBnYXA6IDdweDtcbiAgICB9XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRDaGlsZHJlbiB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi8qIENoYXQgbWVzc2FnZXMgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweCAxNnB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4vKiBDdXN0b20gc2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLyogSW5kaXZpZHVhbCBjaGF0IG1lc3NhZ2UgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBBZGQgdG9wIG1hcmdpbiB0byBmaXJzdCBtZXNzYWdlIGlmIGFjdGlvbnMgYXJlIHByZXNlbnQgYW5kIGZpcnN0IG1lc3NhZ2UgaXMgbG9uZyAqL1xuLmhhc0FjdGlvbnNBbmRGaXJzdE1lc3NhZ2VJc0xvbmcge1xuICAgIG1hcmdpbi10b3A6IDU1cHg7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZVNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmlzTm90Q29tcGxldGVNZXNzYWdlIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICAvKiovXG5cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uTm9uQ29tcGxldGVNZXNzYWdlRmlsbGVyIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVuaGFuY2VkIGxvYWRpbmcgc3RhdGVzIGZvciBtZXNzYWdlcyAqL1xuLmlzTm90Q29tcGxldGVNZXNzYWdlIC5tZXNzYWdlVGV4dDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNiksIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBsb2FkaW5nUHVsc2Uge1xuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOCk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEuMik7XG4gICAgfVxufVxuXG4vKiBUeXBpbmcgaW5kaWNhdG9yIGZvciBBSSBtZXNzYWdlcyAqL1xuLnR5cGluZ0luZGljYXRvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbmltYXRpb246IG1lc3NhZ2VTbGlkZUluIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4udHlwaW5nSW5kaWNhdG9yIC5hdmF0YXIge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciBpbWcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWY2ZmI7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xufVxuXG4udHlwaW5nQnViYmxlIHtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xufVxuXG4udHlwaW5nRG90cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHlwaW5nRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNmI3MjgwIDAlLCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNikgMTAwJSk7XG4gICAgYW5pbWF0aW9uOiB0eXBpbmdCb3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgxKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nQm91bmNlIHtcbiAgICAwJSxcbiAgICA4MCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICAgIDQwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04cHgpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlLmlzTWUgLm1lc3NhZ2VUZXh0IHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4O1xufVxuXG4ucmF0aW5nU3RhciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgIGNvbG9yOiB2YXIoLS1zdGFyLWluYWN0aXZlLWNvbG9yLCAjY2NjKTtcbn1cblxuLnJhdGluZ1N0YXIuYWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmZDcwMDtcbn1cblxuLyogU2VuZGVyIEF2YXRhciAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXZhdGFyLWJnLWNvbG9yLCAjZWVmNmZiKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogTWVzc2FnZSB0ZXh0IGJ1YmJsZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZXNzYWdlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWVzc2FnZS10ZXh0LWNvbG9yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiBtaW4oNzAlLCA2MDBweCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi8qIENvcHkgYnV0dG9uIHN0eWxlcyAqL1xuLmNvcHlCdXR0b25Db250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogMTBweDtcbiAgICB6LWluZGV4OiAyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciAuY29weUJ1dHRvbkNvbnRhaW5lcixcbi5jb3B5QnV0dG9uQ29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmNvcHlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJveC1zaGFkb3cgMC4xNXMsIGJvcmRlciAwLjE1cztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvcGllZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiAxMTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiAjMjIyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDAuOThlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7XG4gICAgb3BhY2l0eTogMC45NztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgYW5pbWF0aW9uOiBjb3BpZWRUb29sdGlwRmFkZUluIDAuMnM7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbi5jb3BpZWRUb29sdGlwTGVmdCB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29waWVkVG9vbHRpcFJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogUmVtb3ZlZCByaWdodC1hbGlnbmVkIG92ZXJyaWRlIHRvIGtlZXAgdG9vbHRpcCBwb3NpdGlvbiBzdGFibGUgKi9cblxuQGtleWZyYW1lcyBjb3BpZWRUb29sdGlwRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk3KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk3O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5jb3B5QnV0dG9uOmhvdmVyLFxuLmNvcHlCdXR0b246Zm9jdXMge1xuICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xufVxuXG4uY29weUJ1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubWVzc2FnZVRleHQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNSB7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4ubWVzc2FnZVRleHQgb2wge1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBpbWcsXG4ubWVzc2FnZVRleHQgcHJlLFxuLm1lc3NhZ2VUZXh0IGJsb2NrcXVvdGUsXG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZmNjO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBjb2RlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2NjY2NjYzU1O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VUZXh0IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayB7XG4gICAgYmFja2dyb3VuZDogIzE4MWMyMztcbiAgICBjb2xvcjogI2Y4ZmFmYztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGJvcmRlci1jb2xvcjogIzIzMjcyZjtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICBmb250LWZhbWlseTogJ0ZpcmEgTW9ubycsICdNZW5sbycsICdDb25zb2xhcycsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XG59XG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4ubWVzc2FnZVRleHQgdGgsXG4ubWVzc2FnZVRleHQgdGQge1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZGJlODtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBFbnN1cmUgc3Ryb25nIHRleHQgY29sb3IgZm9yIGFsbCBjZWxscyAqL1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4ubWVzc2FnZVRleHQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4ubWVzc2FnZVRleHQgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpudGgtY2hpbGQoZXZlbikgdGQge1xuICAgIGJhY2tncm91bmQ6ICNlYWYzZmE7XG59XG4ubWVzc2FnZVRleHQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLm1lc3NhZ2VUZXh0IHRhYmxlIHtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWVzc2FnZVRleHQgdGg6Zmlyc3QtY2hpbGQsXG4ubWVzc2FnZVRleHQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4ubWVzc2FnZVRleHQgdGg6bGFzdC1jaGlsZCxcbi5tZXNzYWdlVGV4dCB0ZDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTJweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiBNZXNzYWdlIGJ1dHRvbnMgY29udGFpbmVyICovXG4ubWVzc2FnZUJ1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTI1IDEyNSAxMjUgLyAwLjgzKTtcbn1cblxuLyogSW5kaXZpZHVhbCBtZXNzYWdlIGJ1dHRvbiAqL1xuLm1lc3NhZ2VCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC45KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubWVzc2FnZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbn1cblxuLm1lc3NhZ2VCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IG1hcmtkb3duIHN0eWxlcyBmcm9tIGJ1dHRvbiBjb250ZW50ICovXG4ubWVzc2FnZUJ1dHRvbiBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VCdXR0b24gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubWVzc2FnZUJ1dHRvbiBlbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiBSYXRpbmcgc3lzdGVtICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDJweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMjRweDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZTpob3ZlciAucmF0aW5nIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmcgc3BhbiB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgY29sb3IgMC4ycyBlYXNlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nOmhvdmVyIHNwYW4ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogQ2hhdCBpbnB1dCBhcmVhICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGdyaWQtYXJlYTog8J+TnTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEycHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBGaWxlIHVwbG9hZCBkcmFnLWFuZC1kcm9wIHN0eWxlcyAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0LmRyYWdPdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpIDAlLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLyogRmlsZSBwcmV2aWV3IGNvbnRhaW5lciAqL1xuLmZpbGVQcmV2aWV3Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi8qIEluZGl2aWR1YWwgZmlsZSBwcmV2aWV3ICovXG4uZmlsZVByZXZpZXcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5maWxlUHJldmlldzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjE1KTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLmZpbGVJY29uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4uZmlsZUluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDJweDtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5maWxlTmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5maWxlU2l6ZSB7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSk7XG4gICAgY29sb3I6ICNmZjQ0NDQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMik7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBJbnB1dCBjb250YWluZXIgZm9yIHRleHRhcmVhIGFuZCBidXR0b25zICovXG4uaW5wdXRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi5pbnB1dENvbnRhaW5lciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQXR0YWNobWVudCBidXR0b24gKi9cbi5hdHRhY2htZW50QnV0dG9uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdHRhY2htZW50QnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICBjb2xvcjogIzAwODRmZjtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4uYXR0YWNobWVudEJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKiBVcGxvYWQgcHJvZ3Jlc3MgaW5kaWNhdG9yICovXG4udXBsb2FkUHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG59XG5cbi51cGxvYWRQcm9ncmVzc0JhciB7XG4gICAgZmxleDogMTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udXBsb2FkUHJvZ3Jlc3NGaWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMDA4NGZmLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjgpKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiB1cGxvYWRQcm9ncmVzcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHVwbG9hZFByb2dyZXNzIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG4vKiBEcmFnIG92ZXJsYXkgKi9cbi5kcmFnT3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICB6LWluZGV4OiAyMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRyYWdPdmVybGF5Q29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZHJhZ092ZXJsYXlDb250ZW50IHN2ZyB7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBDaGF0IGlucHV0IGZpZWxkICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMTZweCAyMHB4O1xuXG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICMwMDg0ZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA4KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xKSwgMCA4cHggMzJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIENoYXQgc2VuZCBidXR0b24gKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtaW4td2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogdW5zZXQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xuICAgIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xuXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIGltZyB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cblxuLyogU2Nyb2xsIHRvIGJvdHRvbSBidXR0b24gKi9cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJlZDtcbiAgICAvKiovXG5cbiAgICB6LWluZGV4OiAyMDtcbiAgICBncmlkLWFyZWE6IPCfk507XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNTAlKTtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCAwIDAgLyAwLjUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGFuaW1hdGlvbjogc2Nyb2xsQnV0dG9uU2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHNjcm9sbEJ1dHRvblNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAyMHB4KSBzY2FsZSgwLjgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2Nyb2xsVG9Cb3R0b206aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNjAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLnNjcm9sbFRvQm90dG9tOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE2MCUpIHNjYWxlKDAuOTUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJhdGluZyBtb2RhbCAqL1xuLnJhdGluZ01vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgYW5pbWF0aW9uOiBtb2RhbEZhZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGNvbG9yOiAjMGYxNzI0O1xuICAgIHBhZGRpbmc6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB3aWR0aDogOTAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYW5pbWF0aW9uOiBtb2RhbFNsaWRlSW4gMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IGgzIHtcbiAgICBtYXJnaW46IDAgMCAyNHB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnN0YXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5zdGFycyBzcGFuIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLnN0YXJzIHNwYW46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjE1LCAwLCAwLjEpO1xufVxuXG4ucmF0aW5nTW9kYWxTdGFyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG59XG5cbi5yYXRpbmdJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucmF0aW5nSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzAwODRmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5yYXRpbmdJbnB1dFtyZWFkb25seV0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC41KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDEpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMTJweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgY29sb3I6ICMwYjEyMjA7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwNzFkMSAwJSwgIzAwNTJhMyAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8qIE5ldyBjaGF0IGJ1dHRvbiBzdHlsaW5nIC0gTWF0Y2hlcyB0aGUgc2xlZWsgY2hhdCBtZXNzYWdlIGRlc2lnbiAqL1xuLmNoYXRCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4uY2hhdEJ1dHRvbjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLmNoYXRCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpIHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5jaGF0QnV0dG9uOmhvdmVyIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKSBzY2FsZSgxLjEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4zKSk7XG59XG5cbi5jaGF0QnV0dG9uVGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLyogVXNlIHRlbXBsYXRlIGJ1dHRvbiBzdHlsaW5nIC0gbWF0Y2hlcyB0aGUgY2hhdEJ1dHRvbiBhbmQgc2F2ZUJ1dHRvbiAqL1xuLnVzZVRlbXBsYXRlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTJweCAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uICFpbXBvcnRhbnQ7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiAxMTBweCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5OWZmIDAlLCAjMDA3N2RkIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuNCk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCk7XG59XG5cbi5zYXZlQnV0dG9uQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2F2ZU1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnNhdmVNZW51SXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICMxMTE7XG59XG5cbi5zYXZlTWVudUl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG5cbi8qIFBhdXNlL1Jlc3VtZSBidXR0b24gdmFyaWFudCAocmV1c2VzIC5jaGF0QnV0dG9uIGJhc2Ugc3R5bGVzIGZvciBEUlkpICovXG4ucGF1c2VCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmIzNDcgMCUsICNmZjhjNDIgMTAwJSkgIWltcG9ydGFudDsgLyogV2FybSBvcmFuZ2UgZm9yIFwiYWN0aXZlL3J1bm5pbmdcIiAqL1xufVxuXG4ucGF1c2VCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmMwNjcgMCUsICNmZjllNWYgMTAwJSkgIWltcG9ydGFudDtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcge1xuICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogd2FpdCAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2VkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpICFpbXBvcnRhbnQ7IC8qIEdyZWVuIHdoZW4gcGF1c2VkIChyZWFkeSB0byByZXN1bWUpICovXG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNGQzOTkgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zNSk7XG59XG5cbi5wYXVzZUJ1dHRvbiBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzaW5nIHN2ZyB7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciBiYXIgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3JCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4xKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4yKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC40KTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGNvbG9yOiAjMTBiOTgxO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgzNCwgMTk3LCA5NCwgMC4yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxJY29uUHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogVm9pY2UgY2FsbCBwdWxzZSBhbmltYXRpb24gKi9cbi52b2ljZUNhbGxQdWxzZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogIzEwYjk4MTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbEljb25QdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyB2b2ljZUNhbGxQdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEuMyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGluIG1lc3NhZ2VzICovXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xufVxuXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbn1cblxuLyogUmF0aW5nIGNvbmZpcm1hdGlvbiAqL1xuLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpO1xuICAgIHotaW5kZXg6IDEwMDE7XG4gICAgYW5pbWF0aW9uOiBjb25maXJtYXRpb25TbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG59XG5cbkBrZXlmcmFtZXMgY29uZmlybWF0aW9uU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDE2cHggMDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMTJweDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNjBweCk7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMjBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAuc3RhcnMge1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDhweCAxMnB4IDA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlcyB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogOTAlO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgbWFyZ2luOiAwIDhweCA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNDBweCk7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHggMjBweDtcbiAgICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UsXG4gICAgLnNjcm9sbFRvQm90dG9tLFxuICAgIC5yYXRpbmdNb2RhbCxcbiAgICAucmF0aW5nTW9kYWxDb250ZW50LFxuICAgIC5yYXRpbmdDb25maXJtYXRpb24ge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0LFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSxcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nLFxuICAgIC5jaGF0QnV0dG9uIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG59XG5cbi8qKlxuICogVE9ETzogW/CfjIldIERSWSBNYXJrZG93biBwcmltaXRpdmVzIHN0eWxpbmdcbiAqL1xuIl19 */";
|
|
7541
|
-
var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","ratingStar":"Chat-module_ratingStar__rRfqC","active":"Chat-module_active__lbYL-","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingModalStar":"Chat-module_ratingModalStar__XkbHr","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","saveButtonContainer":"Chat-module_saveButtonContainer__lSNUJ","saveMenu":"Chat-module_saveMenu__-ph8y","saveMenuItem":"Chat-module_saveMenuItem__ISApL","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
|
|
7952
|
+
var css_248z$2 = "@font-face{font-family:OpenMojiBlack;src:url(https://s6.ptbk.io/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"๐ฆ\" min-content \"๐ฌ\" 1fr \"๐\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:๐ฆ;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:๐ฆ;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;display:flex;gap:8px;grid-area:๐ฌ;height:min-content;justify-self:self-end;margin:16px 20px 0;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_portal__uTOT8{margin:0}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:๐ฌ;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:๐ฌ;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_ratingStar__rRfqC{color:var(--star-inactive-color,#ccc);cursor:pointer;font-size:20px;transition:color .2s}.Chat-module_ratingStar__rRfqC.Chat-module_active__lbYL-{color:gold}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:var(--avatar-bg-color,#eef6fb);border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);background-color:var(--message-bg-color);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--message-text-color);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:๐;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_voiceButton__d2zlP{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_voiceButton__d2zlP:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_voiceButtonActive__Uoi3W{animation:Chat-module_voiceRecordingPulse__y2wJ5 1.5s infinite;background:rgba(255,0,0,.1)!important;border-color:rgba(255,0,0,.3)!important;color:red!important}@keyframes Chat-module_voiceRecordingPulse__y2wJ5{0%{box-shadow:0 0 0 0 rgba(255,0,0,.4)}70%{box-shadow:0 0 0 10px rgba(255,0,0,0)}to{box-shadow:0 0 0 0 rgba(255,0,0,0)}}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:๐;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingModalStar__XkbHr{cursor:pointer;font-size:24px;transition:color .2s}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_saveButtonContainer__lSNUJ{display:inline-block;position:relative}.Chat-module_saveMenu__-ph8y{background:#fff;border:1px solid #ddd;box-shadow:0 2px 8px rgba(0,0,0,.08);left:0;min-width:120px;position:absolute;top:100%;z-index:10}.Chat-module_saveMenuItem__ISApL{background:none;border:none;color:#111;cursor:pointer;display:block;padding:8px 16px;text-align:left;width:100%}.Chat-module_saveMenuItem__ISApL:hover{background-color:#f0f0f0}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:๐ฆ;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,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c0JBQ0osQ0FFQSxtQ0FHSSxjQUFlLENBRGYsV0FBWSxDQUVaLHNCQUF1QixDQUh2QixVQUlKLENBRUEsZ0NBRUksb0JBQXFCLENBRHJCLFNBRUosQ0FFQSx1Q0FHSSwyQkFBNEIsQ0FGNUIsUUFBUyxDQUdULGVBQWdCLENBQ2hCLHNCQUF1QixDQUh2QixVQUlKLENBQ0osQ0FHQSx1Q0FDSSxrTkFLSSxjQUNKLENBRUEsOFdBS0ksZUFDSixDQUNKLENBR0EsK0JBQ0ksaUdBQ0ksZ0JBQ0osQ0FFQSx3RUFDSSxnQkFDSixDQUVBLHNFQUNJLGdCQUNKLENBQ0oiLCJmaWxlIjoiQ2hhdC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdPcGVuTW9qaUJsYWNrJztcbiAgICBzcmM6IHVybCgnaHR0cHM6Ly9zNi5wdGJrLmlvL2ZvbnRzL09wZW5Nb2ppLWJsYWNrLWdseWYud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7IC8qIDwtIFRPRE86IFvwn5Cx4oCN8J+agF0gRHluYW1pY2FsbHkgbG9hZCBmcm9tIC9zZXJ2ZXJzLnRzICovXG4gICAgdW5pY29kZS1yYW5nZTogVSsyMywgVSsyQSwgVSsyRCwgVSszMC0zOSwgVStBOSwgVStBRSwgVSsyMDBELCBVKzIwM0MsIFUrMjA0OSwgVSsyMEUzLCBVKzIxMTcsIFUrMjEyMCwgVSsyMTIyLCBVKzIxMzksXG4gICAgICAgIFUrMjE5NC0yMTk5LCBVKzIxQTksIFUrMjFBQSwgVSsyMjlDLCBVKzIzMUEsIFUrMjMxQiwgVSsyMzI4LCBVKzIzQ0YsIFUrMjNFOS0yM0YzLCBVKzIzRjgtMjNGRSwgVSsyNEMyLCBVKzI1QTEsXG4gICAgICAgIFUrMjVBQS0yNUFFLCBVKzI1QjYsIFUrMjVDMCwgVSsyNUM5LCBVKzI1RDAsIFUrMjVEMSwgVSsyNUU3LTI1RUEsIFUrMjVFRCwgVSsyNUVFLCBVKzI1RkItMjVGRSwgVSsyNjAwLTI2MDUsXG4gICAgICAgIFUrMjYwRSwgVSsyNjExLCBVKzI2MTQsIFUrMjYxNSwgVSsyNjE4LCBVKzI2MUQsIFUrMjYyMCwgVSsyNjIyLCBVKzI2MjMsIFUrMjYyNiwgVSsyNjJBLCBVKzI2MkUsIFUrMjYyRixcbiAgICAgICAgVSsyNjM4LTI2M0EsIFUrMjY0MCwgVSsyNjQyLCBVKzI2NDgtMjY1MywgVSsyNjVGLCBVKzI2NjAsIFUrMjY2MywgVSsyNjY1LCBVKzI2NjYsIFUrMjY2OCwgVSsyNjdCLCBVKzI2N0UsIFUrMjY3RixcbiAgICAgICAgVSsyNjkxLTI2OTcsIFUrMjY5OSwgVSsyNjlCLCBVKzI2OUMsIFUrMjZBMCwgVSsyNkExLCBVKzI2QTcsIFUrMjZBQSwgVSsyNkFCLCBVKzI2QjAsIFUrMjZCMSwgVSsyNkJELCBVKzI2QkUsXG4gICAgICAgIFUrMjZDNCwgVSsyNkM1LCBVKzI2QzgsIFUrMjZDRSwgVSsyNkNGLCBVKzI2RDEsIFUrMjZEMywgVSsyNkQ0LCBVKzI2RTksIFUrMjZFQSwgVSsyNkYwLTI2RjUsIFUrMjZGNy0yNkZBLCBVKzI2RkQsXG4gICAgICAgIFUrMjcwMiwgVSsyNzA1LCBVKzI3MDgtMjcwRCwgVSsyNzBGLCBVKzI3MTIsIFUrMjcxNCwgVSsyNzE2LCBVKzI3MUQsIFUrMjcyMSwgVSsyNzI4LCBVKzI3MzMsIFUrMjczNCwgVSsyNzQ0LFxuICAgICAgICBVKzI3NDcsIFUrMjc0QywgVSsyNzRFLCBVKzI3NTMtMjc1NSwgVSsyNzU3LCBVKzI3NjMsIFUrMjc2NCwgVSsyNzk1LTI3OTcsIFUrMjdBMSwgVSsyN0IwLCBVKzI3QkYsIFUrMjkzNCwgVSsyOTM1LFxuICAgICAgICBVKzJCMDUtMkIwNywgVSsyQjBDLCBVKzJCMEQsIFUrMkIxQiwgVSsyQjFDLCBVKzJCMUYtMkIyNCwgVSsyQjJFLCBVKzJCMkYsIFUrMkI1MCwgVSsyQjU1LCBVKzJCNTgsIFUrMkI4RixcbiAgICAgICAgVSsyQkJBLTJCQkMsIFUrMkJDMywgVSsyQkM0LCBVKzJCRUEsIFUrMkJFQiwgVSszMDMwLCBVKzMwM0QsIFUrMzI5NywgVSszMjk5LCBVK0UwMDAtRTAwOSwgVStFMDEwLCBVK0UwMTEsXG4gICAgICAgIFUrRTA0MC1FMDZELCBVK0UwODAtRTBCNCwgVStFMEMwLUUwQ0MsIFUrRTBGRi1FMTBELCBVK0UxNDAtRTE0QSwgVStFMTUwLUUxNTcsIFUrRTE4MS1FMTg5LCBVK0UxQzAtRTFDNCxcbiAgICAgICAgVStFMUM2LUUxRDksIFUrRTIwMC1FMjE2LCBVK0UyNDAtRTI2OSwgVStFMjgwLUUyODMsIFUrRTJDMC1FMkM0LCBVK0UyQzYtRTJEQSwgVStFMzAwLUUzMDMsIFUrRTMwNS1FMzBGLFxuICAgICAgICBVK0UzMTItRTMxNiwgVStFMzE4LUUzMjIsIFUrRTMyNC1FMzI5LCBVK0UzMkIsIFUrRTM0MC1FMzQ4LCBVK0UzODAsIFUrRTM4MSwgVStGMDAwLCBVK0Y3N0EsIFUrRjhGRiwgVStGRTBGLFxuICAgICAgICBVKzFGMDA0LCBVKzFGMENGLCBVKzFGMTBELTFGMTBGLCBVKzFGMTJGLCBVKzFGMTZELTFGMTcxLCBVKzFGMTdFLCBVKzFGMTdGLCBVKzFGMThFLCBVKzFGMTkxLTFGMTlBLCBVKzFGMUU2LTFGMUZGLFxuICAgICAgICBVKzFGMjAxLCBVKzFGMjAyLCBVKzFGMjFBLCBVKzFGMjJGLCBVKzFGMjMyLTFGMjNBLCBVKzFGMjUwLCBVKzFGMjUxLCBVKzFGMjYwLTFGMjY1LCBVKzFGMzAwLTFGMzIxLCBVKzFGMzI0LTFGMzkzLFxuICAgICAgICBVKzFGMzk2LCBVKzFGMzk3LCBVKzFGMzk5LTFGMzlCLCBVKzFGMzlFLTFGM0YwLCBVKzFGM0YzLTFGM0Y1LCBVKzFGM0Y3LTFGNEZELCBVKzFGNEZGLTFGNTNELCBVKzFGNTQ5LTFGNTRFLFxuICAgICAgICBVKzFGNTUwLTFGNTY3LCBVKzFGNTZGLCBVKzFGNTcwLCBVKzFGNTczLTFGNTdBLCBVKzFGNTg3LCBVKzFGNThBLTFGNThELCBVKzFGNTkwLCBVKzFGNTk1LCBVKzFGNTk2LCBVKzFGNUE0LFxuICAgICAgICBVKzFGNUE1LCBVKzFGNUE4LCBVKzFGNUIxLCBVKzFGNUIyLCBVKzFGNUJDLCBVKzFGNUMyLTFGNUM0LCBVKzFGNUQxLTFGNUQzLCBVKzFGNURDLTFGNURFLCBVKzFGNUUxLCBVKzFGNUUzLFxuICAgICAgICBVKzFGNUU4LCBVKzFGNUVGLCBVKzFGNUYzLCBVKzFGNUZBLTFGNjRGLCBVKzFGNjgwLTFGNkM1LCBVKzFGNkNCLTFGNkQyLCBVKzFGNkQ1LTFGNkQ3LCBVKzFGNkRDLTFGNkU1LCBVKzFGNkU5LFxuICAgICAgICBVKzFGNkVCLCBVKzFGNkVDLCBVKzFGNkYwLCBVKzFGNkYzLTFGNkZDLCBVKzFGN0UwLTFGN0VCLCBVKzFGN0YwLCBVKzFGOTBDLTFGOTNBLCBVKzFGOTNDLTFGOTQ1LCBVKzFGOTQ3LTFGOUZGLFxuICAgICAgICBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg4LCBVKzFGQTkwLTFGQUJELCBVKzFGQUJGLTFGQUM1LCBVKzFGQUNFLTFGQURCLCBVKzFGQUUwLTFGQUU4LCBVKzFGQUYwLTFGQUY4LFxuICAgICAgICBVKzFGQkM1LTFGQkM5LCBVK0UwMDYxLUUwMDY3LCBVK0UwMDY5LCBVK0UwMDZDLUUwMDc5LCBVK0UwMDdGO1xufVxuXG4uY29waWVkVG9DbGlwYm9hcmRNZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAzMnB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogIzIyMjtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuICAgIG9wYWNpdHk6IDAuOTc7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogOTk5OTtcbn1cblxuLkNoYXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG4uY2hhdE1haW5GbG93IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGU6XG4gICAgICAgICfwn5+mJyBtaW4tY29udGVudFxuICAgICAgICAn8J+SrCcgMWZyXG4gICAgICAgICfwn5OdJyBtaW4tY29udGVudFxuICAgICAgICAvIDFmcjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdEJhciB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBjb2xvcjogIzBmMTcyNDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE1LCAyMywgMzYsIDAuMDYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uVGFza3NJblByb2dyZXNzIHtcbiAgICBncmlkLWFyZWE6IPCfn6Y7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgICBtYXJnaW46IDhweCAxNnB4O1xufVxuXG4uYWN0aW9ucyB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgei1pbmRleDogMjAwO1xuICAgIGFsaWduLXNlbGY6IHNlbGYtc3RhcnQ7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgIG1hcmdpbjogMTZweCAyMHB4IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuXG4uYWN0aW9ucy5wb3J0YWx7XG5tYXJnaW46IDA7XG59XG5cbi5hY3Rpb25zLmxlZnQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1zdGFydDtcbn1cblxuLmFjdGlvbnMucmlnaHQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG59XG5cbi8qIExhcmdlIHRhYmxldCBhbmQgc21hbGwgZGVza3RvcCBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBNZWRpdW0gc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDE0cHggMThweCAwO1xuICAgICAgICBnYXA6IDdweDtcbiAgICB9XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRDaGlsZHJlbiB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi8qIENoYXQgbWVzc2FnZXMgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweCAxNnB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4vKiBDdXN0b20gc2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLyogSW5kaXZpZHVhbCBjaGF0IG1lc3NhZ2UgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBBZGQgdG9wIG1hcmdpbiB0byBmaXJzdCBtZXNzYWdlIGlmIGFjdGlvbnMgYXJlIHByZXNlbnQgYW5kIGZpcnN0IG1lc3NhZ2UgaXMgbG9uZyAqL1xuLmhhc0FjdGlvbnNBbmRGaXJzdE1lc3NhZ2VJc0xvbmcge1xuICAgIG1hcmdpbi10b3A6IDU1cHg7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZVNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmlzTm90Q29tcGxldGVNZXNzYWdlIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICAvKiovXG5cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uTm9uQ29tcGxldGVNZXNzYWdlRmlsbGVyIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVuaGFuY2VkIGxvYWRpbmcgc3RhdGVzIGZvciBtZXNzYWdlcyAqL1xuLmlzTm90Q29tcGxldGVNZXNzYWdlIC5tZXNzYWdlVGV4dDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNiksIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBsb2FkaW5nUHVsc2Uge1xuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOCk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEuMik7XG4gICAgfVxufVxuXG4vKiBUeXBpbmcgaW5kaWNhdG9yIGZvciBBSSBtZXNzYWdlcyAqL1xuLnR5cGluZ0luZGljYXRvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbmltYXRpb246IG1lc3NhZ2VTbGlkZUluIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4udHlwaW5nSW5kaWNhdG9yIC5hdmF0YXIge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciBpbWcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWY2ZmI7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xufVxuXG4udHlwaW5nQnViYmxlIHtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xufVxuXG4udHlwaW5nRG90cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHlwaW5nRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNmI3MjgwIDAlLCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNikgMTAwJSk7XG4gICAgYW5pbWF0aW9uOiB0eXBpbmdCb3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgxKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nQm91bmNlIHtcbiAgICAwJSxcbiAgICA4MCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICAgIDQwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04cHgpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlLmlzTWUgLm1lc3NhZ2VUZXh0IHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4O1xufVxuXG4ucmF0aW5nU3RhciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xuICAgIGNvbG9yOiB2YXIoLS1zdGFyLWluYWN0aXZlLWNvbG9yLCAjY2NjKTtcbn1cblxuLnJhdGluZ1N0YXIuYWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmZDcwMDtcbn1cblxuLyogU2VuZGVyIEF2YXRhciAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXZhdGFyLWJnLWNvbG9yLCAjZWVmNmZiKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogTWVzc2FnZSB0ZXh0IGJ1YmJsZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZXNzYWdlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWVzc2FnZS10ZXh0LWNvbG9yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiBtaW4oNzAlLCA2MDBweCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi8qIENvcHkgYnV0dG9uIHN0eWxlcyAqL1xuLmNvcHlCdXR0b25Db250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogMTBweDtcbiAgICB6LWluZGV4OiAyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciAuY29weUJ1dHRvbkNvbnRhaW5lcixcbi5jb3B5QnV0dG9uQ29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmNvcHlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJveC1zaGFkb3cgMC4xNXMsIGJvcmRlciAwLjE1cztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvcGllZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiAxMTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiAjMjIyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDAuOThlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7XG4gICAgb3BhY2l0eTogMC45NztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgYW5pbWF0aW9uOiBjb3BpZWRUb29sdGlwRmFkZUluIDAuMnM7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbi5jb3BpZWRUb29sdGlwTGVmdCB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29waWVkVG9vbHRpcFJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogUmVtb3ZlZCByaWdodC1hbGlnbmVkIG92ZXJyaWRlIHRvIGtlZXAgdG9vbHRpcCBwb3NpdGlvbiBzdGFibGUgKi9cblxuQGtleWZyYW1lcyBjb3BpZWRUb29sdGlwRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk3KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk3O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5jb3B5QnV0dG9uOmhvdmVyLFxuLmNvcHlCdXR0b246Zm9jdXMge1xuICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xufVxuXG4uY29weUJ1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubWVzc2FnZVRleHQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNSB7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4ubWVzc2FnZVRleHQgb2wge1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBpbWcsXG4ubWVzc2FnZVRleHQgcHJlLFxuLm1lc3NhZ2VUZXh0IGJsb2NrcXVvdGUsXG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZmNjO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBjb2RlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2NjY2NjYzU1O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VUZXh0IHByZSBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwY2M7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayB7XG4gICAgYmFja2dyb3VuZDogIzE4MWMyMztcbiAgICBjb2xvcjogI2Y4ZmFmYztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGJvcmRlci1jb2xvcjogIzIzMjcyZjtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICBmb250LWZhbWlseTogJ0ZpcmEgTW9ubycsICdNZW5sbycsICdDb25zb2xhcycsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2U7XG59XG4ubWVzc2FnZVRleHQgLmNoYXQtY29kZS1ibG9jayBjb2RlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsgLyogU3Ryb25nZXIgbGlnaHQgYmFja2dyb3VuZCBmb3IgY29udHJhc3QgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBEYXJrIHRleHQgZm9yIGNvbnRyYXN0ICovXG59XG4ubWVzc2FnZVRleHQgdGgsXG4ubWVzc2FnZVRleHQgdGQge1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZGJlODtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBFbnN1cmUgc3Ryb25nIHRleHQgY29sb3IgZm9yIGFsbCBjZWxscyAqL1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG4ubWVzc2FnZVRleHQgdGgge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2VhZjNmYSA4MCUsICNkMWUzZjggMTAwJSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogU3Ryb25nIGhlYWRlciB0ZXh0ICovXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNiNWM3ZGU7XG59XG4ubWVzc2FnZVRleHQgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpudGgtY2hpbGQoZXZlbikgdGQge1xuICAgIGJhY2tncm91bmQ6ICNlYWYzZmE7XG59XG4ubWVzc2FnZVRleHQgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNjYmUwZjc7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xufVxuLm1lc3NhZ2VUZXh0IHRhYmxlIHtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWVzc2FnZVRleHQgdGg6Zmlyc3QtY2hpbGQsXG4ubWVzc2FnZVRleHQgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEycHg7XG59XG4ubWVzc2FnZVRleHQgdGg6bGFzdC1jaGlsZCxcbi5tZXNzYWdlVGV4dCB0ZDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTJweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0OmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4vKiBNZXNzYWdlIGJ1dHRvbnMgY29udGFpbmVyICovXG4ubWVzc2FnZUJ1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTI1IDEyNSAxMjUgLyAwLjgzKTtcbn1cblxuLyogSW5kaXZpZHVhbCBtZXNzYWdlIGJ1dHRvbiAqL1xuLm1lc3NhZ2VCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC45KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubWVzc2FnZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbn1cblxuLm1lc3NhZ2VCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IG1hcmtkb3duIHN0eWxlcyBmcm9tIGJ1dHRvbiBjb250ZW50ICovXG4ubWVzc2FnZUJ1dHRvbiBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLm1lc3NhZ2VCdXR0b24gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubWVzc2FnZUJ1dHRvbiBlbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiBSYXRpbmcgc3lzdGVtICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDJweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMjRweDtcbiAgICB6LWluZGV4OiAxO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZTpob3ZlciAucmF0aW5nIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpO1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmcgc3BhbiB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgY29sb3IgMC4ycyBlYXNlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nOmhvdmVyIHNwYW4ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogQ2hhdCBpbnB1dCBhcmVhICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGdyaWQtYXJlYTog8J+TnTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEycHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBGaWxlIHVwbG9hZCBkcmFnLWFuZC1kcm9wIHN0eWxlcyAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0LmRyYWdPdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpIDAlLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLyogRmlsZSBwcmV2aWV3IGNvbnRhaW5lciAqL1xuLmZpbGVQcmV2aWV3Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi8qIEluZGl2aWR1YWwgZmlsZSBwcmV2aWV3ICovXG4uZmlsZVByZXZpZXcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5maWxlUHJldmlldzpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjE1KTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLmZpbGVJY29uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4uZmlsZUluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDJweDtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5maWxlTmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5maWxlU2l6ZSB7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSk7XG4gICAgY29sb3I6ICNmZjQ0NDQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucmVtb3ZlRmlsZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMik7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBJbnB1dCBjb250YWluZXIgZm9yIHRleHRhcmVhIGFuZCBidXR0b25zICovXG4uaW5wdXRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi5pbnB1dENvbnRhaW5lciB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQXR0YWNobWVudCBidXR0b24gKi9cbi5hdHRhY2htZW50QnV0dG9uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgY29sb3I6ICM2YjcyODA7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdHRhY2htZW50QnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICBjb2xvcjogIzAwODRmZjtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4uYXR0YWNobWVudEJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKiBWb2ljZSBCdXR0b24gKi9cbi52b2ljZUJ1dHRvbiB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGNvbG9yOiAjNmI3MjgwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4udm9pY2VCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi52b2ljZUJ1dHRvbkFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDAuMSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IHZvaWNlUmVjb3JkaW5nUHVsc2UgMS41cyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyB2b2ljZVJlY29yZGluZ1B1bHNlIHtcbiAgICAwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAgcmdiYSgyNTUsIDAsIDAsIDAuNCk7XG4gICAgfVxuICAgIDcwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgyNTUsIDAsIDAsIDApO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDI1NSwgMCwgMCwgMCk7XG4gICAgfVxufVxuXG4vKiBVcGxvYWQgcHJvZ3Jlc3MgaW5kaWNhdG9yICovXG4udXBsb2FkUHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG59XG5cbi51cGxvYWRQcm9ncmVzc0JhciB7XG4gICAgZmxleDogMTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udXBsb2FkUHJvZ3Jlc3NGaWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMDA4NGZmLCByZ2JhKDAsIDEzMiwgMjU1LCAwLjgpKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiB1cGxvYWRQcm9ncmVzcyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHVwbG9hZFByb2dyZXNzIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG4vKiBEcmFnIG92ZXJsYXkgKi9cbi5kcmFnT3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICB6LWluZGV4OiAyMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRyYWdPdmVybGF5Q29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZHJhZ092ZXJsYXlDb250ZW50IHN2ZyB7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBDaGF0IGlucHV0IGZpZWxkICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMTZweCAyMHB4O1xuXG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wNSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICMwMDg0ZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA4KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xKSwgMCA4cHggMzJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIENoYXQgc2VuZCBidXR0b24gKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtaW4td2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogdW5zZXQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xuICAgIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xuXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIGltZyB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cblxuLyogU2Nyb2xsIHRvIGJvdHRvbSBidXR0b24gKi9cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJlZDtcbiAgICAvKiovXG5cbiAgICB6LWluZGV4OiAyMDtcbiAgICBncmlkLWFyZWE6IPCfk507XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNjcm9sbFRvQm90dG9tQ29udGFpbmVyIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNTAlKTtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCAwIDAgLyAwLjUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGFuaW1hdGlvbjogc2Nyb2xsQnV0dG9uU2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHNjcm9sbEJ1dHRvblNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAyMHB4KSBzY2FsZSgwLjgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2Nyb2xsVG9Cb3R0b206aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNjAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLnNjcm9sbFRvQm90dG9tOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE2MCUpIHNjYWxlKDAuOTUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG59XG5cbi8qIFJhdGluZyBtb2RhbCAqL1xuLnJhdGluZ01vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgYW5pbWF0aW9uOiBtb2RhbEZhZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIGNvbG9yOiAjMGYxNzI0O1xuICAgIHBhZGRpbmc6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB3aWR0aDogOTAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYW5pbWF0aW9uOiBtb2RhbFNsaWRlSW4gMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4ucmF0aW5nTW9kYWxDb250ZW50IGgzIHtcbiAgICBtYXJnaW46IDAgMCAyNHB4IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnN0YXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5zdGFycyBzcGFuIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLnN0YXJzIHNwYW46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjE1LCAwLCAwLjEpO1xufVxuXG4ucmF0aW5nTW9kYWxTdGFyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG59XG5cbi5yYXRpbmdJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMTAwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4ucmF0aW5nSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzAwODRmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5yYXRpbmdJbnB1dFtyZWFkb25seV0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC41KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDEpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMTJweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgY29sb3I6ICMwYjEyMjA7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwNzFkMSAwJSwgIzAwNTJhMyAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246bGFzdC1jaGlsZDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8qIE5ldyBjaGF0IGJ1dHRvbiBzdHlsaW5nIC0gTWF0Y2hlcyB0aGUgc2xlZWsgY2hhdCBtZXNzYWdlIGRlc2lnbiAqL1xuLmNoYXRCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4uY2hhdEJ1dHRvbjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLmNoYXRCdXR0b246YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpIHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5jaGF0QnV0dG9uOmhvdmVyIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKSBzY2FsZSgxLjEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4zKSk7XG59XG5cbi5jaGF0QnV0dG9uVGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLyogVXNlIHRlbXBsYXRlIGJ1dHRvbiBzdHlsaW5nIC0gbWF0Y2hlcyB0aGUgY2hhdEJ1dHRvbiBhbmQgc2F2ZUJ1dHRvbiAqL1xuLnVzZVRlbXBsYXRlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMTJweCAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwODRmZiAwJSwgIzAwNjZjYyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpICFpbXBvcnRhbnQ7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uICFpbXBvcnRhbnQ7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgbWluLXdpZHRoOiAxMTBweCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5OWZmIDAlLCAjMDA3N2RkIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuNCk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSwgMCAwIDAgM3B4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMikpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmhvdmVyIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCk7XG59XG5cbi5zYXZlQnV0dG9uQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2F2ZU1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnNhdmVNZW51SXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICMxMTE7XG59XG5cbi5zYXZlTWVudUl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG59XG5cbi8qIFBhdXNlL1Jlc3VtZSBidXR0b24gdmFyaWFudCAocmV1c2VzIC5jaGF0QnV0dG9uIGJhc2Ugc3R5bGVzIGZvciBEUlkpICovXG4ucGF1c2VCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmIzNDcgMCUsICNmZjhjNDIgMTAwJSkgIWltcG9ydGFudDsgLyogV2FybSBvcmFuZ2UgZm9yIFwiYWN0aXZlL3J1bm5pbmdcIiAqL1xufVxuXG4ucGF1c2VCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmMwNjcgMCUsICNmZjllNWYgMTAwJSkgIWltcG9ydGFudDtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcge1xuICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogd2FpdCAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2VkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpICFpbXBvcnRhbnQ7IC8qIEdyZWVuIHdoZW4gcGF1c2VkIChyZWFkeSB0byByZXN1bWUpICovXG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNGQzOTkgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4zNSk7XG59XG5cbi5wYXVzZUJ1dHRvbiBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzaW5nIHN2ZyB7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciBiYXIgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3JCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4xKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMzQsIDE5NywgOTQsIDAuMyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgKi9cbi52b2ljZUNhbGxJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgzNCwgMTk3LCA5NCwgMC4yKSAwJSwgcmdiYSgxNiwgMTg1LCAxMjksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC40KTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGNvbG9yOiAjMTBiOTgxO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgzNCwgMTk3LCA5NCwgMC4yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxJY29uUHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbi52b2ljZUNhbGxJbmRpY2F0b3Igc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogVm9pY2UgY2FsbCBwdWxzZSBhbmltYXRpb24gKi9cbi52b2ljZUNhbGxQdWxzZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogIzEwYjk4MTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiB2b2ljZUNhbGxQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbEljb25QdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyB2b2ljZUNhbGxQdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEuMyk7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGluIG1lc3NhZ2VzICovXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xufVxuXG4uY2hhdE1lc3NhZ2UgLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbn1cblxuLyogUmF0aW5nIGNvbmZpcm1hdGlvbiAqL1xuLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTBiOTgxIDAlLCAjMDU5NjY5IDEwMCUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjMpO1xuICAgIHotaW5kZXg6IDEwMDE7XG4gICAgYW5pbWF0aW9uOiBjb25maXJtYXRpb25TbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG59XG5cbkBrZXlmcmFtZXMgY29uZmlybWF0aW9uU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZW5lc3MgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDE2cHggMDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBtYXgtd2lkdGg6IDg1JTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIG1hcmdpbjogMCAxMHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMTJweDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNjBweCk7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMjBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAuc3RhcnMge1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuc3RhcnMgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDhweCAxMnB4IDA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlcyB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogOTAlO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgbWFyZ2luOiAwIDhweCA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zY3JvbGxUb0JvdHRvbSB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxNDBweCk7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDE2cHggMjBweDtcbiAgICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UsXG4gICAgLnNjcm9sbFRvQm90dG9tLFxuICAgIC5yYXRpbmdNb2RhbCxcbiAgICAucmF0aW5nTW9kYWxDb250ZW50LFxuICAgIC5yYXRpbmdDb25maXJtYXRpb24ge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0LFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSxcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nLFxuICAgIC5jaGF0QnV0dG9uIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8qIEhpZ2ggY29udHJhc3QgbW9kZSBzdXBwb3J0ICovXG5AbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG59XG5cbi8qKlxuICogVE9ETzogW/CfjIldIERSWSBNYXJrZG93biBwcmltaXRpdmVzIHN0eWxpbmdcbiAqL1xuIl19 */";
|
|
7953
|
+
var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","portal":"Chat-module_portal__uTOT8","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","ratingStar":"Chat-module_ratingStar__rRfqC","active":"Chat-module_active__lbYL-","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","voiceButton":"Chat-module_voiceButton__d2zlP","voiceButtonActive":"Chat-module_voiceButtonActive__Uoi3W","voiceRecordingPulse":"Chat-module_voiceRecordingPulse__y2wJ5","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingModalStar":"Chat-module_ratingModalStar__XkbHr","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","saveButtonContainer":"Chat-module_saveButtonContainer__lSNUJ","saveMenu":"Chat-module_saveMenu__-ph8y","saveMenuItem":"Chat-module_saveMenuItem__ISApL","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
|
|
7542
7954
|
styleInject(css_248z$2);
|
|
7543
7955
|
|
|
7544
7956
|
var css_248z$1 = ".AvatarProfileTooltip-module_AvatarProfileTooltip__bZ020{background-color:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 4px 8px rgba(0,0,0,.1);max-width:300px;padding:20px;position:fixed;z-index:1000}.AvatarProfileTooltip-module_arrow__wmM61{border-color:transparent transparent #fff;border-style:solid;border-width:0 10px 10px;filter:drop-shadow(0 -1px 1px rgba(0,0,0,.1));height:0;left:20px;position:absolute;top:-10px;width:0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhclByb2ZpbGVUb29sdGlwLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBSUkscUJBQXVCLENBQ3ZCLHFCQUFzQixDQUN0QixrQkFBbUIsQ0FDbkIsbUNBQXdDLENBQ3hDLGVBQWdCLENBTGhCLFlBQWEsQ0FGYixjQUFlLENBQ2YsWUFRSixDQUVBLDBDQVFJLHlDQUF1RCxDQUF2RCxrQkFBdUQsQ0FBdkQsd0JBQXVELENBQ3ZELDZDQUFrRCxDQU5sRCxRQUFTLENBR1QsU0FBVSxDQUxWLGlCQUFrQixDQUlsQixTQUFVLENBSFYsT0FRSiIsImZpbGUiOiJBdmF0YXJQcm9maWxlVG9vbHRpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhclByb2ZpbGVUb29sdGlwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgLyogW/Cfp6BdIFdoYXQgaXMgdGhlIGJlc3QgbWF4LXdpZHRoIGZvciB0aGUgdG9vbHRpcCAqL1xufVxuXG4uYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB0b3A6IC0xMHB4O1xuICAgIGxlZnQ6IDIwcHg7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgd2hpdGUgdHJhbnNwYXJlbnQ7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG4iXX0= */";
|
|
@@ -7823,7 +8235,7 @@
|
|
|
7823
8235
|
*/
|
|
7824
8236
|
function Chat(props) {
|
|
7825
8237
|
var _a;
|
|
7826
|
-
const { title = 'Chat', messages, onChange, onMessage, onReset, onFeedback, onFileUpload,
|
|
8238
|
+
const { title = 'Chat', messages, onChange, onMessage, onReset, onFeedback, onFileUpload, onVoiceInput,
|
|
7827
8239
|
// isVoiceRecognitionButtonShown,
|
|
7828
8240
|
// voiceLanguage = 'en-US',
|
|
7829
8241
|
placeholderMessageContent, defaultMessage,
|
|
@@ -7834,7 +8246,7 @@
|
|
|
7834
8246
|
// isExperimental = false,
|
|
7835
8247
|
// TODO: [๐
]> isSaveButtonEnabled = false,
|
|
7836
8248
|
// exportHeaderMarkdown,
|
|
7837
|
-
participants = [], extraActions, saveFormats, isSaveButtonEnabled = true, isCopyButtonEnabled = true, } = props;
|
|
8249
|
+
participants = [], extraActions, actionsContainer, saveFormats, isSaveButtonEnabled = true, isCopyButtonEnabled = true, } = props;
|
|
7838
8250
|
const { onUseTemplate } = props;
|
|
7839
8251
|
// Use the auto-scroll hook
|
|
7840
8252
|
const { isAutoScrolling, chatMessagesRef, handleScroll, handleMessagesChange, scrollToBottom, isMobile: isMobileFromHook, } = useChatAutoScroll();
|
|
@@ -8093,14 +8505,20 @@
|
|
|
8093
8505
|
const isFeedbackEnabled = !!onFeedback;
|
|
8094
8506
|
// Handler for copy button
|
|
8095
8507
|
const handleCopy = () => { };
|
|
8096
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ratingConfirmation && jsxRuntime.jsx("div", { className: chatStyles.ratingConfirmation, children: ratingConfirmation }), jsxRuntime.jsx("div", { className: classNames(className, chatStyles.Chat, useChatCssClassName('Chat')), style, children: jsxRuntime.jsxs("div", { className: classNames(className, chatStyles.chatMainFlow, useChatCssClassName('chatMainFlow')), children: [children && jsxRuntime.jsx("div", { className: classNames(chatStyles.chatChildren), children: children }), !isAutoScrolling && (jsxRuntime.jsx("div", { className: chatStyles.scrollToBottomContainer, children: jsxRuntime.jsx("button", { "data-button-type": "custom", className: classNames(chatStyles.scrollToBottom, scrollToBottomCssClassName), onClick: scrollToBottom, children: jsxRuntime.jsx(ArrowIcon, { direction: "DOWN", size: 33 }) }) })), isVoiceCalling && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicatorBar, children: jsxRuntime.jsxs("div", { className: chatStyles.voiceCallIndicator, children: [jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }), jsxRuntime.jsx("span", { children: "Voice call active" }), jsxRuntime.jsx("div", { className: chatStyles.voiceCallPulse })] }) })),
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
|
|
8100
|
-
|
|
8101
|
-
|
|
8102
|
-
|
|
8103
|
-
|
|
8508
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ratingConfirmation && jsxRuntime.jsx("div", { className: chatStyles.ratingConfirmation, children: ratingConfirmation }), jsxRuntime.jsx("div", { className: classNames(className, chatStyles.Chat, useChatCssClassName('Chat')), style, children: jsxRuntime.jsxs("div", { className: classNames(className, chatStyles.chatMainFlow, useChatCssClassName('chatMainFlow')), children: [children && jsxRuntime.jsx("div", { className: classNames(chatStyles.chatChildren), children: children }), !isAutoScrolling && (jsxRuntime.jsx("div", { className: chatStyles.scrollToBottomContainer, children: jsxRuntime.jsx("button", { "data-button-type": "custom", className: classNames(chatStyles.scrollToBottom, scrollToBottomCssClassName), onClick: scrollToBottom, children: jsxRuntime.jsx(ArrowIcon, { direction: "DOWN", size: 33 }) }) })), isVoiceCalling && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicatorBar, children: jsxRuntime.jsxs("div", { className: chatStyles.voiceCallIndicator, children: [jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }), jsxRuntime.jsx("span", { children: "Voice call active" }), jsxRuntime.jsx("div", { className: chatStyles.voiceCallPulse })] }) })), (() => {
|
|
8509
|
+
const actionsContent = (jsxRuntime.jsxs("div", { className: classNames(actionsAlignmentClass, actionsContainer && chatStyles.portal), children: [onReset && postprocessedMessages.length !== 0 && (jsxRuntime.jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => {
|
|
8510
|
+
if (!confirm(`Do you really want to reset the chat?`)) {
|
|
8511
|
+
return;
|
|
8512
|
+
}
|
|
8513
|
+
onReset();
|
|
8514
|
+
}, children: [jsxRuntime.jsx(ResetIcon, {}), jsxRuntime.jsx("span", { className: chatStyles.chatButtonText, children: "New chat" })] })), isSaveButtonEnabled && postprocessedMessages.length !== 0 && (jsxRuntime.jsxs("div", { className: chatStyles.saveButtonContainer, children: [jsxRuntime.jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => setShowSaveMenu((v) => !v), "aria-haspopup": "true", "aria-expanded": showSaveMenu, children: [jsxRuntime.jsx(SaveIcon, { size: 18 }), jsxRuntime.jsx("span", { className: chatStyles.chatButtonText, children: "Save" })] }), showSaveMenu && (jsxRuntime.jsx("div", { className: chatStyles.saveMenu, children: getChatSaveFormatDefinitions(saveFormats).map((formatDefinition) => (jsxRuntime.jsx("button", { className: chatStyles.saveMenuItem, onClick: () =>
|
|
8515
|
+
// TODO: !!! Use here `$induceFileDownload`
|
|
8516
|
+
handleDownload(formatDefinition.formatName), children: formatDefinition.label }, formatDefinition.formatName))) }))] })), onUseTemplate && (jsxRuntime.jsxs("button", { className: classNames(chatStyles.useTemplateButton), onClick: onUseTemplate, children: [jsxRuntime.jsx("span", { className: chatStyles.chatButtonText, children: "Use this template" }), jsxRuntime.jsx(TemplateIcon, { size: 16 })] })), extraActions] }));
|
|
8517
|
+
if (actionsContainer) {
|
|
8518
|
+
return reactDom.createPortal(actionsContent, actionsContainer);
|
|
8519
|
+
}
|
|
8520
|
+
return actionsContent;
|
|
8521
|
+
})(), jsxRuntime.jsxs("div", { className: classNames(chatStyles.chatMessages, useChatCssClassName('chatMessages'), (() => {
|
|
8104
8522
|
// Detect if actions are present
|
|
8105
8523
|
const hasActions = (!!onReset && postprocessedMessages.length !== 0) ||
|
|
8106
8524
|
(isSaveButtonEnabled && postprocessedMessages.length !== 0) ||
|
|
@@ -8170,7 +8588,10 @@
|
|
|
8170
8588
|
return;
|
|
8171
8589
|
}
|
|
8172
8590
|
onChange(((_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.value) || '');
|
|
8173
|
-
} }), onFileUpload && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsxRuntime.jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", children: jsxRuntime.jsx(AttachmentIcon, { size: 20 }) })] })), jsxRuntime.jsx("button", { "data-button-type": "
|
|
8591
|
+
} }), onFileUpload && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsxRuntime.jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", children: jsxRuntime.jsx(AttachmentIcon, { size: 20 }) })] })), onVoiceInput && (jsxRuntime.jsx("button", { "data-button-type": "voice", className: classNames(chatStyles.voiceButton, isVoiceCalling && chatStyles.voiceButtonActive), onClick: (event) => {
|
|
8592
|
+
event.preventDefault();
|
|
8593
|
+
onVoiceInput();
|
|
8594
|
+
}, title: isVoiceCalling ? 'Stop voice call' : 'Start voice call', children: jsxRuntime.jsx(MicIcon, { size: 25 }) })), jsxRuntime.jsx("button", { "data-button-type": "call-to-action", ref: buttonSendRef, onClick: (event) => {
|
|
8174
8595
|
if (!onMessage) {
|
|
8175
8596
|
return;
|
|
8176
8597
|
}
|
|
@@ -8312,6 +8733,14 @@
|
|
|
8312
8733
|
const buildInitialMessages = react.useCallback(() => (initialMessages ? [...initialMessages] : []), [initialMessages]);
|
|
8313
8734
|
const [messages, setMessages] = react.useState(() => buildInitialMessages());
|
|
8314
8735
|
const [tasksProgress, setTasksProgress] = react.useState([]);
|
|
8736
|
+
const [isVoiceCalling, setIsVoiceCalling] = react.useState(false);
|
|
8737
|
+
const mediaRecorderRef = react.useRef(null);
|
|
8738
|
+
// Refs to keep latest state for long-lived voice handlers
|
|
8739
|
+
const messagesRef = react.useRef([]);
|
|
8740
|
+
const participantsRef = react.useRef([]);
|
|
8741
|
+
const isProcessingVoiceChunkRef = react.useRef(false);
|
|
8742
|
+
const allVoiceChunksRef = react.useRef([]);
|
|
8743
|
+
const utteranceTimeoutRef = react.useRef(null);
|
|
8315
8744
|
/**
|
|
8316
8745
|
* Tracks whether the user (or system via persistence restoration) has interacted.
|
|
8317
8746
|
* We do NOT persist purely initialMessages until the user sends something.
|
|
@@ -8352,6 +8781,150 @@
|
|
|
8352
8781
|
color: '#10b981',
|
|
8353
8782
|
},
|
|
8354
8783
|
], [llmTools.profile, llmTools.title]);
|
|
8784
|
+
// Keep refs in sync for usage inside long-lived callbacks
|
|
8785
|
+
react.useEffect(() => {
|
|
8786
|
+
messagesRef.current = messages;
|
|
8787
|
+
}, [messages]);
|
|
8788
|
+
react.useEffect(() => {
|
|
8789
|
+
participantsRef.current = participants;
|
|
8790
|
+
}, [participants]);
|
|
8791
|
+
// Handle voice input in a fluent, multi-message way:
|
|
8792
|
+
// - While the call is active we keep recording audio.
|
|
8793
|
+
// - When the user is silent for ~2 seconds, we treat it as the end of an utterance
|
|
8794
|
+
// and send one combined audio blob to the agent (one agent turn per utterance).
|
|
8795
|
+
const processCurrentUtterance = react.useCallback(async () => {
|
|
8796
|
+
var _a;
|
|
8797
|
+
if (!llmTools.callVoiceChatModel) {
|
|
8798
|
+
return;
|
|
8799
|
+
}
|
|
8800
|
+
if (isProcessingVoiceChunkRef.current) {
|
|
8801
|
+
return;
|
|
8802
|
+
}
|
|
8803
|
+
const chunks = allVoiceChunksRef.current;
|
|
8804
|
+
if (!chunks.length) {
|
|
8805
|
+
return;
|
|
8806
|
+
}
|
|
8807
|
+
isProcessingVoiceChunkRef.current = true;
|
|
8808
|
+
allVoiceChunksRef.current = [];
|
|
8809
|
+
const blob = new Blob(chunks, {
|
|
8810
|
+
type: ((_a = chunks[0]) === null || _a === void 0 ? void 0 : _a.type) || 'audio/webm',
|
|
8811
|
+
});
|
|
8812
|
+
const taskId = `voice_call_${Date.now()}`;
|
|
8813
|
+
setTasksProgress([{ id: taskId, name: 'Processing voice...', progress: 50 }]);
|
|
8814
|
+
try {
|
|
8815
|
+
const thread = props.thread ? [...props.thread] : [...messagesRef.current];
|
|
8816
|
+
const result = await llmTools.callVoiceChatModel(blob, {
|
|
8817
|
+
title: 'Voice Message',
|
|
8818
|
+
content: '',
|
|
8819
|
+
parameters: {},
|
|
8820
|
+
modelRequirements: { modelVariant: 'CHAT' },
|
|
8821
|
+
thread,
|
|
8822
|
+
});
|
|
8823
|
+
setTasksProgress([{ id: taskId, name: 'Playing response...', progress: 100 }]);
|
|
8824
|
+
const now = Date.now();
|
|
8825
|
+
const userMessage = {
|
|
8826
|
+
id: `user_${now}`,
|
|
8827
|
+
date: new Date(),
|
|
8828
|
+
from: userParticipantName,
|
|
8829
|
+
content: (result.userMessage || '(Voice message)'),
|
|
8830
|
+
isComplete: true,
|
|
8831
|
+
isVoiceCall: true,
|
|
8832
|
+
};
|
|
8833
|
+
const agentMessage = {
|
|
8834
|
+
id: `agent_${now}`,
|
|
8835
|
+
date: new Date(),
|
|
8836
|
+
from: llmParticipantName,
|
|
8837
|
+
content: (result.agentMessage || result.text),
|
|
8838
|
+
isComplete: true,
|
|
8839
|
+
isVoiceCall: true,
|
|
8840
|
+
};
|
|
8841
|
+
setMessages((prevMessages) => {
|
|
8842
|
+
const newMessages = [...prevMessages, userMessage, agentMessage];
|
|
8843
|
+
messagesRef.current = newMessages;
|
|
8844
|
+
if (onChange) {
|
|
8845
|
+
onChange(newMessages, participantsRef.current);
|
|
8846
|
+
}
|
|
8847
|
+
return newMessages;
|
|
8848
|
+
});
|
|
8849
|
+
// Play audio
|
|
8850
|
+
const audioUrl = URL.createObjectURL(result.audio);
|
|
8851
|
+
const audioEl = new Audio(audioUrl);
|
|
8852
|
+
audioEl.play();
|
|
8853
|
+
setTimeout(() => setTasksProgress([]), 1000);
|
|
8854
|
+
}
|
|
8855
|
+
catch (error) {
|
|
8856
|
+
console.error('Error calling Voice LLM:', error);
|
|
8857
|
+
setTasksProgress([]);
|
|
8858
|
+
}
|
|
8859
|
+
finally {
|
|
8860
|
+
isProcessingVoiceChunkRef.current = false;
|
|
8861
|
+
}
|
|
8862
|
+
}, [llmTools, onChange, userParticipantName, llmParticipantName, props.thread]);
|
|
8863
|
+
const handleVoiceInput = react.useCallback(async () => {
|
|
8864
|
+
if (!llmTools.callVoiceChatModel) {
|
|
8865
|
+
return;
|
|
8866
|
+
}
|
|
8867
|
+
if (isVoiceCalling) {
|
|
8868
|
+
// Stop recording and end call
|
|
8869
|
+
const recorder = mediaRecorderRef.current;
|
|
8870
|
+
if (recorder) {
|
|
8871
|
+
recorder.stop();
|
|
8872
|
+
}
|
|
8873
|
+
mediaRecorderRef.current = null;
|
|
8874
|
+
setIsVoiceCalling(false);
|
|
8875
|
+
// Process any remaining audio as the final utterance
|
|
8876
|
+
if (utteranceTimeoutRef.current) {
|
|
8877
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
8878
|
+
utteranceTimeoutRef.current = null;
|
|
8879
|
+
}
|
|
8880
|
+
void processCurrentUtterance();
|
|
8881
|
+
}
|
|
8882
|
+
else {
|
|
8883
|
+
// Start recording and keep listening for utterances separated by ~2s of silence
|
|
8884
|
+
try {
|
|
8885
|
+
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
8886
|
+
const mediaRecorder = new MediaRecorder(stream);
|
|
8887
|
+
mediaRecorderRef.current = mediaRecorder;
|
|
8888
|
+
allVoiceChunksRef.current = [];
|
|
8889
|
+
isProcessingVoiceChunkRef.current = false;
|
|
8890
|
+
if (utteranceTimeoutRef.current) {
|
|
8891
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
8892
|
+
utteranceTimeoutRef.current = null;
|
|
8893
|
+
}
|
|
8894
|
+
mediaRecorder.ondataavailable = (event) => {
|
|
8895
|
+
const chunk = event.data;
|
|
8896
|
+
if (!chunk || chunk.size === 0) {
|
|
8897
|
+
return;
|
|
8898
|
+
}
|
|
8899
|
+
// Accumulate chunks for the current utterance
|
|
8900
|
+
allVoiceChunksRef.current.push(chunk);
|
|
8901
|
+
// Reset the silence timer; if there is no new audio for 2s,
|
|
8902
|
+
// treat it as the end of the current utterance.
|
|
8903
|
+
if (utteranceTimeoutRef.current) {
|
|
8904
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
8905
|
+
}
|
|
8906
|
+
utteranceTimeoutRef.current = setTimeout(() => {
|
|
8907
|
+
void processCurrentUtterance();
|
|
8908
|
+
}, 2000);
|
|
8909
|
+
};
|
|
8910
|
+
mediaRecorder.onstop = () => {
|
|
8911
|
+
mediaRecorder.stream.getTracks().forEach((track) => track.stop());
|
|
8912
|
+
if (utteranceTimeoutRef.current) {
|
|
8913
|
+
clearTimeout(utteranceTimeoutRef.current);
|
|
8914
|
+
utteranceTimeoutRef.current = null;
|
|
8915
|
+
}
|
|
8916
|
+
// Process any remaining audio when the recorder stops
|
|
8917
|
+
void processCurrentUtterance();
|
|
8918
|
+
};
|
|
8919
|
+
// Use timeslices so ondataavailable is fired continuously
|
|
8920
|
+
mediaRecorder.start(500);
|
|
8921
|
+
setIsVoiceCalling(true);
|
|
8922
|
+
}
|
|
8923
|
+
catch (err) {
|
|
8924
|
+
console.error('Error accessing microphone:', err);
|
|
8925
|
+
}
|
|
8926
|
+
}
|
|
8927
|
+
}, [isVoiceCalling, llmTools, processCurrentUtterance]);
|
|
8355
8928
|
// Handle user messages and LLM responses
|
|
8356
8929
|
const handleMessage = react.useCallback(async (messageContent) => {
|
|
8357
8930
|
hasUserInteractedRef.current = true;
|
|
@@ -8488,7 +9061,7 @@
|
|
|
8488
9061
|
sendMessage._attach(handleMessage);
|
|
8489
9062
|
}
|
|
8490
9063
|
}, [sendMessage, handleMessage]);
|
|
8491
|
-
return (jsxRuntime.jsx(Chat, { ...restProps, messages, onReset, tasksProgress, participants, onMessage: handleMessage, onReset: handleReset }));
|
|
9064
|
+
return (jsxRuntime.jsx(Chat, { ...restProps, messages, onReset, tasksProgress, participants, onMessage: handleMessage, onReset: handleReset, onVoiceInput: llmTools.callVoiceChatModel ? handleVoiceInput : undefined, isVoiceCalling: isVoiceCalling }));
|
|
8492
9065
|
}
|
|
8493
9066
|
|
|
8494
9067
|
/**
|
|
@@ -8505,14 +9078,14 @@
|
|
|
8505
9078
|
*/
|
|
8506
9079
|
function AgentChat(props) {
|
|
8507
9080
|
const { agent, title, persistenceKey, onChange, sendMessage, ...restProps } = props;
|
|
8508
|
-
return (jsxRuntime.jsx(LlmChat, { title: title || `Chat with ${agent.agentName || 'Agent'}`, persistenceKey: persistenceKey || `agent-chat-${agent.agentName}`, userParticipantName: "USER", llmParticipantName: "AGENT" // <- TODO: [๐ง ] Maybe dynamic agent id
|
|
9081
|
+
return (jsxRuntime.jsx(LlmChat, { title: title || `Chat with ${agent.meta.fullname || agent.agentName || 'Agent'}`, persistenceKey: persistenceKey || `agent-chat-${agent.agentName}`, userParticipantName: "USER", llmParticipantName: "AGENT" // <- TODO: [๐ง ] Maybe dynamic agent id
|
|
8509
9082
|
, initialMessages: [
|
|
8510
9083
|
{
|
|
8511
9084
|
from: 'AGENT',
|
|
8512
9085
|
content: agent.initialMessage ||
|
|
8513
9086
|
spaceTrim__default["default"](`
|
|
8514
9087
|
|
|
8515
|
-
Hello! I am ${agent.agentName || 'an AI Agent'}.
|
|
9088
|
+
Hello! I am ${agent.meta.fullname || agent.agentName || 'an AI Agent'}.
|
|
8516
9089
|
|
|
8517
9090
|
[Hello](?message=Hello, can you tell me about yourself?)
|
|
8518
9091
|
`),
|
|
@@ -8520,7 +9093,7 @@
|
|
|
8520
9093
|
], participants: [
|
|
8521
9094
|
{
|
|
8522
9095
|
name: 'AGENT',
|
|
8523
|
-
fullname: agent.agentName || 'Agent',
|
|
9096
|
+
fullname: agent.meta.fullname || agent.agentName || 'Agent',
|
|
8524
9097
|
avatarSrc: agent.meta.image,
|
|
8525
9098
|
color: agent.meta.color,
|
|
8526
9099
|
isMe: false,
|
|
@@ -8908,6 +9481,101 @@
|
|
|
8908
9481
|
onMessage: isSimulationComplete && chatProps.onMessage ? chatProps.onMessage : undefined }));
|
|
8909
9482
|
}
|
|
8910
9483
|
|
|
9484
|
+
/**
|
|
9485
|
+
* Function `validatePipelineString` will validate the if the string is a valid pipeline string
|
|
9486
|
+
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9487
|
+
*
|
|
9488
|
+
* Note: [๐] This function is idempotent.
|
|
9489
|
+
*
|
|
9490
|
+
* @param {string} pipelineString the candidate for a pipeline string
|
|
9491
|
+
* @returns {PipelineString} the same string as input, but validated as valid
|
|
9492
|
+
* @throws {ParseError} if the string is not a valid pipeline string
|
|
9493
|
+
* @public exported from `@promptbook/core`
|
|
9494
|
+
*/
|
|
9495
|
+
function validatePipelineString(pipelineString) {
|
|
9496
|
+
if (isValidJsonString(pipelineString)) {
|
|
9497
|
+
throw new ParseError('Expected a book, but got a JSON string');
|
|
9498
|
+
}
|
|
9499
|
+
else if (isValidUrl(pipelineString)) {
|
|
9500
|
+
throw new ParseError(`Expected a book, but got just the URL "${pipelineString}"`);
|
|
9501
|
+
}
|
|
9502
|
+
else if (isValidFilePath(pipelineString)) {
|
|
9503
|
+
throw new ParseError(`Expected a book, but got just the file path "${pipelineString}"`);
|
|
9504
|
+
}
|
|
9505
|
+
else if (isValidEmail(pipelineString)) {
|
|
9506
|
+
throw new ParseError(`Expected a book, but got just the email "${pipelineString}"`);
|
|
9507
|
+
}
|
|
9508
|
+
// <- TODO: Implement the validation + add tests when the pipeline logic considered as invalid
|
|
9509
|
+
return pipelineString;
|
|
9510
|
+
}
|
|
9511
|
+
/**
|
|
9512
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9513
|
+
*/
|
|
9514
|
+
|
|
9515
|
+
/**
|
|
9516
|
+
* Function `isValidPipelineString` will validate the if the string is a valid pipeline string
|
|
9517
|
+
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9518
|
+
*
|
|
9519
|
+
* @param {string} pipelineString the candidate for a pipeline string
|
|
9520
|
+
* @returns {boolean} if the string is a valid pipeline string
|
|
9521
|
+
* @public exported from `@promptbook/core`
|
|
9522
|
+
*/
|
|
9523
|
+
function isValidPipelineString(pipelineString) {
|
|
9524
|
+
try {
|
|
9525
|
+
validatePipelineString(pipelineString);
|
|
9526
|
+
return true;
|
|
9527
|
+
}
|
|
9528
|
+
catch (error) {
|
|
9529
|
+
assertsError(error);
|
|
9530
|
+
return false;
|
|
9531
|
+
}
|
|
9532
|
+
}
|
|
9533
|
+
/**
|
|
9534
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9535
|
+
*/
|
|
9536
|
+
|
|
9537
|
+
/**
|
|
9538
|
+
* Tag function for notating a pipeline with a book\`...\ notation as template literal
|
|
9539
|
+
*
|
|
9540
|
+
* Note: There are 3 similar functions:
|
|
9541
|
+
* 1) `prompt` for notating single prompt exported from `@promptbook/utils`
|
|
9542
|
+
* 2) `promptTemplate` alias for `prompt`
|
|
9543
|
+
* 3) `book` for notating and validating entire books exported from `@promptbook/utils`
|
|
9544
|
+
*
|
|
9545
|
+
* @param strings The static string parts of the template literal
|
|
9546
|
+
* @param values The dynamic values embedded within the template literal used as data
|
|
9547
|
+
* @returns the pipeline string
|
|
9548
|
+
* @public exported from `@promptbook/core`
|
|
9549
|
+
*/
|
|
9550
|
+
function book(strings, ...values) {
|
|
9551
|
+
const bookString = prompt(strings, ...values);
|
|
9552
|
+
if (!isValidPipelineString(bookString)) {
|
|
9553
|
+
// TODO: Make the CustomError for this
|
|
9554
|
+
throw new Error(spaceTrim__default["default"](`
|
|
9555
|
+
The string is not a valid pipeline string
|
|
9556
|
+
|
|
9557
|
+
book\`
|
|
9558
|
+
${bookString}
|
|
9559
|
+
\`
|
|
9560
|
+
`));
|
|
9561
|
+
}
|
|
9562
|
+
if (!isValidBook(bookString)) {
|
|
9563
|
+
// TODO: Make the CustomError for this
|
|
9564
|
+
throw new Error(spaceTrim__default["default"](`
|
|
9565
|
+
The string is not a valid book
|
|
9566
|
+
|
|
9567
|
+
book\`
|
|
9568
|
+
${bookString}
|
|
9569
|
+
\`
|
|
9570
|
+
`));
|
|
9571
|
+
}
|
|
9572
|
+
return padBook(bookString);
|
|
9573
|
+
}
|
|
9574
|
+
/**
|
|
9575
|
+
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9576
|
+
* Note: [๐] Ignore a discrepancy between file name and entity name
|
|
9577
|
+
*/
|
|
9578
|
+
|
|
8911
9579
|
/**
|
|
8912
9580
|
* Takes an item or an array of items and returns an array of items
|
|
8913
9581
|
*
|
|
@@ -9156,37 +9824,6 @@
|
|
|
9156
9824
|
|
|
9157
9825
|
var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book",formfactorName:"GENERIC",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge from Markdown\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book`\n- INPUT PARAMETER `{knowledgeContent}` Markdown document content\n- OUTPUT PARAMETER `{knowledgePieces}` The knowledge JSON object\n\n## Knowledge\n\n<!-- TODO: [๐] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}\n```\n\n`-> {knowledgePieces}`\n"}],sourceFile:"./books/prepare-knowledge-from-markdown.book"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Keywords\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-keywords.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{keywords}` Keywords separated by comma\n\n## Knowledge\n\n<!-- TODO: [๐] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}\n```\n\n`-> {keywords}`\n"}],sourceFile:"./books/prepare-knowledge-keywords.book"},{title:"Prepare Knowledge-piece Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge-piece Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-title.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{title}` The title of the document\n\n## Knowledge\n\n- EXPECT MIN 1 WORD\n- EXPECT MAX 8 WORDS\n\n```markdown\nYou are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-knowledge-title.book"},{title:"Prepare Persona",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.book",formfactorName:"GENERIC",parameters:[{name:"availableModels",description:"List of available model names together with their descriptions as JSON",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelsRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-model-requirements",title:"Make modelRequirements",content:"You are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n```json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n```\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n```json\n{availableModels}\n```\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelsRequirements",format:"JSON",dependentParameterNames:["availableModels","personaDescription"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Persona\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-persona.book`\n- INPUT PARAMETER `{availableModels}` List of available model names together with their descriptions as JSON\n- INPUT PARAMETER `{personaDescription}` Description of the persona\n- OUTPUT PARAMETER `{modelsRequirements}` Specific requirements for the model\n\n## Make modelRequirements\n\n- FORMAT JSON\n\n```markdown\nYou are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n\\`\\`\\`json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n\\`\\`\\`\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n\\`\\`\\`json\n{availableModels}\n\\`\\`\\`\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}\n```\n\n`-> {modelsRequirements}`\n"}],sourceFile:"./books/prepare-persona.book"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-title.book",formfactorName:"GENERIC",parameters:[{name:"book",description:"The book to prepare the title for",isInput:true,isOutput:false},{name:"title",description:"Best title for the book",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-title",title:"Make title",content:"Make best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"โ Convert Knowledge-piece to title\" but \"โ Title\"_\n\n## The workflow\n\n> {book}",resultingParameterName:"title",expectations:{words:{min:1,max:8},lines:{min:1,max:1}},dependentParameterNames:["book"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-title.book`\n- INPUT PARAMETER `{book}` The book to prepare the title for\n- OUTPUT PARAMETER `{title}` Best title for the book\n\n## Make title\n\n- EXPECT MIN 1 Word\n- EXPECT MAX 8 Words\n- EXPECT EXACTLY 1 Line\n\n```markdown\nMake best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"โ Convert Knowledge-piece to title\" but \"โ Title\"_\n\n## The workflow\n\n> {book}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-title.book"}];
|
|
9158
9826
|
|
|
9159
|
-
/**
|
|
9160
|
-
* Function `validatePipelineString` will validate the if the string is a valid pipeline string
|
|
9161
|
-
* It does not check if the string is fully logically correct, but if it is a string that can be a pipeline string or the string looks completely different.
|
|
9162
|
-
*
|
|
9163
|
-
* Note: [๐] This function is idempotent.
|
|
9164
|
-
*
|
|
9165
|
-
* @param {string} pipelineString the candidate for a pipeline string
|
|
9166
|
-
* @returns {PipelineString} the same string as input, but validated as valid
|
|
9167
|
-
* @throws {ParseError} if the string is not a valid pipeline string
|
|
9168
|
-
* @public exported from `@promptbook/core`
|
|
9169
|
-
*/
|
|
9170
|
-
function validatePipelineString(pipelineString) {
|
|
9171
|
-
if (isValidJsonString(pipelineString)) {
|
|
9172
|
-
throw new ParseError('Expected a book, but got a JSON string');
|
|
9173
|
-
}
|
|
9174
|
-
else if (isValidUrl(pipelineString)) {
|
|
9175
|
-
throw new ParseError(`Expected a book, but got just the URL "${pipelineString}"`);
|
|
9176
|
-
}
|
|
9177
|
-
else if (isValidFilePath(pipelineString)) {
|
|
9178
|
-
throw new ParseError(`Expected a book, but got just the file path "${pipelineString}"`);
|
|
9179
|
-
}
|
|
9180
|
-
else if (isValidEmail(pipelineString)) {
|
|
9181
|
-
throw new ParseError(`Expected a book, but got just the email "${pipelineString}"`);
|
|
9182
|
-
}
|
|
9183
|
-
// <- TODO: Implement the validation + add tests when the pipeline logic considered as invalid
|
|
9184
|
-
return pipelineString;
|
|
9185
|
-
}
|
|
9186
|
-
/**
|
|
9187
|
-
* TODO: [๐ง ][๐ด] Where is the best location for this file
|
|
9188
|
-
*/
|
|
9189
|
-
|
|
9190
9827
|
/**
|
|
9191
9828
|
* Prettify the html code
|
|
9192
9829
|
*
|
|
@@ -14923,12 +15560,15 @@
|
|
|
14923
15560
|
fileStreams.push(file);
|
|
14924
15561
|
}
|
|
14925
15562
|
else {
|
|
15563
|
+
/*
|
|
15564
|
+
TODO: [๐ฑโ๐] Resolve problem with browser environment
|
|
14926
15565
|
// Assume it's a local file path
|
|
14927
15566
|
// Note: This will work in Node.js environment
|
|
14928
15567
|
// For browser environments, this would need different handling
|
|
14929
15568
|
const fs = await import('fs');
|
|
14930
15569
|
const fileStream = fs.createReadStream(source);
|
|
14931
15570
|
fileStreams.push(fileStream);
|
|
15571
|
+
*/
|
|
14932
15572
|
}
|
|
14933
15573
|
}
|
|
14934
15574
|
catch (error) {
|
|
@@ -15017,12 +15657,15 @@
|
|
|
15017
15657
|
fileStreams.push(file);
|
|
15018
15658
|
}
|
|
15019
15659
|
else {
|
|
15660
|
+
/*
|
|
15661
|
+
TODO: [๐ฑโ๐] Resolve problem with browser environment
|
|
15020
15662
|
// Assume it's a local file path
|
|
15021
15663
|
// Note: This will work in Node.js environment
|
|
15022
15664
|
// For browser environments, this would need different handling
|
|
15023
15665
|
const fs = await import('fs');
|
|
15024
15666
|
const fileStream = fs.createReadStream(source);
|
|
15025
15667
|
fileStreams.push(fileStream);
|
|
15668
|
+
*/
|
|
15026
15669
|
}
|
|
15027
15670
|
}
|
|
15028
15671
|
catch (error) {
|
|
@@ -15158,7 +15801,7 @@
|
|
|
15158
15801
|
}
|
|
15159
15802
|
get title() {
|
|
15160
15803
|
const agentInfo = this.getAgentInfo();
|
|
15161
|
-
return (agentInfo.agentName || 'Agent');
|
|
15804
|
+
return (agentInfo.meta.fullname || agentInfo.agentName || 'Agent');
|
|
15162
15805
|
}
|
|
15163
15806
|
get description() {
|
|
15164
15807
|
const agentInfo = this.getAgentInfo();
|
|
@@ -15171,7 +15814,7 @@
|
|
|
15171
15814
|
}
|
|
15172
15815
|
return {
|
|
15173
15816
|
name: agentInfo.agentName.toUpperCase().replace(/\s+/g, '_'),
|
|
15174
|
-
fullname: agentInfo.agentName,
|
|
15817
|
+
fullname: agentInfo.meta.fullname || agentInfo.agentName,
|
|
15175
15818
|
color: agentInfo.meta.color || '#6366f1',
|
|
15176
15819
|
avatarSrc: agentInfo.meta.image,
|
|
15177
15820
|
};
|
|
@@ -15396,19 +16039,63 @@
|
|
|
15396
16039
|
* Note: This method also implements the learning mechanism
|
|
15397
16040
|
*/
|
|
15398
16041
|
async callChatModelStream(prompt, onProgress) {
|
|
16042
|
+
// [1] Check if the user is asking the same thing as in the samples
|
|
16043
|
+
const modelRequirements = await this.getAgentModelRequirements();
|
|
16044
|
+
if (modelRequirements.samples) {
|
|
16045
|
+
const normalizedPrompt = normalizeMessageText(prompt.content);
|
|
16046
|
+
const sample = modelRequirements.samples.find((s) => normalizeMessageText(s.question) === normalizedPrompt);
|
|
16047
|
+
if (sample) {
|
|
16048
|
+
const now = new Date().toISOString();
|
|
16049
|
+
const result = {
|
|
16050
|
+
content: sample.answer,
|
|
16051
|
+
modelName: this.modelName,
|
|
16052
|
+
timing: {
|
|
16053
|
+
start: now,
|
|
16054
|
+
complete: now,
|
|
16055
|
+
},
|
|
16056
|
+
usage: {
|
|
16057
|
+
price: { value: 0, isUncertain: true },
|
|
16058
|
+
input: {
|
|
16059
|
+
tokensCount: { value: 0, isUncertain: true },
|
|
16060
|
+
charactersCount: { value: 0, isUncertain: true },
|
|
16061
|
+
wordsCount: { value: 0, isUncertain: true },
|
|
16062
|
+
linesCount: { value: 0, isUncertain: true },
|
|
16063
|
+
sentencesCount: { value: 0, isUncertain: true },
|
|
16064
|
+
paragraphsCount: { value: 0, isUncertain: true },
|
|
16065
|
+
pagesCount: { value: 0, isUncertain: true },
|
|
16066
|
+
},
|
|
16067
|
+
output: {
|
|
16068
|
+
tokensCount: { value: 0, isUncertain: true },
|
|
16069
|
+
charactersCount: { value: 0, isUncertain: true },
|
|
16070
|
+
wordsCount: { value: 0, isUncertain: true },
|
|
16071
|
+
linesCount: { value: 0, isUncertain: true },
|
|
16072
|
+
sentencesCount: { value: 0, isUncertain: true },
|
|
16073
|
+
paragraphsCount: { value: 0, isUncertain: true },
|
|
16074
|
+
pagesCount: { value: 0, isUncertain: true },
|
|
16075
|
+
},
|
|
16076
|
+
},
|
|
16077
|
+
rawPromptContent: prompt.content,
|
|
16078
|
+
rawRequest: null,
|
|
16079
|
+
rawResponse: { sample },
|
|
16080
|
+
};
|
|
16081
|
+
onProgress(result);
|
|
16082
|
+
return result;
|
|
16083
|
+
}
|
|
16084
|
+
}
|
|
15399
16085
|
const result = await super.callChatModelStream(prompt, onProgress);
|
|
16086
|
+
if (result.rawResponse && 'sample' in result.rawResponse) {
|
|
16087
|
+
return result;
|
|
16088
|
+
}
|
|
15400
16089
|
// TODO: !!! Extract learning to separate method
|
|
15401
16090
|
// Learning: Append the conversation sample to the agent source
|
|
15402
16091
|
const learningExample = spaceTrim__default["default"]((block) => `
|
|
15403
16092
|
|
|
15404
16093
|
---
|
|
15405
16094
|
|
|
15406
|
-
|
|
15407
|
-
|
|
15408
|
-
User:
|
|
16095
|
+
USER MESSAGE
|
|
15409
16096
|
${block(prompt.content)}
|
|
15410
16097
|
|
|
15411
|
-
|
|
16098
|
+
AGENT MESSAGE
|
|
15412
16099
|
${block(result.content)}
|
|
15413
16100
|
|
|
15414
16101
|
`);
|
|
@@ -15445,11 +16132,12 @@
|
|
|
15445
16132
|
const profile = await profileResponse.json();
|
|
15446
16133
|
// Note: We are creating dummy agent source because we don't have the source from the remote agent
|
|
15447
16134
|
// But we populate the metadata from the profile
|
|
15448
|
-
const agentSource = new rxjs.BehaviorSubject(`
|
|
15449
|
-
|
|
16135
|
+
const agentSource = new rxjs.BehaviorSubject(book `
|
|
16136
|
+
${profile.agentName}
|
|
15450
16137
|
|
|
15451
|
-
${profile.personaDescription}
|
|
16138
|
+
${profile.personaDescription}
|
|
15452
16139
|
`);
|
|
16140
|
+
// <- TODO: [๐ฑโ๐] createBookFromProfile
|
|
15453
16141
|
// <- TODO: [๐ฑโ๐] Support updating and self-updating
|
|
15454
16142
|
const remoteAgent = new RemoteAgent({
|
|
15455
16143
|
...options,
|
|
@@ -15474,10 +16162,12 @@ ${profile.personaDescription}
|
|
|
15474
16162
|
remoteAgent.initialMessage = profile.initialMessage;
|
|
15475
16163
|
remoteAgent.links = profile.links;
|
|
15476
16164
|
remoteAgent.meta = profile.meta;
|
|
16165
|
+
remoteAgent._isVoiceCallingEnabled = profile.isVoiceCallingEnabled === true; // [โจโท] Store voice calling status
|
|
15477
16166
|
return remoteAgent;
|
|
15478
16167
|
}
|
|
15479
16168
|
constructor(options) {
|
|
15480
16169
|
super(options);
|
|
16170
|
+
this._isVoiceCallingEnabled = false; // [โจโท] Track voice calling status
|
|
15481
16171
|
this.agentUrl = options.agentUrl;
|
|
15482
16172
|
}
|
|
15483
16173
|
get agentName() {
|
|
@@ -15493,8 +16183,49 @@ ${profile.personaDescription}
|
|
|
15493
16183
|
return this.callChatModelStream(prompt, () => { });
|
|
15494
16184
|
}
|
|
15495
16185
|
/**
|
|
15496
|
-
* Calls the agent on agents remote server with
|
|
16186
|
+
* Calls the agent on agents remote server with voice
|
|
16187
|
+
* [โจโท] Only available when voice calling is enabled on the server
|
|
16188
|
+
* Returns undefined if voice calling is disabled
|
|
15497
16189
|
*/
|
|
16190
|
+
get callVoiceChatModel() {
|
|
16191
|
+
if (!this._isVoiceCallingEnabled) {
|
|
16192
|
+
return undefined;
|
|
16193
|
+
}
|
|
16194
|
+
return async (audio, prompt) => {
|
|
16195
|
+
// Ensure we're working with a chat prompt
|
|
16196
|
+
if (prompt.modelRequirements.modelVariant !== 'CHAT') {
|
|
16197
|
+
throw new Error('Agents only supports chat prompts');
|
|
16198
|
+
}
|
|
16199
|
+
const chatPrompt = prompt;
|
|
16200
|
+
const formData = new FormData();
|
|
16201
|
+
formData.append('audio', audio, 'voice.webm');
|
|
16202
|
+
formData.append('message', prompt.content);
|
|
16203
|
+
if (chatPrompt.thread) {
|
|
16204
|
+
formData.append('thread', JSON.stringify(chatPrompt.thread));
|
|
16205
|
+
}
|
|
16206
|
+
const response = await fetch(`${this.agentUrl}/api/voice`, {
|
|
16207
|
+
method: 'POST',
|
|
16208
|
+
body: formData,
|
|
16209
|
+
});
|
|
16210
|
+
if (!response.ok) {
|
|
16211
|
+
throw new Error(`Voice chat failed: ${response.statusText}`);
|
|
16212
|
+
}
|
|
16213
|
+
const result = await response.json();
|
|
16214
|
+
// Convert base64 audio back to Blob
|
|
16215
|
+
const binaryString = atob(result.audio);
|
|
16216
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
16217
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
16218
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
16219
|
+
}
|
|
16220
|
+
const audioBlob = new Blob([bytes], { type: 'audio/mp3' });
|
|
16221
|
+
return {
|
|
16222
|
+
text: result.agentMessage || result.text,
|
|
16223
|
+
userMessage: result.userMessage,
|
|
16224
|
+
agentMessage: result.agentMessage || result.text,
|
|
16225
|
+
audio: audioBlob,
|
|
16226
|
+
};
|
|
16227
|
+
};
|
|
16228
|
+
}
|
|
15498
16229
|
async callChatModelStream(prompt, onProgress) {
|
|
15499
16230
|
// Ensure we're working with a chat prompt
|
|
15500
16231
|
if (prompt.modelRequirements.modelVariant !== 'CHAT') {
|
|
@@ -15580,8 +16311,8 @@ ${profile.personaDescription}
|
|
|
15580
16311
|
* TODO: !!! Agent on remote server
|
|
15581
16312
|
*/
|
|
15582
16313
|
|
|
15583
|
-
var css_248z = ".PromptbookAgent-module_promptbookAgent__ImvJD{bottom:20px;font-family:sans-serif;position:fixed;right:20px;z-index:10000}.PromptbookAgent-module_promptbookAgentButton__YhQfE{align-items:center;background-color:#007bff;border-radius:30px;box-shadow:0 4px 12px rgba(0,0,0,.15);color:#fff;cursor:pointer;display:flex;padding:10px 20px;transition:transform .2s,box-shadow .2s}.PromptbookAgent-module_promptbookAgentButton__YhQfE:hover{box-shadow:0 6px 16px rgba(0,0,0,.2);transform:translateY(-2px)}.PromptbookAgent-module_promptbookAgentAvatar__WhrxA{background-color:#eee;border-radius:50%;height:32px;margin-right:10px;overflow:hidden;transform:translate(-10px) scale(1.3);width:32px}.PromptbookAgent-module_promptbookAgentAvatar__WhrxA img{height:100%;object-fit:cover;width:100%}.PromptbookAgent-module_promptbookAgentLabel__vPwVo{font-weight:700}.PromptbookAgent-module_promptbookAgent__ImvJD.PromptbookAgent-module_open__TWzmA .PromptbookAgent-module_promptbookAgentButton__YhQfE{display:none}.PromptbookAgent-module_promptbookAgentWindow__mohTT{animation:PromptbookAgent-module_promptbook-agent-slide-up__PA--W .3s ease-out;background-color:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.2);display:flex;flex-direction:column;height:600px;max-height:80vh;overflow:hidden;width:380px}@keyframes PromptbookAgent-module_promptbook-agent-slide-up__PA--W{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3{align-items:center;background-color:#007bff;color:#fff;display:flex;justify-content:space-between;padding:15px}.PromptbookAgent-module_promptbookAgentTitle__pU86r{font-size:1.1em;font-weight:700}.PromptbookAgent-module_promptbookAgentClose__RB4MO{background:none;border:none;color:#fff;cursor:pointer;font-size:1.2em;opacity:.8;transition:opacity .2s}.PromptbookAgent-module_promptbookAgentClose__RB4MO:hover{opacity:1}.PromptbookAgent-module_promptbookAgentContent__-82xH{display:flex;flex:1;flex-direction:column;overflow-y:auto;position:relative}.PromptbookAgent-module_promptbookAgentError__ejwA9,.PromptbookAgent-module_promptbookAgentLoading__hcXD5{align-items:center;color:#666;display:flex;flex:1;justify-content:center;padding:20px;text-align:center}.PromptbookAgent-module_promptbookAgentError__ejwA9{color:#d32f2f}@media (max-width:480px){.PromptbookAgent-module_promptbookAgent__ImvJD{bottom:0;left:0;right:0}.PromptbookAgent-module_promptbookAgentWindow__mohTT{border-radius:0;height:100vh;max-height:100vh;width:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb21wdGJvb2tBZ2VudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUVJLFdBQVksQ0FHWixzQkFBdUIsQ0FKdkIsY0FBZSxDQUVmLFVBQVcsQ0FDWCxhQUVKLENBRUEscURBRUksa0JBQW1CLENBQ25CLHdCQUF5QixDQUV6QixrQkFBbUIsQ0FHbkIscUNBQTBDLENBSjFDLFVBQVksQ0FHWixjQUFlLENBTmYsWUFBYSxDQUtiLGlCQUFrQixDQUdsQix1Q0FDSixDQUVBLDJEQUVJLG9DQUF5QyxDQUR6QywwQkFFSixDQUVBLHFEQU1JLHFCQUFzQixDQUh0QixpQkFBa0IsQ0FEbEIsV0FBWSxDQUdaLGlCQUFrQixDQURsQixlQUFnQixDQUloQixxQ0FBeUMsQ0FQekMsVUFRSixDQUVBLHlEQUVJLFdBQVksQ0FDWixnQkFBaUIsQ0FGakIsVUFHSixDQUVBLG9EQUNJLGVBQ0osQ0FRQSx1SUFDSSxZQUNKLENBRUEscURBVUksOEVBQWtELENBTmxELHFCQUF1QixDQUN2QixrQkFBbUIsQ0FDbkIsb0NBQXlDLENBQ3pDLFlBQWEsQ0FDYixxQkFBc0IsQ0FOdEIsWUFBYSxDQUNiLGVBQWdCLENBTWhCLGVBQWdCLENBUmhCLFdBVUosQ0FFQSxtRUFDSSxHQUNJLFNBQVUsQ0FDViwwQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSxxREFNSSxrQkFBbUIsQ0FMbkIsd0JBQXlCLENBQ3pCLFVBQVksQ0FFWixZQUFhLENBQ2IsNkJBQThCLENBRjlCLFlBSUosQ0FFQSxvREFFSSxlQUFnQixDQURoQixlQUVKLENBRUEsb0RBQ0ksZUFBZ0IsQ0FDaEIsV0FBWSxDQUNaLFVBQVksQ0FFWixjQUFlLENBRGYsZUFBZ0IsQ0FFaEIsVUFBWSxDQUNaLHNCQUNKLENBRUEsMERBQ0ksU0FDSixDQUVBLHNEQUlJLFlBQWEsQ0FIYixNQUFPLENBSVAscUJBQXNCLENBSHRCLGVBQWdCLENBQ2hCLGlCQUdKLENBRUEsMEdBS0ksa0JBQW1CLENBR25CLFVBQVcsQ0FMWCxZQUFhLENBRGIsTUFBTyxDQUVQLHNCQUF1QixDQUV2QixZQUFhLENBQ2IsaUJBRUosQ0FFQSxvREFDSSxhQUNKLENBRUEseUJBQ0ksK0NBQ0ksUUFBUyxDQUVULE1BQU8sQ0FEUCxPQUVKLENBRUEscURBSUksZUFBZ0IsQ0FGaEIsWUFBYSxDQUNiLGdCQUFpQixDQUZqQixVQUlKLENBQ0oiLCJmaWxlIjoiUHJvbXB0Ym9va0FnZW50Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucHJvbXB0Ym9va0FnZW50IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAyMHB4O1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycywgYm94LXNoYWRvdyAwLjJzO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50QnV0dG9uOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5wcm9tcHRib29rQWdlbnRBdmF0YXIge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMHB4LCAwKSBzY2FsZSgxLjMpO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50QXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50TGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBTdGF0ZSBjbGFzc2VzIChlbXB0eSB0byBhbGxvdyBtb2R1bGUgbWFwcGluZykgKi9cbi5vcGVuIHtcbn1cbi5jbG9zZWQge1xufVxuXG4ucHJvbXB0Ym9va0FnZW50Lm9wZW4gLnByb21wdGJvb2tBZ2VudEJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnByb21wdGJvb2tBZ2VudFdpbmRvdyB7XG4gICAgd2lkdGg6IDM4MHB4O1xuICAgIGhlaWdodDogNjAwcHg7XG4gICAgbWF4LWhlaWdodDogODB2aDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFuaW1hdGlvbjogcHJvbXB0Ym9vay1hZ2VudC1zbGlkZS11cCAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHByb21wdGJvb2stYWdlbnQtc2xpZGUtdXAge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLnByb21wdGJvb2tBZ2VudEhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50VGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5wcm9tcHRib29rQWdlbnRDbG9zZSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG59XG5cbi5wcm9tcHRib29rQWdlbnRDbG9zZTpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLnByb21wdGJvb2tBZ2VudENvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50TG9hZGluZyxcbi5wcm9tcHRib29rQWdlbnRFcnJvciB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICM2NjY7XG59XG5cbi5wcm9tcHRib29rQWdlbnRFcnJvciB7XG4gICAgY29sb3I6ICNkMzJmMmY7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5wcm9tcHRib29rQWdlbnQge1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgIC5wcm9tcHRib29rQWdlbnRXaW5kb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxufVxuIl19 */";
|
|
15584
|
-
var styles = {"promptbookAgent":"PromptbookAgent-module_promptbookAgent__ImvJD","promptbookAgentButton":"PromptbookAgent-module_promptbookAgentButton__YhQfE","promptbookAgentAvatar":"PromptbookAgent-module_promptbookAgentAvatar__WhrxA","promptbookAgentLabel":"PromptbookAgent-module_promptbookAgentLabel__vPwVo","open":"PromptbookAgent-module_open__TWzmA","closed":"PromptbookAgent-module_closed__qCTmn","promptbookAgentWindow":"PromptbookAgent-module_promptbookAgentWindow__mohTT","promptbook-agent-slide-up":"PromptbookAgent-module_promptbook-agent-slide-up__PA--W","promptbookAgentHeader":"PromptbookAgent-module_promptbookAgentHeader__C7Ui3","promptbookAgentTitle":"PromptbookAgent-module_promptbookAgentTitle__pU86r","promptbookAgentClose":"PromptbookAgent-module_promptbookAgentClose__RB4MO","promptbookAgentContent":"PromptbookAgent-module_promptbookAgentContent__-82xH","promptbookAgentLoading":"PromptbookAgent-module_promptbookAgentLoading__hcXD5","promptbookAgentError":"PromptbookAgent-module_promptbookAgentError__ejwA9"};
|
|
16314
|
+
var css_248z = ".PromptbookAgent-module_promptbookAgent__ImvJD{bottom:20px;font-family:sans-serif;position:fixed;right:20px;z-index:10000}.PromptbookAgent-module_promptbookAgentButton__YhQfE{align-items:center;background-color:#007bff;border-radius:30px;box-shadow:0 4px 12px rgba(0,0,0,.15);color:#fff;cursor:pointer;display:flex;padding:10px 20px;position:relative;transition:transform .2s,box-shadow .2s}.PromptbookAgent-module_promptbookAgentButton__YhQfE:hover{box-shadow:0 6px 16px rgba(0,0,0,.2);transform:translateY(-2px)}.PromptbookAgent-module_promptbookAgentAvatar__WhrxA{background-color:#eee;border-radius:50%;height:32px;margin-right:10px;overflow:hidden;transform:translate(-10px) scale(1.3);width:32px}.PromptbookAgent-module_promptbookAgentAvatar__WhrxA img{height:100%;object-fit:cover;width:100%}.PromptbookAgent-module_promptbookAgentLabel__vPwVo{font-weight:700}.PromptbookAgent-module_promptbookAgentStatus__kZ-6L{border:2px solid #fff;border-radius:50%;bottom:12px;height:12px;left:40px;position:absolute;width:12px;z-index:10}.PromptbookAgent-module_promptbookAgentStatusConnected__M8yU5{background-color:#57b660}.PromptbookAgent-module_promptbookAgentStatusPending__czc3Y{background-color:#9e9e9e}.PromptbookAgent-module_promptbookAgentStatusError__Dvytw{background-color:#f44336}.PromptbookAgent-module_promptbookAgent__ImvJD.PromptbookAgent-module_open__TWzmA .PromptbookAgent-module_promptbookAgentButton__YhQfE{display:none}.PromptbookAgent-module_promptbookAgentWindow__mohTT{animation:PromptbookAgent-module_promptbook-agent-slide-up__PA--W .3s ease-out;background-color:#fff;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.2);display:flex;flex-direction:column;height:600px;max-height:80vh;overflow:hidden;width:380px}@keyframes PromptbookAgent-module_promptbook-agent-slide-up__PA--W{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3{align-items:center;background-color:#007bff;color:#fff;display:flex;justify-content:space-between;padding:15px}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3 button{align-items:center!important;background:transparent!important;border:none!important;border-radius:50%!important;box-shadow:none!important;color:inherit!important;cursor:pointer;display:flex!important;height:32px!important;justify-content:center!important;margin:0 2px!important;min-width:32px!important;opacity:.8;padding:5px!important;transition:opacity .2s}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3 button:hover{background-color:hsla(0,0%,100%,.2)!important;opacity:1}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3 button span{display:none!important}.PromptbookAgent-module_promptbookAgentHeader__C7Ui3 button svg{height:20px;width:20px}.PromptbookAgent-module_promptbookAgentTitle__pU86r{font-size:1.1em;font-weight:700}.PromptbookAgent-module_promptbookAgentClose__RB4MO{font-size:1.2em}.PromptbookAgent-module_promptbookAgentContent__-82xH{display:flex;flex:1;flex-direction:column;overflow-y:auto;position:relative}.PromptbookAgent-module_promptbookAgentError__ejwA9,.PromptbookAgent-module_promptbookAgentLoading__hcXD5{align-items:center;color:#666;display:flex;flex:1;justify-content:center;padding:20px;text-align:center}.PromptbookAgent-module_promptbookAgentError__ejwA9{color:#d32f2f}@media (max-width:480px){.PromptbookAgent-module_promptbookAgent__ImvJD.PromptbookAgent-module_open__TWzmA{bottom:0;left:0;right:0}.PromptbookAgent-module_promptbookAgentWindow__mohTT{border-radius:0;height:100vh;max-height:100vh;width:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb21wdGJvb2tBZ2VudC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUVJLFdBQVksQ0FHWixzQkFBdUIsQ0FKdkIsY0FBZSxDQUVmLFVBQVcsQ0FDWCxhQUVKLENBRUEscURBRUksa0JBQW1CLENBQ25CLHdCQUF5QixDQUV6QixrQkFBbUIsQ0FHbkIscUNBQTBDLENBSjFDLFVBQVksQ0FHWixjQUFlLENBTmYsWUFBYSxDQUtiLGlCQUFrQixDQUlsQixpQkFBa0IsQ0FEbEIsdUNBRUosQ0FFQSwyREFFSSxvQ0FBeUMsQ0FEekMsMEJBRUosQ0FFQSxxREFNSSxxQkFBc0IsQ0FIdEIsaUJBQWtCLENBRGxCLFdBQVksQ0FHWixpQkFBa0IsQ0FEbEIsZUFBZ0IsQ0FJaEIscUNBQXlDLENBUHpDLFVBUUosQ0FFQSx5REFFSSxXQUFZLENBQ1osZ0JBQWlCLENBRmpCLFVBR0osQ0FFQSxvREFDSSxlQUNKLENBRUEscURBS0kscUJBQXVCLENBRHZCLGlCQUFrQixDQUdsQixXQUFZLENBSlosV0FBWSxDQUdaLFNBQVUsQ0FMVixpQkFBa0IsQ0FDbEIsVUFBVyxDQU1YLFVBQ0osQ0FFQSw4REFDSSx3QkFDSixDQUVBLDREQUNJLHdCQUNKLENBRUEsMERBQ0ksd0JBQ0osQ0FRQSx1SUFDSSxZQUNKLENBRUEscURBVUksOEVBQWtELENBTmxELHFCQUF1QixDQUN2QixrQkFBbUIsQ0FDbkIsb0NBQXlDLENBQ3pDLFlBQWEsQ0FDYixxQkFBc0IsQ0FOdEIsWUFBYSxDQUNiLGVBQWdCLENBTWhCLGVBQWdCLENBUmhCLFdBVUosQ0FFQSxtRUFDSSxHQUNJLFNBQVUsQ0FDViwwQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSxxREFNSSxrQkFBbUIsQ0FMbkIsd0JBQXlCLENBQ3pCLFVBQVksQ0FFWixZQUFhLENBQ2IsNkJBQThCLENBRjlCLFlBSUosQ0FNQSw0REFXSSw0QkFBOEIsQ0FWOUIsZ0NBQWtDLENBQ2xDLHFCQUF1QixDQWF2QiwyQkFBNkIsQ0FaN0IseUJBQTJCLENBQzNCLHVCQUF5QixDQUN6QixjQUFlLENBS2Ysc0JBQXdCLENBSXhCLHFCQUF1QixDQUZ2QixnQ0FBa0MsQ0FIbEMsc0JBQXdCLENBSXhCLHdCQUEwQixDQVAxQixVQUFZLENBRVoscUJBQXVCLENBRHZCLHNCQVNKLENBRUEsa0VBRUksNkNBQXFELENBRHJELFNBRUosQ0FHQSxpRUFDSSxzQkFDSixDQUdBLGdFQUVJLFdBQVksQ0FEWixVQUVKLENBRUEsb0RBRUksZUFBZ0IsQ0FEaEIsZUFFSixDQUVBLG9EQUVJLGVBQ0osQ0FFQSxzREFJSSxZQUFhLENBSGIsTUFBTyxDQUlQLHFCQUFzQixDQUh0QixlQUFnQixDQUNoQixpQkFHSixDQUVBLDBHQUtJLGtCQUFtQixDQUduQixVQUFXLENBTFgsWUFBYSxDQURiLE1BQU8sQ0FFUCxzQkFBdUIsQ0FFdkIsWUFBYSxDQUNiLGlCQUVKLENBRUEsb0RBQ0ksYUFDSixDQUVBLHlCQUNJLGtGQUNJLFFBQVMsQ0FFVCxNQUFPLENBRFAsT0FFSixDQUVBLHFEQUlJLGVBQWdCLENBRmhCLFlBQWEsQ0FDYixnQkFBaUIsQ0FGakIsVUFJSixDQUNKIiwiZmlsZSI6IlByb21wdGJvb2tBZ2VudC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnByb21wdGJvb2tBZ2VudCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICB6LWluZGV4OiAxMDAwMDtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbn1cblxuLnByb21wdGJvb2tBZ2VudEJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wcm9tcHRib29rQWdlbnRCdXR0b246aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLnByb21wdGJvb2tBZ2VudEF2YXRhciB7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwcHgsIDApIHNjYWxlKDEuMyk7XG59XG5cbi5wcm9tcHRib29rQWdlbnRBdmF0YXIgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi5wcm9tcHRib29rQWdlbnRMYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wcm9tcHRib29rQWdlbnRTdGF0dXMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHdoaXRlO1xuICAgIGxlZnQ6IDQwcHg7XG4gICAgYm90dG9tOiAxMnB4O1xuICAgIHotaW5kZXg6IDEwO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50U3RhdHVzQ29ubmVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTdiNjYwO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50U3RhdHVzUGVuZGluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbn1cblxuLnByb21wdGJvb2tBZ2VudFN0YXR1c0Vycm9yIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xufVxuXG4vKiBTdGF0ZSBjbGFzc2VzIChlbXB0eSB0byBhbGxvdyBtb2R1bGUgbWFwcGluZykgKi9cbi5vcGVuIHtcbn1cbi5jbG9zZWQge1xufVxuXG4ucHJvbXB0Ym9va0FnZW50Lm9wZW4gLnByb21wdGJvb2tBZ2VudEJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnByb21wdGJvb2tBZ2VudFdpbmRvdyB7XG4gICAgd2lkdGg6IDM4MHB4O1xuICAgIGhlaWdodDogNjAwcHg7XG4gICAgbWF4LWhlaWdodDogODB2aDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFuaW1hdGlvbjogcHJvbXB0Ym9vay1hZ2VudC1zbGlkZS11cCAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHByb21wdGJvb2stYWdlbnQtc2xpZGUtdXAge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLnByb21wdGJvb2tBZ2VudEhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vKiBcbiAgIE92ZXJyaWRlIGNoYXQgYWN0aW9uIGJ1dHRvbnMgdG8gbG9vayBsaWtlIHRoZSBjbG9zZSBidXR0b24gXG4gICB3aGVuIHJlbmRlcmVkIGluc2lkZSB0aGUgaGVhZGVyIHZpYSBwb3J0YWxcbiovXG4ucHJvbXB0Ym9va0FnZW50SGVhZGVyIGJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3BhY2l0eTogMC44O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbiAgICBwYWRkaW5nOiA1cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgMnB4ICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMzJweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMzJweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xufVxuXG4ucHJvbXB0Ym9va0FnZW50SGVhZGVyIGJ1dHRvbjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgIWltcG9ydGFudDtcbn1cblxuLyogSGlkZSB0ZXh0IGxhYmVscyBpbnNpZGUgYnV0dG9ucyBpbiBoZWFkZXIgKE5ldyBDaGF0LCBTYXZlKSAqL1xuLnByb21wdGJvb2tBZ2VudEhlYWRlciBidXR0b24gc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBFbnN1cmUgU1ZHIGljb25zIGFyZSB2aXNpYmxlIGFuZCBzaXplZCBjb3JyZWN0bHkgKi9cbi5wcm9tcHRib29rQWdlbnRIZWFkZXIgYnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xufVxuXG4ucHJvbXB0Ym9va0FnZW50VGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG59XG5cbi5wcm9tcHRib29rQWdlbnRDbG9zZSB7XG4gICAgLyogVXNlIHNhbWUgc3R5bGVzIGFzIGFib3ZlIG92ZXJyaWRlLCBidXQga2VlcCBzcGVjaWZpYyBpZiBuZWVkZWQgKi9cbiAgICBmb250LXNpemU6IDEuMmVtO1xufVxuXG4ucHJvbXB0Ym9va0FnZW50Q29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5wcm9tcHRib29rQWdlbnRMb2FkaW5nLFxuLnByb21wdGJvb2tBZ2VudEVycm9yIHtcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogIzY2Njtcbn1cblxuLnByb21wdGJvb2tBZ2VudEVycm9yIHtcbiAgICBjb2xvcjogI2QzMmYyZjtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLnByb21wdGJvb2tBZ2VudC5vcGVuIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAucHJvbXB0Ym9va0FnZW50V2luZG93IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbn1cbiJdfQ== */";
|
|
16315
|
+
var styles = {"promptbookAgent":"PromptbookAgent-module_promptbookAgent__ImvJD","promptbookAgentButton":"PromptbookAgent-module_promptbookAgentButton__YhQfE","promptbookAgentAvatar":"PromptbookAgent-module_promptbookAgentAvatar__WhrxA","promptbookAgentLabel":"PromptbookAgent-module_promptbookAgentLabel__vPwVo","promptbookAgentStatus":"PromptbookAgent-module_promptbookAgentStatus__kZ-6L","promptbookAgentStatusConnected":"PromptbookAgent-module_promptbookAgentStatusConnected__M8yU5","promptbookAgentStatusPending":"PromptbookAgent-module_promptbookAgentStatusPending__czc3Y","promptbookAgentStatusError":"PromptbookAgent-module_promptbookAgentStatusError__Dvytw","open":"PromptbookAgent-module_open__TWzmA","closed":"PromptbookAgent-module_closed__qCTmn","promptbookAgentWindow":"PromptbookAgent-module_promptbookAgentWindow__mohTT","promptbook-agent-slide-up":"PromptbookAgent-module_promptbook-agent-slide-up__PA--W","promptbookAgentHeader":"PromptbookAgent-module_promptbookAgentHeader__C7Ui3","promptbookAgentTitle":"PromptbookAgent-module_promptbookAgentTitle__pU86r","promptbookAgentClose":"PromptbookAgent-module_promptbookAgentClose__RB4MO","promptbookAgentContent":"PromptbookAgent-module_promptbookAgentContent__-82xH","promptbookAgentLoading":"PromptbookAgent-module_promptbookAgentLoading__hcXD5","promptbookAgentError":"PromptbookAgent-module_promptbookAgentError__ejwA9"};
|
|
15585
16316
|
styleInject(css_248z);
|
|
15586
16317
|
|
|
15587
16318
|
/**
|
|
@@ -15590,9 +16321,10 @@ ${profile.personaDescription}
|
|
|
15590
16321
|
* @public exported from `@promptbook/components`
|
|
15591
16322
|
*/
|
|
15592
16323
|
function PromptbookAgent(props) {
|
|
15593
|
-
var _a;
|
|
15594
|
-
const { agentUrl, onOpenChange } = props;
|
|
16324
|
+
var _a, _b;
|
|
16325
|
+
const { agentUrl, meta, onOpenChange } = props;
|
|
15595
16326
|
const [isOpen, setIsOpen] = react.useState(false);
|
|
16327
|
+
const [headerElement, setHeaderElement] = react.useState(null);
|
|
15596
16328
|
react.useEffect(() => {
|
|
15597
16329
|
if (onOpenChange) {
|
|
15598
16330
|
onOpenChange(isOpen);
|
|
@@ -15600,8 +16332,20 @@ ${profile.personaDescription}
|
|
|
15600
16332
|
}, [isOpen, onOpenChange]);
|
|
15601
16333
|
const [agent, setAgent] = react.useState(null);
|
|
15602
16334
|
const [error, setError] = react.useState(null);
|
|
16335
|
+
react.useEffect(() => {
|
|
16336
|
+
if (agent && meta) {
|
|
16337
|
+
if (agent.meta.image && meta.image && agent.meta.image !== meta.image) {
|
|
16338
|
+
console.warn('Conflict in agent meta image:', { server: agent.meta.image, props: meta.image });
|
|
16339
|
+
}
|
|
16340
|
+
if (agent.meta.color && meta.color && agent.meta.color !== meta.color) {
|
|
16341
|
+
console.warn('Conflict in agent meta color:', { server: agent.meta.color, props: meta.color });
|
|
16342
|
+
}
|
|
16343
|
+
}
|
|
16344
|
+
}, [agent, meta]);
|
|
15603
16345
|
react.useEffect(() => {
|
|
15604
16346
|
let isMounted = true;
|
|
16347
|
+
setAgent(null);
|
|
16348
|
+
setError(null);
|
|
15605
16349
|
const connectToAgent = async () => {
|
|
15606
16350
|
try {
|
|
15607
16351
|
// TODO: [๐ง ] Maybe we should not connect immediately but only when the user clicks the button or hovers?
|
|
@@ -15625,8 +16369,22 @@ ${profile.personaDescription}
|
|
|
15625
16369
|
}, [agentUrl]);
|
|
15626
16370
|
// TODO: [๐ง ] Handle loading state better (show spinner or skeleton in the chat window)
|
|
15627
16371
|
// TODO: [๐ง ] Handle error state (show error message in the chat window)
|
|
15628
|
-
|
|
15629
|
-
|
|
16372
|
+
const image = ((_a = agent === null || agent === void 0 ? void 0 : agent.meta) === null || _a === void 0 ? void 0 : _a.image) ||
|
|
16373
|
+
(meta === null || meta === void 0 ? void 0 : meta.image) ||
|
|
16374
|
+
'https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mp&f=y';
|
|
16375
|
+
const color = ((_b = agent === null || agent === void 0 ? void 0 : agent.meta) === null || _b === void 0 ? void 0 : _b.color) || (meta === null || meta === void 0 ? void 0 : meta.color);
|
|
16376
|
+
let connectionStatus = 'pending';
|
|
16377
|
+
if (agent) {
|
|
16378
|
+
connectionStatus = 'connected';
|
|
16379
|
+
}
|
|
16380
|
+
else if (error) {
|
|
16381
|
+
connectionStatus = 'error';
|
|
16382
|
+
}
|
|
16383
|
+
return (jsxRuntime.jsxs("div", { className: `${styles.promptbookAgent} ${isOpen ? styles.open : styles.closed}`, children: [jsxRuntime.jsxs("div", { className: styles.promptbookAgentButton, onClick: () => setIsOpen(!isOpen), style: { backgroundColor: color }, children: [jsxRuntime.jsx("div", { className: styles.promptbookAgentAvatar, children: jsxRuntime.jsx("img", { src: image, alt: "Agent" }) }), jsxRuntime.jsx("div", { className: `${styles.promptbookAgentStatus} ${connectionStatus === 'connected'
|
|
16384
|
+
? styles.promptbookAgentStatusConnected
|
|
16385
|
+
: connectionStatus === 'error'
|
|
16386
|
+
? styles.promptbookAgentStatusError
|
|
16387
|
+
: styles.promptbookAgentStatusPending}` }), jsxRuntime.jsx("div", { className: styles.promptbookAgentLabel, children: "CHAT" })] }), isOpen && (jsxRuntime.jsxs("div", { className: styles.promptbookAgentWindow, children: [jsxRuntime.jsx("div", { className: styles.promptbookAgentHeader, style: { backgroundColor: color }, ref: setHeaderElement, children: jsxRuntime.jsx("div", { className: styles.promptbookAgentTitle, children: (agent === null || agent === void 0 ? void 0 : agent.meta.fullname) || (meta === null || meta === void 0 ? void 0 : meta.fullname) || (agent === null || agent === void 0 ? void 0 : agent.agentName) || 'Chat with Agent' }) }), jsxRuntime.jsx("div", { className: styles.promptbookAgentContent, children: agent ? (jsxRuntime.jsx(AgentChat, { agent: agent, actionsContainer: headerElement, extraActions: jsxRuntime.jsx("button", { className: styles.promptbookAgentClose, onClick: () => setIsOpen(false), title: "Close", children: jsxRuntime.jsx(CloseIcon, {}) }) })) : error ? (jsxRuntime.jsxs("div", { className: styles.promptbookAgentError, children: ["Failed to connect to agent: ", error.message] })) : (jsxRuntime.jsx("div", { className: styles.promptbookAgentLoading, children: "Connecting to agent..." })) })] }))] }));
|
|
15630
16388
|
}
|
|
15631
16389
|
|
|
15632
16390
|
/**
|
|
@@ -15923,6 +16681,7 @@ ${profile.personaDescription}
|
|
|
15923
16681
|
exports.LlmChat = LlmChat;
|
|
15924
16682
|
exports.MOCKED_CHAT_DELAY_CONFIGS = MOCKED_CHAT_DELAY_CONFIGS;
|
|
15925
16683
|
exports.MarkdownContent = MarkdownContent;
|
|
16684
|
+
exports.MicIcon = MicIcon;
|
|
15926
16685
|
exports.MockedChat = MockedChat;
|
|
15927
16686
|
exports.NORMAL_FLOW = NORMAL_FLOW;
|
|
15928
16687
|
exports.PROMPTBOOK_ENGINE_VERSION = PROMPTBOOK_ENGINE_VERSION;
|