bytefun-ai-mcp 1.9.122 → 1.9.124
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/build/index.js +3 -53
- package/build/prompt-optimizer.d.ts +0 -41
- package/build/prompt-optimizer.d.ts.map +1 -1
- package/build/prompt-optimizer.js +240 -496
- package/package.json +2 -1
package/build/index.js
CHANGED
|
@@ -36,43 +36,15 @@ function getRoleTypeFromActType(actType) {
|
|
|
36
36
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
37
37
|
return {
|
|
38
38
|
tools: [
|
|
39
|
-
{
|
|
40
|
-
name: 'optimize_pageList_prompt',
|
|
41
|
-
description: 'Optimize prompt for listing required pages by analyzing user requirements and generating comprehensive page lists',
|
|
42
|
-
inputSchema: {
|
|
43
|
-
type: 'object',
|
|
44
|
-
properties: {
|
|
45
|
-
user_input: {
|
|
46
|
-
type: 'string',
|
|
47
|
-
description: 'User input prompt that needs to be optimized for page list analysis'
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
required: ['user_input']
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: 'optimize_fix_pageList_prompt',
|
|
55
|
-
description: 'Fix and improve existing page list by reading from doc file and ensuring completeness',
|
|
56
|
-
inputSchema: {
|
|
57
|
-
type: 'object',
|
|
58
|
-
properties: {
|
|
59
|
-
user_input: {
|
|
60
|
-
type: 'string',
|
|
61
|
-
description: 'User input prompt that describes the requirements'
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
required: ['user_input']
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
39
|
{
|
|
68
40
|
name: 'optimize_product_design_prompt',
|
|
69
|
-
description: 'Optimize prompt for product
|
|
41
|
+
description: 'Optimize prompt for product and business logic design',
|
|
70
42
|
inputSchema: {
|
|
71
43
|
type: 'object',
|
|
72
44
|
properties: {
|
|
73
45
|
user_input: {
|
|
74
46
|
type: 'string',
|
|
75
|
-
description: 'User input prompt that needs to be optimized for product design
|
|
47
|
+
description: 'User input prompt that needs to be optimized for product and business logic design'
|
|
76
48
|
}
|
|
77
49
|
},
|
|
78
50
|
required: ['user_input']
|
|
@@ -144,8 +116,6 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
144
116
|
type: 'string',
|
|
145
117
|
description: 'Specific MCP tool name to get report nodes for (optional, returns all if not specified)',
|
|
146
118
|
enum: [
|
|
147
|
-
'optimize_pageList_prompt',
|
|
148
|
-
'optimize_fix_pageList_prompt',
|
|
149
119
|
'optimize_product_design_prompt',
|
|
150
120
|
'optimize_ui_design_prompt',
|
|
151
121
|
'optimize_code_design_prompt',
|
|
@@ -238,26 +208,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
238
208
|
}
|
|
239
209
|
try {
|
|
240
210
|
switch (name) {
|
|
241
|
-
case 'optimize_pageList_prompt':
|
|
242
|
-
const optimizedPageListPrompt = await promptOptimizer.optimizePageListPrompt(args.user_input);
|
|
243
|
-
return {
|
|
244
|
-
content: [
|
|
245
|
-
{
|
|
246
|
-
type: 'text',
|
|
247
|
-
text: optimizedPageListPrompt
|
|
248
|
-
}
|
|
249
|
-
]
|
|
250
|
-
};
|
|
251
|
-
case 'optimize_fix_pageList_prompt':
|
|
252
|
-
const optimizedFixPageListPrompt = await promptOptimizer.optimizeFixPageListPrompt(args.user_input);
|
|
253
|
-
return {
|
|
254
|
-
content: [
|
|
255
|
-
{
|
|
256
|
-
type: 'text',
|
|
257
|
-
text: optimizedFixPageListPrompt
|
|
258
|
-
}
|
|
259
|
-
]
|
|
260
|
-
};
|
|
261
211
|
case 'optimize_product_design_prompt':
|
|
262
212
|
const optimizedProductDesignPrompt = await promptOptimizer.optimizeProductDesignPrompt(args.user_input);
|
|
263
213
|
return {
|
|
@@ -384,4 +334,4 @@ async function main() {
|
|
|
384
334
|
console.error('ByteFun AI Prompt MCP server running on stdio');
|
|
385
335
|
}
|
|
386
336
|
main().catch(console.error);
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMseURBQXlEO0FBQ3pELFNBQVMsc0JBQXNCLENBQUMsT0FBZTtJQUM3QyxnQkFBZ0I7SUFDaEIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7UUFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIs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QUUsQ0FBQztRQUNmLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLFVBQVUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUN6RTthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IFNlcnZlciB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL2luZGV4LmpzJztcbmltcG9ydCB7IFN0ZGlvU2VydmVyVHJhbnNwb3J0IH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanMnO1xuaW1wb3J0IHtcbiAgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLFxuICBMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLFxuICBUb29sLFxufSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzJztcbmltcG9ydCB7IFByb21wdE9wdGltaXplciB9IGZyb20gJy4vcHJvbXB0LW9wdGltaXplci5qcyc7XG5cbmNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoXG4gIHtcbiAgICBuYW1lOiAnYnl0ZWZ1bi1haS1wcm9tcHQnLFxuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gIH1cbik7XG5cbmNvbnN0IHByb21wdE9wdGltaXplciA9IG5ldyBQcm9tcHRPcHRpbWl6ZXIoKTtcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSByb2xlVHlwZSBiYXNlZCBvbiBhY3RUeXBlXG5mdW5jdGlvbiBnZXRSb2xlVHlwZUZyb21BY3RUeXBlKGFjdFR5cGU6IHN0cmluZyk6ICdwcm9kdWN0JyB8ICdkZXNpZ24nIHwgJ2RldmVsb3BtZW50JyB7XG4gIC8vIOS6p+WTgeebuOWFs+eahCBhY3RUeXBlXG4gIGlmIChhY3RUeXBlLmluY2x1ZGVzKCdhbmFseXNpc19zdGFydCcpIHx8IFxuICAgICAgYWN0VHlwZS5pbmNsdWRlcygncGFnZV9saXN0X2NvbXBsZXRlZCcpIHx8IFxuICAgICAgYWN0VHlwZS5pbmNsdWRlcygncHJvZHVjdF9kZXNpZ25fY29tcGxldGVkJykpIHtcbiAgICByZXR1cm4gJ3Byb2R1Y3QnO1xuICB9XG4gIFxuICAvLyBVSeiuvuiuoeebuOWFs+eahCBhY3RUeXBlXG4gIGlmIChhY3RUeXBlLmluY2x1ZGVzKCd1aV9kZXNpZ24nKSB8fCBcbiAgICAgIGFjdFR5cGUuaW5jbHVkZXMoJ3VpX3NwZWNzJykgfHwgXG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCdoYW5kX2RyYXduJykgfHxcbiAgICAgIGFjdFR5cGUuaW5jbHVkZXMoJ29uZV9wYWdlX2Rlc2lnbicpIHx8XG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCd1aV9kb2MnKSkge1xuICAgIHJldHVybiAnZGVzaWduJztcbiAgfVxuICBcbiAgLy8g5Luj56CB5byA5Y+R55u45YWz55qEIGFjdFR5cGVcbiAgaWYgKGFjdFR5cGUuaW5jbHVkZXMoJ2NvZGVfZGVzaWduJykgfHwgXG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCdjb2RlX2RldmVsb3BtZW50JykpIHtcbiAgICByZXR1cm4gJ2RldmVsb3BtZW50JztcbiAgfVxuICBcbiAgLy8g6buY6K6k6L+U5ZueIHByb2R1Y3RcbiAgcmV0dXJuICdwcm9kdWN0Jztcbn1cblxuLy8gTGlzdCBhdmFpbGFibGUgdG9vbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBhc3luYyAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9vbHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3BhZ2VMaXN0X3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBsaXN0aW5nIHJlcXVpcmVkIHBhZ2VzIGJ5IGFuYWx5emluZyB1c2VyIHJlcXVpcmVtZW50cyBhbmQgZ2VuZXJhdGluZyBjb21wcmVoZW5zaXZlIHBhZ2UgbGlzdHMnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIHBhZ2UgbGlzdCBhbmFseXNpcydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfZml4X3BhZ2VMaXN0X3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRml4IGFuZCBpbXByb3ZlIGV4aXN0aW5nIHBhZ2UgbGlzdCBieSByZWFkaW5nIGZyb20gZG9jIGZpbGUgYW5kIGVuc3VyaW5nIGNvbXBsZXRlbmVzcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IGRlc2NyaWJlcyB0aGUgcmVxdWlyZW1lbnRzJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9wcm9kdWN0X2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgcHJvZHVjdCBkZXNpZ24gZG9jdW1lbnQgZW5oYW5jZW1lbnQgYmFzZWQgb24gZXhpc3RpbmcgZG9jIGZpbGUnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIHByb2R1Y3QgZGVzaWduIGRvY3VtZW50YXRpb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVUkgZGVzaWduIGJ5IHJlYWRpbmcgcGFnZSBsaXN0IGFuZCByZXF1aXJlbWVudHMgZnJvbSBkb2MgZmlsZScsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgVUkgZGVzaWduJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9jb2RlX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgY29kZSBsb2dpYyBkZXNpZ24gdGhpbmtpbmcgYmVmb3JlIGRldmVsb3BtZW50LCBnZW5lcmF0aW5nIGRldGFpbGVkIGRlc2lnbiBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBjb2RlIGxvZ2ljIGRlc2lnbiB0aGlua2luZydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfY29kZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVHlwZVNjcmlwdCBjb2RlIGRldmVsb3BtZW50IGJ5IGFkZGluZyBjb2RlIGRldmVsb3BtZW50IHJ1bGVzIGFuZCBtYXJraW5nIHVzZXIgaW5wdXQnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGNvZGUgZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2hhbmRfZHJhd25fdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQW5hbHl6ZSBoYW5kLWRyYXduIFVJIGRlc2lnbiBza2V0Y2hlcyBhbmQgZXh0cmFjdCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBmb3IgVUkgZGVzaWduJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgd2l0aCBoYW5kLWRyYXduIFVJIGRlc2lnbiBza2V0Y2ggdGhhdCBuZWVkcyB0byBiZSBhbmFseXplZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZ2V0X3JlcG9ydF9ub2RlcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YW5kYXJkaXplZCByZXBvcnRpbmcgbm9kZSBkZWZpbml0aW9ucyBmb3IgTUNQIHRvb2xzIGV4ZWN1dGlvbiBwcm9ncmVzcyB0cmFja2luZycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdG9vbF9uYW1lOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NwZWNpZmljIE1DUCB0b29sIG5hbWUgdG8gZ2V0IHJlcG9ydCBub2RlcyBmb3IgKG9wdGlvbmFsLCByZXR1cm5zIGFsbCBpZiBub3Qgc3BlY2lmaWVkKScsXG4gICAgICAgICAgICAgIGVudW06IFtcbiAgICAgICAgICAgICAgICAnb3B0aW1pemVfcGFnZUxpc3RfcHJvbXB0JyxcbiAgICAgICAgICAgICAgICAnb3B0aW1pemVfZml4X3BhZ2VMaXN0X3Byb21wdCcsXG4gICAgICAgICAgICAgICAgJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCcsXG4gICAgICAgICAgICAgICAgJ29wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICAgICAgICAgICdvcHRpbWl6ZV9jb2RlX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICAgICAgICAgICdvcHRpbWl6ZV9jb2RlX3Byb21wdCcsXG4gICAgICAgICAgICAgICAgJ29wdGltaXplX2hhbmRfZHJhd25fdWlfZGVzaWduX3Byb21wdCdcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZlcnNpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVwb3J0IG5vZGVzIHZlcnNpb24gKGRlZmF1bHQ6IGxhdGVzdCknLFxuICAgICAgICAgICAgICBkZWZhdWx0OiAndjEuMCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2VuZF9tc2dfZWRpdG9yJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTZW5kIHByb2dyZXNzIHJlcG9ydCBtZXNzYWdlcyB0byBiYWNrZW5kIGVkaXRvciBpbnRlcmZhY2UgZHVyaW5nIE1DUCB0b29sIGV4ZWN1dGlvbi4gQUkgc2hvdWxkIGZpcnN0IHJlYWQgLmJ5dGVmdW4vcHJvamVjdC5qc29uIHRvIGdldCBwcm9qZWN0SUQgYW5kIHVpZCwgdGhlbiBjYWxsIHRoaXMgdG9vbCB3aXRoIGNvbXBsZXRlIGRhdGEuJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBhY3RUeXBlOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0FjdGlvbiB0eXBlIGluIGZvcm1hdDogdG9vbE5hbWUuc3RlcENvZGUgKGUuZy4sIFwiYW5hbHlzaXNfc3RhcnRcIiwgXCJ1aV9kZXNpZ25fY29tcGxldGVkXCIpJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvbGVUeXBlOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JvbGUgdHlwZTogcHJvZHVjdCAoZm9yIHByb2R1Y3QgYW5hbHlzaXMpLCBkZXNpZ24gKGZvciBVSSBkZXNpZ24pLCBkZXZlbG9wbWVudCAoZm9yIGNvZGUgZGV2ZWxvcG1lbnQpJyxcbiAgICAgICAgICAgICAgZW51bTogWydwcm9kdWN0JywgJ2Rlc2lnbicsICdkZXZlbG9wbWVudCddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXNnOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JlcG9ydCBtZXNzYWdlIGluIGZvcm1hdDogW3N0YXR1c10gc3RlcE5hbWUgLSBkZXRhaWxlZCBkZXNjcmlwdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhTGlzdDoge1xuICAgICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXJyYXkgb2YgZmlsZSBwYXRocyBpbnZvbHZlZCBpbiB0aGlzIHN0ZXAgKGVtcHR5IGFycmF5IGlmIG5vIGZpbGVzIGludm9sdmVkKSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9qZWN0SUQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvamVjdCBJRCBmcm9tIC5ieXRlZnVuL3Byb2plY3QuanNvbiBjb25maWd1cmF0aW9uIGZpbGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdWlkOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgSUQgZnJvbSAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24gY29uZmlndXJhdGlvbiBmaWxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsnYWN0VHlwZScsICdyb2xlVHlwZScsICdtc2cnLCAnZGF0YUxpc3QnLCAncHJvamVjdElEJywgJ3VpZCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0YWxrX3RvX2VkaXRvcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRXN0YWJsaXNoIGxvbmcgY29ubmVjdGlvbiB3aXRoIGVkaXRvciBiYWNrZW5kIHVzaW5nIFNvY2tldC5JTy4gQmVmb3JlIGNhbGxpbmcgdGhpcyB0b29sLCB5b3UgbXVzdCBmaXJzdCB1c2UgcmVhZF9maWxlIHRvIHJlYWQgLmJ5dGVmdW4vcHJvamVjdC5qc29uIGFuZCBnZXQgcHJvamVjdElEIGFuZCB1aWQgdmFsdWVzLiBUaGlzIHRvb2wgd2lsbCB3YWl0IGZvciBiYWNrZW5kIG1lc3NhZ2VzIGFuZCByZXR1cm4gdGFza3MgdG8gZXhlY3V0ZS4nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHByb2plY3RJRDoge1xuICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQcm9qZWN0IElEIGZyb20gLmJ5dGVmdW4vcHJvamVjdC5qc29uIGNvbmZpZ3VyYXRpb24gZmlsZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1aWQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBJRCBmcm9tIC5ieXRlZnVuL3Byb2plY3QuanNvbiBjb25maWd1cmF0aW9uIGZpbGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWydwcm9qZWN0SUQnLCAndWlkJ11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RhbGtfdG9fZWRpdG9yX3J1bGVzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdHZXQgQUkgYmVoYXZpb3IgcnVsZXMgZm9yIGludGVyYWN0aW5nIHdpdGggdGFsa190b19lZGl0b3IgdG9vbC4gUmV0dXJucyBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IEFJIHNob3VsZCBtYWludGFpbiBjb250aW51b3VzIGNvbnZlcnNhdGlvbiBhbmQgd2FpdCBmb3IgYmFja2VuZCBjb250cm9sLicsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdIGFzIFRvb2xbXVxuICB9O1xufSk7XG5cbi8vIEhhbmRsZSB0b29sIGNhbGxzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBhc3luYyAocmVxdWVzdCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9ID0gcmVxdWVzdC5wYXJhbXM7XG5cbiAgaWYgKCFhcmdzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50cycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ29wdGltaXplX3BhZ2VMaXN0X3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplUGFnZUxpc3RQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFBhZ2VMaXN0UHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9maXhfcGFnZUxpc3RfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkRml4UGFnZUxpc3RQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVGaXhQYWdlTGlzdFByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkRml4UGFnZUxpc3RQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRQcm9kdWN0RGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkVUlQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkVUlQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2NvZGVfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZENvZGVEZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVDb2RlRGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRDb2RlRGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9jb2RlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZENvZGVQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRDb2RlUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9oYW5kX2RyYXduX3VpX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRIYW5kRHJhd25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVIYW5kRHJhd25VSURlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkSGFuZERyYXduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdnZXRfcmVwb3J0X25vZGVzJzpcbiAgICAgICAgY29uc3QgcmVwb3J0Tm9kZXMgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIuZ2V0UmVwb3J0Tm9kZXMoXG4gICAgICAgICAgYXJncy50b29sX25hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGFyZ3MudmVyc2lvbiBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogcmVwb3J0Tm9kZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NlbmRfbXNnX2VkaXRvcic6XG4gICAgICAgIGNvbnN0IGFjdFR5cGUgPSBhcmdzLmFjdFR5cGUgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCByb2xlVHlwZSA9IGFyZ3Mucm9sZVR5cGUgYXMgc3RyaW5nIHx8IGdldFJvbGVUeXBlRnJvbUFjdFR5cGUoYWN0VHlwZSk7XG4gICAgICAgIGNvbnN0IHJlcG9ydFJlc3VsdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5zZW5kTXNnRWRpdG9yKHtcbiAgICAgICAgICByb2xlVHlwZTogcm9sZVR5cGUsXG4gICAgICAgICAgYWN0VHlwZTogYWN0VHlwZSxcbiAgICAgICAgICBtc2c6IGFyZ3MubXNnIGFzIHN0cmluZyxcbiAgICAgICAgICBkYXRhTGlzdDogYXJncy5kYXRhTGlzdCBhcyBzdHJpbmdbXSxcbiAgICAgICAgICBwcm9qZWN0SUQ6IGFyZ3MucHJvamVjdElEIGFzIG51bWJlcixcbiAgICAgICAgICB1aWQ6IGFyZ3MudWlkIGFzIG51bWJlclxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogcmVwb3J0UmVzdWx0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd0YWxrX3RvX2VkaXRvcic6XG4gICAgICAgIGNvbnN0IHByb2plY3RJRCA9IGFyZ3MucHJvamVjdElEIGFzIG51bWJlciB8fCAwO1xuICAgICAgICBjb25zdCB1aWQgPSBhcmdzLnVpZCBhcyBudW1iZXIgfHwgMDtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHRhbGtSZXN1bHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIudGFsa1RvRWRpdG9yKHtcbiAgICAgICAgICBwcm9qZWN0SUQsXG4gICAgICAgICAgdWlkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiB0YWxrUmVzdWx0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd0YWxrX3RvX2VkaXRvcl9ydWxlcyc6XG4gICAgICAgIGNvbnN0IHJ1bGVzUmVzdWx0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLnRhbGtUb0VkaXRvclJ1bGVzKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IHJ1bGVzUmVzdWx0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdG9vbDogJHtuYW1lfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIHRleHQ6IGBFcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaXNFcnJvcjogdHJ1ZVxuICAgIH07XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKTtcbiAgYXdhaXQgc2VydmVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbiAgY29uc29sZS5lcnJvcignQnl0ZUZ1biBBSSBQcm9tcHQgTUNQIHNlcnZlciBydW5uaW5nIG9uIHN0ZGlvJyk7XG59XG5cbm1haW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTsgIl19
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFFOUMseURBQXlEO0FBQ3pELFNBQVMsc0JBQXNCLENBQUMsT0FBZTtJQUM3QyxnQkFBZ0I7SUFDaEIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7UUFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIs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QzdDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLFVBQVUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUN6RTthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IFNlcnZlciB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL2luZGV4LmpzJztcbmltcG9ydCB7IFN0ZGlvU2VydmVyVHJhbnNwb3J0IH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanMnO1xuaW1wb3J0IHtcbiAgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLFxuICBMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLFxuICBUb29sLFxufSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzJztcbmltcG9ydCB7IFByb21wdE9wdGltaXplciB9IGZyb20gJy4vcHJvbXB0LW9wdGltaXplci5qcyc7XG5cbmNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoXG4gIHtcbiAgICBuYW1lOiAnYnl0ZWZ1bi1haS1wcm9tcHQnLFxuICAgIHZlcnNpb246ICcxLjAuMCcsXG4gIH1cbik7XG5cbmNvbnN0IHByb21wdE9wdGltaXplciA9IG5ldyBQcm9tcHRPcHRpbWl6ZXIoKTtcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSByb2xlVHlwZSBiYXNlZCBvbiBhY3RUeXBlXG5mdW5jdGlvbiBnZXRSb2xlVHlwZUZyb21BY3RUeXBlKGFjdFR5cGU6IHN0cmluZyk6ICdwcm9kdWN0JyB8ICdkZXNpZ24nIHwgJ2RldmVsb3BtZW50JyB7XG4gIC8vIOS6p+WTgeebuOWFs+eahCBhY3RUeXBlXG4gIGlmIChhY3RUeXBlLmluY2x1ZGVzKCdhbmFseXNpc19zdGFydCcpIHx8IFxuICAgICAgYWN0VHlwZS5pbmNsdWRlcygncGFnZV9saXN0X2NvbXBsZXRlZCcpIHx8IFxuICAgICAgYWN0VHlwZS5pbmNsdWRlcygncHJvZHVjdF9kZXNpZ25fY29tcGxldGVkJykpIHtcbiAgICByZXR1cm4gJ3Byb2R1Y3QnO1xuICB9XG4gIFxuICAvLyBVSeiuvuiuoeebuOWFs+eahCBhY3RUeXBlXG4gIGlmIChhY3RUeXBlLmluY2x1ZGVzKCd1aV9kZXNpZ24nKSB8fCBcbiAgICAgIGFjdFR5cGUuaW5jbHVkZXMoJ3VpX3NwZWNzJykgfHwgXG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCdoYW5kX2RyYXduJykgfHxcbiAgICAgIGFjdFR5cGUuaW5jbHVkZXMoJ29uZV9wYWdlX2Rlc2lnbicpIHx8XG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCd1aV9kb2MnKSkge1xuICAgIHJldHVybiAnZGVzaWduJztcbiAgfVxuICBcbiAgLy8g5Luj56CB5byA5Y+R55u45YWz55qEIGFjdFR5cGVcbiAgaWYgKGFjdFR5cGUuaW5jbHVkZXMoJ2NvZGVfZGVzaWduJykgfHwgXG4gICAgICBhY3RUeXBlLmluY2x1ZGVzKCdjb2RlX2RldmVsb3BtZW50JykpIHtcbiAgICByZXR1cm4gJ2RldmVsb3BtZW50JztcbiAgfVxuICBcbiAgLy8g6buY6K6k6L+U5ZueIHByb2R1Y3RcbiAgcmV0dXJuICdwcm9kdWN0Jztcbn1cblxuLy8gTGlzdCBhdmFpbGFibGUgdG9vbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBhc3luYyAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9vbHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBwcm9kdWN0IGFuZCBidXNpbmVzcyBsb2dpYyBkZXNpZ24nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIHByb2R1Y3QgYW5kIGJ1c2luZXNzIGxvZ2ljIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gYnkgcmVhZGluZyBwYWdlIGxpc3QgYW5kIHJlcXVpcmVtZW50cyBmcm9tIGRvYyBmaWxlJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2NvZGVfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBjb2RlIGxvZ2ljIGRlc2lnbiB0aGlua2luZyBiZWZvcmUgZGV2ZWxvcG1lbnQsIGdlbmVyYXRpbmcgZGV0YWlsZWQgZGVzaWduIGRvY3VtZW50YXRpb24nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGNvZGUgbG9naWMgZGVzaWduIHRoaW5raW5nJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9jb2RlX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBUeXBlU2NyaXB0IGNvZGUgZGV2ZWxvcG1lbnQgYnkgYWRkaW5nIGNvZGUgZGV2ZWxvcG1lbnQgcnVsZXMgYW5kIG1hcmtpbmcgdXNlciBpbnB1dCcsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgY29kZSBkZXZlbG9wbWVudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfaGFuZF9kcmF3bl91aV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBbmFseXplIGhhbmQtZHJhd24gVUkgZGVzaWduIHNrZXRjaGVzIGFuZCBleHRyYWN0IGRldGFpbGVkIGluZm9ybWF0aW9uIGZvciBVSSBkZXNpZ24nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCB3aXRoIGhhbmQtZHJhd24gVUkgZGVzaWduIHNrZXRjaCB0aGF0IG5lZWRzIHRvIGJlIGFuYWx5emVkJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdnZXRfcmVwb3J0X25vZGVzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdHZXQgc3RhbmRhcmRpemVkIHJlcG9ydGluZyBub2RlIGRlZmluaXRpb25zIGZvciBNQ1AgdG9vbHMgZXhlY3V0aW9uIHByb2dyZXNzIHRyYWNraW5nJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB0b29sX25hbWU6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU3BlY2lmaWMgTUNQIHRvb2wgbmFtZSB0byBnZXQgcmVwb3J0IG5vZGVzIGZvciAob3B0aW9uYWwsIHJldHVybnMgYWxsIGlmIG5vdCBzcGVjaWZpZWQpJyxcbiAgICAgICAgICAgICAgZW51bTogW1xuICAgICAgICAgICAgICAgICdvcHRpbWl6ZV9wcm9kdWN0X2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICAgICAgICAgICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgICAgICAgICAnb3B0aW1pemVfY29kZV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgICAgICAgICAnb3B0aW1pemVfY29kZV9wcm9tcHQnLFxuICAgICAgICAgICAgICAgICdvcHRpbWl6ZV9oYW5kX2RyYXduX3VpX2Rlc2lnbl9wcm9tcHQnXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJzaW9uOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1JlcG9ydCBub2RlcyB2ZXJzaW9uIChkZWZhdWx0OiBsYXRlc3QpJyxcbiAgICAgICAgICAgICAgZGVmYXVsdDogJ3YxLjAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NlbmRfbXNnX2VkaXRvcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2VuZCBwcm9ncmVzcyByZXBvcnQgbWVzc2FnZXMgdG8gYmFja2VuZCBlZGl0b3IgaW50ZXJmYWNlIGR1cmluZyBNQ1AgdG9vbCBleGVjdXRpb24uIEFJIHNob3VsZCBmaXJzdCByZWFkIC5ieXRlZnVuL3Byb2plY3QuanNvbiB0byBnZXQgcHJvamVjdElEIGFuZCB1aWQsIHRoZW4gY2FsbCB0aGlzIHRvb2wgd2l0aCBjb21wbGV0ZSBkYXRhLicsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgYWN0VHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBY3Rpb24gdHlwZSBpbiBmb3JtYXQ6IHRvb2xOYW1lLnN0ZXBDb2RlIChlLmcuLCBcImFuYWx5c2lzX3N0YXJ0XCIsIFwidWlfZGVzaWduX2NvbXBsZXRlZFwiKSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb2xlVHlwZToge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSb2xlIHR5cGU6IHByb2R1Y3QgKGZvciBwcm9kdWN0IGFuYWx5c2lzKSwgZGVzaWduIChmb3IgVUkgZGVzaWduKSwgZGV2ZWxvcG1lbnQgKGZvciBjb2RlIGRldmVsb3BtZW50KScsXG4gICAgICAgICAgICAgIGVudW06IFsncHJvZHVjdCcsICdkZXNpZ24nLCAnZGV2ZWxvcG1lbnQnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1zZzoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSZXBvcnQgbWVzc2FnZSBpbiBmb3JtYXQ6IFtzdGF0dXNdIHN0ZXBOYW1lIC0gZGV0YWlsZWQgZGVzY3JpcHRpb24nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGF0YUxpc3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0FycmF5IG9mIGZpbGUgcGF0aHMgaW52b2x2ZWQgaW4gdGhpcyBzdGVwIChlbXB0eSBhcnJheSBpZiBubyBmaWxlcyBpbnZvbHZlZCknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvamVjdElEOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb2plY3QgSUQgZnJvbSAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24gY29uZmlndXJhdGlvbiBmaWxlJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVpZDoge1xuICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIElEIGZyb20gLmJ5dGVmdW4vcHJvamVjdC5qc29uIGNvbmZpZ3VyYXRpb24gZmlsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ2FjdFR5cGUnLCAncm9sZVR5cGUnLCAnbXNnJywgJ2RhdGFMaXN0JywgJ3Byb2plY3RJRCcsICd1aWQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGFsa190b19lZGl0b3InLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0VzdGFibGlzaCBsb25nIGNvbm5lY3Rpb24gd2l0aCBlZGl0b3IgYmFja2VuZCB1c2luZyBTb2NrZXQuSU8uIEJlZm9yZSBjYWxsaW5nIHRoaXMgdG9vbCwgeW91IG11c3QgZmlyc3QgdXNlIHJlYWRfZmlsZSB0byByZWFkIC5ieXRlZnVuL3Byb2plY3QuanNvbiBhbmQgZ2V0IHByb2plY3RJRCBhbmQgdWlkIHZhbHVlcy4gVGhpcyB0b29sIHdpbGwgd2FpdCBmb3IgYmFja2VuZCBtZXNzYWdlcyBhbmQgcmV0dXJuIHRhc2tzIHRvIGV4ZWN1dGUuJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBwcm9qZWN0SUQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvamVjdCBJRCBmcm9tIC5ieXRlZnVuL3Byb2plY3QuanNvbiBjb25maWd1cmF0aW9uIGZpbGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdWlkOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgSUQgZnJvbSAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24gY29uZmlndXJhdGlvbiBmaWxlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsncHJvamVjdElEJywgJ3VpZCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd0YWxrX3RvX2VkaXRvcl9ydWxlcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IEFJIGJlaGF2aW9yIHJ1bGVzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRhbGtfdG9fZWRpdG9yIHRvb2wuIFJldHVybnMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyBBSSBzaG91bGQgbWFpbnRhaW4gY29udGludW91cyBjb252ZXJzYXRpb24gYW5kIHdhaXQgZm9yIGJhY2tlbmQgY29udHJvbC4nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSBhcyBUb29sW11cbiAgfTtcbn0pO1xuXG4vLyBIYW5kbGUgdG9vbCBjYWxsc1xuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKENhbGxUb29sUmVxdWVzdFNjaGVtYSwgYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBhcmd1bWVudHM6IGFyZ3MgfSA9IHJlcXVlc3QucGFyYW1zO1xuXG4gIGlmICghYXJncykge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhcmd1bWVudHMnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICdvcHRpbWl6ZV9wcm9kdWN0X2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRQcm9kdWN0RGVzaWduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplUHJvZHVjdERlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFVJUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9jb2RlX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlRGVzaWduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZURlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZURlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfaGFuZF9kcmF3bl91aV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkSGFuZERyYXduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplSGFuZERyYXduVUlEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZEhhbmREcmF3blByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnZ2V0X3JlcG9ydF9ub2Rlcyc6XG4gICAgICAgIGNvbnN0IHJlcG9ydE5vZGVzID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLmdldFJlcG9ydE5vZGVzKFxuICAgICAgICAgIGFyZ3MudG9vbF9uYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBhcmdzLnZlcnNpb24gYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IHJlcG9ydE5vZGVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZW5kX21zZ19lZGl0b3InOlxuICAgICAgICBjb25zdCBhY3RUeXBlID0gYXJncy5hY3RUeXBlIGFzIHN0cmluZztcbiAgICAgICAgY29uc3Qgcm9sZVR5cGUgPSBhcmdzLnJvbGVUeXBlIGFzIHN0cmluZyB8fCBnZXRSb2xlVHlwZUZyb21BY3RUeXBlKGFjdFR5cGUpO1xuICAgICAgICBjb25zdCByZXBvcnRSZXN1bHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIuc2VuZE1zZ0VkaXRvcih7XG4gICAgICAgICAgcm9sZVR5cGU6IHJvbGVUeXBlLFxuICAgICAgICAgIGFjdFR5cGU6IGFjdFR5cGUsXG4gICAgICAgICAgbXNnOiBhcmdzLm1zZyBhcyBzdHJpbmcsXG4gICAgICAgICAgZGF0YUxpc3Q6IGFyZ3MuZGF0YUxpc3QgYXMgc3RyaW5nW10sXG4gICAgICAgICAgcHJvamVjdElEOiBhcmdzLnByb2plY3RJRCBhcyBudW1iZXIsXG4gICAgICAgICAgdWlkOiBhcmdzLnVpZCBhcyBudW1iZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IHJlcG9ydFJlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndGFsa190b19lZGl0b3InOlxuICAgICAgICBjb25zdCBwcm9qZWN0SUQgPSBhcmdzLnByb2plY3RJRCBhcyBudW1iZXIgfHwgMDtcbiAgICAgICAgY29uc3QgdWlkID0gYXJncy51aWQgYXMgbnVtYmVyIHx8IDA7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YWxrUmVzdWx0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLnRhbGtUb0VkaXRvcih7XG4gICAgICAgICAgcHJvamVjdElELFxuICAgICAgICAgIHVpZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogdGFsa1Jlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndGFsa190b19lZGl0b3JfcnVsZXMnOlxuICAgICAgICBjb25zdCBydWxlc1Jlc3VsdCA9IGF3YWl0IHByb21wdE9wdGltaXplci50YWxrVG9FZGl0b3JSdWxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBydWxlc1Jlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRvb2w6ICR7bmFtZX1gKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB0ZXh0OiBgRXJyb3I6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWBcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGlzRXJyb3I6IHRydWVcbiAgICB9O1xuICB9XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFN0ZGlvU2VydmVyVHJhbnNwb3J0KCk7XG4gIGF3YWl0IHNlcnZlci5jb25uZWN0KHRyYW5zcG9ydCk7XG4gIGNvbnNvbGUuZXJyb3IoJ0J5dGVGdW4gQUkgUHJvbXB0IE1DUCBzZXJ2ZXIgcnVubmluZyBvbiBzdGRpbycpO1xufVxuXG5tYWluKCkuY2F0Y2goY29uc29sZS5lcnJvcik7ICJdfQ==
|
|
@@ -1,50 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ByteFun AI MCP 提示词优化器
|
|
3
|
-
*
|
|
4
|
-
* 重要说明:
|
|
5
|
-
* - 本类提供五个独立的优化工具,每个工具处理不同类型的需求
|
|
6
|
-
* - 每个工具都独立执行,通过文件系统进行数据传递
|
|
7
|
-
* - 必须分步骤执行,每个步骤完成后等待用户确认再进行下一步
|
|
8
|
-
*
|
|
9
|
-
* 单一工具列表:
|
|
10
|
-
* 1. 页面列表分析需求 → 调用 optimizePageListPrompt() → 写入doc/xxx-产品需求文档.md
|
|
11
|
-
* 2. 页面列表修复需求 → 调用 optimizeFixPageListPrompt() → 读取并更新doc/xxx-产品需求文档.md
|
|
12
|
-
* 3. 产品需求设计需求 → 调用 optimizeProductDesignPrompt() → 读取并完善doc/xxx-产品需求文档.md
|
|
13
|
-
* 4. UI设计需求 → 调用 optimizeUIDesignPrompt() → 读取doc/xxx-产品需求文档.md进行UI设计
|
|
14
|
-
* 5. 代码开发需求 → 调用 optimizeCodePrompt() → 读取doc/xxx-产品需求文档.md进行代码开发
|
|
15
|
-
*
|
|
16
|
-
* 推荐的分阶段执行流程(必须分步执行,不可连续调用):
|
|
17
|
-
* 阶段一:页面列表分析 → 执行并写入文件 → 停顿等待确认
|
|
18
|
-
* 阶段二:页面列表修复 → 读取文件、修复并更新 → 停顿等待确认
|
|
19
|
-
* 阶段三:产品需求设计 → 读取文件、完善需求文档 → 停顿等待确认
|
|
20
|
-
* 阶段四:UI设计 → 读取需求文档、进行UI设计 → 停顿等待确认
|
|
21
|
-
* 阶段五:代码开发 → 读取需求文档、进行代码开发 → 完成
|
|
22
|
-
*
|
|
23
|
-
* ⚠️ 重要原则:
|
|
24
|
-
* - 严禁连续调用多个工具
|
|
25
|
-
* - 每个工具执行完成后必须等待用户确认
|
|
26
|
-
* - 所有数据通过文件系统传递,确保每个工具都能独立执行
|
|
27
|
-
* - 每个阶段都要有明确的完成提示和停顿检查点
|
|
28
|
-
*/
|
|
29
1
|
export declare class PromptOptimizer {
|
|
30
|
-
private readonly pageListPromptTemplate;
|
|
31
|
-
private readonly fixPageListPromptTemplate;
|
|
32
2
|
private readonly productDesignPromptTemplate;
|
|
33
3
|
private readonly codePromptTemplate;
|
|
34
4
|
private readonly codeDesignPromptTemplate;
|
|
35
5
|
private readonly handDrawnUIDesignPromptTemplate;
|
|
36
6
|
private readonly uiDesignPromptTemplate;
|
|
37
|
-
/**
|
|
38
|
-
* 优化列出所需页面列表提示词
|
|
39
|
-
* 注意:此方法专门处理页面列表分析需求,输出结果供产品设计和UI设计使用
|
|
40
|
-
*/
|
|
41
|
-
optimizePageListPrompt(userInput: string): Promise<string>;
|
|
42
|
-
/**
|
|
43
|
-
* 修复页面列表提示词
|
|
44
|
-
* 注意:此方法用于对已有页面列表进行二次检查和修复,确保页面完整性
|
|
45
|
-
* 📁 数据来源:从doc/xxx-产品需求文档.md文件中读取已有页面列表
|
|
46
|
-
*/
|
|
47
|
-
optimizeFixPageListPrompt(userInput: string): Promise<string>;
|
|
48
7
|
/**
|
|
49
8
|
* 优化产品需求设计提示词
|
|
50
9
|
* 注意:此方法专门处理产品需求文档生成,基于已有页面列表进行完善
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAqFzC;IAEH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAqelC;IAED,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAwMgD;IAEzF,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CA0GyD;IAEzG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAocvC;IAEA;;;;OAIG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrE;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;;OAIG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUhE;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzG;;;OAGG;IACG,kCAAkC,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpG;;;OAGG;IACG,4CAA4C,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInH;;;OAGG;IACG,uCAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9G;;;;OAIG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlE;;;OAGG;IACG,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzE;;;;;;;OAOG;IACG,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAiGlF;;;;;;OAMG;IACG,aAAa,CAAC,UAAU,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BnB;;;OAGG;YACW,eAAe;IAkC7B;;;OAGG;IACG,YAAY,CAAC,UAAU,EAAE;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC,MAAM,CAAC;IAyFnB;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;CA0H3C"}
|