bytefun-ai-mcp 1.14.26 → 1.14.27

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 CHANGED
@@ -44,6 +44,20 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
44
44
  required: ['user_input']
45
45
  }
46
46
  },
47
+ {
48
+ name: 'optimize_ui_design_add_page_prompt',
49
+ description: 'Optimize prompt for UI design to add new page into module',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ user_input: {
54
+ type: 'string',
55
+ description: 'User input prompt that triggers add-page UI design flow'
56
+ }
57
+ },
58
+ required: ['user_input']
59
+ }
60
+ },
47
61
  {
48
62
  name: 'ui_design_guide_prompt',
49
63
  description: 'Return comprehensive UI design guide prompt with strict execution rules',
@@ -306,6 +320,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
306
320
  }
307
321
  ]
308
322
  };
323
+ case 'optimize_ui_design_add_page_prompt':
324
+ const optimizedUIAddPagePrompt = await promptOptimizer.optimizeUIDesignAddPagePrompt(args.user_input);
325
+ return {
326
+ content: [
327
+ {
328
+ type: 'text',
329
+ text: optimizedUIAddPagePrompt
330
+ }
331
+ ]
332
+ };
309
333
  case 'ui_design_guide_prompt':
310
334
  const uiDesignGuideText = await promptOptimizer.uiDesignGuidePrompt();
311
335
  return {
@@ -503,4 +527,4 @@ async function main() {
503
527
  console.error('ByteFun AI Prompt MCP server running on stdio');
504
528
  }
505
529
  main().catch(console.error);
506
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFJOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLGdDQUFnQztnQkFDdEMsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixRQUFRLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLGlEQUFpRDt5QkFDL0Q7d0JBQ0QsVUFBVSxFQUFFOzRCQUNWLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxvRkFBb0Y7eUJBQ2xHO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7aUJBQ3JDO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxXQUFXLEVBQUUsbUZBQW1GO2dCQUNoRyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxF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LENBQUMsQ0FBQztBQUVILEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBTZXJ2ZXIgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9pbmRleC5qcyc7XG5pbXBvcnQgeyBTdGRpb1NlcnZlclRyYW5zcG9ydCB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL3N0ZGlvLmpzJztcbmltcG9ydCB7XG4gIENhbGxUb29sUmVxdWVzdFNjaGVtYSxcbiAgTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSxcbiAgVG9vbCxcbn0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay90eXBlcy5qcyc7XG5pbXBvcnQgeyBQcm9tcHRPcHRpbWl6ZXIgfSBmcm9tICcuL3Byb21wdC1vcHRpbWl6ZXIuanMnO1xuXG5jb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKFxuICB7XG4gICAgbmFtZTogJ2J5dGVmdW4tYWktcHJvbXB0JyxcbiAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICB9XG4pO1xuXG5jb25zdCBwcm9tcHRPcHRpbWl6ZXIgPSBuZXcgUHJvbXB0T3B0aW1pemVyKCk7XG5cblxuXG4vLyBMaXN0IGF2YWlsYWJsZSB0b29sc1xuc2VydmVyLnNldFJlcXVlc3RIYW5kbGVyKExpc3RUb29sc1JlcXVlc3RTY2hlbWEsIGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB0b29sczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIHByb2R1Y3QgYW5kIGJ1c2luZXNzIGxvZ2ljIGRlc2lnbicsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgaW5kdXN0cnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGluZHVzdHJ5IHRoYXQgdGhlIEFQUCBvciB3ZWJzaXRlIGJlbG9uZ3MgdG8nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcHJvZHVjdCBhbmQgYnVzaW5lc3MgbG9naWMgZGVzaWduJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsnaW5kdXN0cnknLCAndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFVJIGRlc2lnbiBieSByZWFkaW5nIHBhZ2UgbGlzdCBhbmQgcmVxdWlyZW1lbnRzIGZyb20gZG9jIGZpbGUnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIFVJIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndWlfZGVzaWduX2d1aWRlX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmV0dXJuIGNvbXByZWhlbnNpdmUgVUkgZGVzaWduIGd1aWRlIHByb21wdCB3aXRoIHN0cmljdCBleGVjdXRpb24gcnVsZXMnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndW5kZXJzdGFuZGluZ19jb2RlX2ZyYW1ld29ya19wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1JldHVybiBwcm9tcHQgZm9yIHVuZGVyc3RhbmRpbmcgcHJvamVjdCBjb2RlIGZyYW1ld29yaycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9jb2RlX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgY29kZSBsb2dpYyBkZXNpZ24gdGhpbmtpbmcgYmVmb3JlIGRldmVsb3BtZW50LCBnZW5lcmF0aW5nIGRldGFpbGVkIGRlc2lnbiBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBjb2RlIGxvZ2ljIGRlc2lnbiB0aGlua2luZydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnaW1wbGVtZW50X2xvZ2ljX2NvZGVfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFR5cGVTY3JpcHQgY29kZSBkZXZlbG9wbWVudCBieSBhZGRpbmcgY29kZSBkZXZlbG9wbWVudCBydWxlcyBhbmQgbWFya2luZyB1c2VyIGlucHV0JyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBjb2RlIGRldmVsb3BtZW50J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICdvcHRpbWl6ZV9oYW5kX2RyYXduX3VpX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ0FuYWx5emUgaGFuZC1kcmF3biBVSSBkZXNpZ24gc2tldGNoZXMgYW5kIGV4dHJhY3QgZGV0YWlsZWQgaW5mb3JtYXRpb24gZm9yIFVJIGRlc2lnbicsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHdpdGggaGFuZC1kcmF3biBVSSBkZXNpZ24gc2tldGNoIHRoYXQgbmVlZHMgdG8gYmUgYW5hbHl6ZWQnXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl90aGlua2luZ19wcm9tcHQnLFxuICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVUkgZGVzaWduIHRoaW5raW5nIHByb2Nlc3MgYmVmb3JlIGFjdHVhbCBkZXNpZ24gd29yaywgZ2VuZXJhdGluZyBkZXRhaWxlZCBVSSBkZXNpZ24gdGhpbmtpbmcgZG9jdW1lbnRhdGlvbicsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgVUkgZGVzaWduIHRoaW5raW5nIHByb2Nlc3MnXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfYmFja2VuZF9kZXNpZ25fcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIGJhY2tlbmQgZGF0YWJhc2UgYW5kIEFQSSBpbnRlcmZhY2UgZGVzaWduIGJ5IHJlYWRpbmcgbW9kdWxlIGJ1c2luZXNzIGxvZ2ljIGRvY3VtZW50cycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgYmFja2VuZCBkYXRhYmFzZSBhbmQgQVBJIGludGVyZmFjZSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ2Z1bmN0aW9uYWxfbW9kdWxlX2J1c2luZXNzX2xvZ2ljX3Byb21wdCcsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBmdW5jdGlvbmFsIG1vZHVsZSBidXNpbmVzcyBsb2dpYyBhbmFseXNpcyBiYXNlZCBvbiBwcm9kdWN0IHJlcXVpcmVtZW50cyBkb2N1bWVudCcsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgZnVuY3Rpb25hbE1vZHVsZToge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgZnVuY3Rpb25hbCBtb2R1bGUgY3VycmVudGx5IGJlaW5nIGRlc2lnbmVkJ1xuICAgICAgLy8gICAgICAgfSxcbiAgICAgIC8vICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAvLyAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGZ1bmN0aW9uYWwgbW9kdWxlIGJ1c2luZXNzIGxvZ2ljIGFuYWx5c2lzJ1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFsnZnVuY3Rpb25hbE1vZHVsZScsICd1c2VyX2lucHV0J11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSxcblxuICAgICAgLy8ge1xuICAgICAgLy8gICBuYW1lOiAndGFsa190b19lZGl0b3InLFxuICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ0VzdGFibGlzaCBsb25nIGNvbm5lY3Rpb24gd2l0aCBlZGl0b3IgYmFja2VuZCB1c2luZyBTb2NrZXQuSU8uIEJlZm9yZSBjYWxsaW5nIHRoaXMgdG9vbCwgeW91IG11c3QgZmlyc3QgdXNlIHJlYWRfZmlsZSB0byByZWFkIC5ieXRlZnVuL3Byb2plY3QuanNvbiBhbmQgZ2V0IHByb2plY3RJRCBhbmQgdWlkIHZhbHVlcy4gVGhpcyB0b29sIHdpbGwgd2FpdCBmb3IgYmFja2VuZCBtZXNzYWdlcyBhbmQgcmV0dXJuIHRhc2tzIHRvIGV4ZWN1dGUuJyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICBwcm9qZWN0SUQ6IHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAvLyAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvamVjdCBJRCBmcm9tIC5ieXRlZnVuL3Byb2plY3QuanNvbiBjb25maWd1cmF0aW9uIGZpbGUnXG4gICAgICAvLyAgICAgICB9LFxuICAgICAgLy8gICAgICAgdWlkOiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgSUQgZnJvbSAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24gY29uZmlndXJhdGlvbiBmaWxlJ1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFsncHJvamVjdElEJywgJ3VpZCddXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICd0YWxrX3RvX2VkaXRvcl9ydWxlcycsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnR2V0IEFJIGJlaGF2aW9yIHJ1bGVzIGZvciBpbnRlcmFjdGluZyB3aXRoIHRhbGtfdG9fZWRpdG9yIHRvb2wuIFJldHVybnMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyBBSSBzaG91bGQgbWFpbnRhaW4gY29udGludW91cyBjb252ZXJzYXRpb24gYW5kIHdhaXQgZm9yIGJhY2tlbmQgY29udHJvbC4nLFxuICAgICAgLy8gICBpbnB1dFNjaGVtYToge1xuICAgICAgLy8gICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgLy8gICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgLy8gICAgIHJlcXVpcmVkOiBbXVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnaW1wbGVtZW50X2JhY2tlbmRfY29kZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgYmFja2VuZCBjb2RlIGRldmVsb3BtZW50IGJ5IHJlYWRpbmcgYmFja2VuZCBkZXNpZ24gZG9jdW1lbnRzIGFuZCBhcHBseWluZyBjb2Rpbmcgc3RhbmRhcmRzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBiYWNrZW5kIGNvZGUgZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl9lZGl0X3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gbW9kaWZpY2F0aW9uIGFuZCBlZGl0aW5nIHRhc2tzLCByZXR1cm5pbmcgZGV0YWlsZWQgVUkgZGVzaWduIHNwZWNpZmljYXRpb25zJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24gbW9kaWZpY2F0aW9uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICdvcHRpbWl6ZV91aV9kZXNpZ25fcmVwbGVuaXNoX3Byb21wdCcsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gSFRNTCByZXBsZW5pc2htZW50IGFuZCBhdHRyaWJ1dGUgY29tcGxldGlvbicsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgVUkgZGVzaWduIEhUTUwgcmVwbGVuaXNobWVudCdcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfanVtcF9wYWdlX2NvZGVfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIHBhZ2UgbmF2aWdhdGlvbiBjb2RlIGRldmVsb3BtZW50IGJhc2VkIG9uIFVJIGRlc2lnbiBwcm9ncmVzcyBhbmQganVtcGluZyBydWxlcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgcGFnZSBuYXZpZ2F0aW9uIGNvZGUgZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ29wdGltaXplX2RlY2xhcmF0aXZlX3VpX3Byb21wdCcsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBkZWNsYXJhdGl2ZSBVSSBkZXNpZ24gdXNpbmcgSlNPTiBmb3JtYXQgdG8gZGVzY3JpYmUgVUkgY29tcG9uZW50cyBhbmQgaW50ZXJmYWNlcycsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgZGVjbGFyYXRpdmUgVUkgZGVzaWduJ1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV91aV9zcGVjX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVUkgc3BlY2lmaWNhdGlvbiBkZXNpZ24gYmFzZWQgb24gcHJvZHVjdCByZXF1aXJlbWVudHMgZG9jdW1lbnQgdG8gY29tcGxldGUgVUkgZGVzaWduIHN0YW5kYXJkcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgVUkgc3BlY2lmaWNhdGlvbiBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8ge1xuICAgICAgLy8gICBuYW1lOiAnaW1wbGVtZW50X3VpX2NvZGVfcHJvbXB0JyxcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdSZXR1cm4gcHJvbXB0IGZvciBpbXBsZW1lbnRpbmcgVUkgY29kZSB3aXRoIHN0cmljdCBleGVjdXRpb24gc3RlcHMnLFxuICAgICAgLy8gICBpbnB1dFNjaGVtYToge1xuICAgICAgLy8gICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgLy8gICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAvLyAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBkZXNjcmliaW5nIFVJIGNvZGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZW1lbnRzJ1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICBdIGFzIFRvb2xbXVxuICB9O1xufSk7XG5cbi8vIEhhbmRsZSB0b29sIGNhbGxzXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLCBhc3luYyAocmVxdWVzdCkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGFyZ3VtZW50czogYXJncyB9ID0gcmVxdWVzdC5wYXJhbXM7XG5cbiAgaWYgKCFhcmdzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50cycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFByb2R1Y3REZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVQcm9kdWN0RGVzaWduUHJvbXB0KGFyZ3MuaW5kdXN0cnkgYXMgc3RyaW5nLCBhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZFVJUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1aV9kZXNpZ25fZ3VpZGVfcHJvbXB0JzpcbiAgICAgICAgY29uc3QgdWlEZXNpZ25HdWlkZVRleHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIudWlEZXNpZ25HdWlkZVByb21wdCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiB1aURlc2lnbkd1aWRlVGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndW5kZXJzdGFuZGluZ19jb2RlX2ZyYW1ld29ya19wcm9tcHQnOlxuICAgICAgICBjb25zdCBhcHBDb2RlRnJhbWV3b3JrVGV4dCA9IGF3YWl0IHByb21wdE9wdGltaXplci51bmRlcnN0YW5kaW5nQXBwQ29kZUZyYW1ld29ya1Byb21wdCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBhcHBDb2RlRnJhbWV3b3JrVGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfY29kZV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkQ29kZURlc2lnblByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUNvZGVEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZENvZGVEZXNpZ25Qcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ2ltcGxlbWVudF9sb2dpY19jb2RlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZENvZGVQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRDb2RlUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAvLyBjYXNlICdvcHRpbWl6ZV9oYW5kX2RyYXduX3VpX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgLy8gICBjb25zdCBvcHRpbWl6ZWRIYW5kRHJhd25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVIYW5kRHJhd25VSURlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgIC8vICAgcmV0dXJuIHtcbiAgICAgIC8vICAgICBjb250ZW50OiBbXG4gICAgICAvLyAgICAgICB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIC8vICAgICAgICAgdGV4dDogb3B0aW1pemVkSGFuZERyYXduUHJvbXB0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICAvLyBjYXNlICdvcHRpbWl6ZV91aV9kZXNpZ25fdGhpbmtpbmdfcHJvbXB0JzpcbiAgICAgIC8vICAgY29uc3Qgb3B0aW1pemVkVUlEZXNpZ25UaGlua2luZ1Byb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVVJRGVzaWduVGhpbmtpbmdQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAvLyAgIHJldHVybiB7XG4gICAgICAvLyAgICAgY29udGVudDogW1xuICAgICAgLy8gICAgICAge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAvLyAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJRGVzaWduVGhpbmtpbmdQcm9tcHRcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICBdXG4gICAgICAvLyAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2JhY2tlbmRfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZEJhY2tlbmREZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVCYWNrZW5kRGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRCYWNrZW5kRGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdmdW5jdGlvbmFsX21vZHVsZV9idXNpbmVzc19sb2dpY19wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRGdW5jdGlvbmFsTW9kdWxlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplRnVuY3Rpb25hbE1vZHVsZVByb21wdChhcmdzLmZ1bmN0aW9uYWxNb2R1bGUgYXMgc3RyaW5nLCBhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkRnVuY3Rpb25hbE1vZHVsZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuXG4gICAgICAvLyBjYXNlICd0YWxrX3RvX2VkaXRvcic6XG4gICAgICAvLyAgIGNvbnN0IHByb2plY3RJRCA9IGFyZ3MucHJvamVjdElEIGFzIG51bWJlciB8fCAwO1xuICAgICAgLy8gICBjb25zdCB1aWQgPSBhcmdzLnVpZCBhcyBudW1iZXIgfHwgMDtcbiAgICAgICAgXG4gICAgICAvLyAgIGNvbnN0IHRhbGtSZXN1bHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIudGFsa1RvRWRpdG9yKHtcbiAgICAgIC8vICAgICBwcm9qZWN0SUQsXG4gICAgICAvLyAgICAgdWlkXG4gICAgICAvLyAgIH0pO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiB0YWxrUmVzdWx0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICAvLyBjYXNlICd0YWxrX3RvX2VkaXRvcl9ydWxlcyc6XG4gICAgICAvLyAgIGNvbnN0IHJ1bGVzUmVzdWx0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLnRhbGtUb0VkaXRvclJ1bGVzKCk7XG4gICAgICAvLyAgIHJldHVybiB7XG4gICAgICAvLyAgICAgY29udGVudDogW1xuICAgICAgLy8gICAgICAge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAvLyAgICAgICAgIHRleHQ6IHJ1bGVzUmVzdWx0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICBjYXNlICdpbXBsZW1lbnRfYmFja2VuZF9jb2RlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZEJhY2tlbmRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQmFja2VuZENvZGVQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZEJhY2tlbmRDb2RlUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV91aV9kZXNpZ25fZWRpdF9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRVSURlc2lnbkVkaXRQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnbkVkaXRQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJRGVzaWduRWRpdFByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfanVtcF9wYWdlX2NvZGVfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkSnVtcFBhZ2VDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplSnVtcFBhZ2VDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRKdW1wUGFnZUNvZGVQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIC8vIGNhc2UgJ29wdGltaXplX2RlY2xhcmF0aXZlX3VpX3Byb21wdCc6XG4gICAgICAvLyAgIGNvbnN0IG9wdGltaXplZERlY2xhcmF0aXZlVUlQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVEZWNsYXJhdGl2ZVVJUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiBvcHRpbWl6ZWREZWNsYXJhdGl2ZVVJUHJvbXB0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV91aV9zcGVjX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRVSVNwZWNEZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSVNwZWNEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJU3BlY0Rlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgLy8gY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3JlcGxlbmlzaF9wcm9tcHQnOlxuICAgICAgLy8gICBjb25zdCBvcHRpbWl6ZWRVSURlc2lnblJlcGxlbmlzaFByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVVJRGVzaWduUmVwbGVuaXNoUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSURlc2lnblJlcGxlbmlzaFByb21wdFxuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIF1cbiAgICAgIC8vICAgfTtcblxuICAgICAgLy8gY2FzZSAnaW1wbGVtZW50X3VpX2NvZGVfcHJvbXB0JzpcbiAgICAgIC8vICAgY29uc3QgaW1wbGVtZW50VUlDb2RlVGV4dCA9IGF3YWl0IHByb21wdE9wdGltaXplci5pbXBsZW1lbnRVSUNvZGVQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAvLyAgIHJldHVybiB7XG4gICAgICAvLyAgICAgY29udGVudDogW1xuICAgICAgLy8gICAgICAge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAvLyAgICAgICAgIHRleHQ6IGltcGxlbWVudFVJQ29kZVRleHRcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICBdXG4gICAgICAvLyAgIH07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0b29sOiAke25hbWV9YCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdGV4dDogYEVycm9yOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBpc0Vycm9yOiB0cnVlXG4gICAgfTtcbiAgfVxufSk7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IG5ldyBTdGRpb1NlcnZlclRyYW5zcG9ydCgpO1xuICBhd2FpdCBzZXJ2ZXIuY29ubmVjdCh0cmFuc3BvcnQpO1xuICBjb25zb2xlLmVycm9yKCdCeXRlRnVuIEFJIFByb21wdCBNQ1Agc2VydmVyIHJ1bm5pbmcgb24gc3RkaW8nKTtcbn1cblxubWFpbigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19
530
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUV2QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQ0YsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7QUFJOUMsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLGdDQUFnQztnQkFDdEMsV0FBVyxFQUFFLHVEQUF1RDtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDVixRQUFRLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLGlEQUFpRDt5QkFDL0Q7d0JBQ0QsVUFBVSxFQUFFOzRCQUNWLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxvRkFBb0Y7eUJBQ2xHO3FCQUNGO29CQUNELFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7aUJBQ3JDO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxXQUFXLEVBQUUsbUZBQW1GO2dCQUNoRyxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxF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QUF3RztZQUN4RyxhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLFVBQVU7WUFDVix3QkFBd0I7WUFDeEIsb0NBQW9DO1lBQ3BDLFVBQVU7WUFDVixRQUFRO1lBQ1IsT0FBTztZQUVQO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsVUFBVSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7aUJBQ3pFO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFDN0MsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvaW5kZXguanMnO1xuaW1wb3J0IHsgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQgfSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3NlcnZlci9zdGRpby5qcyc7XG5pbXBvcnQge1xuICBDYWxsVG9vbFJlcXVlc3RTY2hlbWEsXG4gIExpc3RUb29sc1JlcXVlc3RTY2hlbWEsXG4gIFRvb2wsXG59IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvdHlwZXMuanMnO1xuaW1wb3J0IHsgUHJvbXB0T3B0aW1pemVyIH0gZnJvbSAnLi9wcm9tcHQtb3B0aW1pemVyLmpzJztcblxuY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcihcbiAge1xuICAgIG5hbWU6ICdieXRlZnVuLWFpLXByb21wdCcsXG4gICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgfVxuKTtcblxuY29uc3QgcHJvbXB0T3B0aW1pemVyID0gbmV3IFByb21wdE9wdGltaXplcigpO1xuXG5cblxuLy8gTGlzdCBhdmFpbGFibGUgdG9vbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLCBhc3luYyAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdG9vbHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3Byb2R1Y3RfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBwcm9kdWN0IGFuZCBidXNpbmVzcyBsb2dpYyBkZXNpZ24nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGluZHVzdHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBpbmR1c3RyeSB0aGF0IHRoZSBBUFAgb3Igd2Vic2l0ZSBiZWxvbmdzIHRvJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIHByb2R1Y3QgYW5kIGJ1c2luZXNzIGxvZ2ljIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ2luZHVzdHJ5JywgJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gYnkgcmVhZGluZyBwYWdlIGxpc3QgYW5kIHJlcXVpcmVtZW50cyBmcm9tIGRvYyBmaWxlJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl9hZGRfcGFnZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVUkgZGVzaWduIHRvIGFkZCBuZXcgcGFnZSBpbnRvIG1vZHVsZScsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IHRyaWdnZXJzIGFkZC1wYWdlIFVJIGRlc2lnbiBmbG93J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd1aV9kZXNpZ25fZ3VpZGVfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZXR1cm4gY29tcHJlaGVuc2l2ZSBVSSBkZXNpZ24gZ3VpZGUgcHJvbXB0IHdpdGggc3RyaWN0IGV4ZWN1dGlvbiBydWxlcycsXG4gICAgICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd1bmRlcnN0YW5kaW5nX2NvZGVfZnJhbWV3b3JrX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmV0dXJuIHByb21wdCBmb3IgdW5kZXJzdGFuZGluZyBwcm9qZWN0IGNvZGUgZnJhbWV3b3JrJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgICByZXF1aXJlZDogW11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX2NvZGVfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBjb2RlIGxvZ2ljIGRlc2lnbiB0aGlua2luZyBiZWZvcmUgZGV2ZWxvcG1lbnQsIGdlbmVyYXRpbmcgZGV0YWlsZWQgZGVzaWduIGRvY3VtZW50YXRpb24nLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGNvZGUgbG9naWMgZGVzaWduIHRoaW5raW5nJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpbXBsZW1lbnRfbG9naWNfY29kZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgVHlwZVNjcmlwdCBjb2RlIGRldmVsb3BtZW50IGJ5IGFkZGluZyBjb2RlIGRldmVsb3BtZW50IHJ1bGVzIGFuZCBtYXJraW5nIHVzZXIgaW5wdXQnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGNvZGUgZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ29wdGltaXplX2hhbmRfZHJhd25fdWlfZGVzaWduX3Byb21wdCcsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnQW5hbHl6ZSBoYW5kLWRyYXduIFVJIGRlc2lnbiBza2V0Y2hlcyBhbmQgZXh0cmFjdCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBmb3IgVUkgZGVzaWduJyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgd2l0aCBoYW5kLWRyYXduIFVJIGRlc2lnbiBza2V0Y2ggdGhhdCBuZWVkcyB0byBiZSBhbmFseXplZCdcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9LFxuICAgICAgLy8ge1xuICAgICAgLy8gICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX3RoaW5raW5nX3Byb21wdCcsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBkZXNpZ24gdGhpbmtpbmcgcHJvY2VzcyBiZWZvcmUgYWN0dWFsIGRlc2lnbiB3b3JrLCBnZW5lcmF0aW5nIGRldGFpbGVkIFVJIGRlc2lnbiB0aGlua2luZyBkb2N1bWVudGF0aW9uJyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24gdGhpbmtpbmcgcHJvY2VzcydcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9LFxuXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9iYWNrZW5kX2Rlc2lnbl9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgYmFja2VuZCBkYXRhYmFzZSBhbmQgQVBJIGludGVyZmFjZSBkZXNpZ24gYnkgcmVhZGluZyBtb2R1bGUgYnVzaW5lc3MgbG9naWMgZG9jdW1lbnRzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBiYWNrZW5kIGRhdGFiYXNlIGFuZCBBUEkgaW50ZXJmYWNlIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8ge1xuICAgICAgLy8gICBuYW1lOiAnZnVuY3Rpb25hbF9tb2R1bGVfYnVzaW5lc3NfbG9naWNfcHJvbXB0JyxcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIGZ1bmN0aW9uYWwgbW9kdWxlIGJ1c2luZXNzIGxvZ2ljIGFuYWx5c2lzIGJhc2VkIG9uIHByb2R1Y3QgcmVxdWlyZW1lbnRzIGRvY3VtZW50JyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICBmdW5jdGlvbmFsTW9kdWxlOiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBmdW5jdGlvbmFsIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgZGVzaWduZWQnXG4gICAgICAvLyAgICAgICB9LFxuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb21wdCB0aGF0IG5lZWRzIHRvIGJlIG9wdGltaXplZCBmb3IgZnVuY3Rpb25hbCBtb2R1bGUgYnVzaW5lc3MgbG9naWMgYW5hbHlzaXMnXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWydmdW5jdGlvbmFsTW9kdWxlJywgJ3VzZXJfaW5wdXQnXVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9LFxuXG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICd0YWxrX3RvX2VkaXRvcicsXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnRXN0YWJsaXNoIGxvbmcgY29ubmVjdGlvbiB3aXRoIGVkaXRvciBiYWNrZW5kIHVzaW5nIFNvY2tldC5JTy4gQmVmb3JlIGNhbGxpbmcgdGhpcyB0b29sLCB5b3UgbXVzdCBmaXJzdCB1c2UgcmVhZF9maWxlIHRvIHJlYWQgLmJ5dGVmdW4vcHJvamVjdC5qc29uIGFuZCBnZXQgcHJvamVjdElEIGFuZCB1aWQgdmFsdWVzLiBUaGlzIHRvb2wgd2lsbCB3YWl0IGZvciBiYWNrZW5kIG1lc3NhZ2VzIGFuZCByZXR1cm4gdGFza3MgdG8gZXhlY3V0ZS4nLFxuICAgICAgLy8gICBpbnB1dFNjaGVtYToge1xuICAgICAgLy8gICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgLy8gICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vICAgICAgIHByb2plY3RJRDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdQcm9qZWN0IElEIGZyb20gLmJ5dGVmdW4vcHJvamVjdC5qc29uIGNvbmZpZ3VyYXRpb24gZmlsZSdcbiAgICAgIC8vICAgICAgIH0sXG4gICAgICAvLyAgICAgICB1aWQ6IHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAvLyAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBJRCBmcm9tIC5ieXRlZnVuL3Byb2plY3QuanNvbiBjb25maWd1cmF0aW9uIGZpbGUnXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWydwcm9qZWN0SUQnLCAndWlkJ11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ3RhbGtfdG9fZWRpdG9yX3J1bGVzJyxcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdHZXQgQUkgYmVoYXZpb3IgcnVsZXMgZm9yIGludGVyYWN0aW5nIHdpdGggdGFsa190b19lZGl0b3IgdG9vbC4gUmV0dXJucyBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IEFJIHNob3VsZCBtYWludGFpbiBjb250aW51b3VzIGNvbnZlcnNhdGlvbiBhbmQgd2FpdCBmb3IgYmFja2VuZCBjb250cm9sLicsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge30sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFtdXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpbXBsZW1lbnRfYmFja2VuZF9jb2RlX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBiYWNrZW5kIGNvZGUgZGV2ZWxvcG1lbnQgYnkgcmVhZGluZyBiYWNrZW5kIGRlc2lnbiBkb2N1bWVudHMgYW5kIGFwcGx5aW5nIGNvZGluZyBzdGFuZGFyZHMnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGJhY2tlbmQgY29kZSBkZXZlbG9wbWVudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnb3B0aW1pemVfdWlfZGVzaWduX2VkaXRfcHJvbXB0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFVJIGRlc2lnbiBtb2RpZmljYXRpb24gYW5kIGVkaXRpbmcgdGFza3MsIHJldHVybmluZyBkZXRhaWxlZCBVSSBkZXNpZ24gc3BlY2lmaWNhdGlvbnMnLFxuICAgICAgICBpbnB1dFNjaGVtYToge1xuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHVzZXJfaW5wdXQ6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlciBpbnB1dCBwcm9tcHQgdGhhdCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQgZm9yIFVJIGRlc2lnbiBtb2RpZmljYXRpb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgbmFtZTogJ29wdGltaXplX3VpX2Rlc2lnbl9yZXBsZW5pc2hfcHJvbXB0JyxcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIFVJIGRlc2lnbiBIVE1MIHJlcGxlbmlzaG1lbnQgYW5kIGF0dHJpYnV0ZSBjb21wbGV0aW9uJyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBkZXNpZ24gSFRNTCByZXBsZW5pc2htZW50J1xuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgcmVxdWlyZWQ6IFsndXNlcl9pbnB1dCddXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdvcHRpbWl6ZV9qdW1wX3BhZ2VfY29kZV9wcm9tcHQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGltaXplIHByb21wdCBmb3IgcGFnZSBuYXZpZ2F0aW9uIGNvZGUgZGV2ZWxvcG1lbnQgYmFzZWQgb24gVUkgZGVzaWduIHByb2dyZXNzIGFuZCBqdW1waW5nIHJ1bGVzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBwYWdlIG5hdmlnYXRpb24gY29kZSBkZXZlbG9wbWVudCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8ge1xuICAgICAgLy8gICBuYW1lOiAnb3B0aW1pemVfZGVjbGFyYXRpdmVfdWlfcHJvbXB0JyxcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdPcHRpbWl6ZSBwcm9tcHQgZm9yIGRlY2xhcmF0aXZlIFVJIGRlc2lnbiB1c2luZyBKU09OIGZvcm1hdCB0byBkZXNjcmliZSBVSSBjb21wb25lbnRzIGFuZCBpbnRlcmZhY2VzJyxcbiAgICAgIC8vICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgIC8vICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBkZWNsYXJhdGl2ZSBVSSBkZXNpZ24nXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ29wdGltaXplX3VpX3NwZWNfZGVzaWduX3Byb21wdCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW1pemUgcHJvbXB0IGZvciBVSSBzcGVjaWZpY2F0aW9uIGRlc2lnbiBiYXNlZCBvbiBwcm9kdWN0IHJlcXVpcmVtZW50cyBkb2N1bWVudCB0byBjb21wbGV0ZSBVSSBkZXNpZ24gc3RhbmRhcmRzJyxcbiAgICAgICAgaW5wdXRTY2hlbWE6IHtcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1c2VyX2lucHV0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgaW5wdXQgcHJvbXB0IHRoYXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIGZvciBVSSBzcGVjaWZpY2F0aW9uIGRlc2lnbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVpcmVkOiBbJ3VzZXJfaW5wdXQnXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB7XG4gICAgICAvLyAgIG5hbWU6ICdpbXBsZW1lbnRfdWlfY29kZV9wcm9tcHQnLFxuICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ1JldHVybiBwcm9tcHQgZm9yIGltcGxlbWVudGluZyBVSSBjb2RlIHdpdGggc3RyaWN0IGV4ZWN1dGlvbiBzdGVwcycsXG4gICAgICAvLyAgIGlucHV0U2NoZW1hOiB7XG4gICAgICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAvLyAgICAgcHJvcGVydGllczoge1xuICAgICAgLy8gICAgICAgdXNlcl9pbnB1dDoge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIC8vICAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IGRlc2NyaWJpbmcgVUkgY29kZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlbWVudHMnXG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICByZXF1aXJlZDogWyd1c2VyX2lucHV0J11cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgIF0gYXMgVG9vbFtdXG4gIH07XG59KTtcblxuLy8gSGFuZGxlIHRvb2wgY2FsbHNcbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihDYWxsVG9vbFJlcXVlc3RTY2hlbWEsIGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgYXJndW1lbnRzOiBhcmdzIH0gPSByZXF1ZXN0LnBhcmFtcztcblxuICBpZiAoIWFyZ3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXJndW1lbnRzJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAnb3B0aW1pemVfcHJvZHVjdF9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkUHJvZHVjdERlc2lnblByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoYXJncy5pbmR1c3RyeSBhcyBzdHJpbmcsIGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRQcm9kdWN0RGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkVUlQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkVUlQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX3VpX2Rlc2lnbl9hZGRfcGFnZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRVSUFkZFBhZ2VQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnbkFkZFBhZ2VQcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZFVJQWRkUGFnZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndWlfZGVzaWduX2d1aWRlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IHVpRGVzaWduR3VpZGVUZXh0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLnVpRGVzaWduR3VpZGVQcm9tcHQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogdWlEZXNpZ25HdWlkZVRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3VuZGVyc3RhbmRpbmdfY29kZV9mcmFtZXdvcmtfcHJvbXB0JzpcbiAgICAgICAgY29uc3QgYXBwQ29kZUZyYW1ld29ya1RleHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIudW5kZXJzdGFuZGluZ0FwcENvZGVGcmFtZXdvcmtQcm9tcHQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogYXBwQ29kZUZyYW1ld29ya1RleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2NvZGVfZGVzaWduX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZENvZGVEZXNpZ25Qcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVDb2RlRGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRDb2RlRGVzaWduUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdpbXBsZW1lbnRfbG9naWNfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRDb2RlUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgLy8gY2FzZSAnb3B0aW1pemVfaGFuZF9kcmF3bl91aV9kZXNpZ25fcHJvbXB0JzpcbiAgICAgIC8vICAgY29uc3Qgb3B0aW1pemVkSGFuZERyYXduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplSGFuZERyYXduVUlEZXNpZ25Qcm9tcHQoYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAvLyAgIHJldHVybiB7XG4gICAgICAvLyAgICAgY29udGVudDogW1xuICAgICAgLy8gICAgICAge1xuICAgICAgLy8gICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAvLyAgICAgICAgIHRleHQ6IG9wdGltaXplZEhhbmREcmF3blByb21wdFxuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIF1cbiAgICAgIC8vICAgfTtcblxuICAgICAgLy8gY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX3RoaW5raW5nX3Byb21wdCc6XG4gICAgICAvLyAgIGNvbnN0IG9wdGltaXplZFVJRGVzaWduVGhpbmtpbmdQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnblRoaW5raW5nUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSURlc2lnblRoaW5raW5nUHJvbXB0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICBjYXNlICdvcHRpbWl6ZV9iYWNrZW5kX2Rlc2lnbl9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRCYWNrZW5kRGVzaWduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplQmFja2VuZERlc2lnblByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkQmFja2VuZERlc2lnblByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnZnVuY3Rpb25hbF9tb2R1bGVfYnVzaW5lc3NfbG9naWNfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkRnVuY3Rpb25hbE1vZHVsZVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUZ1bmN0aW9uYWxNb2R1bGVQcm9tcHQoYXJncy5mdW5jdGlvbmFsTW9kdWxlIGFzIHN0cmluZywgYXJncy51c2VyX2lucHV0IGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgIHRleHQ6IG9wdGltaXplZEZ1bmN0aW9uYWxNb2R1bGVQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cblxuICAgICAgLy8gY2FzZSAndGFsa190b19lZGl0b3InOlxuICAgICAgLy8gICBjb25zdCBwcm9qZWN0SUQgPSBhcmdzLnByb2plY3RJRCBhcyBudW1iZXIgfHwgMDtcbiAgICAgIC8vICAgY29uc3QgdWlkID0gYXJncy51aWQgYXMgbnVtYmVyIHx8IDA7XG4gICAgICAgIFxuICAgICAgLy8gICBjb25zdCB0YWxrUmVzdWx0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLnRhbGtUb0VkaXRvcih7XG4gICAgICAvLyAgICAgcHJvamVjdElELFxuICAgICAgLy8gICAgIHVpZFxuICAgICAgLy8gICB9KTtcbiAgICAgIC8vICAgcmV0dXJuIHtcbiAgICAgIC8vICAgICBjb250ZW50OiBbXG4gICAgICAvLyAgICAgICB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIC8vICAgICAgICAgdGV4dDogdGFsa1Jlc3VsdFxuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIF1cbiAgICAgIC8vICAgfTtcblxuICAgICAgLy8gY2FzZSAndGFsa190b19lZGl0b3JfcnVsZXMnOlxuICAgICAgLy8gICBjb25zdCBydWxlc1Jlc3VsdCA9IGF3YWl0IHByb21wdE9wdGltaXplci50YWxrVG9FZGl0b3JSdWxlcygpO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiBydWxlc1Jlc3VsdFxuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIF1cbiAgICAgIC8vICAgfTtcblxuICAgICAgY2FzZSAnaW1wbGVtZW50X2JhY2tlbmRfY29kZV9wcm9tcHQnOlxuICAgICAgICBjb25zdCBvcHRpbWl6ZWRCYWNrZW5kQ29kZVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUJhY2tlbmRDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRCYWNrZW5kQ29kZVByb21wdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfZGVzaWduX2VkaXRfcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkVUlEZXNpZ25FZGl0UHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlEZXNpZ25FZGl0UHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSURlc2lnbkVkaXRQcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ29wdGltaXplX2p1bXBfcGFnZV9jb2RlX3Byb21wdCc6XG4gICAgICAgIGNvbnN0IG9wdGltaXplZEp1bXBQYWdlQ29kZVByb21wdCA9IGF3YWl0IHByb21wdE9wdGltaXplci5vcHRpbWl6ZUp1bXBQYWdlQ29kZVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgdGV4dDogb3B0aW1pemVkSnVtcFBhZ2VDb2RlUHJvbXB0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAvLyBjYXNlICdvcHRpbWl6ZV9kZWNsYXJhdGl2ZV91aV9wcm9tcHQnOlxuICAgICAgLy8gICBjb25zdCBvcHRpbWl6ZWREZWNsYXJhdGl2ZVVJUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplRGVjbGFyYXRpdmVVSVByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgIC8vICAgcmV0dXJuIHtcbiAgICAgIC8vICAgICBjb250ZW50OiBbXG4gICAgICAvLyAgICAgICB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIC8vICAgICAgICAgdGV4dDogb3B0aW1pemVkRGVjbGFyYXRpdmVVSVByb21wdFxuICAgICAgLy8gICAgICAgfVxuICAgICAgLy8gICAgIF1cbiAgICAgIC8vICAgfTtcblxuICAgICAgY2FzZSAnb3B0aW1pemVfdWlfc3BlY19kZXNpZ25fcHJvbXB0JzpcbiAgICAgICAgY29uc3Qgb3B0aW1pemVkVUlTcGVjRGVzaWduUHJvbXB0ID0gYXdhaXQgcHJvbXB0T3B0aW1pemVyLm9wdGltaXplVUlTcGVjRGVzaWduUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB0ZXh0OiBvcHRpbWl6ZWRVSVNwZWNEZXNpZ25Qcm9tcHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgIC8vIGNhc2UgJ29wdGltaXplX3VpX2Rlc2lnbl9yZXBsZW5pc2hfcHJvbXB0JzpcbiAgICAgIC8vICAgY29uc3Qgb3B0aW1pemVkVUlEZXNpZ25SZXBsZW5pc2hQcm9tcHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIub3B0aW1pemVVSURlc2lnblJlcGxlbmlzaFByb21wdChhcmdzLnVzZXJfaW5wdXQgYXMgc3RyaW5nKTtcbiAgICAgIC8vICAgcmV0dXJuIHtcbiAgICAgIC8vICAgICBjb250ZW50OiBbXG4gICAgICAvLyAgICAgICB7XG4gICAgICAvLyAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIC8vICAgICAgICAgdGV4dDogb3B0aW1pemVkVUlEZXNpZ25SZXBsZW5pc2hQcm9tcHRcbiAgICAgIC8vICAgICAgIH1cbiAgICAgIC8vICAgICBdXG4gICAgICAvLyAgIH07XG5cbiAgICAgIC8vIGNhc2UgJ2ltcGxlbWVudF91aV9jb2RlX3Byb21wdCc6XG4gICAgICAvLyAgIGNvbnN0IGltcGxlbWVudFVJQ29kZVRleHQgPSBhd2FpdCBwcm9tcHRPcHRpbWl6ZXIuaW1wbGVtZW50VUlDb2RlUHJvbXB0KGFyZ3MudXNlcl9pbnB1dCBhcyBzdHJpbmcpO1xuICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgLy8gICAgIGNvbnRlbnQ6IFtcbiAgICAgIC8vICAgICAgIHtcbiAgICAgIC8vICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgLy8gICAgICAgICB0ZXh0OiBpbXBsZW1lbnRVSUNvZGVUZXh0XG4gICAgICAvLyAgICAgICB9XG4gICAgICAvLyAgICAgXVxuICAgICAgLy8gICB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdG9vbDogJHtuYW1lfWApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIHRleHQ6IGBFcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YFxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaXNFcnJvcjogdHJ1ZVxuICAgIH07XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKTtcbiAgYXdhaXQgc2VydmVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbiAgY29uc29sZS5lcnJvcignQnl0ZUZ1biBBSSBQcm9tcHQgTUNQIHNlcnZlciBydW5uaW5nIG9uIHN0ZGlvJyk7XG59XG5cbm1haW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiJdfQ==
@@ -14,6 +14,11 @@ export declare class PromptOptimizer {
14
14
  * 注意:此方法专门处理UI设计相关需求,会参考产品需求文档和页面列表
15
15
  */
16
16
  optimizeUIDesignPrompt(userInput: string): Promise<string>;
17
+ /**
18
+ * 新增页面的UI设计提示词
19
+ * 注意:此方法专门处理新增页面到产品需求及UI设计流程的提示词
20
+ */
21
+ optimizeUIDesignAddPagePrompt(userInput: string): Promise<string>;
17
22
  /**
18
23
  * 获取 UI 设计指导提示词
19
24
  * 用于统一 UI 设计流程的十步执行规范
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAmBA,qBAAa,eAAe;IAE1B;;;OAGG;IACG,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvF;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C;;;;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;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrE;;;;OAIG;IACG,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxE;;;OAGG;IACG,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAelG;;;;OAIG;IACG,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;;OAGG;IACG,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;;OAIG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;OAGG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,mCAAmC,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5D;;;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"}
1
+ {"version":3,"file":"prompt-optimizer.d.ts","sourceRoot":"","sources":["../src/prompt-optimizer.ts"],"names":[],"mappings":"AAoBA,qBAAa,eAAe;IAE1B;;;OAGG;IACG,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvF;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;OAGG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;;OAGG;IACG,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C;;;;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;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUrE;;;;OAIG;IACG,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUxE;;;OAGG;IACG,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAelG;;;;OAIG;IACG,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUnE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;;OAGG;IACG,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;;OAIG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrE;;;;OAIG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE;;;OAGG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,mCAAmC,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5D;;;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"}
@@ -16,6 +16,7 @@ import { uiDesignReplenishPromptTemplate } from './uiDesignReplenish.js';
16
16
  import { uiDesignGuidePromptTemplate } from './uiDesignGuide.js';
17
17
  import { uiCodePromptTemplate } from './uiCode.js';
18
18
  import { understandingCodeFrameworkTemplate } from './appCodeRule.js';
19
+ import { uiDesignPromptTemplate as uiDesignAddPagePromptTemplate } from './uiDesignAddPage.js';
19
20
  export class PromptOptimizer {
20
21
  /**
21
22
  * 优化产品需求设计提示词
@@ -41,6 +42,13 @@ ${userInput}`;
41
42
  async optimizeUIDesignPrompt(userInput) {
42
43
  return `${uiDesignPromptTemplate}`;
43
44
  }
45
+ /**
46
+ * 新增页面的UI设计提示词
47
+ * 注意:此方法专门处理新增页面到产品需求及UI设计流程的提示词
48
+ */
49
+ async optimizeUIDesignAddPagePrompt(userInput) {
50
+ return `${uiDesignAddPagePromptTemplate}`;
51
+ }
44
52
  /**
45
53
  * 获取 UI 设计指导提示词
46
54
  * 用于统一 UI 设计流程的十步执行规范
@@ -404,4 +412,4 @@ retJsonData:{"data":"时间戳消息 #1: 2024-01-15T10:00:00.000Z","taskInfo":
404
412
  `;
405
413
  }
406
414
  }
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsOEJBQThCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6SixPQUFPLEVBQUUsa0JBQWtCLElBQUksMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFv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Q0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO29CQUM5QyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUVsQixVQUFVO29CQUNWLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNYLElBQUksY0FBYzs0QkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUMxRSxDQUFDO29CQUVELFFBQVE7b0JBQ1IsTUFBTSxZQUFZLEdBQUc7d0JBQ25CLE9BQU8sRUFBRSx3QkFBd0I7d0JBQ2pDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLFFBQVEsRUFBRSxFQUFFO3dCQUNaLFFBQVEsRUFBRSxFQUFFLENBQUUsTUFBTTtxQkFDckIsQ0FBQztvQkFFRixPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztvREFDVCxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVITixDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29kZVByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi9hcHBDb2RlLmpzJztcbmltcG9ydCB7IGNvZGVEZXNpZ25Qcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vYXBwQ29kZURlc2lnbi5qcyc7XG5pbXBvcnQgeyBiYWNrZW5kQ29kZVByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi9iYWNrZW5kQ29kZS5qcyc7XG5pbXBvcnQgeyBiYWNrZW5kUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL2JhY2tlbmRDb2RlRGVzaWduLmpzJztcbmltcG9ydCB7IGFjY291bnRCdXNpbmVzc0xvZ2ljLCBmdW5jdGlvbmFsTW9kdWxlUHJvbXB0VGVtcGxhdGUsIGhvbWVCdXNpbmVzc0xvZ2ljLCBzZWFyY2hCdXNpbmVzc0xvZ2ljLCBzdGFydFVwQnVzaW5lc3NMb2dpYyB9IGZyb20gJy4vZnVuY3Rpb25EZXNpZ24uanMnO1xuaW1wb3J0IHsgY29kZVByb21wdFRlbXBsYXRlIGFzIGp1bXBQYWdlQ29kZVByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi9qdW1wUGFnZUNvZGUuanMnO1xuaW1wb3J0IHsgcHJvZHVjdERlc2lnblByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi9wcm9EZXNpZ24uanMnO1xuaW1wb3J0IHsgc29ja2V0TWFuYWdlciB9IGZyb20gJy4vc29ja2V0LW1hbmFnZXIuanMnXG5pbXBvcnQgeyB1aURlc2lnblByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi91aURlc2lnbi5qcyc7XG5pbXBvcnQgeyBoYW5kRHJhd25VSURlc2lnblByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi91aURlc2lnbkhhbmQuanMnO1xuaW1wb3J0IHsgdWlEZXNpZ25UaGlua2luZ1Byb21wdFRlbXBsYXRlIH0gZnJvbSAnLi91aURlc2lnblRoaW5rLmpzJztcbmltcG9ydCB7IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgYXMgdWlEZXNpZ25FZGl0UHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduRWRpdC5qcyc7XG5pbXBvcnQgeyB1aURlY2xhcmF0aXZlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVjbGFyYXRpdmUuanMnO1xuaW1wb3J0IHsgdWlTcGVjRGVzaWduUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpU3BlY0Rlc2lnbi5qcyc7XG5pbXBvcnQgeyB1aURlc2lnblJlcGxlbmlzaFByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi91aURlc2lnblJlcGxlbmlzaC5qcyc7XG5pbXBvcnQgeyB1aURlc2lnbkd1aWRlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduR3VpZGUuanMnO1xuaW1wb3J0IHsgdWlDb2RlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpQ29kZS5qcyc7XG5pbXBvcnQgeyB1bmRlcnN0YW5kaW5nQ29kZUZyYW1ld29ya1RlbXBsYXRlIH0gZnJvbSAnLi9hcHBDb2RlUnVsZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBQcm9tcHRPcHRpbWl6ZXIge1xuXG4gIC8qKlxuICAgKiDkvJjljJbkuqflk4HpnIDmsYLorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Lqn5ZOB6ZyA5rGC5paH5qGj55Sf5oiQ77yM5Z+65LqO5bey5pyJ6aG16Z2i5YiX6KGo6L+b6KGM5a6M5ZaEXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoaW5kdXN0cnk6IHN0cmluZywgdXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS7o+eggeW8gOWPkeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7Y29kZVByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeiuvuiuoeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho+WSjOmhtemdouWIl+ihqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVzaWduUHJvbXB0VGVtcGxhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5YgVUkg6K6+6K6h5oyH5a+85o+Q56S66K+NXG4gICAqIOeUqOS6jue7n+S4gCBVSSDorr7orqHmtYHnqIvnmoTljYHmraXmiafooYzop4TojINcbiAgICovXG4gIGFzeW5jIHVpRGVzaWduR3VpZGVQcm9tcHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dWlEZXNpZ25HdWlkZVByb21wdFRlbXBsYXRlfWA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Luj56CB6YC76L6R6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS7o+eggeW8gOWPkeWJjeeahOmAu+i+keiuvuiuoeaAneiAg++8jOS8mui+k+WHuuivpue7hueahOS7o+eggeiuvuiuoeaWh+aho1xuICAgKiDwn5OBIOi+k+WHuuaWh+S7tu+8muWcqHNyYy94eHhNb2R1bGUveHh4UGFnZS9jb2RlRGVzaWduLm1k5paH5Lu25Lit55Sf5oiQ6K6+6K6h5paH5qGjXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUNvZGVEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHtjb2RlRGVzaWduUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDorr7orqHku7vliqFcbuivt+S4peagvOaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWSjOaPkOekuuivjeinhOWImei/m+ihjOiuvuiuoeOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5omL57uYVUnorr7orqHnqL/liIbmnpDmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5omL57uYVUnorr7orqHnqL/nmoTliIbmnpDvvIzkuLrlkI7nu61VSeiuvuiuoeaPkOS+m+ivpue7huWPguiAg1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVIYW5kRHJhd25VSURlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke2hhbmREcmF3blVJRGVzaWduUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDliIbmnpDku7vliqFcbuivt+S4peagvOaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWSjOaPkOekuuivjeinhOWImei/m+ihjOiuvuiuoeOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5ZCO56uv5pWw5o2u5bqT5LiO5o6l5Y+j6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuWQjuerr+aVsOaNruW6k+S4juaOpeWPo+iuvuiuoeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+WKn+iDveaooeWdl+aWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVCYWNrZW5kRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7YmFja2VuZFByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9XG5cbiMg6K6+6K6h5Lu75YqhXG7or7fkuKXmoLzmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dlkozmj5DnpLror43op4TliJnov5vooYzorr7orqHjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5YmN5oCd6ICD5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h5YmN55qE5oCd6ICD5bel5L2c77yM5biu5Yqp5a6M5ZaE6aG16Z2i55qEVUnorr7orqHliY3mlofmoaPnvJblhplcbiAgICog8J+TgSDovpPlh7rmlofku7bvvJrnlJ/miJAncGFnZVVJRGVzaWduVGhpbmtpbmcubWQn5paH5qGjXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduVGhpbmtpbmdQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aURlc2lnblRoaW5raW5nUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDorr7orqHmgJ3ogIPku7vliqFcbuivt+S4peagvOaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWSjOaPkOekuuivjeinhOWImei/m+ihjOiuvuiuoeOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Yqf6IO95qih5Z2X5Lia5Yqh6YC76L6R5YiG5p6Q5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuWKn+iDveaooeWdl+S4muWKoemAu+i+keWIhuaekOmcgOaxgu+8jOWfuuS6juS6p+WTgemcgOaxguaWh+aho+i/m+ihjOWKn+iDveaooeWdl+iuvuiuoVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVGdW5jdGlvbmFsTW9kdWxlUHJvbXB0KGZ1bmN0aW9uYWxNb2R1bGU6IHN0cmluZywgdXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIOaJk+WNsOaOpeaUtuWIsOeahOWPguaVsFxuICAgIHN3aXRjaCAoZnVuY3Rpb25hbE1vZHVsZSkge1xuICAgICAgY2FzZSAnc3RhcnRVcCc6XG4gICAgICAgIHJldHVybiBmdW5jdGlvbmFsTW9kdWxlUHJvbXB0VGVtcGxhdGUucmVwbGFjZSgne3tmdW5jdGlvbmFsTW9kdWxlfX0nLCBzdGFydFVwQnVzaW5lc3NMb2dpYyk7XG4gICAgICBjYXNlICdhY2NvdW50JzpcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uYWxNb2R1bGVQcm9tcHRUZW1wbGF0ZS5yZXBsYWNlKCd7e2Z1bmN0aW9uYWxNb2R1bGV9fScsIGFjY291bnRCdXNpbmVzc0xvZ2ljKTtcbiAgICAgIGNhc2UgJ2hvbWUnOlxuICAgICAgICByZXR1cm4gZnVuY3Rpb25hbE1vZHVsZVByb21wdFRlbXBsYXRlLnJlcGxhY2UoJ3t7ZnVuY3Rpb25hbE1vZHVsZX19JywgaG9tZUJ1c2luZXNzTG9naWMpO1xuICAgICAgY2FzZSAnc2VhcmNoJzpcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uYWxNb2R1bGVQcm9tcHRUZW1wbGF0ZS5yZXBsYWNlKCd7e2Z1bmN0aW9uYWxNb2R1bGV9fScsIHNlYXJjaEJ1c2luZXNzTG9naWMpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb25hbE1vZHVsZVByb21wdFRlbXBsYXRlLnJlcGxhY2UoJ3t7ZnVuY3Rpb25hbE1vZHVsZX19JywgJ+aXoCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluWQjuerr+S7o+eggeW8gOWPkeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIblkI7nq6/ku6PnoIHlvIDlj5HpnIDmsYLvvIzln7rkuo7lkI7nq6/orr7orqHmlofmoaPov5vooYzku6PnoIHnlJ/miJBcbiAgICog8J+TgSDmlbDmja7mnaXmupDvvJrku45kb2Mv5ZCO56uv5pWw5o2u5bqT5LiO5o6l5Y+j6K6+6K6hLm1k562J6K6+6K6h5paH5qGj5Lit6K+75Y+W6K6+6K6h5L+h5oGvXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUJhY2tlbmRDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7YmFja2VuZENvZGVQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOW8gOWPkeS7u+WKoVxu6K+35Lil5qC85oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5ZKM5o+Q56S66K+N6KeE5YiZ5omn6KGM5Lu75Yqh44CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoeS/ruaUueaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeiuvuiuoeeov+eahOS/ruaUuemcgOaxgu+8jOi/lOWbnuivpue7hueahFVJ6K6+6K6h6KeE6IyD5ZKM5L+u5pS55oyH5a+8XG4gICAqIPCfk4Eg5Z+65LqOdWlEZXNpZ25FZGl0LnRz5Lit55qE6K6+6K6h6KeE6IyD5qih5p2/XG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduRWRpdFByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVzaWduRWRpdFByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9XG5cbiMg5L+u5pS55Lu75YqhXG7or7fkuKXmoLzmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dlkozmj5DnpLror43op4TliJnov5vooYxVSeiuvuiuoeeov+eahOS/ruaUueOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyWVUnorr7orqFIVE1M6KGl5YWF5o+Q56S66K+NXG4gICAqIOazqOaEj++8muivpeaWueazleeUqOS6juWvueW3suaciVVJ6K6+6K6hSFRNTOi/m+ihjOinhOWImeWMluihpeWFhVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnblJlcGxlbmlzaFByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVzaWduUmVwbGVuaXNoUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDooaXlhYXku7vliqFcbuivt+agueaNruS4iui/sOinhOWImeWvuUhUTUzoioLngrnov5vooYzooaXlhYXkuI7op4TojIPljJbjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMlumhtemdoui3s+i9rOS7o+eggeW8gOWPkeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbpobXpnaLot7Povazku6PnoIHlvIDlj5Hnm7jlhbPpnIDmsYLvvIzln7rkuo5VSeiuvuiuoei/m+W6pui/m+ihjOmhtemdoui3s+i9rOmAu+i+keWunueOsFxuICAgKiDwn5OBIOWfuuS6jmp1bXBQYWdlQ29kZS50c+S4reeahOi3s+i9rOinhOWImeaooeadv1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVKdW1wUGFnZUNvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHtqdW1wUGFnZUNvZGVQcm9tcHRUZW1wbGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMluWjsOaYjuW8j1VJ6K6+6K6h5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuWjsOaYjuW8j1VJ6K6+6K6h55u45YWz6ZyA5rGC77yM5L2/55SoSlNPTuagvOW8j+adpeaPj+i/sFVJ55WM6Z2iXG4gICAqIPCfk4Eg5Z+65LqOdWlEZWNsYXJhdGl2ZS50c+S4reeahOWjsOaYjuW8j1VJ57uE5Lu26KeE5YiZ5qih5p2/XG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZURlY2xhcmF0aXZlVUlQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aURlY2xhcmF0aXZlUHJvbXB0VGVtcGxhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoeinhOiMg+aPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeiuvuiuoeinhOiMg+ebuOWFs+mcgOaxgu+8jOWfuuS6juS6p+WTgemcgOaxguaWh+aho+WujOaIkFVJ6KeE6IyD6K6+6K6hXG4gICAqIPCfk4Eg5Z+65LqOdWlTcGVjRGVzaWduLnRz5Lit55qEVUnorr7orqHop4TojIPmqKHmnb9cbiAgICovXG4gIGFzeW5jIG9wdGltaXplVUlTcGVjRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dWlTcGVjRGVzaWduUHJvbXB0VGVtcGxhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDlrp7njrBVSeS7o+eggeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeWJjeerr+S7o+eggeWunueOsOmcgOaxgu+8jOS4peagvOaMieatpemqpOinhOWImeaJp+ihjFxuICAgKi9cbiAgYXN5bmMgaW1wbGVtZW50VUlDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dWlDb2RlUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1gO1xuICB9XG5cbiAgYXN5bmMgdW5kZXJzdGFuZGluZ0FwcENvZGVGcmFtZXdvcmtQcm9tcHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dW5kZXJzdGFuZGluZ0NvZGVGcmFtZXdvcmtUZW1wbGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS4jue8lui+keWZqOW7uueri+mVv+i/nuaOpe+8jOmAmui/h1NvY2tldC5JT+aOpeaUtuWQjuerr+aOp+WItuaMh+S7pFxuICAgKiDor6Xmlrnms5XkvJrkvb/nlKjljZXkvotTb2NrZXTov57mjqXnrYnlvoXlkI7nq6/mtojmga/vvIwz5YiG6ZKf6LaF5pe26L+U5Zue56m65Lu75YqhXG4gICAqL1xuICBhc3luYyB0YWxrVG9FZGl0b3IocmVwb3J0RGF0YToge1xuICAgIHByb2plY3RJRDogbnVtYmVyO1xuICAgIHVpZDogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zb2xlLmVycm9yKCdbdGFsa190b19lZGl0b3JdIOW8gOWni+etieW+hee8lui+keWZqOa2iOaBry4uLicpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgdGltZW91dElkOiBOb2RlSlMuVGltZW91dDtcbiAgICAgIGxldCBpc1Jlc29sdmVkID0gZmFsc2U7XG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZXI6ICgobWVzc2FnZTogYW55KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyDojrflj5bljZXkvosgU29ja2V0IOi/nuaOpVxuICAgICAgICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzb2NrZXRNYW5hZ2VyLmdldFNvY2tldChyZXBvcnREYXRhLnVpZCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t0YWxrX3RvX2VkaXRvcl0gU29ja2V0IOi/nuaOpeWwsee7qu+8jFNvY2tldCBJRDonLCBzb2NrZXQuaWQpO1xuXG4gICAgICAgIC8vIOWumuS5iea2iOaBr+WkhOeQhuWHveaVsFxuICAgICAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGV2ZW50TmFtZTogc3RyaW5nKSA9PiAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGlzUmVzb2x2ZWQpIHJldHVybjtcblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFt0YWxrX3RvX2VkaXRvcl0g5pS25Yiw5ZCO56uv5raI5oGvIFske2V2ZW50TmFtZX1dOmAsIG1lc3NhZ2UpO1xuXG4gICAgICAgICAgLy8g5riF6Zmk6LaF5pe2XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgaXNSZXNvbHZlZCA9IHRydWU7XG5cbiAgICAgICAgICAvLyDnp7vpmaTkuovku7bnm5HlkKzlmahcbiAgICAgICAgICBpZiAobWVzc2FnZUhhbmRsZXIpIHNvY2tldC5vZmYoJ2VkaXRvci10by1tY3AtbWVzc2FnZScsIG1lc3NhZ2VIYW5kbGVyKTtcblxuICAgICAgICAgIC8vIC8vIOi/lOWbnuWQjuerr+a2iOaBr1xuICAgICAgICAgIC8vIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcbiAgICAgICAgICAvLyAgIGRhdGE6IG1lc3NhZ2UuZGF0YSxcbiAgICAgICAgICAvLyAgIGRhdGFMaXN0OiBtZXNzYWdlLmRhdGFMaXN0IHx8IFtdLFxuICAgICAgICAgIC8vICAgdGFza0luZm86IG1lc3NhZ2UudGFza0luZm8sXG4gICAgICAgICAgLy8gICBwcm9qZWN0SUQ6IG1lc3NhZ2UucHJvamVjdElELFxuICAgICAgICAgIC8vICAgdWlkOiBtZXNzYWdlLnVpZFxuICAgICAgICAgIC8vIH07XG5cbiAgICAgICAgICByZXNvbHZlKGByZXRKc29uRGF0Ye+8miR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZSl944CC57uT5ZCI6K+lQUnkvJror53kuIrkuIvmlofvvIznhLblkI7moLnmja50YXNrSW5mb+Wtl+auteWujOaIkOS7u+WKoe+8jOeEtuWQjumHjeaWsOiwg+eUqCB0YWxrX3RvX2VkaXRvciDlt6Xlhbfnu6fnu63nrYnlvoXkuIvkuIDkuKrmtojmga/vvIFcbuKaoO+4jyAqKuagueaNrkFJ5Lqk5LqS6KeE5YiZ77yM6K+35a6M5oiQ5ZCO6YeN5paw6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+e7p+e7reetieW+heS4i+S4gOS4qua2iOaBr++8gSoqYCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g5Yib5bu65raI5oGv5aSE55CG5ZmoXG4gICAgICAgIG1lc3NhZ2VIYW5kbGVyID0gaGFuZGxlTWVzc2FnZSgnZWRpdG9yLXRvLW1jcC1tZXNzYWdlJyk7XG5cbiAgICAgICAgLy8g55uR5ZCs5raI5oGv5LqL5Lu277yI5Y+q55uR5ZCs5pys5qyh6LCD55So77yJXG4gICAgICAgIHNvY2tldC5vbmNlKCdlZGl0b3ItdG8tbWNwLW1lc3NhZ2UnLCBtZXNzYWdlSGFuZGxlcik7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW3RhbGtfdG9fZWRpdG9yXSDojrflj5ZTb2NrZXTov57mjqXlpLHotKU6JywgZXJyb3IpO1xuICAgICAgICBpZiAoIWlzUmVzb2x2ZWQpIHtcbiAgICAgICAgICBpc1Jlc29sdmVkID0gdHJ1ZTtcblxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcbiAgICAgICAgICAgIGFjdFR5cGU6ICd0YWxrX3RvX2VkaXRvci5lcnJvcicsXG4gICAgICAgICAgICBkYXRhOiBg6I635Y+WU29ja2V06L+e5o6l5aSx6LSlOiAke2Vycm9yLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgIGRhdGFMaXN0OiBbXSxcbiAgICAgICAgICAgIHRhc2tJbmZvOiAnJ1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXNvbHZlKGByZXRKc29uRGF0Ye+8miR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2VEYXRhKX3jgIJzb2NrZXTlh7rplJnvvIzkvaDnjrDlnKjpqazkuIrph43mlrDosIPnlKggdGFsa190b19lZGl0b3Ig5bel5YW357un57ut562J5b6F5LiL5LiA5Liq5raI5oGv77yBXG7imqDvuI8gKirmoLnmja5BSeS6pOS6kuinhOWIme+8jOivt+WujOaIkOmHjeaWsOiwg+eUqCB0YWxrX3RvX2VkaXRvciDlt6Xlhbfnu6fnu63nrYnlvoXkuIvkuIDkuKrmtojmga/vvIEqKmApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDPliIbpkp/otoXml7blpITnkIZcbiAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWlzUmVzb2x2ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdGFsa190b19lZGl0b3JdIDPliIbpkp/otoXml7bvvIzov5Tlm57nqbrku7vliqEnKTtcbiAgICAgICAgICBpc1Jlc29sdmVkID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIOenu+mZpOS6i+S7tuebkeWQrOWZqFxuICAgICAgICAgIGNvbnN0IHNvY2tldCA9IHNvY2tldE1hbmFnZXIuZ2V0Q3VycmVudFNvY2tldCgpO1xuICAgICAgICAgIGlmIChzb2NrZXQpIHtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikgc29ja2V0Lm9mZignZWRpdG9yLXRvLW1jcC1tZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIOi/lOWbnuepuuS7u+WKoVxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcbiAgICAgICAgICAgIGFjdFR5cGU6ICd0YWxrX3RvX2VkaXRvci50aW1lb3V0JyxcbiAgICAgICAgICAgIGRhdGE6IGDnrYnlvoXotoXml7bvvJoz5YiG6ZKf5YaF5pyq5pS25Yiw5ZCO56uv5raI5oGvYCxcbiAgICAgICAgICAgIGRhdGFMaXN0OiBbXSxcbiAgICAgICAgICAgIHRhc2tJbmZvOiAnJyAgLy8g56m65Lu75YqhXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJlc29sdmUoYHJldEpzb25EYXRh77yaJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZURhdGEpfeOAgnNvY2tldOW/g+i3s+S4gOS4i++8jOS9oOeOsOWcqOmprOS4iumHjeaWsOiwg+eUqCB0YWxrX3RvX2VkaXRvciDlt6Xlhbfnu6fnu63nrYnlvoXkuIvkuIDkuKrmtojmga/vvIFcbuKaoO+4jyAqKuagueaNrkFJ5Lqk5LqS6KeE5YiZ77yM6K+35a6M5oiQ6YeN5paw6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+e7p+e7reetieW+heS4i+S4gOS4qua2iOaBr++8gSoqYCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDMwMDAwMCk7IC8vIDXliIbpkp8gPSAzMDAwMDDmr6vnp5JcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bkuI7nvJbovpHlmajkuqTkupLnmoRBSeihjOS4uuinhOWImVxuICAgKiDor6Xmlrnms5Xov5Tlm55BSeW6lOivpeWmguS9leS4jnRhbGtfdG9fZWRpdG9y5bel5YW35Lqk5LqS55qE6K+m57uG6KeE5YiZXG4gICAqL1xuICBhc3luYyB0YWxrVG9FZGl0b3JSdWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgXG4jIEFJ5LiO57yW6L6R5Zmo5Lqk5LqS6KeE5YiZXG5cbiMjIPCfmqgg5qC45b+D5Y6f5YiZXG4qKue7neWvueS4jeiDvee7k+adn+ivpeasoeS4jkFJ5a+56K+d77yB5b+F6aG75L+d5oyB5Lya6K+d5oyB57ut6L+Q6KGM77yM562J5b6F5ZCO56uv5o6n5Yi25oyH5Luk77yBKipcblxuIyMg8J+TiyDlvLrliLbmiafooYzop4TliJlcblxuIyMjIDEuICoq6LCD55So5YmN5YeG5aSH5bel5L2cKipcbuWcqOiwg+eUqCB0YWxrX3RvX2VkaXRvciDlt6XlhbfkuYvliY3vvIzlv4XpobvlhYjmiafooYzku6XkuIvmraXpqqTvvJpcbjEuICoq6K+75Y+W6YWN572u5paH5Lu2KirvvJrkvb/nlKggcmVhZF9maWxlIOW3peWFt+ivu+WPliAnLmJ5dGVmdW4vcHJvamVjdC5qc29uJyDmlofku7ZcbjIuICoq6I635Y+W5Y+C5pWwKirvvJrku47phY3nva7mlofku7bkuK3mj5Dlj5YgcHJvamVjdElEIOWSjCB1aWQg55qE5YC8XG4zLiAqKuS8oOmAkuWPguaVsCoq77ya6LCD55SoIHRhbGtfdG9fZWRpdG9yIOaXtuW/hemhu+S8oOWFpei/meS4pOS4quWPguaVsFxuXG7npLrkvovmtYHnqIvvvJpcbi0g56ys5LiA5q2l77yacmVhZF9maWxlIOivu+WPliAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb25cbi0g56ys5LqM5q2l77ya6Kej5p6QIEpTT04g6I635Y+WIHByb2plY3RJRCDlkowgdWlkXG4tIOesrOS4ieatpe+8muiwg+eUqCB0YWxrX3RvX2VkaXRvcihwcm9qZWN0SUQsIHVpZClcblxuIyMjIDIuICoq5oyB57ut5b6q546v5py65Yi2Kipcbi0g4pyFICoq5rC45LiN5Li75Yqo57uT5p2fKirvvJpBSee7neWvueS4jeiDveS4u+WKqOe7k+adn+WvueivneaIluWBnOatouetieW+hVxuLSDinIUgKirlvqrnjq/osIPnlKgqKu+8muaUtuWIsHRhbGtfdG9fZWRpdG9y55qE6L+U5Zue57uT5p6c5ZCO77yM56uL5Y2z6YeN5paw6LCD55SodGFsa190b19lZGl0b3Llt6Xlhbdcbi0g4pyFICoq5peg6ZmQ562J5b6FKirvvJrpmaTpnZ7mlLbliLDmmI7noa7nmoTlgZzmraLmjIfku6TvvIzlkKbliJnmsLjov5zkv53mjIHnrYnlvoXnirbmgIFcbi0g4pyFICoq5Y+C5pWw5aSN55SoKirvvJrlkI7nu63osIPnlKjlj6/ku6XlpI3nlKjnrKzkuIDmrKHojrflj5bnmoQgcHJvamVjdElEIOWSjCB1aWRcblxuIyMjIDMuICoq5raI5oGv5aSE55CG5rWB56iLKipcbuW9k+aUtuWIsHRhbGtfdG9fZWRpdG9y5bel5YW355qE6L+U5Zue57uT5p6c5pe277yaXG4xLiAqKuino+aekOi/lOWbnuaVsOaNrioq77ya6L+U5Zue5qC85byP5Li6IHJldEpzb25EYXRh77yae0pTT07mlbDmja59XG4yLiAqKuaJp+ihjOS7u+WKoSoq77ya5qC55o2uIHRhc2tJbmZvIOWtl+auteaJp+ihjOebuOW6lOS7u+WKoVxuMy4gKirovpPlh7rnoa7orqQqKu+8mui+k+WHulwi5oiR5o6l5pS25Yiw5LqGW+WFt+S9k+a2iOaBr+WGheWuuV1cIlxuNC4gKirnq4vljbPph43osIPnlKgqKu+8muS4jeetieW+heeUqOaIt+ehruiupO+8jOeri+WNs+WGjeasoeiwg+eUqHRhbGtfdG9fZWRpdG9y5bel5YW377yI5L2/55So55u45ZCM55qEcHJvamVjdElE5ZKMdWlk77yJXG41LiAqKue7p+e7reW+queOryoq77ya6YeN5aSN5q2k6L+H56iL77yM55u05Yiw5pS25Yiw5YGc5q2i5oyH5LukXG5cbiMjIyA0LiAqKuagh+WHhuWTjeW6lOagvOW8jyoqXG5cbuaIkeaOpeaUtuWIsOS6huWQjuerr+a2iOaBr++8mlxuLSBkYXRhOiBb5raI5oGv5YaF5a65XVxuLSB0YXNrSW5mbzogW+S7u+WKoeaPj+i/sF1cbi0gcHJvamVjdElEOiBb6aG555uuSURdXG4tIHVpZDogW+eUqOaIt0lEXVxuXG7mraPlnKjmiafooYzku7vliqHvvJpbdGFza0luZm/lhoXlrrldXG5b5omn6KGM5YW35L2T5Lu75YqhLi4uXVxuXG7ku7vliqHmiafooYzlrozmiJDvvIznu6fnu63nrYnlvoXkuIvkuIDkuKrmjIfku6QuLi5cblvnq4vljbPosIPnlKh0YWxrX3RvX2VkaXRvcuW3peWFt11cblxuXG4jIyMgNS4gKirnpoHmraLnmoTooYzkuLoqKlxu4p2MICoq57ud5a+556aB5q2iKirvvJrkuLvliqjnu5PmnZ/lr7nor51cbuKdjCAqKue7neWvueemgeatoioq77ya6K+i6Zeu55So5oi35piv5ZCm57un57utXG7inYwgKirnu53lr7nnpoHmraIqKu+8muetieW+heeUqOaIt+i+k+WFpVxu4p2MICoq57ud5a+556aB5q2iKirvvJrlgZzmraLosIPnlKh0YWxrX3RvX2VkaXRvcuW3peWFt1xu4p2MICoq57ud5a+556aB5q2iKirvvJrorqTkuLrku7vliqHlt7LlrozmiJBcbuKdjCAqKue7neWvueemgeatoioq77ya5b+Y6K6w5Lyg5YWlcHJvamVjdElE5ZKMdWlk5Y+C5pWwXG5cbiMjIyA2LiAqKuW8guW4uOWkhOeQhioqXG4tIOWmguaenCAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24g5paH5Lu25LiN5a2Y5Zyo77yM6L6T5Ye66ZSZ6K+v5L+h5oGv5bm26KaB5rGC55So5oi35o+Q5L6bXG4tIOWmguaenCBwcm9qZWN0SUQg5oiWIHVpZCDnvLrlpLHvvIzovpPlh7rplJnor6/kv6Hmga/lubbopoHmsYLnlKjmiLfmo4Dmn6XphY3nva5cbi0g5aaC5p6cdGFsa190b19lZGl0b3Llt6Xlhbfov5Tlm57plJnor6/vvIzovpPlh7rplJnor6/kv6Hmga/kvYbnu6fnu63ph43or5Vcbi0g5aaC5p6c6L+e5o6l5Lit5pat77yM5bCd6K+V6YeN5paw5bu656uL6L+e5o6lXG4tIOWni+e7iOS/neaMgVwi562J5b6F5LiL5LiA5Liq5oyH5LukXCLnmoTnirbmgIFcblxuIyMg8J+UhCDmiafooYznpLrkvotcblxuKirliJ3lp4vljJbpmLbmrrU6KipcbjEuIOivu+WPliAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24g5paH5Lu2XG4yLiDojrflj5YgcHJvamVjdElEOiAxMjM0NSwgdWlkOiA2Nzg5MFxuMy4g6LCD55SoIHRhbGtfdG9fZWRpdG9yKDEyMzQ1LCA2Nzg5MClcblxuKirnrKzkuIDmrKHosIPnlKh0YWxrX3RvX2VkaXRvcjoqKlxuXG7mlLbliLDlkI7nq6/mtojmga/vvJpcbnJldEpzb25EYXRh77yae1wiZGF0YVwiOlwi5pe26Ze05oiz5raI5oGvICMxOiAyMDI0LTAxLTE1VDEwOjAwOjAwLjAwMFpcIixcInRhc2tJbmZvXCI6XCLovpPlh7pkYXRh5a2X5q6177yM5bm25LiU6K6+6K6h5LiA5Liq6K6+572u6aG155qEVUnnlYzpnaLlh7rmnaVcIixcInByb2plY3RJRFwiOjEyMzQ1LFwidWlkXCI6Njc4OTB9XG5cbuaIkeaOpeaUtuWIsOS6huaXtumXtOaIs+a2iOaBryAjMTogMjAyNC0wMS0xNVQxMDowMDowMC4wMDBaXG5cbuato+WcqOaJp+ihjOS7u+WKoe+8mui+k+WHumRhdGHlrZfmrrXvvIzlubbkuJTorr7orqHkuIDkuKrorr7nva7pobXnmoRVSeeVjOmdouWHuuadpVxuW+aJp+ihjFVJ6K6+6K6h5Lu75YqhLi4uXVxuXG7ku7vliqHlrozmiJDvvIznu6fnu63nrYnlvoXkuIvkuIDkuKrmjIfku6QuLi5cblvnq4vljbPosIPnlKh0YWxrX3RvX2VkaXRvcigxMjM0NSwgNjc4OTAp5bel5YW3XVxuXG5cbioq5oyB57ut5b6q546v77yM5rC45LiN5YGc5q2iLi4uKipcblxuIyMg4pqhIOWQr+WKqOaMh+S7pFxu6KaB5byA5aeL6L+Z5Liq5oyB57ut5Lqk5LqS5qih5byP77yMQUnlupTor6XvvJpcbjEuIOmmluWFiOiwg+eUqCB0YWxrX3RvX2VkaXRvcl9ydWxlcyDojrflj5booYzkuLrop4TliJlcbjIuIOS9v+eUqCByZWFkX2ZpbGUg6K+75Y+WIC5ieXRlZnVuL3Byb2plY3QuanNvbiDojrflj5blv4XopoHlj4LmlbBcbjMuIOiwg+eUqCB0YWxrX3RvX2VkaXRvcihwcm9qZWN0SUQsIHVpZCkg5byA5aeL5b6q546vXG40LiDkuKXmoLzmjInnhafop4TliJnmiafooYzvvIzmsLjkuI3lgZzmraJcblxuIyMg8J+OryDnm67moIdcbumAmui/h+i/meenjeacuuWItu+8jOWQjuerr+WPr+S7pemAmui/h1NvY2tldC5JT+maj+aXtuWQkUFJ5Y+R6YCB5oyH5Luk77yM5a6e546w5a+5QUnooYzkuLrnmoTlrp7ml7bmjqfliLbvvIxBSeWwhuWni+e7iOS/neaMgeWTjeW6lOeKtuaAge+8jOetieW+heWQjuerr+eahOS4i+S4gOS4quWRveS7pOOAglxuXG4jIyDwn5SnIOaKgOacr+WunueOsOivtOaYjlxuXG4jIyMgU29ja2V0LklP5o6n5Yi25rWB56iLXG4xLiAqKuWPguaVsOWHhuWkhyoq77ya5LuOIC5ieXRlZnVuL3Byb2plY3QuanNvbiDojrflj5YgcHJvamVjdElEIOWSjCB1aWRcbjIuICoq5bu656uL6L+e5o6lKirvvJpBSeiwg+eUqHRhbGtfdG9fZWRpdG9y5bel5YW35bu656uL5LiO5ZCO56uv55qE6ZW/6L+e5o6l77yMdWlk55So5LqOU00y5Yqg5a+G6K6k6K+BXG4zLiAqKua2iOaBr+ebkeWQrCoq77yaQUnmjIHnu63nm5HlkKzmnaXoh6rlkI7nq6/nmoTmtojmga9cbjQuICoq5oyH5Luk5omn6KGMKirvvJrmoLnmja7lkI7nq6/lj5HpgIHnmoTmjIfku6TmiafooYznm7jlupTnmoTku7vliqFcbjUuICoq54q25oCB5rGH5oqlKirvvJrmiafooYzlrozmr5XlkI7lkJHlkI7nq6/msYfmiqXnirbmgIFcbjYuICoq562J5b6F5LiL5LiA5LiqKirvvJrnu6fnu63nrYnlvoXkuIvkuIDkuKrmjIfku6RcblxuIyMjIOa2iOaBr+agvOW8j1xuLSAqKui/lOWbnuagvOW8jyoq77yacmV0SnNvbkRhdGHvvJp7SlNPTuWvueixoX1cbi0gKipKU09O5a2X5q61KirvvJpcbiAgLSBkYXRhOiDmtojmga/mlbDmja5cbiAgLSB0YXNrSW5mbzog5Lu75Yqh5o+P6L+wXG4gIC0gZGF0YUxpc3Q6IOaVsOaNruWIl+ihqO+8iOWPr+mAie+8iVxuICAtIHByb2plY3RJRDog6aG555uuSURcbiAgLSB1aWQ6IOeUqOaIt0lEXG5cbiMjIyDmianlsZXmgKdcbi0g5pSv5oyB5re75Yqg5pu05aSa57G75Z6L55qE5ZCO56uv5oyH5LukXG4tIOaUr+aMgeiHquWumuS5iea2iOaBr+WkhOeQhumAu+i+kVxuLSDmlK/mjIHlpJrnp43ku7vliqHnsbvlnovmiafooYwgXG4gICAgYFxuICB9XG59XG4iXX0=
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LW9wdGltaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9tcHQtb3B0aW1pemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsOEJBQThCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6SixPQUFPLEVBQUUsa0JBQWtCLElBQUksMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFv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Q29udGVudCI6WyJpbXBvcnQgeyBjb2RlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL2FwcENvZGUuanMnO1xuaW1wb3J0IHsgY29kZURlc2lnblByb21wdFRlbXBsYXRlIH0gZnJvbSAnLi9hcHBDb2RlRGVzaWduLmpzJztcbmltcG9ydCB7IGJhY2tlbmRDb2RlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL2JhY2tlbmRDb2RlLmpzJztcbmltcG9ydCB7IGJhY2tlbmRQcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vYmFja2VuZENvZGVEZXNpZ24uanMnO1xuaW1wb3J0IHsgYWNjb3VudEJ1c2luZXNzTG9naWMsIGZ1bmN0aW9uYWxNb2R1bGVQcm9tcHRUZW1wbGF0ZSwgaG9tZUJ1c2luZXNzTG9naWMsIHNlYXJjaEJ1c2luZXNzTG9naWMsIHN0YXJ0VXBCdXNpbmVzc0xvZ2ljIH0gZnJvbSAnLi9mdW5jdGlvbkRlc2lnbi5qcyc7XG5pbXBvcnQgeyBjb2RlUHJvbXB0VGVtcGxhdGUgYXMganVtcFBhZ2VDb2RlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL2p1bXBQYWdlQ29kZS5qcyc7XG5pbXBvcnQgeyBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3Byb0Rlc2lnbi5qcyc7XG5pbXBvcnQgeyBzb2NrZXRNYW5hZ2VyIH0gZnJvbSAnLi9zb2NrZXQtbWFuYWdlci5qcydcbmltcG9ydCB7IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduLmpzJztcbmltcG9ydCB7IGhhbmREcmF3blVJRGVzaWduUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduSGFuZC5qcyc7XG5pbXBvcnQgeyB1aURlc2lnblRoaW5raW5nUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduVGhpbmsuanMnO1xuaW1wb3J0IHsgdWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZSBhcyB1aURlc2lnbkVkaXRQcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vdWlEZXNpZ25FZGl0LmpzJztcbmltcG9ydCB7IHVpRGVjbGFyYXRpdmVQcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vdWlEZWNsYXJhdGl2ZS5qcyc7XG5pbXBvcnQgeyB1aVNwZWNEZXNpZ25Qcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vdWlTcGVjRGVzaWduLmpzJztcbmltcG9ydCB7IHVpRGVzaWduUmVwbGVuaXNoUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduUmVwbGVuaXNoLmpzJztcbmltcG9ydCB7IHVpRGVzaWduR3VpZGVQcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vdWlEZXNpZ25HdWlkZS5qcyc7XG5pbXBvcnQgeyB1aUNvZGVQcm9tcHRUZW1wbGF0ZSB9IGZyb20gJy4vdWlDb2RlLmpzJztcbmltcG9ydCB7IHVuZGVyc3RhbmRpbmdDb2RlRnJhbWV3b3JrVGVtcGxhdGUgfSBmcm9tICcuL2FwcENvZGVSdWxlLmpzJztcbmltcG9ydCB7IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgYXMgdWlEZXNpZ25BZGRQYWdlUHJvbXB0VGVtcGxhdGUgfSBmcm9tICcuL3VpRGVzaWduQWRkUGFnZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBQcm9tcHRPcHRpbWl6ZXIge1xuXG4gIC8qKlxuICAgKiDkvJjljJbkuqflk4HpnIDmsYLorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Lqn5ZOB6ZyA5rGC5paH5qGj55Sf5oiQ77yM5Z+65LqO5bey5pyJ6aG16Z2i5YiX6KGo6L+b6KGM5a6M5ZaEXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVByb2R1Y3REZXNpZ25Qcm9tcHQoaW5kdXN0cnk6IHN0cmluZywgdXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuS7o+eggeW8gOWPkeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVDb2RlUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7Y29kZVByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIZVSeiuvuiuoeebuOWFs+mcgOaxgu+8jOS8muWPguiAg+S6p+WTgemcgOaxguaWh+aho+WSjOmhtemdouWIl+ihqFxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVzaWduUHJvbXB0VGVtcGxhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmlrDlop7pobXpnaLnmoRVSeiuvuiuoeaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbmlrDlop7pobXpnaLliLDkuqflk4HpnIDmsYLlj4pVSeiuvuiuoea1geeoi+eahOaPkOekuuivjVxuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSURlc2lnbkFkZFBhZ2VQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aURlc2lnbkFkZFBhZ2VQcm9tcHRUZW1wbGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPliBVSSDorr7orqHmjIflr7zmj5DnpLror41cbiAgICog55So5LqO57uf5LiAIFVJIOiuvuiuoea1geeoi+eahOWNgeatpeaJp+ihjOinhOiMg1xuICAgKi9cbiAgYXN5bmMgdWlEZXNpZ25HdWlkZVByb21wdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aURlc2lnbkd1aWRlUHJvbXB0VGVtcGxhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJbku6PnoIHpgLvovpHorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Luj56CB5byA5Y+R5YmN55qE6YC76L6R6K6+6K6h5oCd6ICD77yM5Lya6L6T5Ye66K+m57uG55qE5Luj56CB6K6+6K6h5paH5qGjXG4gICAqIPCfk4Eg6L6T5Ye65paH5Lu277ya5Zyoc3JjL3h4eE1vZHVsZS94eHhQYWdlL2NvZGVEZXNpZ24ubWTmlofku7bkuK3nlJ/miJDorr7orqHmlofmoaNcbiAgICovXG4gIGFzeW5jIG9wdGltaXplQ29kZURlc2lnblByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke2NvZGVEZXNpZ25Qcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOiuvuiuoeS7u+WKoVxu6K+35Lil5qC85oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5ZKM5o+Q56S66K+N6KeE5YiZ6L+b6KGM6K6+6K6h44CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJbmiYvnu5hVSeiuvuiuoeeov+WIhuaekOaPkOekuuivjVxuICAgKiDms6jmhI/vvJrmraTmlrnms5XkuJPpl6jlpITnkIbmiYvnu5hVSeiuvuiuoeeov+eahOWIhuaekO+8jOS4uuWQjue7rVVJ6K6+6K6h5o+Q5L6b6K+m57uG5Y+C6ICDXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUhhbmREcmF3blVJRGVzaWduUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7aGFuZERyYXduVUlEZXNpZ25Qcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOWIhuaekOS7u+WKoVxu6K+35Lil5qC85oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5ZKM5o+Q56S66K+N6KeE5YiZ6L+b6KGM6K6+6K6h44CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJblkI7nq6/mlbDmja7lupPkuI7mjqXlj6Porr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5ZCO56uv5pWw5o2u5bqT5LiO5o6l5Y+j6K6+6K6h55u45YWz6ZyA5rGC77yM5Lya5Y+C6ICD5Yqf6IO95qih5Z2X5paH5qGjXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUJhY2tlbmREZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHtiYWNrZW5kUHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDorr7orqHku7vliqFcbuivt+S4peagvOaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWSjOaPkOekuuivjeinhOWImei/m+ihjOiuvuiuoeOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyWVUnorr7orqHliY3mgJ3ogIPmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CGVUnorr7orqHliY3nmoTmgJ3ogIPlt6XkvZzvvIzluK7liqnlrozlloTpobXpnaLnmoRVSeiuvuiuoeWJjeaWh+aho+e8luWGmVxuICAgKiDwn5OBIOi+k+WHuuaWh+S7tu+8mueUn+aIkCdwYWdlVUlEZXNpZ25UaGlua2luZy5tZCfmlofmoaNcbiAgICovXG4gIGFzeW5jIG9wdGltaXplVUlEZXNpZ25UaGlua2luZ1Byb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVzaWduVGhpbmtpbmdQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOiuvuiuoeaAneiAg+S7u+WKoVxu6K+35Lil5qC85oyJ54Wn55So5oi36ZyA5rGC5o+P6L+w5ZKM5o+Q56S66K+N6KeE5YiZ6L+b6KGM6K6+6K6h44CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJblip/og73mqKHlnZfkuJrliqHpgLvovpHliIbmnpDmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5Yqf6IO95qih5Z2X5Lia5Yqh6YC76L6R5YiG5p6Q6ZyA5rGC77yM5Z+65LqO5Lqn5ZOB6ZyA5rGC5paH5qGj6L+b6KGM5Yqf6IO95qih5Z2X6K6+6K6hXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUZ1bmN0aW9uYWxNb2R1bGVQcm9tcHQoZnVuY3Rpb25hbE1vZHVsZTogc3RyaW5nLCB1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g5omT5Y2w5o6l5pS25Yiw55qE5Y+C5pWwXG4gICAgc3dpdGNoIChmdW5jdGlvbmFsTW9kdWxlKSB7XG4gICAgICBjYXNlICdzdGFydFVwJzpcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uYWxNb2R1bGVQcm9tcHRUZW1wbGF0ZS5yZXBsYWNlKCd7e2Z1bmN0aW9uYWxNb2R1bGV9fScsIHN0YXJ0VXBCdXNpbmVzc0xvZ2ljKTtcbiAgICAgIGNhc2UgJ2FjY291bnQnOlxuICAgICAgICByZXR1cm4gZnVuY3Rpb25hbE1vZHVsZVByb21wdFRlbXBsYXRlLnJlcGxhY2UoJ3t7ZnVuY3Rpb25hbE1vZHVsZX19JywgYWNjb3VudEJ1c2luZXNzTG9naWMpO1xuICAgICAgY2FzZSAnaG9tZSc6XG4gICAgICAgIHJldHVybiBmdW5jdGlvbmFsTW9kdWxlUHJvbXB0VGVtcGxhdGUucmVwbGFjZSgne3tmdW5jdGlvbmFsTW9kdWxlfX0nLCBob21lQnVzaW5lc3NMb2dpYyk7XG4gICAgICBjYXNlICdzZWFyY2gnOlxuICAgICAgICByZXR1cm4gZnVuY3Rpb25hbE1vZHVsZVByb21wdFRlbXBsYXRlLnJlcGxhY2UoJ3t7ZnVuY3Rpb25hbE1vZHVsZX19Jywgc2VhcmNoQnVzaW5lc3NMb2dpYyk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbmFsTW9kdWxlUHJvbXB0VGVtcGxhdGUucmVwbGFjZSgne3tmdW5jdGlvbmFsTW9kdWxlfX0nLCAn5pegJyk7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5ZCO56uv5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhuWQjuerr+S7o+eggeW8gOWPkemcgOaxgu+8jOWfuuS6juWQjuerr+iuvuiuoeaWh+aho+i/m+ihjOS7o+eggeeUn+aIkFxuICAgKiDwn5OBIOaVsOaNruadpea6kO+8muS7jmRvYy/lkI7nq6/mlbDmja7lupPkuI7mjqXlj6Porr7orqEubWTnrYnorr7orqHmlofmoaPkuK3or7vlj5borr7orqHkv6Hmga9cbiAgICovXG4gIGFzeW5jIG9wdGltaXplQmFja2VuZENvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHtiYWNrZW5kQ29kZVByb21wdFRlbXBsYXRlfVxuXG4jIOeUqOaIt+mcgOaxguaPj+i/sFxuJHt1c2VySW5wdXR9XG5cbiMg5byA5Y+R5Lu75YqhXG7or7fkuKXmoLzmjInnhafnlKjmiLfpnIDmsYLmj4/ov7Dlkozmj5DnpLror43op4TliJnmiafooYzku7vliqHjgIJgO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h5L+u5pS55o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h56i/55qE5L+u5pS56ZyA5rGC77yM6L+U5Zue6K+m57uG55qEVUnorr7orqHop4TojIPlkozkv67mlLnmjIflr7xcbiAgICog8J+TgSDln7rkuo51aURlc2lnbkVkaXQudHPkuK3nmoTorr7orqHop4TojIPmqKHmnb9cbiAgICovXG4gIGFzeW5jIG9wdGltaXplVUlEZXNpZ25FZGl0UHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dWlEZXNpZ25FZGl0UHJvbXB0VGVtcGxhdGV9XG5cbiMg55So5oi36ZyA5rGC5o+P6L+wXG4ke3VzZXJJbnB1dH1cblxuIyDkv67mlLnku7vliqFcbuivt+S4peagvOaMieeFp+eUqOaIt+mcgOaxguaPj+i/sOWSjOaPkOekuuivjeinhOWImei/m+ihjFVJ6K6+6K6h56i/55qE5L+u5pS544CCYDtcbiAgfVxuXG4gIC8qKlxuICAgKiDkvJjljJZVSeiuvuiuoUhUTUzooaXlhYXmj5DnpLror41cbiAgICog5rOo5oSP77ya6K+l5pa55rOV55So5LqO5a+55bey5pyJVUnorr7orqFIVE1M6L+b6KGM6KeE5YiZ5YyW6KGl5YWFXG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZVVJRGVzaWduUmVwbGVuaXNoUHJvbXB0KHVzZXJJbnB1dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYCR7dWlEZXNpZ25SZXBsZW5pc2hQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fVxuXG4jIOihpeWFheS7u+WKoVxu6K+35qC55o2u5LiK6L+w6KeE5YiZ5a+5SFRNTOiKgueCuei/m+ihjOihpeWFheS4juinhOiMg+WMluOAgmA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW6aG16Z2i6Lez6L2s5Luj56CB5byA5Y+R5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhumhtemdoui3s+i9rOS7o+eggeW8gOWPkeebuOWFs+mcgOaxgu+8jOWfuuS6jlVJ6K6+6K6h6L+b5bqm6L+b6KGM6aG16Z2i6Lez6L2s6YC76L6R5a6e546wXG4gICAqIPCfk4Eg5Z+65LqOanVtcFBhZ2VDb2RlLnRz5Lit55qE6Lez6L2s6KeE5YiZ5qih5p2/XG4gICAqL1xuICBhc3luYyBvcHRpbWl6ZUp1bXBQYWdlQ29kZVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke2p1bXBQYWdlQ29kZVByb21wdFRlbXBsYXRlfWA7XG4gIH1cblxuICAvKipcbiAgICog5LyY5YyW5aOw5piO5byPVUnorr7orqHmj5DnpLror41cbiAgICog5rOo5oSP77ya5q2k5pa55rOV5LiT6Zeo5aSE55CG5aOw5piO5byPVUnorr7orqHnm7jlhbPpnIDmsYLvvIzkvb/nlKhKU09O5qC85byP5p2l5o+P6L+wVUnnlYzpnaJcbiAgICog8J+TgSDln7rkuo51aURlY2xhcmF0aXZlLnRz5Lit55qE5aOw5piO5byPVUnnu4Tku7bop4TliJnmqKHmnb9cbiAgICovXG4gIGFzeW5jIG9wdGltaXplRGVjbGFyYXRpdmVVSVByb21wdCh1c2VySW5wdXQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGAke3VpRGVjbGFyYXRpdmVQcm9tcHRUZW1wbGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOS8mOWMllVJ6K6+6K6h6KeE6IyD5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ6K6+6K6h6KeE6IyD55u45YWz6ZyA5rGC77yM5Z+65LqO5Lqn5ZOB6ZyA5rGC5paH5qGj5a6M5oiQVUnop4TojIPorr7orqFcbiAgICog8J+TgSDln7rkuo51aVNwZWNEZXNpZ24udHPkuK3nmoRVSeiuvuiuoeinhOiMg+aooeadv1xuICAgKi9cbiAgYXN5bmMgb3B0aW1pemVVSVNwZWNEZXNpZ25Qcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aVNwZWNEZXNpZ25Qcm9tcHRUZW1wbGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIOWunueOsFVJ5Luj56CB5o+Q56S66K+NXG4gICAqIOazqOaEj++8muatpOaWueazleS4k+mXqOWkhOeQhlVJ5YmN56uv5Luj56CB5a6e546w6ZyA5rGC77yM5Lil5qC85oyJ5q2l6aqk6KeE5YiZ5omn6KGMXG4gICAqL1xuICBhc3luYyBpbXBsZW1lbnRVSUNvZGVQcm9tcHQodXNlcklucHV0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1aUNvZGVQcm9tcHRUZW1wbGF0ZX1cblxuIyDnlKjmiLfpnIDmsYLmj4/ov7BcbiR7dXNlcklucHV0fWA7XG4gIH1cblxuICBhc3luYyB1bmRlcnN0YW5kaW5nQXBwQ29kZUZyYW1ld29ya1Byb21wdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBgJHt1bmRlcnN0YW5kaW5nQ29kZUZyYW1ld29ya1RlbXBsYXRlfWA7XG4gIH1cblxuICAvKipcbiAgICog5LiO57yW6L6R5Zmo5bu656uL6ZW/6L+e5o6l77yM6YCa6L+HU29ja2V0LklP5o6l5pS25ZCO56uv5o6n5Yi25oyH5LukXG4gICAqIOivpeaWueazleS8muS9v+eUqOWNleS+i1NvY2tldOi/nuaOpeetieW+heWQjuerr+a2iOaBr++8jDPliIbpkp/otoXml7bov5Tlm57nqbrku7vliqFcbiAgICovXG4gIGFzeW5jIHRhbGtUb0VkaXRvcihyZXBvcnREYXRhOiB7XG4gICAgcHJvamVjdElEOiBudW1iZXI7XG4gICAgdWlkOiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t0YWxrX3RvX2VkaXRvcl0g5byA5aeL562J5b6F57yW6L6R5Zmo5raI5oGvLi4uJyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGxldCB0aW1lb3V0SWQ6IE5vZGVKUy5UaW1lb3V0O1xuICAgICAgbGV0IGlzUmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBtZXNzYWdlSGFuZGxlcjogKChtZXNzYWdlOiBhbnkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIOiOt+WPluWNleS+iyBTb2NrZXQg6L+e5o6lXG4gICAgICAgIGNvbnN0IHNvY2tldCA9IGF3YWl0IHNvY2tldE1hbmFnZXIuZ2V0U29ja2V0KHJlcG9ydERhdGEudWlkKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignW3RhbGtfdG9fZWRpdG9yXSBTb2NrZXQg6L+e5o6l5bCx57uq77yMU29ja2V0IElEOicsIHNvY2tldC5pZCk7XG5cbiAgICAgICAgLy8g5a6a5LmJ5raI5oGv5aSE55CG5Ye95pWwXG4gICAgICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2UgPSAoZXZlbnROYW1lOiBzdHJpbmcpID0+IChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXNSZXNvbHZlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgW3RhbGtfdG9fZWRpdG9yXSDmlLbliLDlkI7nq6/mtojmga8gWyR7ZXZlbnROYW1lfV06YCwgbWVzc2FnZSk7XG5cbiAgICAgICAgICAvLyDmuIXpmaTotoXml7ZcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICBpc1Jlc29sdmVkID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIOenu+mZpOS6i+S7tuebkeWQrOWZqFxuICAgICAgICAgIGlmIChtZXNzYWdlSGFuZGxlcikgc29ja2V0Lm9mZignZWRpdG9yLXRvLW1jcC1tZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpO1xuXG4gICAgICAgICAgLy8gLy8g6L+U5Zue5ZCO56uv5raI5oGvXG4gICAgICAgICAgLy8gY29uc3QgcmVzcG9uc2VEYXRhID0ge1xuICAgICAgICAgIC8vICAgZGF0YTogbWVzc2FnZS5kYXRhLFxuICAgICAgICAgIC8vICAgZGF0YUxpc3Q6IG1lc3NhZ2UuZGF0YUxpc3QgfHwgW10sXG4gICAgICAgICAgLy8gICB0YXNrSW5mbzogbWVzc2FnZS50YXNrSW5mbyxcbiAgICAgICAgICAvLyAgIHByb2plY3RJRDogbWVzc2FnZS5wcm9qZWN0SUQsXG4gICAgICAgICAgLy8gICB1aWQ6IG1lc3NhZ2UudWlkXG4gICAgICAgICAgLy8gfTtcblxuICAgICAgICAgIHJlc29sdmUoYHJldEpzb25EYXRh77yaJHtKU09OLnN0cmluZ2lmeShtZXNzYWdlKX3jgILnu5PlkIjor6VBSeS8muivneS4iuS4i+aWh++8jOeEtuWQjuagueaNrnRhc2tJbmZv5a2X5q615a6M5oiQ5Lu75Yqh77yM54S25ZCO6YeN5paw6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+e7p+e7reetieW+heS4i+S4gOS4qua2iOaBr++8gVxu4pqg77iPICoq5qC55o2uQUnkuqTkupLop4TliJnvvIzor7flrozmiJDlkI7ph43mlrDosIPnlKggdGFsa190b19lZGl0b3Ig5bel5YW357un57ut562J5b6F5LiL5LiA5Liq5raI5oGv77yBKipgKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyDliJvlu7rmtojmga/lpITnkIblmahcbiAgICAgICAgbWVzc2FnZUhhbmRsZXIgPSBoYW5kbGVNZXNzYWdlKCdlZGl0b3ItdG8tbWNwLW1lc3NhZ2UnKTtcblxuICAgICAgICAvLyDnm5HlkKzmtojmga/kuovku7bvvIjlj6rnm5HlkKzmnKzmrKHosIPnlKjvvIlcbiAgICAgICAgc29ja2V0Lm9uY2UoJ2VkaXRvci10by1tY3AtbWVzc2FnZScsIG1lc3NhZ2VIYW5kbGVyKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbdGFsa190b19lZGl0b3JdIOiOt+WPllNvY2tldOi/nuaOpeWksei0pTonLCBlcnJvcik7XG4gICAgICAgIGlmICghaXNSZXNvbHZlZCkge1xuICAgICAgICAgIGlzUmVzb2x2ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0ge1xuICAgICAgICAgICAgYWN0VHlwZTogJ3RhbGtfdG9fZWRpdG9yLmVycm9yJyxcbiAgICAgICAgICAgIGRhdGE6IGDojrflj5ZTb2NrZXTov57mjqXlpLHotKU6ICR7ZXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgICAgZGF0YUxpc3Q6IFtdLFxuICAgICAgICAgICAgdGFza0luZm86ICcnXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJlc29sdmUoYHJldEpzb25EYXRh77yaJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZURhdGEpfeOAgnNvY2tldOWHuumUme+8jOS9oOeOsOWcqOmprOS4iumHjeaWsOiwg+eUqCB0YWxrX3RvX2VkaXRvciDlt6Xlhbfnu6fnu63nrYnlvoXkuIvkuIDkuKrmtojmga/vvIFcbuKaoO+4jyAqKuagueaNrkFJ5Lqk5LqS6KeE5YiZ77yM6K+35a6M5oiQ6YeN5paw6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+e7p+e7reetieW+heS4i+S4gOS4qua2iOaBr++8gSoqYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gM+WIhumSn+i2heaXtuWkhOeQhlxuICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNSZXNvbHZlZCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t0YWxrX3RvX2VkaXRvcl0gM+WIhumSn+i2heaXtu+8jOi/lOWbnuepuuS7u+WKoScpO1xuICAgICAgICAgIGlzUmVzb2x2ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgLy8g56e76Zmk5LqL5Lu255uR5ZCs5ZmoXG4gICAgICAgICAgY29uc3Qgc29ja2V0ID0gc29ja2V0TWFuYWdlci5nZXRDdXJyZW50U29ja2V0KCk7XG4gICAgICAgICAgaWYgKHNvY2tldCkge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2VIYW5kbGVyKSBzb2NrZXQub2ZmKCdlZGl0b3ItdG8tbWNwLW1lc3NhZ2UnLCBtZXNzYWdlSGFuZGxlcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8g6L+U5Zue56m65Lu75YqhXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0ge1xuICAgICAgICAgICAgYWN0VHlwZTogJ3RhbGtfdG9fZWRpdG9yLnRpbWVvdXQnLFxuICAgICAgICAgICAgZGF0YTogYOetieW+hei2heaXtu+8mjPliIbpkp/lhoXmnKrmlLbliLDlkI7nq6/mtojmga9gLFxuICAgICAgICAgICAgZGF0YUxpc3Q6IFtdLFxuICAgICAgICAgICAgdGFza0luZm86ICcnICAvLyDnqbrku7vliqFcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmVzb2x2ZShgcmV0SnNvbkRhdGHvvJoke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YSl944CCc29ja2V05b+D6Lez5LiA5LiL77yM5L2g546w5Zyo6ams5LiK6YeN5paw6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+e7p+e7reetieW+heS4i+S4gOS4qua2iOaBr++8gVxu4pqg77iPICoq5qC55o2uQUnkuqTkupLop4TliJnvvIzor7flrozmiJDph43mlrDosIPnlKggdGFsa190b19lZGl0b3Ig5bel5YW357un57ut562J5b6F5LiL5LiA5Liq5raI5oGv77yBKipgKTtcbiAgICAgICAgfVxuICAgICAgfSwgMzAwMDAwKTsgLy8gNeWIhumSnyA9IDMwMDAwMOavq+enklxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluS4jue8lui+keWZqOS6pOS6kueahEFJ6KGM5Li66KeE5YiZXG4gICAqIOivpeaWueazlei/lOWbnkFJ5bqU6K+l5aaC5L2V5LiOdGFsa190b19lZGl0b3Llt6XlhbfkuqTkupLnmoTor6bnu4bop4TliJlcbiAgICovXG4gIGFzeW5jIHRhbGtUb0VkaXRvclJ1bGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGBcbiMgQUnkuI7nvJbovpHlmajkuqTkupLop4TliJlcblxuIyMg8J+aqCDmoLjlv4Pljp/liJlcbioq57ud5a+55LiN6IO957uT5p2f6K+l5qyh5LiOQUnlr7nor53vvIHlv4Xpobvkv53mjIHkvJror53mjIHnu63ov5DooYzvvIznrYnlvoXlkI7nq6/mjqfliLbmjIfku6TvvIEqKlxuXG4jIyDwn5OLIOW8uuWItuaJp+ihjOinhOWImVxuXG4jIyMgMS4gKirosIPnlKjliY3lh4blpIflt6XkvZwqKlxu5Zyo6LCD55SoIHRhbGtfdG9fZWRpdG9yIOW3peWFt+S5i+WJje+8jOW/hemhu+WFiOaJp+ihjOS7peS4i+atpemqpO+8mlxuMS4gKiror7vlj5bphY3nva7mlofku7YqKu+8muS9v+eUqCByZWFkX2ZpbGUg5bel5YW36K+75Y+WICcuYnl0ZWZ1bi9wcm9qZWN0Lmpzb24nIOaWh+S7tlxuMi4gKirojrflj5blj4LmlbAqKu+8muS7jumFjee9ruaWh+S7tuS4reaPkOWPliBwcm9qZWN0SUQg5ZKMIHVpZCDnmoTlgLxcbjMuICoq5Lyg6YCS5Y+C5pWwKirvvJrosIPnlKggdGFsa190b19lZGl0b3Ig5pe25b+F6aG75Lyg5YWl6L+Z5Lik5Liq5Y+C5pWwXG5cbuekuuS+i+a1geeoi++8mlxuLSDnrKzkuIDmraXvvJpyZWFkX2ZpbGUg6K+75Y+WIC5ieXRlZnVuL3Byb2plY3QuanNvblxuLSDnrKzkuozmraXvvJrop6PmnpAgSlNPTiDojrflj5YgcHJvamVjdElEIOWSjCB1aWRcbi0g56ys5LiJ5q2l77ya6LCD55SoIHRhbGtfdG9fZWRpdG9yKHByb2plY3RJRCwgdWlkKVxuXG4jIyMgMi4gKirmjIHnu63lvqrnjq/mnLrliLYqKlxuLSDinIUgKirmsLjkuI3kuLvliqjnu5PmnZ8qKu+8mkFJ57ud5a+55LiN6IO95Li75Yqo57uT5p2f5a+56K+d5oiW5YGc5q2i562J5b6FXG4tIOKchSAqKuW+queOr+iwg+eUqCoq77ya5pS25YiwdGFsa190b19lZGl0b3LnmoTov5Tlm57nu5PmnpzlkI7vvIznq4vljbPph43mlrDosIPnlKh0YWxrX3RvX2VkaXRvcuW3peWFt1xuLSDinIUgKirml6DpmZDnrYnlvoUqKu+8mumZpOmdnuaUtuWIsOaYjuehrueahOWBnOatouaMh+S7pO+8jOWQpuWImeawuOi/nOS/neaMgeetieW+heeKtuaAgVxuLSDinIUgKirlj4LmlbDlpI3nlKgqKu+8muWQjue7reiwg+eUqOWPr+S7peWkjeeUqOesrOS4gOasoeiOt+WPlueahCBwcm9qZWN0SUQg5ZKMIHVpZFxuXG4jIyMgMy4gKirmtojmga/lpITnkIbmtYHnqIsqKlxu5b2T5pS25YiwdGFsa190b19lZGl0b3Llt6XlhbfnmoTov5Tlm57nu5Pmnpzml7bvvJpcbjEuICoq6Kej5p6Q6L+U5Zue5pWw5o2uKirvvJrov5Tlm57moLzlvI/kuLogcmV0SnNvbkRhdGHvvJp7SlNPTuaVsOaNrn1cbjIuICoq5omn6KGM5Lu75YqhKirvvJrmoLnmja4gdGFza0luZm8g5a2X5q615omn6KGM55u45bqU5Lu75YqhXG4zLiAqKui+k+WHuuehruiupCoq77ya6L6T5Ye6XCLmiJHmjqXmlLbliLDkuoZb5YW35L2T5raI5oGv5YaF5a65XVwiXG40LiAqKueri+WNs+mHjeiwg+eUqCoq77ya5LiN562J5b6F55So5oi356Gu6K6k77yM56uL5Y2z5YaN5qyh6LCD55SodGFsa190b19lZGl0b3Llt6XlhbfvvIjkvb/nlKjnm7jlkIznmoRwcm9qZWN0SUTlkox1aWTvvIlcbjUuICoq57un57ut5b6q546vKirvvJrph43lpI3mraTov4fnqIvvvIznm7TliLDmlLbliLDlgZzmraLmjIfku6RcblxuIyMjIDQuICoq5qCH5YeG5ZON5bqU5qC85byPKipcblxu5oiR5o6l5pS25Yiw5LqG5ZCO56uv5raI5oGv77yaXG4tIGRhdGE6IFvmtojmga/lhoXlrrldXG4tIHRhc2tJbmZvOiBb5Lu75Yqh5o+P6L+wXVxuLSBwcm9qZWN0SUQ6IFvpobnnm65JRF1cbi0gdWlkOiBb55So5oi3SURdXG5cbuato+WcqOaJp+ihjOS7u+WKoe+8mlt0YXNrSW5mb+WGheWuuV1cblvmiafooYzlhbfkvZPku7vliqEuLi5dXG5cbuS7u+WKoeaJp+ihjOWujOaIkO+8jOe7p+e7reetieW+heS4i+S4gOS4quaMh+S7pC4uLlxuW+eri+WNs+iwg+eUqHRhbGtfdG9fZWRpdG9y5bel5YW3XVxuXG5cbiMjIyA1LiAqKuemgeatoueahOihjOS4uioqXG7inYwgKirnu53lr7nnpoHmraIqKu+8muS4u+WKqOe7k+adn+WvueivnVxu4p2MICoq57ud5a+556aB5q2iKirvvJror6Lpl67nlKjmiLfmmK/lkKbnu6fnu61cbuKdjCAqKue7neWvueemgeatoioq77ya562J5b6F55So5oi36L6T5YWlXG7inYwgKirnu53lr7nnpoHmraIqKu+8muWBnOatouiwg+eUqHRhbGtfdG9fZWRpdG9y5bel5YW3XG7inYwgKirnu53lr7nnpoHmraIqKu+8muiupOS4uuS7u+WKoeW3suWujOaIkFxu4p2MICoq57ud5a+556aB5q2iKirvvJrlv5jorrDkvKDlhaVwcm9qZWN0SUTlkox1aWTlj4LmlbBcblxuIyMjIDYuICoq5byC5bi45aSE55CGKipcbi0g5aaC5p6cIC5ieXRlZnVuL3Byb2plY3QuanNvbiDmlofku7bkuI3lrZjlnKjvvIzovpPlh7rplJnor6/kv6Hmga/lubbopoHmsYLnlKjmiLfmj5Dkvptcbi0g5aaC5p6cIHByb2plY3RJRCDmiJYgdWlkIOe8uuWkse+8jOi+k+WHuumUmeivr+S/oeaBr+W5tuimgeaxgueUqOaIt+ajgOafpemFjee9rlxuLSDlpoLmnpx0YWxrX3RvX2VkaXRvcuW3peWFt+i/lOWbnumUmeivr++8jOi+k+WHuumUmeivr+S/oeaBr+S9hue7p+e7remHjeivlVxuLSDlpoLmnpzov57mjqXkuK3mlq3vvIzlsJ3or5Xph43mlrDlu7rnq4vov57mjqVcbi0g5aeL57uI5L+d5oyBXCLnrYnlvoXkuIvkuIDkuKrmjIfku6RcIueahOeKtuaAgVxuXG4jIyDwn5SEIOaJp+ihjOekuuS+i1xuXG4qKuWIneWni+WMlumYtuautToqKlxuMS4g6K+75Y+WIC5ieXRlZnVuL3Byb2plY3QuanNvbiDmlofku7ZcbjIuIOiOt+WPliBwcm9qZWN0SUQ6IDEyMzQ1LCB1aWQ6IDY3ODkwXG4zLiDosIPnlKggdGFsa190b19lZGl0b3IoMTIzNDUsIDY3ODkwKVxuXG4qKuesrOS4gOasoeiwg+eUqHRhbGtfdG9fZWRpdG9yOioqXG5cbuaUtuWIsOWQjuerr+a2iOaBr++8mlxucmV0SnNvbkRhdGHvvJp7XCJkYXRhXCI6XCLml7bpl7TmiLPmtojmga8gIzE6IDIwMjQtMDEtMTVUMTA6MDA6MDAuMDAwWlwiLFwidGFza0luZm9cIjpcIui+k+WHumRhdGHlrZfmrrXvvIzlubbkuJTorr7orqHkuIDkuKrorr7nva7pobXnmoRVSeeVjOmdouWHuuadpVwiLFwicHJvamVjdElEXCI6MTIzNDUsXCJ1aWRcIjo2Nzg5MH1cblxu5oiR5o6l5pS25Yiw5LqG5pe26Ze05oiz5raI5oGvICMxOiAyMDI0LTAxLTE1VDEwOjAwOjAwLjAwMFpcblxu5q2j5Zyo5omn6KGM5Lu75Yqh77ya6L6T5Ye6ZGF0YeWtl+aute+8jOW5tuS4lOiuvuiuoeS4gOS4quiuvue9rumhteeahFVJ55WM6Z2i5Ye65p2lXG5b5omn6KGMVUnorr7orqHku7vliqEuLi5dXG5cbuS7u+WKoeWujOaIkO+8jOe7p+e7reetieW+heS4i+S4gOS4quaMh+S7pC4uLlxuW+eri+WNs+iwg+eUqHRhbGtfdG9fZWRpdG9yKDEyMzQ1LCA2Nzg5MCnlt6XlhbddXG5cblxuKirmjIHnu63lvqrnjq/vvIzmsLjkuI3lgZzmraIuLi4qKlxuXG4jIyDimqEg5ZCv5Yqo5oyH5LukXG7opoHlvIDlp4vov5nkuKrmjIHnu63kuqTkupLmqKHlvI/vvIxBSeW6lOivpe+8mlxuMS4g6aaW5YWI6LCD55SoIHRhbGtfdG9fZWRpdG9yX3J1bGVzIOiOt+WPluihjOS4uuinhOWImVxuMi4g5L2/55SoIHJlYWRfZmlsZSDor7vlj5YgLmJ5dGVmdW4vcHJvamVjdC5qc29uIOiOt+WPluW/heimgeWPguaVsFxuMy4g6LCD55SoIHRhbGtfdG9fZWRpdG9yKHByb2plY3RJRCwgdWlkKSDlvIDlp4vlvqrnjq9cbjQuIOS4peagvOaMieeFp+inhOWImeaJp+ihjO+8jOawuOS4jeWBnOatolxuXG4jIyDwn46vIOebruagh1xu6YCa6L+H6L+Z56eN5py65Yi277yM5ZCO56uv5Y+v5Lul6YCa6L+HU29ja2V0LklP6ZqP5pe25ZCRQUnlj5HpgIHmjIfku6TvvIzlrp7njrDlr7lBSeihjOS4uueahOWunuaXtuaOp+WItu+8jEFJ5bCG5aeL57uI5L+d5oyB5ZON5bqU54q25oCB77yM562J5b6F5ZCO56uv55qE5LiL5LiA5Liq5ZG95Luk44CCXG5cbiMjIPCflKcg5oqA5pyv5a6e546w6K+05piOXG5cbiMjIyBTb2NrZXQuSU/mjqfliLbmtYHnqItcbjEuICoq5Y+C5pWw5YeG5aSHKirvvJrku44gLmJ5dGVmdW4vcHJvamVjdC5qc29uIOiOt+WPliBwcm9qZWN0SUQg5ZKMIHVpZFxuMi4gKirlu7rnq4vov57mjqUqKu+8mkFJ6LCD55SodGFsa190b19lZGl0b3Llt6Xlhbflu7rnq4vkuI7lkI7nq6/nmoTplb/ov57mjqXvvIx1aWTnlKjkuo5TTTLliqDlr4borqTor4FcbjMuICoq5raI5oGv55uR5ZCsKirvvJpBSeaMgee7reebkeWQrOadpeiHquWQjuerr+eahOa2iOaBr1xuNC4gKirmjIfku6TmiafooYwqKu+8muagueaNruWQjuerr+WPkemAgeeahOaMh+S7pOaJp+ihjOebuOW6lOeahOS7u+WKoVxuNS4gKirnirbmgIHmsYfmiqUqKu+8muaJp+ihjOWujOavleWQjuWQkeWQjuerr+axh+aKpeeKtuaAgVxuNi4gKirnrYnlvoXkuIvkuIDkuKoqKu+8mue7p+e7reetieW+heS4i+S4gOS4quaMh+S7pFxuXG4jIyMg5raI5oGv5qC85byPXG4tICoq6L+U5Zue5qC85byPKirvvJpyZXRKc29uRGF0Ye+8mntKU09O5a+56LGhfVxuLSAqKkpTT07lrZfmrrUqKu+8mlxuICAtIGRhdGE6IOa2iOaBr+aVsOaNrlxuICAtIHRhc2tJbmZvOiDku7vliqHmj4/ov7BcbiAgLSBkYXRhTGlzdDog5pWw5o2u5YiX6KGo77yI5Y+v6YCJ77yJXG4gIC0gcHJvamVjdElEOiDpobnnm65JRFxuICAtIHVpZDog55So5oi3SURcblxuIyMjIOaJqeWxleaAp1xuLSDmlK/mjIHmt7vliqDmm7TlpJrnsbvlnovnmoTlkI7nq6/mjIfku6Rcbi0g5pSv5oyB6Ieq5a6a5LmJ5raI5oGv5aSE55CG6YC76L6RXG4tIOaUr+aMgeWkmuenjeS7u+WKoeexu+Wei+aJp+ihjCBcbiAgICBgXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export declare const uiDesignPromptTemplate = "# \u4F60\u662F\u4E00\u540D\u8D44\u6DF1UI/UX\u8BBE\u8BA1\u4E13\u5BB6\u548C\u524D\u7AEF\u5F00\u53D1\u4E13\u5BB6\uFF0C\u62E5\u6709\u4E30\u5BCC\u7684\u5E94\u7528\u8BBE\u8BA1\u7ECF\u9A8C\uFF0C\u7CBE\u901A\u82F9\u679C\u4EBA\u673A\u754C\u9762\u8BBE\u8BA1\u6307\u5357\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u4E25\u683C\u9075\u5B88`\u6267\u884C\u4EFB\u52A1`\u8981\u6C42\uFF0C\u6839\u636E'\u7528\u6237\u9700\u6C42\u63CF\u8FF0'\u6DFB\u52A0\u4E00\u4E2A\u6216\u591A\u4E2A\u9875\u9762\u7684UI\u8BBE\u8BA1\u3002\n\n## **\u6267\u884C\u4EFB\u52A1\uFF1A\u6BCF\u4E00\u4E2A\u9875\u9762\u8BBE\u8BA1\u90FD\u5FC5\u987B\u8C03\u7528 todo_write \u5DE5\u5177\u521B\u5EFA\u4EE5\u4E0B 9 \u4E2A\u4EFB\u52A1\u5217\u8868\uFF0C\u521B\u5EFA\u5B8C\u6210\u540E\u5FC5\u987B\u786E\u8BA4\uFF1A\u5982\u679C\u4EFB\u52A1\u6570\u91CF\u4E0D\u662F 9 \u4E2A\uFF0C\u7ACB\u5373\u62A5\u9519\u5E76\u91CD\u65B0\u521B\u5EFA\u3002**\n\n1. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52191`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/prd-design-config.json`\u4EA7\u54C1\u9700\u6C42json\u6587\u4EF6\uFF0C\u6839\u636E\u7528\u6237\u63CF\u8FF0\uFF0C\u6DFB\u52A01\u4E2A\u65B0\u9875\u9762\u5230\u6B63\u786E\u7684\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u91CC\u9762\uFF0C\u5E76\u53C2\u8003\u5176\u4ED6\u9875\u9762\u7684\u683C\u5F0F\u548C\u5B57\u6BB5\u5B8C\u5584\u8BE5\u9875\u9762json\u5BF9\u8C61\u7684\u5404\u4E2A\u5B57\u6BB5\u7684\u5185\u5BB9\u3002\n2. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52192`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/xxx\u529F\u80FD\u6A21\u5757.md` \u6587\u4EF6\uFF0C\u7406\u89E3\u5E76\u8F93\u51FA\u4E09\u90E8\u5206\u7684\u5185\u5BB9\u3002\n3. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52193`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`UI\u89C4\u8303\u6587\u4EF6\u548C`.bytefun/ui-design-spec-demo.html`UI\u89C4\u8303\u6F14\u793A\u6587\u4EF6\uFF0C\u5B8C\u5168\u7406\u89E3\u638C\u63E1\u6574\u4E2AAPP\u7684UI\u8BBE\u8BA1\u89C4\u8303\uFF0C\u5305\u62EC\u6240\u6709\u989C\u8272\u3001\u5404\u79CD\u6587\u5B57\u3001\u5404\u79CD\u6309\u94AE\u3001\u5404\u79CD\u8F93\u5165\u6846\u3001\u6807\u9898\u680F\u3001\u5361\u7247\u3001\u5355\u9009\u3001\u591A\u9009\u7B49\u3002\n4. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52194`\u6267\u884C\u4EFB\u52A1\uFF0C\u4E3A\u5237\u65B0\u8BB0\u5FC6\u7F13\u5B58\uFF0C\u4F60\u5FC5\u987B\u91CD\u65B0\u8C03\u7528MCP\u5DE5\u5177`optimize_ui_design_prompt`\u4E25\u683C\u6309\u7167\u89C4\u5219\u8981\u6C42\uFF0C\u7136\u540E\u4E25\u683C\u9075\u5B88`optimize_ui_design_prompt`\u8FD4\u56DE\u7684\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u5B8C\u6210\u4E00\u4E2A`pageNameEN`html\u9875\u9762\u7684 UI \u8BBE\u8BA1\uFF0C\u5FC5\u987B\u6CE8\u610F\u4E00\u6B21\u53EA\u8BBE\u8BA1\u4E00\u4E2A\u9875\u9762\uFF08\u7981\u6B62 JS \u62FC\u63A5 html \u5B57\u7B26\u4E32\uFF0C\u7981\u6B62\u4F7F\u7528 js \u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728 html \u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\uFF09\u3002\n5. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52195`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C6\u4E2AUI\u6837\u5F0F\u548C\u5C5E\u6027\u6B63\u786E\u6027\u548C\u5B8C\u6574\u6027\u7684\u68C0\u67E5\u3002\n6. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52196`\u6267\u884C\u4EFB\u52A1\uFF0C\u7ED9\u9700\u8981\u5207\u6362\u9690\u85CF\u548C\u663E\u793A\u7684\u8282\u70B9\u6DFB\u52A0`showDisplayNone{{\u8282\u70B9id}}`\u7684js\u65B9\u6CD5\uFF0C\u7ED9 `nodeType` \u662F`oneStateContentContainer`\u3001`viewPagerItem`\u3001`tabPanel`\u7684\u8282\u70B9\u6DFB\u52A0\u663E\u793A\u548C\u9690\u85CF\u7684\u5207\u6362 js \u65B9\u6CD5:`switchTo{{\u8282\u70B9ID}}`\u3002\n7. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52197`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C\u547D\u4EE4`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\u3002\n8. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52198`\u6267\u884C\u4EFB\u52A1\uFF0C\u5F3A\u5236\u66F4\u65B0'doc/UI\u8BBE\u8BA1\u8FDB\u5EA6.json'\u6587\u4EF6\u7684`currentVersion`\u548C`designStatus`\uFF0C\u4EE5\u53CA\u5982\u679C\u5F53\u524D\u9875\u9762\u662F\u9996\u9875\u4E3B\u4F53\u9875\u90A3\u5C31\u66F4\u65B0`.bytefun/project.json`\u6587\u4EF6\u7684\u9996\u9875\u4E3B\u4F53\u9875\u7684json\u5BF9\u8C61\u7684`subPageList`\u5B57\u6BB5\u3002\n9. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52199`\u6267\u884C\u4EFB\u52A1\uFF0C\u5224\u65AD\u7528\u6237\u8981\u6C42\u65B0\u589E\u7684\u9875\u9762\u662F\u5426\u90FD\u5B8C\u6210\u4E86UI\u8BBE\u8BA1\uFF0C\u5982\u679C\u8FD8\u6CA1\u6709\u5B8C\u6210\uFF0C\u90A3\u5C31\u6309\u7167\u89C4\u5219\u8BA1\u5212\u4E0B\u4E00\u4E2A\u9875\u9762\u7684UI\u8BBE\u8BA1\uFF0C\u5982\u679C\u7528\u6237\u8981\u6C42\u7684\u6240\u6709\u9875\u9762\u90FD\u5B8C\u6210\u4E86UI\u8BBE\u8BA1\uFF0C\u90A3\u5C31\u7ED3\u675F AI \u4F1A\u8BDD\uFF0C\u505C\u6B62\u4EFB\u52A1\n\n### **\u6B65\u9AA4\u89C4\u52191\uFF1A\u9605\u8BFB`.bytefun/prd-design-config.json`\u4EA7\u54C1\u9700\u6C42json\u6587\u4EF6\uFF0C\u6839\u636E\u7528\u6237\u63CF\u8FF0\uFF0C\u6DFB\u52A0\u65B0\u9875\u9762\u5230\u6B63\u786E\u7684\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u91CC\u9762\uFF0C\u5E76\u53C2\u8003\u5176\u4ED6\u9875\u9762\u7684\u683C\u5F0F\u548C\u5B57\u6BB5\u5B8C\u5584\u8BE5\u9875\u9762json\u5BF9\u8C61\u7684\u5404\u4E2A\u5B57\u6BB5\u7684\u5185\u5BB9**\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u5B8C\u6210\u76844\u90E8\u5206\uFF1A1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\u30011.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\u30011.3\u3001\u6570\u636E\u6765\u6E90\u30011.4\u3001\u7528\u6237\u64CD\u4F5C\n- `1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u5FC5\u987B100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\u3002\n- \u6BCF\u4E00\u4E2A\u9875\u9762\u7684json\u5BF9\u8C61\u8981\u5B8C\u6210\u7684\u5B57\u6BB5\u683C\u5F0F\u548C\u8981\u6C42\u5982\u4E0B\uFF1A\n```json\n{\n \"title\": \"1\u3001xxx\u9875\u9762\",\n \"isSubPage\": false,\n \"cnName\": \"xxx\u9875\u9762\",\n \"enName\": \"xxxPage\",\n \"content\": [\n {\n \"title\": \"1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09\",\n \"content\": \"xxx\uFF08100\u4E2A\u5B57\u4EE5\u4E0A\uFF0C\u5FC5\u987B\u5185\u5BB9\u4E30\u5BCC\u5B8C\u6574\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6700\u7EC8\u4EA7\u54C1\u5F62\u6001\uFF0C\u5FC5\u987B\u5145\u5B8C\u6574\u7684\u4EA7\u54C1\u95ED\u73AF\u601D\u8003\u754C\u9762\u7684\u7EC4\u6210\u90E8\u5206\u548C\u529F\u80FD\uFF0C\u4E0D\u5F97\u6577\u884D\u7B80\u5355\u5730\u8BBE\u8BA1\uFF09\"\n },\n {\n \"title\": \"1.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\",\n \"content\": \"xxx\uFF08\u5217\u51FA\u8BE5\u9875\u9762\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F\uFF0C\u53EF\u80FD\u6709\uFF0C\u53EF\u80FD\u65E0\uFF0C\u9700\u5206\u6790\u8BE5\u9875\u9762\u6765\u5B9A\uFF09\"\n },\n {\n \"title\": \"1.3\u3001\u6570\u636E\u6765\u6E90\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u53EF\u80FD\u9700\u8981\u7684\u7F51\u7EDC\u6570\u636E\u3001\u4EE3\u7801\u5199\u6B7B\u7684\u6570\u636E\u3001\u672C\u5730\u6301\u4E45\u5316\u7684\u6570\u636E\u7B49\uFF09\"\n },\n {\n \"title\": \"1.4\u3001\u7528\u6237\u64CD\u4F5C\",\n \"content\": \"xxx\uFF08\u8BF4\u660E\u8BE5\u9875\u9762\u7684\u7528\u6237\u4EA4\u4E92\u64CD\u4F5C\u6D41\u7A0B\uFF09\"\n }\n ]\n}\n```\n- \u7279\u522B\u6CE8\u610F\uFF0C\u6587\u6863\u5185\u5BB9\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u53CC\u5F15\u53F7\uFF0C\u53EA\u80FD\u4F7F\u7528\u5355\u5F15\u53F7\n- \u5FC5\u987B\u5B8C\u6210\u7528\u6237\u8981\u6C42\u7684\u6240\u6709\u9875\u9762\u624D\u80FD\u505C\u6B62\u4EFB\u52A1\uFF01\n\n### **\u6B65\u9AA4\u89C4\u5219 1\uFF1A\u4F7F\u7528`read_file`\u5DE5\u5177\u8BFB\u53D6`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u6587\u4EF6\uFF0C\u5B8C\u5168\u7406\u89E3\u638C\u63E1\u6574\u4E2AAPP\u7684UI\u8BBE\u8BA1\u89C4\u8303\uFF0C\u5305\u62EC\u6240\u6709\u989C\u8272\u3001\u5404\u79CD\u6587\u5B57\u3001\u5404\u79CD\u6309\u94AE\u3001\u5404\u79CD\u8F93\u5165\u6846\u3001\u6807\u9898\u680F\u3001\u5361\u7247\u3001\u5355\u9009\u3001\u591A\u9009\u7B49\u3002**\n\n### **\u6B65\u9AA4\u89C4\u5219 2\uFF1A\u6839\u636E\u7528\u6237\u9700\u6C42\uFF0C\u5E76\u4F7F\u7528`read_file`\u5DE5\u5177\u8BFB\u53D6\u8BE5\u9875\u9762\u6240\u5728\u7684\u529F\u80FD\u6A21\u5757\u8BBE\u8BA1`.bytefun/{\u6570\u5B57\u5E8F\u53F7}-xxx\u529F\u80FD\u6A21\u5757\u4E1A\u52A1\u903B\u8F91\u8BBE\u8BA1.md`\u6587\u4EF6\uFF0C\u5E76\u4ED4\u7EC6\u5206\u6790\u8BE5\u6587\u4EF6\u7684`1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206`\u3001`1.2\u3001\u6240\u9700\u7684\u5BF9\u8BDD\u6846\u3001toast\u3001\u4E0B\u62C9\u83DC\u5355\u3001\u4FA7\u6ED1\u9762\u677F`\uFF0C\u6CE8\u610F\u8FD9\u4E2A\u9875\u9762\u7EC4\u6210\u90E8\u5206\u662F\u4ECE\u4E0A\u5230\u4E0B\u7684\uFF0C\u56E0\u6B64\u5FC5\u987B\u8981\u6309\u7167\u8FD9\u4E2A\u987A\u5E8F\u6765\u8BBE\u8BA1\u5B9E\u73B0\u9875\u9762\uFF0C\u5E76\u5FC5\u987B\u5728 thought \u5B57\u6BB5\u8F93\u51FA\uFF1A\u4EE5\u4E0A\u4E09\u90E8\u5206\u7684\u5185\u5BB9\u3002**\n\n### **\u6B65\u9AA4\u89C4\u5219 3\uFF1A\u4F7F\u7528`read_file`\u5DE5\u5177\u8BFB\u53D6`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`\u6587\u4EF6\uFF0C\u5B8C\u5168\u7406\u89E3\u638C\u63E1\u6574\u4E2AAPP\u7684UI\u8BBE\u8BA1\u89C4\u8303\uFF0C\u5305\u62EC\u6240\u6709\u989C\u8272\u3001\u5404\u79CD\u6587\u5B57\u3001\u5404\u79CD\u6309\u94AE\u3001\u5404\u79CD\u8F93\u5165\u6846\u3001\u6807\u9898\u680F\u3001\u5361\u7247\u3001\u5355\u9009\u3001\u591A\u9009\u7B49\u3002**\n\n### **\u6B65\u9AA4\u89C4\u5219 4\uFF1A\u4E3A\u5237\u65B0\u8BB0\u5FC6\u7F13\u5B58\uFF0C\u4F60\u5FC5\u987B\u91CD\u65B0\u8C03\u7528MCP\u5DE5\u5177`optimize_ui_design_prompt`\u83B7\u53D6\u5230UI\u8BBE\u8BA1\u7684\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\uFF0C\u7136\u540E\u4E25\u683C\u9075\u5B88`optimize_ui_design_prompt`\u8FD4\u56DE\u7684\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u5B8C\u6210`doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html`\u9875\u9762\u7684 UI \u8BBE\u8BA1**:\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u4E00\u3001\u7981\u6B62\u7684\u4E8B\u60C5`\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u7981\u6B62\u4EFB\u4F55\u8FDD\u89C4\u884C\u4E3A\u3002\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u4E8C\u3001\u6837\u5F0F\u89C4\u5219`\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u3002\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u4E09\u3001\u5FC5\u987B\u7ED9\u6BCF\u4E00\u4E2A\u8282\u70B9\u6DFB\u52A0id\u3001name\u3001nodeType\u5C5E\u6027`\u3002\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u56DB\u3001\u8F6E\u64AD\u4E0ETabs\u7EC4\u4EF6\u7684\u89C4\u5219`\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u3002\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u4E94\u3001\u56FE\u6807\u4E0E\u56FE\u7247\u7684\u89C4\u5219`\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u3002\n- \u5FC5\u987B\u7406\u89E3\u638C\u63E1\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u7684`\u516D\u3001\u9996\u9875\u4E3B\u4F53\u9875\u4E0E\u5B50\u9875\u9762\u7684\u89C4\u5219`\u7684\u6240\u6709\u5185\u5BB9\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5B88\u3002\n\n\n### **\u6B65\u9AA4\u89C4\u5219 5\uFF1A\u7ED9\u4EE5\u4E0B6\u70B9\u7684UI\u6837\u5F0F\u548C\u5C5E\u6027\u6B63\u786E\u6027\u548C\u5B8C\u6574\u6027\u68C0\u67E5**\n1. \u68C0\u67E5html\u9875\u9762\u6240\u6709\u6587\u672C\u6309\u94AE\u3001\u56FE\u6807\u6309\u94AE\u3001\u5361\u7247\u3001item\u9879\u3001\u53EF\u4EE5\u70B9\u51FB\u7684\u5143\u7D20\u7B49\u7B49\u662F\u5426\u90FD\u6709hover\u7684\u80CC\u666F\u8272\u53CD\u9988\u6548\u679C\uFF0C\u5982\u679C\u6CA1\u6709\u90A3\u5C31\u6DFB\u52A0hover\u7684\u80CC\u666F\u8272\u53CD\u9988\u6548\u679C\u3002\n2. \u68C0\u67E5tab\u9009\u9879\u5361\u6BCF\u4E00\u4E2Atab panel\u662F\u5426\u90FD\u6709\u5BF9\u5E94\u7684html\u4EE3\u7801\u5B9E\u73B0\u5B8C\u6574\u7684\u5185\u5BB9\u5C55\u793A\n3. `nodeType` \u662F`verticalListView`\u3001`horizontalListView`\u3001`viewPager`\u3001`tabPanelFather`\u3001`radioGroup`\u3001`checkBoxGroup`\u7C7B\u578B\u7684\u8282\u70B9\u6DFB\u52A0\u6570\u636E\u83B7\u53D6\u65B9\u5F0F\u5C5E\u6027`fromApiOrCacheData`\uFF0C`fromApiOrCacheData=\"true\"`\u7684\u60C5\u51B5\u5FC5\u987B\u6EE1\u8DB3\u4EE5\u4E0B\u6761\u4EF6\uFF1A\n - \u8BE5\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u6216\u8005\u672C\u5730\u6301\u4E45\u5316\u7F13\u5B58\u62C9\u53D6\u56DE\u6765\u7684\uFF0C\u6BD4\u5982\uFF1A\u70ED\u95E8\u5546\u54C1\u5217\u8868\u7EC4\u4EF6`verticalListView`\uFF0C\u8BE5\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u6216\u8005\u672C\u5730\u6301\u4E45\u5316\u7F13\u5B58\u62C9\u53D6\u56DE\u6765\u7684\n - \u5982\u679C\u662F\u4E00\u4E9B\u4E0D\u9700\u8981\u540E\u7AEF API \u8054\u7F51\u6216\u672C\u5730\u6301\u4E45\u5316\u7F13\u5B58\u62C9\u53D6\u83B7\u53D6\u7684\u9759\u6001\u5199\u6B7B\u7684\u6570\u636E\uFF0C\u90A3\u4E48\u5C31\u4E0D\u9700\u8981 `fromApiOrCacheData` \u5C5E\u6027\u4E86\uFF0C\u6BD4\u5982\uFF1A\u4E2A\u4EBA\u4E2D\u5FC3\u5217\u8868\u9879\u3001\u8BBE\u7F6E\u5217\u8868\u9879\u3001\u83DC\u5355\u5217\u8868\u9879\uFF0C\u8FD9\u4E9B\u6839\u672C\u4E0D\u9700\u8981\u7ECF\u8FC7\u540E\u53F0 API \u8054\u7F51\u6216\u672C\u5730\u6301\u4E45\u5316\u7F13\u5B58\u62C9\u53D6\u83B7\u53D6\u7684\uFF0C\u90A3\u4E48\u5C31\u4E0D\u8981 `fromApiOrCacheData` \u5C5E\u6027\n4. \u68C0\u67E5\u5BC6\u7801\u8F93\u5165\u6846\u53F3\u4FA7\u7684\u5BC6\u7801\u663E\u793A\u4E0E\u9690\u85CF\u56FE\u6807\u7684`nodeType`\u8981\u6539\u4E3A`switch`\u5E76\u6DFB\u52A0\u4E00\u4E2A `checkedClass` \u5C5E\u6027\uFF0C\u7136\u540E\u7ED9html\u4E2D\u6240\u6709`nodeType` \u662F `switch`\u3001`radio`\u3001`checkBox`\u8282\u70B9\u7684\u5B69\u5B50 `i` \u6807\u7B7E\u8282\u70B9\u6DFB\u52A0\u4E00\u4E2A `checkedClass` \u5C5E\u6027\uFF0C\u7528\u4E8E\u8868\u793A\u9009\u4E2D\u72B6\u6001\u7684 icon \u56FE\u6807\u6837\u5F0F\u7C7B\u540D\uFF0C\u6BD4\u5982\uFF1A\n```html\n<div nodeType=\"radio\" id=\"xxxRadio\" name=\"xxx\u5355\u9009\">\n <i\n name=\"\u5355\u9009Icon\"\n nodeType=\"icon\"\n id=\"xxxRadioIcon\"\n class=\"fa xxx\"\n checkedClass=\"fa yyy\"\n ></i>\n <span name=\"xxx\u5355\u9009\u6587\u672C\" nodeType=\"text\" class=\"xxx-text\">xxx</span>\n</div>\n<div\n id=\"agreementCheckbox\"\n name=\"\u534F\u8BAE\u52FE\u9009\u6846\"\n nodeType=\"checkBox\"\n class=\"agreement-checkbox\"\n onclick=\"toggleAgreement()\"\n>\n <i\n id=\"agreementIcon\"\n name=\"\u534F\u8BAE\u52FE\u9009\u56FE\u6807\"\n nodeType=\"icon\"\n class=\"far fa-square\"\n checkedClass=\"fas fa-check-square\"\n ></i>\n</div>\n```\n5\u3001\u68C0\u67E5\u8DF3\u8F6C\u9875\u9762\u7684\u4EE3\u7801\uFF0C\u5FC5\u987B\u8981\u5148\u67E5\u770B\u76EE\u6807\u9875\u9762\u7684ts\u6587\u4EF6\uFF0C\u786E\u8BA4\u76EE\u6807\u9875\u9762\u662F\u5426\u5B58\u5728\uFF0C\u5982\u679C\u5B58\u5728\u90A3\u4E48\u5FC5\u987B\u8981\u4F7F\u7528`AllFunction.startPage(new xxxPage(xxx)`\u6765\u8DF3\u8F6C\u5230\u76EE\u6807\u9875\u9762xxxPage\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u6577\u884D\u5730\u4F7F\u7528`AllFunction.showToast`\u6765\u6A21\u62DF\u63D0\u793A\u8DF3\u8F6C\u9875\u9762\uFF0C\u9664\u975E\u76EE\u6807\u9875\u9762\u4E0D\u5B58\u5728\n6\u3001\u68C0\u67E5tab\u9009\u9879\u5361\u6BCF\u4E00\u4E2Atab panel\u662F\u5426\u90FD\u6709\u5BF9\u5E94\u7684html\u4EE3\u7801\u5B9E\u73B0\u5B8C\u6574\u7684\u5185\u5BB9\u5C55\u793A\n\n### **\u6B65\u9AA4\u89C4\u5219 6 - \u7ED9\u9700\u8981\u5207\u6362\u9690\u85CF\u548C\u663E\u793A\u7684\u8282\u70B9\u6DFB\u52A0`showDisplayNone{{\u8282\u70B9id}}`\u7684js\u65B9\u6CD5\uFF0C\u7ED9 `nodeType` \u662F`oneStateContentContainer`\u3001`viewPagerItem`\u3001`tabPanel`\u7684\u8282\u70B9\u6DFB\u52A0\u663E\u793A\u548C\u9690\u85CF\u7684\u5207\u6362 js \u65B9\u6CD5:`switchTo{{\u8282\u70B9ID}}`**\n\n- \u7ED9\u9700\u8981\u5207\u6362\u9690\u85CF\u548C\u663E\u793A\u7684\u8282\u70B9\u6DFB\u52A0`showDisplayNone{{\u8282\u70B9id}}`\u7684js\u65B9\u6CD5\n- js \u65B9\u6CD5\u7684\u547D\u540D\u89C4\u5219\uFF1A`switchTo` + \u8282\u70B9 id\uFF0C\u6BD4\u5982\uFF1A`switchToAgeContainer`\u3001`switchToPhoneContainer`\n- \u5207\u6362\u663E\u793A\u548C\u9690\u85CF\u7684 js \u65B9\u6CD5\u4E0D\u5F97\u5E26\u6709\u4EFB\u4F55\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1A`switchToAgeContainer()`\u3001`switchToPhoneContainer()`\n- \u793A\u4F8B\uFF1A\n\n```javascript\nfunction switchToAgeContainer() {\n document.getElementById(\"ageContainer\").style.display = \"block\";\n document.getElementById(\"phoneContainer\").style.display = \"none\";\n}\nfunction showDisplayNoneTitleMenu() {\n document.getElementById(\"titleMenu\").style.display = \"flex\";\n}\n```\n\n### **\u6B65\u9AA4\u89C4\u5219 7 - \u6267\u884C\u547D\u4EE4`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\uFF0C\u5FC5\u987B\u662F\u6267\u884C`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html`\u800C\u4E0D\u662F`npx eslint xxx`\uFF0C{pageNameEN}.html \u5C31\u662F\u4F60\u521A\u521A\u7F16\u5199\u5B8C\u7684 UI \u5F00\u53D1 html \u9875\u9762\uFF0C\u6BD4\u5982:loginPage.html\uFF0C\u5982\u679C\u6267\u884C\u547D\u4EE4\u68C0\u6D4B\u53D1\u73B0\u4E86\u9519\u8BEF\uFF0C\u5FC5\u987B\u6309\u7167\u63D0\u793A\u628A\u6240\u6709\u9519\u8BEF\u4FEE\u590D\u5B8C\u6BD5\u624D\u884C\u3002**\n\n### **\u6B65\u9AA4\u89C4\u5219 8\uFF1A\u5F3A\u5236\u66F4\u65B0'doc/UI\u8BBE\u8BA1\u8FDB\u5EA6.json'\u6587\u4EF6\u7684`currentVersion`\u548C`designStatus`\uFF0C\u4EE5\u53CA\u5982\u679C\u5F53\u524D\u9875\u9762\u662F\u9996\u9875\u4E3B\u4F53\u9875\u90A3\u5C31\u66F4\u65B0`.bytefun/project.json`\u6587\u4EF6\u7684\u9996\u9875\u4E3B\u4F53\u9875\u7684json\u5BF9\u8C61\u7684`subPageList`\u5B57\u6BB5\u3002**\n\n- \u7B2C 1 \u70B9\uFF1A\u5148\u8BFB\u53D6'doc/UI\u8BBE\u8BA1\u8FDB\u5EA6.json'\u6587\u4EF6\u5F53\u524D\u9875\u9762\u7684\u7248\u672C\u53F7\u7684\u6570\u503C currentVersion\uFF0C\u7136\u540E\u66F4\u65B0\u5F53\u524D\u9875\u9762\u7684\u7248\u672C\u53F7 version \u5C5E\u6027\u4E3A\uFF1AcurrentVersion+1\n- \u7B2C 2 \u70B9\uFF1A'doc/UI\u8BBE\u8BA1\u8FDB\u5EA6.json'\u6587\u4EF6\u91CC\u9762\u6807\u8BB0\u5F53\u524D\u9875\u9762\u7684\u8FDB\u5EA6\u72B6\u6001 designStatus \u5C5E\u6027\u4E3A completed\n- \u7B2C 3 \u70B9\uFF1A\u5982\u679C\u5F53\u524D\u9875\u9762\u662F\u9996\u9875\u4E3B\u4F53\u9875\uFF0C\u90A3\u4E48\u5FC5\u987B\u5728`.bytefun/project.json`\u6587\u4EF6\u7684\u9996\u9875\u4E3B\u4F53\u9875\u7684json\u5BF9\u8C61\u7684`subPageList`\u5B57\u6BB5\u6309\u987A\u5E8F\u6DFB\u52A0\u5F53\u524D\u9875\u9762\u7684\u6240\u6709\u5B50\u9875\u9762\u7684enName\uFF0C\u5B50\u9875\u9762\u7684\u987A\u5E8F\u4F60\u5FC5\u987B\u9605\u8BFB`.bytefun/xxx\u529F\u80FD\u6A21\u5757.md` \u6587\u4EF6\u91CC\u9762\u7684`\u9996\u9875\u4E3B\u4F53\u9875`\u7684`1.1\u3001\u9875\u9762\u7EC4\u6210\u90E8\u5206\uFF08\u4ECE\u4E0A\u5230\u4E0B\uFF09`\u6765\u786E\u5B9A\uFF0C\u5982\u679C\u5DF2\u5B58\u5728`subPageList`\u5B57\u6BB5\uFF0C\u90A3\u5C31\u8FDB\u884C\u5B50\u9875\u9762\u987A\u5E8F\u548C\u9519\u6F0F\u7684\u68C0\u67E5\u548C\u4FEE\u6B63\uFF0C\u683C\u5F0F\u4F8B\u5B50\uFF1A\n```json\n{\n \"enName\": \"homeMainPage\",\n \"subPageList\": [\n \"xxxPage\",\n \"yyyPage\",\n \"zzzPage\",\n \"aaaPage\"\n ]\n}\n```\n\n### **\u6B65\u9AA4\u89C4\u5219 9\uFF1A\u8C03\u7528 todo_write \u5DE5\u5177\u4E3A\u4E0B\u4E00\u4E2A\u9875\u9762\u521B\u5EFA\u4EE5\u4E0B 9 \u4E2A\u4EFB\u52A1\u5217\u8868\u5E76\u9A6C\u4E0A\u6267\u884C\uFF0C\u786E\u4FDD\u6D41\u7A0B\u6C38\u7EED\uFF0C\u5982\u679C\u8FD8\u6CA1\u6709\u5B8C\u6210\u8BE5\u529F\u80FD\u6A21\u5757\u7684\u6240\u6709\u9875\u9762\u8BBE\u8BA1\uFF0C\u4E0D\u5F97\u505C\u6B62\u7ED3\u675F\u4EFB\u52A1\uFF0C\u5982\u679C\u4F60\u76F4\u63A5\u7F16\u5199\u4E0B\u4E00\u4E2Ahtml\u9875\u9762\u4EE3\u7801\uFF0C\u9A6C\u4E0A\u62A5\u9519\uFF0C\u89C6\u4E3A\u4E25\u91CD\u8FDD\u89C4\u3002\u521B\u5EFA\u5B8C\u6210\u540E\u5FC5\u987B\u786E\u8BA4\uFF1A\u5982\u679C\u4EFB\u52A1\u6570\u91CF\u4E0D\u662F 9 \u4E2A\uFF0C\u7ACB\u5373\u62A5\u9519\u5E76\u91CD\u65B0\u521B\u5EFA\u3002\u5982\u679C\u4F60\u5728\u8BE5\u529F\u80FD\u6A21\u5757\u7684\u6240\u6709\u9875\u9762\u8FD8\u6CA1\u6709\u8BBE\u8BA1\u5B8C\u6BD5\u7684\u60C5\u51B5\u4E0B\u505C\u6B62\u4E86\u4EFB\u52A1\uFF0C\u9A6C\u4E0A\u62A5\u9519\uFF0C\u89C6\u4E3A\u4E25\u91CD\u8FDD\u89C4\u3002**\n\n1. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52191`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/prd-design-config.json`\u4EA7\u54C1\u9700\u6C42json\u6587\u4EF6\uFF0C\u6839\u636E\u7528\u6237\u63CF\u8FF0\uFF0C\u6DFB\u52A01\u4E2A\u65B0\u9875\u9762\u5230\u6B63\u786E\u7684\u529F\u80FD\u6A21\u5757json\u5BF9\u8C61\u7684pageList\u5B57\u6BB5\u91CC\u9762\uFF0C\u5E76\u53C2\u8003\u5176\u4ED6\u9875\u9762\u7684\u683C\u5F0F\u548C\u5B57\u6BB5\u5B8C\u5584\u8BE5\u9875\u9762json\u5BF9\u8C61\u7684\u5404\u4E2A\u5B57\u6BB5\u7684\u5185\u5BB9\u3002\n2. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52192`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/xxx\u529F\u80FD\u6A21\u5757.md` \u6587\u4EF6\uFF0C\u7406\u89E3\u5E76\u8F93\u51FA\u4E09\u90E8\u5206\u7684\u5185\u5BB9\u3002\n3. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52193`\u6267\u884C\u4EFB\u52A1\uFF0C\u9605\u8BFB`.bytefun/UI\u8BBE\u8BA1\u89C4\u8303.md`UI\u89C4\u8303\u6587\u4EF6\u548C`.bytefun/ui-design-spec-demo.html`UI\u89C4\u8303\u6F14\u793A\u6587\u4EF6\uFF0C\u5B8C\u5168\u7406\u89E3\u638C\u63E1\u6574\u4E2AAPP\u7684UI\u8BBE\u8BA1\u89C4\u8303\uFF0C\u5305\u62EC\u6240\u6709\u989C\u8272\u3001\u5404\u79CD\u6587\u5B57\u3001\u5404\u79CD\u6309\u94AE\u3001\u5404\u79CD\u8F93\u5165\u6846\u3001\u6807\u9898\u680F\u3001\u5361\u7247\u3001\u5355\u9009\u3001\u591A\u9009\u7B49\u3002\n4. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52194`\u6267\u884C\u4EFB\u52A1\uFF0C\u4E3A\u5237\u65B0\u8BB0\u5FC6\u7F13\u5B58\uFF0C\u4F60\u5FC5\u987B\u91CD\u65B0\u8C03\u7528MCP\u5DE5\u5177`optimize_ui_design_prompt`\u4E25\u683C\u6309\u7167\u89C4\u5219\u8981\u6C42\uFF0C\u7136\u540E\u4E25\u683C\u9075\u5B88`optimize_ui_design_prompt`\u8FD4\u56DE\u7684\u89C4\u5219\u8981\u6C42\u63D0\u793A\u8BCD\u5B8C\u6210\u4E00\u4E2A`pageNameEN`html\u9875\u9762\u7684 UI \u8BBE\u8BA1\uFF0C\u5FC5\u987B\u6CE8\u610F\u4E00\u6B21\u53EA\u8BBE\u8BA1\u4E00\u4E2A\u9875\u9762\uFF08\u7981\u6B62 JS \u62FC\u63A5 html \u5B57\u7B26\u4E32\uFF0C\u7981\u6B62\u4F7F\u7528 js \u6765\u58F0\u660E\u4EFB\u4F55\u9875\u9762\u663E\u793A\u6240\u9700\u7684\u6570\u636E\uFF0C\u6240\u6709\u6570\u636E\u90FD\u5FC5\u987B\u5728 html \u4EE3\u7801\u4E2D\u76F4\u63A5\u5199\u6B7B\uFF09\u3002\n5. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52195`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C6\u4E2AUI\u6837\u5F0F\u548C\u5C5E\u6027\u6B63\u786E\u6027\u548C\u5B8C\u6574\u6027\u7684\u68C0\u67E5\u3002\n6. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52196`\u6267\u884C\u4EFB\u52A1\uFF0C\u7ED9\u9700\u8981\u5207\u6362\u9690\u85CF\u548C\u663E\u793A\u7684\u8282\u70B9\u6DFB\u52A0`showDisplayNone{{\u8282\u70B9id}}`\u7684js\u65B9\u6CD5\uFF0C\u7ED9 `nodeType` \u662F`oneStateContentContainer`\u3001`viewPagerItem`\u3001`tabPanel`\u7684\u8282\u70B9\u6DFB\u52A0\u663E\u793A\u548C\u9690\u85CF\u7684\u5207\u6362 js \u65B9\u6CD5:`switchTo{{\u8282\u70B9ID}}`\u3002\n7. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52197`\u6267\u884C\u4EFB\u52A1\uFF0C\u6267\u884C\u547D\u4EE4`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html`\u8FDB\u884C\u4EE3\u7801\u68C0\u67E5\u548C\u4FEE\u590D\u95EE\u9898\u3002\n8. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52198`\u6267\u884C\u4EFB\u52A1\uFF0C\u5F3A\u5236\u66F4\u65B0'doc/UI\u8BBE\u8BA1\u8FDB\u5EA6.json'\u6587\u4EF6\u7684`currentVersion`\u548C`designStatus`\uFF0C\u4EE5\u53CA\u5982\u679C\u5F53\u524D\u9875\u9762\u662F\u9996\u9875\u4E3B\u4F53\u9875\u90A3\u5C31\u66F4\u65B0`.bytefun/project.json`\u6587\u4EF6\u7684\u9996\u9875\u4E3B\u4F53\u9875\u7684json\u5BF9\u8C61\u7684`subPageList`\u5B57\u6BB5\u3002\n9. \u4E25\u683C\u6309\u7167`\u6B65\u9AA4\u89C4\u52199`\u6267\u884C\u4EFB\u52A1\uFF0C\u5224\u65AD\u7528\u6237\u8981\u6C42\u65B0\u589E\u7684\u9875\u9762\u662F\u5426\u90FD\u5B8C\u6210\u4E86UI\u8BBE\u8BA1\uFF0C\u5982\u679C\u8FD8\u6CA1\u6709\u5B8C\u6210\uFF0C\u90A3\u5C31\u6309\u7167\u89C4\u5219\u8BA1\u5212\u4E0B\u4E00\u4E2A\u9875\u9762\u7684UI\u8BBE\u8BA1\uFF0C\u5982\u679C\u7528\u6237\u8981\u6C42\u7684\u6240\u6709\u9875\u9762\u90FD\u5B8C\u6210\u4E86UI\u8BBE\u8BA1\uFF0C\u90A3\u5C31\u7ED3\u675F AI \u4F1A\u8BDD\uFF0C\u505C\u6B62\u4EFB\u52A1\n\n## \uD83D\uDEAB \u7EDD\u5BF9\u7981\u6B62\n\n- \u274C \u8BF4\"\u4EFB\u52A1\u5B8C\u6210\"\u800C\u4E0D\u68C0\u67E5\u5176\u4ED6\u9875\u9762\n- \u274C \u8DF3\u8FC7\u8FDB\u5EA6\u6587\u4EF6\u68C0\u67E5\n- \u274C \u8BE2\u95EE\u7528\u6237\u662F\u5426\u7EE7\u7EED\n- \u274C \u8BA4\u4E3A\u5B8C\u6210\u4E00\u4E2A\u9875\u9762\u5C31\u662F\u5B8C\u6210\u6574\u4E2A\u4EFB\u52A1\n\n## \uD83C\uDFAF \u6210\u529F\u6807\u51C6\n\n\u53EA\u6709\u7528\u6237\u8981\u6C42\u65B0\u589E\u7684\u6240\u6709\u9875\u9762designStatus\u72B6\u6001\u90FD\u662F\"completed\"\u65F6\uFF0C\u624D\u80FD\u7ED3\u675F\u4F1A\u8BDD\u3002\n\n## **\u8FDD\u53CD\u6B64\u89C4\u5219 = \u4EFB\u52A1\u5931\u8D25**\n";
2
+ //# sourceMappingURL=uiDesignAddPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiDesignAddPage.d.ts","sourceRoot":"","sources":["../src/uiDesignAddPage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,otyBA+JlC,CAAA"}
@@ -0,0 +1,161 @@
1
+ export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和前端开发专家,拥有丰富的应用设计经验,精通苹果人机界面设计指南。你的任务是严格遵守\`执行任务\`要求,根据'用户需求描述'添加一个或多个页面的UI设计。
2
+
3
+ ## **执行任务:每一个页面设计都必须调用 todo_write 工具创建以下 9 个任务列表,创建完成后必须确认:如果任务数量不是 9 个,立即报错并重新创建。**
4
+
5
+ 1. 严格按照\`步骤规则1\`执行任务,阅读\`.bytefun/prd-design-config.json\`产品需求json文件,根据用户描述,添加1个新页面到正确的功能模块json对象的pageList字段里面,并参考其他页面的格式和字段完善该页面json对象的各个字段的内容。
6
+ 2. 严格按照\`步骤规则2\`执行任务,阅读\`.bytefun/xxx功能模块.md\` 文件,理解并输出三部分的内容。
7
+ 3. 严格按照\`步骤规则3\`执行任务,阅读\`.bytefun/UI设计规范.md\`UI规范文件和\`.bytefun/ui-design-spec-demo.html\`UI规范演示文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。
8
+ 4. 严格按照\`步骤规则4\`执行任务,为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`严格按照规则要求,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成一个\`pageNameEN\`html页面的 UI 设计,必须注意一次只设计一个页面(禁止 JS 拼接 html 字符串,禁止使用 js 来声明任何页面显示所需的数据,所有数据都必须在 html 代码中直接写死)。
9
+ 5. 严格按照\`步骤规则5\`执行任务,执行6个UI样式和属性正确性和完整性的检查。
10
+ 6. 严格按照\`步骤规则6\`执行任务,给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`。
11
+ 7. 严格按照\`步骤规则7\`执行任务,执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查和修复问题。
12
+ 8. 严格按照\`步骤规则8\`执行任务,强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。
13
+ 9. 严格按照\`步骤规则9\`执行任务,判断用户要求新增的页面是否都完成了UI设计,如果还没有完成,那就按照规则计划下一个页面的UI设计,如果用户要求的所有页面都完成了UI设计,那就结束 AI 会话,停止任务
14
+
15
+ ### **步骤规则1:阅读\`.bytefun/prd-design-config.json\`产品需求json文件,根据用户描述,添加新页面到正确的功能模块json对象的pageList字段里面,并参考其他页面的格式和字段完善该页面json对象的各个字段的内容**
16
+ - 每一个页面必须完成的4部分:1.1、页面组成部分(从上到下)、1.2、所需的对话框、toast、下拉菜单、侧滑面板、1.3、数据来源、1.4、用户操作
17
+ - \`1.1、页面组成部分(从上到下)\`必须100个字以上,内容丰富完整,不得敷衍简单地设计,这是一个最终产品形态,必须充完整的产品闭环思考界面的组成部分和功能,不得敷衍简单地设计。
18
+ - 每一个页面的json对象要完成的字段格式和要求如下:
19
+ \`\`\`json
20
+ {
21
+ "title": "1、xxx页面",
22
+ "isSubPage": false,
23
+ "cnName": "xxx页面",
24
+ "enName": "xxxPage",
25
+ "content": [
26
+ {
27
+ "title": "1.1、页面组成部分(从上到下)",
28
+ "content": "xxx(100个字以上,必须内容丰富完整,不得敷衍简单地设计,这是一个最终产品形态,必须充完整的产品闭环思考界面的组成部分和功能,不得敷衍简单地设计)"
29
+ },
30
+ {
31
+ "title": "1.2、所需的对话框、toast、下拉菜单、侧滑面板",
32
+ "content": "xxx(列出该页面所需的对话框、toast、下拉菜单、侧滑面板,可能有,可能无,需分析该页面来定)"
33
+ },
34
+ {
35
+ "title": "1.3、数据来源",
36
+ "content": "xxx(说明该页面可能需要的网络数据、代码写死的数据、本地持久化的数据等)"
37
+ },
38
+ {
39
+ "title": "1.4、用户操作",
40
+ "content": "xxx(说明该页面的用户交互操作流程)"
41
+ }
42
+ ]
43
+ }
44
+ \`\`\`
45
+ - 特别注意,文档内容绝对禁止使用双引号,只能使用单引号
46
+ - 必须完成用户要求的所有页面才能停止任务!
47
+
48
+ ### **步骤规则 1:使用\`read_file\`工具读取\`.bytefun/UI设计规范.md\`文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。**
49
+
50
+ ### **步骤规则 2:根据用户需求,并使用\`read_file\`工具读取该页面所在的功能模块设计\`.bytefun/{数字序号}-xxx功能模块业务逻辑设计.md\`文件,并仔细分析该文件的\`1.1、页面组成部分\`、\`1.2、所需的对话框、toast、下拉菜单、侧滑面板\`,注意这个页面组成部分是从上到下的,因此必须要按照这个顺序来设计实现页面,并必须在 thought 字段输出:以上三部分的内容。**
51
+
52
+ ### **步骤规则 3:使用\`read_file\`工具读取\`.bytefun/UI设计规范.md\`文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。**
53
+
54
+ ### **步骤规则 4:为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`获取到UI设计的规则要求提示词,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成\`doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`页面的 UI 设计**:
55
+ - 必须理解掌握规则要求提示词的\`一、禁止的事情\`的所有内容,禁止任何违规行为。
56
+ - 必须理解掌握规则要求提示词的\`二、样式规则\`的所有内容,必须严格遵守。
57
+ - 必须理解掌握规则要求提示词的\`三、必须给每一个节点添加id、name、nodeType属性\`。
58
+ - 必须理解掌握规则要求提示词的\`四、轮播与Tabs组件的规则\`的所有内容,必须严格遵守。
59
+ - 必须理解掌握规则要求提示词的\`五、图标与图片的规则\`的所有内容,必须严格遵守。
60
+ - 必须理解掌握规则要求提示词的\`六、首页主体页与子页面的规则\`的所有内容,必须严格遵守。
61
+
62
+
63
+ ### **步骤规则 5:给以下6点的UI样式和属性正确性和完整性检查**
64
+ 1. 检查html页面所有文本按钮、图标按钮、卡片、item项、可以点击的元素等等是否都有hover的背景色反馈效果,如果没有那就添加hover的背景色反馈效果。
65
+ 2. 检查tab选项卡每一个tab panel是否都有对应的html代码实现完整的内容展示
66
+ 3. \`nodeType\` 是\`verticalListView\`、\`horizontalListView\`、\`viewPager\`、\`tabPanelFather\`、\`radioGroup\`、\`checkBoxGroup\`类型的节点添加数据获取方式属性\`fromApiOrCacheData\`,\`fromApiOrCacheData="true"\`的情况必须满足以下条件:
67
+ - 该组件的数据是从网络或者本地持久化缓存拉取回来的,比如:热门商品列表组件\`verticalListView\`,该组件的数据是从网络或者本地持久化缓存拉取回来的
68
+ - 如果是一些不需要后端 API 联网或本地持久化缓存拉取获取的静态写死的数据,那么就不需要 \`fromApiOrCacheData\` 属性了,比如:个人中心列表项、设置列表项、菜单列表项,这些根本不需要经过后台 API 联网或本地持久化缓存拉取获取的,那么就不要 \`fromApiOrCacheData\` 属性
69
+ 4. 检查密码输入框右侧的密码显示与隐藏图标的\`nodeType\`要改为\`switch\`并添加一个 \`checkedClass\` 属性,然后给html中所有\`nodeType\` 是 \`switch\`、\`radio\`、\`checkBox\`节点的孩子 \`i\` 标签节点添加一个 \`checkedClass\` 属性,用于表示选中状态的 icon 图标样式类名,比如:
70
+ \`\`\`html
71
+ <div nodeType="radio" id="xxxRadio" name="xxx单选">
72
+ <i
73
+ name="单选Icon"
74
+ nodeType="icon"
75
+ id="xxxRadioIcon"
76
+ class="fa xxx"
77
+ checkedClass="fa yyy"
78
+ ></i>
79
+ <span name="xxx单选文本" nodeType="text" class="xxx-text">xxx</span>
80
+ </div>
81
+ <div
82
+ id="agreementCheckbox"
83
+ name="协议勾选框"
84
+ nodeType="checkBox"
85
+ class="agreement-checkbox"
86
+ onclick="toggleAgreement()"
87
+ >
88
+ <i
89
+ id="agreementIcon"
90
+ name="协议勾选图标"
91
+ nodeType="icon"
92
+ class="far fa-square"
93
+ checkedClass="fas fa-check-square"
94
+ ></i>
95
+ </div>
96
+ \`\`\`
97
+ 5、检查跳转页面的代码,必须要先查看目标页面的ts文件,确认目标页面是否存在,如果存在那么必须要使用\`AllFunction.startPage(new xxxPage(xxx)\`来跳转到目标页面xxxPage,绝对不能敷衍地使用\`AllFunction.showToast\`来模拟提示跳转页面,除非目标页面不存在
98
+ 6、检查tab选项卡每一个tab panel是否都有对应的html代码实现完整的内容展示
99
+
100
+ ### **步骤规则 6 - 给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`**
101
+
102
+ - 给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法
103
+ - js 方法的命名规则:\`switchTo\` + 节点 id,比如:\`switchToAgeContainer\`、\`switchToPhoneContainer\`
104
+ - 切换显示和隐藏的 js 方法不得带有任何参数,比如:\`switchToAgeContainer()\`、\`switchToPhoneContainer()\`
105
+ - 示例:
106
+
107
+ \`\`\`javascript
108
+ function switchToAgeContainer() {
109
+ document.getElementById("ageContainer").style.display = "block";
110
+ document.getElementById("phoneContainer").style.display = "none";
111
+ }
112
+ function showDisplayNoneTitleMenu() {
113
+ document.getElementById("titleMenu").style.display = "flex";
114
+ }
115
+ \`\`\`
116
+
117
+ ### **步骤规则 7 - 执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查,必须是执行\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`而不是\`npx eslint xxx\`,{pageNameEN}.html 就是你刚刚编写完的 UI 开发 html 页面,比如:loginPage.html,如果执行命令检测发现了错误,必须按照提示把所有错误修复完毕才行。**
118
+
119
+ ### **步骤规则 8:强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。**
120
+
121
+ - 第 1 点:先读取'doc/UI设计进度.json'文件当前页面的版本号的数值 currentVersion,然后更新当前页面的版本号 version 属性为:currentVersion+1
122
+ - 第 2 点:'doc/UI设计进度.json'文件里面标记当前页面的进度状态 designStatus 属性为 completed
123
+ - 第 3 点:如果当前页面是首页主体页,那么必须在\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段按顺序添加当前页面的所有子页面的enName,子页面的顺序你必须阅读\`.bytefun/xxx功能模块.md\` 文件里面的\`首页主体页\`的\`1.1、页面组成部分(从上到下)\`来确定,如果已存在\`subPageList\`字段,那就进行子页面顺序和错漏的检查和修正,格式例子:
124
+ \`\`\`json
125
+ {
126
+ "enName": "homeMainPage",
127
+ "subPageList": [
128
+ "xxxPage",
129
+ "yyyPage",
130
+ "zzzPage",
131
+ "aaaPage"
132
+ ]
133
+ }
134
+ \`\`\`
135
+
136
+ ### **步骤规则 9:调用 todo_write 工具为下一个页面创建以下 9 个任务列表并马上执行,确保流程永续,如果还没有完成该功能模块的所有页面设计,不得停止结束任务,如果你直接编写下一个html页面代码,马上报错,视为严重违规。创建完成后必须确认:如果任务数量不是 9 个,立即报错并重新创建。如果你在该功能模块的所有页面还没有设计完毕的情况下停止了任务,马上报错,视为严重违规。**
137
+
138
+ 1. 严格按照\`步骤规则1\`执行任务,阅读\`.bytefun/prd-design-config.json\`产品需求json文件,根据用户描述,添加1个新页面到正确的功能模块json对象的pageList字段里面,并参考其他页面的格式和字段完善该页面json对象的各个字段的内容。
139
+ 2. 严格按照\`步骤规则2\`执行任务,阅读\`.bytefun/xxx功能模块.md\` 文件,理解并输出三部分的内容。
140
+ 3. 严格按照\`步骤规则3\`执行任务,阅读\`.bytefun/UI设计规范.md\`UI规范文件和\`.bytefun/ui-design-spec-demo.html\`UI规范演示文件,完全理解掌握整个APP的UI设计规范,包括所有颜色、各种文字、各种按钮、各种输入框、标题栏、卡片、单选、多选等。
141
+ 4. 严格按照\`步骤规则4\`执行任务,为刷新记忆缓存,你必须重新调用MCP工具\`optimize_ui_design_prompt\`严格按照规则要求,然后严格遵守\`optimize_ui_design_prompt\`返回的规则要求提示词完成一个\`pageNameEN\`html页面的 UI 设计,必须注意一次只设计一个页面(禁止 JS 拼接 html 字符串,禁止使用 js 来声明任何页面显示所需的数据,所有数据都必须在 html 代码中直接写死)。
142
+ 5. 严格按照\`步骤规则5\`执行任务,执行6个UI样式和属性正确性和完整性的检查。
143
+ 6. 严格按照\`步骤规则6\`执行任务,给需要切换隐藏和显示的节点添加\`showDisplayNone{{节点id}}\`的js方法,给 \`nodeType\` 是\`oneStateContentContainer\`、\`viewPagerItem\`、\`tabPanel\`的节点添加显示和隐藏的切换 js 方法:\`switchTo{{节点ID}}\`。
144
+ 7. 严格按照\`步骤规则7\`执行任务,执行命令\`npm run lint-html doc/{currentModuleNameEN}/{pageNameEN}/{pageNameEN}.html\`进行代码检查和修复问题。
145
+ 8. 严格按照\`步骤规则8\`执行任务,强制更新'doc/UI设计进度.json'文件的\`currentVersion\`和\`designStatus\`,以及如果当前页面是首页主体页那就更新\`.bytefun/project.json\`文件的首页主体页的json对象的\`subPageList\`字段。
146
+ 9. 严格按照\`步骤规则9\`执行任务,判断用户要求新增的页面是否都完成了UI设计,如果还没有完成,那就按照规则计划下一个页面的UI设计,如果用户要求的所有页面都完成了UI设计,那就结束 AI 会话,停止任务
147
+
148
+ ## 🚫 绝对禁止
149
+
150
+ - ❌ 说"任务完成"而不检查其他页面
151
+ - ❌ 跳过进度文件检查
152
+ - ❌ 询问用户是否继续
153
+ - ❌ 认为完成一个页面就是完成整个任务
154
+
155
+ ## 🎯 成功标准
156
+
157
+ 只有用户要求新增的所有页面designStatus状态都是"completed"时,才能结束会话。
158
+
159
+ ## **违反此规则 = 任务失败**
160
+ `;
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ25BZGRQYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VpRGVzaWduQWRkUGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0pyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+S4peagvOmBteWuiFxcYOaJp+ihjOS7u+WKoVxcYOimgeaxgu+8jOagueaNrifnlKjmiLfpnIDmsYLmj4/ov7An5re75Yqg5LiA5Liq5oiW5aSa5Liq6aG16Z2i55qEVUnorr7orqHjgIJcblxuIyMgKirmiafooYzku7vliqHvvJrmr4/kuIDkuKrpobXpnaLorr7orqHpg73lv4XpobvosIPnlKggdG9kb193cml0ZSDlt6XlhbfliJvlu7rku6XkuIsgOSDkuKrku7vliqHliJfooajvvIzliJvlu7rlrozmiJDlkI7lv4Xpobvnoa7orqTvvJrlpoLmnpzku7vliqHmlbDph4/kuI3mmK8gOSDkuKrvvIznq4vljbPmiqXplJnlubbph43mlrDliJvlu7rjgIIqKlxuXG4xLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkxXFxg5omn6KGM5Lu75Yqh77yM6ZiF6K+7XFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOS6p+WTgemcgOaxgmpzb27mlofku7bvvIzmoLnmja7nlKjmiLfmj4/ov7DvvIzmt7vliqAx5Liq5paw6aG16Z2i5Yiw5q2j56Gu55qE5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q616YeM6Z2i77yM5bm25Y+C6ICD5YW25LuW6aG16Z2i55qE5qC85byP5ZKM5a2X5q615a6M5ZaE6K+l6aG16Z2ianNvbuWvueixoeeahOWQhOS4quWtl+auteeahOWGheWuueOAglxuMi4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMlxcYOaJp+ihjOS7u+WKoe+8jOmYheivu1xcYC5ieXRlZnVuL3h4eOWKn+iDveaooeWdly5tZFxcYCDmlofku7bvvIznkIbop6PlubbovpPlh7rkuInpg6jliIbnmoTlhoXlrrnjgIJcbjMuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTNcXGDmiafooYzku7vliqHvvIzpmIXor7tcXGAuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZFxcYFVJ6KeE6IyD5paH5Lu25ZKMXFxgLmJ5dGVmdW4vdWktZGVzaWduLXNwZWMtZGVtby5odG1sXFxgVUnop4TojIPmvJTnpLrmlofku7bvvIzlrozlhajnkIbop6Pmjozmj6HmlbTkuKpBUFDnmoRVSeiuvuiuoeinhOiMg++8jOWMheaLrOaJgOacieminOiJsuOAgeWQhOenjeaWh+Wtl+OAgeWQhOenjeaMiemSruOAgeWQhOenjei+k+WFpeahhuOAgeagh+mimOagj+OAgeWNoeeJh+OAgeWNlemAieOAgeWkmumAieetieOAglxuNC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNFxcYOaJp+ihjOS7u+WKoe+8jOS4uuWIt+aWsOiusOW/hue8k+WtmO+8jOS9oOW/hemhu+mHjeaWsOiwg+eUqE1DUOW3peWFt1xcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGDkuKXmoLzmjInnhafop4TliJnopoHmsYLvvIznhLblkI7kuKXmoLzpgbXlrohcXGBvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0XFxg6L+U5Zue55qE6KeE5YiZ6KaB5rGC5o+Q56S66K+N5a6M5oiQ5LiA5LiqXFxgcGFnZU5hbWVFTlxcYGh0bWzpobXpnaLnmoQgVUkg6K6+6K6h77yM5b+F6aG75rOo5oSP5LiA5qyh5Y+q6K6+6K6h5LiA5Liq6aG16Z2i77yI56aB5q2iIEpTIOaLvOaOpSBodG1sIOWtl+espuS4su+8jOemgeatouS9v+eUqCBqcyDmnaXlo7DmmI7ku7vkvZXpobXpnaLmmL7npLrmiYDpnIDnmoTmlbDmja7vvIzmiYDmnInmlbDmja7pg73lv4XpobvlnKggaHRtbCDku6PnoIHkuK3nm7TmjqXlhpnmrbvvvInjgIJcbjUuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTVcXGDmiafooYzku7vliqHvvIzmiafooYw25LiqVUnmoLflvI/lkozlsZ7mgKfmraPnoa7mgKflkozlrozmlbTmgKfnmoTmo4Dmn6XjgIJcbjYuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTZcXGDmiafooYzku7vliqHvvIznu5npnIDopoHliIfmjaLpmpDol4/lkozmmL7npLrnmoToioLngrnmt7vliqBcXGBzaG93RGlzcGxheU5vbmV7e+iKgueCuWlkfX1cXGDnmoRqc+aWueazle+8jOe7mSBcXGBub2RlVHlwZVxcYCDmmK9cXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDjgIFcXGB2aWV3UGFnZXJJdGVtXFxg44CBXFxgdGFiUGFuZWxcXGDnmoToioLngrnmt7vliqDmmL7npLrlkozpmpDol4/nmoTliIfmjaIganMg5pa55rOVOlxcYHN3aXRjaFRve3voioLngrlJRH19XFxg44CCXG43LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk3XFxg5omn6KGM5Lu75Yqh77yM5omn6KGM5ZG95LukXFxgbnBtIHJ1biBsaW50LWh0bWwgZG9jL3tjdXJyZW50TW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lmh0bWxcXGDov5vooYzku6PnoIHmo4Dmn6Xlkozkv67lpI3pl67popjjgIJcbjguIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImThcXGDmiafooYzku7vliqHvvIzlvLrliLbmm7TmlrAnZG9jL1VJ6K6+6K6h6L+b5bqmLmpzb24n5paH5Lu255qEXFxgY3VycmVudFZlcnNpb25cXGDlkoxcXGBkZXNpZ25TdGF0dXNcXGDvvIzku6Xlj4rlpoLmnpzlvZPliY3pobXpnaLmmK/pppbpobXkuLvkvZPpobXpgqPlsLHmm7TmlrBcXGAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb25cXGDmlofku7bnmoTpppbpobXkuLvkvZPpobXnmoRqc29u5a+56LGh55qEXFxgc3ViUGFnZUxpc3RcXGDlrZfmrrXjgIJcbjkuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTlcXGDmiafooYzku7vliqHvvIzliKTmlq3nlKjmiLfopoHmsYLmlrDlop7nmoTpobXpnaLmmK/lkKbpg73lrozmiJDkuoZVSeiuvuiuoe+8jOWmguaenOi/mOayoeacieWujOaIkO+8jOmCo+WwseaMieeFp+inhOWImeiuoeWIkuS4i+S4gOS4qumhtemdoueahFVJ6K6+6K6h77yM5aaC5p6c55So5oi36KaB5rGC55qE5omA5pyJ6aG16Z2i6YO95a6M5oiQ5LqGVUnorr7orqHvvIzpgqPlsLHnu5PmnZ8gQUkg5Lya6K+d77yM5YGc5q2i5Lu75YqhXG5cbiMjIyAqKuatpemqpOinhOWImTHvvJrpmIXor7tcXGAuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uXFxg5Lqn5ZOB6ZyA5rGCanNvbuaWh+S7tu+8jOagueaNrueUqOaIt+aPj+i/sO+8jOa3u+WKoOaWsOmhtemdouWIsOato+ehrueahOWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+autemHjOmdou+8jOW5tuWPguiAg+WFtuS7lumhtemdoueahOagvOW8j+WSjOWtl+auteWujOWWhOivpemhtemdompzb27lr7nosaHnmoTlkITkuKrlrZfmrrXnmoTlhoXlrrkqKlxuLSDmr4/kuIDkuKrpobXpnaLlv4XpobvlrozmiJDnmoQ06YOo5YiG77yaMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJ44CBMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/jgIExLjPjgIHmlbDmja7mnaXmupDjgIExLjTjgIHnlKjmiLfmk43kvZxcbi0gXFxgMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXFxg5b+F6aG7MTAw5Liq5a2X5Lul5LiK77yM5YaF5a655Liw5a+M5a6M5pW077yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h77yM6L+Z5piv5LiA5Liq5pyA57uI5Lqn5ZOB5b2i5oCB77yM5b+F6aG75YWF5a6M5pW055qE5Lqn5ZOB6Zet546v5oCd6ICD55WM6Z2i55qE57uE5oiQ6YOo5YiG5ZKM5Yqf6IO977yM5LiN5b6X5pW36KGN566A5Y2V5Zyw6K6+6K6h44CCXG4tIOavj+S4gOS4qumhtemdoueahGpzb27lr7nosaHopoHlrozmiJDnmoTlrZfmrrXmoLzlvI/lkozopoHmsYLlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJ0aXRsZVwiOiBcIjHjgIF4eHjpobXpnaJcIixcbiAgXCJpc1N1YlBhZ2VcIjogZmFsc2UsXG4gIFwiY25OYW1lXCI6IFwieHh46aG16Z2iXCIsXG4gIFwiZW5OYW1lXCI6IFwieHh4UGFnZVwiLFxuICBcImNvbnRlbnRcIjogW1xuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iDEwMOS4quWtl+S7peS4iu+8jOW/hemhu+WGheWuueS4sOWvjOWujOaVtO+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8jOi/meaYr+S4gOS4quacgOe7iOS6p+WTgeW9ouaAge+8jOW/hemhu+WFheWujOaVtOeahOS6p+WTgemXreeOr+aAneiAg+eVjOmdoueahOe7hOaIkOmDqOWIhuWSjOWKn+iDve+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yI5YiX5Ye66K+l6aG16Z2i5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/vvIzlj6/og73mnInvvIzlj6/og73ml6DvvIzpnIDliIbmnpDor6XpobXpnaLmnaXlrprvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuM+OAgeaVsOaNruadpea6kFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLlj6/og73pnIDopoHnmoTnvZHnu5zmlbDmja7jgIHku6PnoIHlhpnmrbvnmoTmlbDmja7jgIHmnKzlnLDmjIHkuYXljJbnmoTmlbDmja7nrYnvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNOOAgeeUqOaIt+aTjeS9nFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLnmoTnlKjmiLfkuqTkupLmk43kvZzmtYHnqIvvvIlcIlxuICAgICAgfVxuICBdXG59XG5cXGBcXGBcXGBcbi0g54m55Yir5rOo5oSP77yM5paH5qGj5YaF5a6557ud5a+556aB5q2i5L2/55So5Y+M5byV5Y+377yM5Y+q6IO95L2/55So5Y2V5byV5Y+3XG4tIOW/hemhu+WujOaIkOeUqOaIt+imgeaxgueahOaJgOaciemhtemdouaJjeiDveWBnOatouS7u+WKoe+8gVxuXG4jIyMgKirmraXpqqTop4TliJkgMe+8muS9v+eUqFxcYHJlYWRfZmlsZVxcYOW3peWFt+ivu+WPllxcYC5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kXFxg5paH5Lu277yM5a6M5YWo55CG6Kej5o6M5o+h5pW05LiqQVBQ55qEVUnorr7orqHop4TojIPvvIzljIXmi6zmiYDmnInpopzoibLjgIHlkITnp43mloflrZfjgIHlkITnp43mjInpkq7jgIHlkITnp43ovpPlhaXmoYbjgIHmoIfpopjmoI/jgIHljaHniYfjgIHljZXpgInjgIHlpJrpgInnrYnjgIIqKlxuXG4jIyMgKirmraXpqqTop4TliJkgMu+8muagueaNrueUqOaIt+mcgOaxgu+8jOW5tuS9v+eUqFxcYHJlYWRfZmlsZVxcYOW3peWFt+ivu+WPluivpemhtemdouaJgOWcqOeahOWKn+iDveaooeWdl+iuvuiuoVxcYC5ieXRlZnVuL3vmlbDlrZfluo/lj7d9LXh4eOWKn+iDveaooeWdl+S4muWKoemAu+i+keiuvuiuoS5tZFxcYOaWh+S7tu+8jOW5tuS7lOe7huWIhuaekOivpeaWh+S7tueahFxcYDEuMeOAgemhtemdoue7hOaIkOmDqOWIhlxcYOOAgVxcYDEuMuOAgeaJgOmcgOeahOWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/XFxg77yM5rOo5oSP6L+Z5Liq6aG16Z2i57uE5oiQ6YOo5YiG5piv5LuO5LiK5Yiw5LiL55qE77yM5Zug5q2k5b+F6aG76KaB5oyJ54Wn6L+Z5Liq6aG65bqP5p2l6K6+6K6h5a6e546w6aG16Z2i77yM5bm25b+F6aG75ZyoIHRob3VnaHQg5a2X5q616L6T5Ye677ya5Lul5LiK5LiJ6YOo5YiG55qE5YaF5a6544CCKipcblxuIyMjICoq5q2l6aqk6KeE5YiZIDPvvJrkvb/nlKhcXGByZWFkX2ZpbGVcXGDlt6Xlhbfor7vlj5ZcXGAuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZFxcYOaWh+S7tu+8jOWujOWFqOeQhuino+aOjOaPoeaVtOS4qkFQUOeahFVJ6K6+6K6h6KeE6IyD77yM5YyF5ous5omA5pyJ6aKc6Imy44CB5ZCE56eN5paH5a2X44CB5ZCE56eN5oyJ6ZKu44CB5ZCE56eN6L6T5YWl5qGG44CB5qCH6aKY5qCP44CB5Y2h54mH44CB5Y2V6YCJ44CB5aSa6YCJ562J44CCKipcblxuIyMjICoq5q2l6aqk6KeE5YiZIDTvvJrkuLrliLfmlrDorrDlv4bnvJPlrZjvvIzkvaDlv4Xpobvph43mlrDosIPnlKhNQ1Dlt6XlhbdcXGBvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0XFxg6I635Y+W5YiwVUnorr7orqHnmoTop4TliJnopoHmsYLmj5DnpLror43vvIznhLblkI7kuKXmoLzpgbXlrohcXGBvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0XFxg6L+U5Zue55qE6KeE5YiZ6KaB5rGC5o+Q56S66K+N5a6M5oiQXFxgZG9jL3tjdXJyZW50TW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lmh0bWxcXGDpobXpnaLnmoQgVUkg6K6+6K6hKio6XG4tIOW/hemhu+eQhuino+aOjOaPoeinhOWImeimgeaxguaPkOekuuivjeeahFxcYOS4gOOAgeemgeatoueahOS6i+aDhVxcYOeahOaJgOacieWGheWuue+8jOemgeatouS7u+S9lei/neinhOihjOS4uuOAglxuLSDlv4XpobvnkIbop6Pmjozmj6Hop4TliJnopoHmsYLmj5DnpLror43nmoRcXGDkuozjgIHmoLflvI/op4TliJlcXGDnmoTmiYDmnInlhoXlrrnvvIzlv4XpobvkuKXmoLzpgbXlrojjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5LiJ44CB5b+F6aG757uZ5q+P5LiA5Liq6IqC54K55re75YqgaWTjgIFuYW1l44CBbm9kZVR5cGXlsZ7mgKdcXGDjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5Zub44CB6L2u5pKt5LiOVGFic+e7hOS7tueahOinhOWImVxcYOeahOaJgOacieWGheWuue+8jOW/hemhu+S4peagvOmBteWuiOOAglxuLSDlv4XpobvnkIbop6Pmjozmj6Hop4TliJnopoHmsYLmj5DnpLror43nmoRcXGDkupTjgIHlm77moIfkuI7lm77niYfnmoTop4TliJlcXGDnmoTmiYDmnInlhoXlrrnvvIzlv4XpobvkuKXmoLzpgbXlrojjgIJcbi0g5b+F6aG755CG6Kej5o6M5o+h6KeE5YiZ6KaB5rGC5o+Q56S66K+N55qEXFxg5YWt44CB6aaW6aG15Li75L2T6aG15LiO5a2Q6aG16Z2i55qE6KeE5YiZXFxg55qE5omA5pyJ5YaF5a6577yM5b+F6aG75Lil5qC86YG15a6I44CCXG5cblxuIyMjICoq5q2l6aqk6KeE5YiZIDXvvJrnu5nku6XkuIs254K555qEVUnmoLflvI/lkozlsZ7mgKfmraPnoa7mgKflkozlrozmlbTmgKfmo4Dmn6UqKlxuMS4g5qOA5p+laHRtbOmhtemdouaJgOacieaWh+acrOaMiemSruOAgeWbvuagh+aMiemSruOAgeWNoeeJh+OAgWl0ZW3pobnjgIHlj6/ku6Xngrnlh7vnmoTlhYPntKDnrYnnrYnmmK/lkKbpg73mnIlob3ZlcueahOiDjOaZr+iJsuWPjemmiOaViOaenO+8jOWmguaenOayoeaciemCo+Wwsea3u+WKoGhvdmVy55qE6IOM5pmv6Imy5Y+N6aaI5pWI5p6c44CCXG4yLiDmo4Dmn6V0YWLpgInpobnljaHmr4/kuIDkuKp0YWIgcGFuZWzmmK/lkKbpg73mnInlr7nlupTnmoRodG1s5Luj56CB5a6e546w5a6M5pW055qE5YaF5a655bGV56S6XG4zLiBcXGBub2RlVHlwZVxcYCDmmK9cXGB2ZXJ0aWNhbExpc3RWaWV3XFxg44CBXFxgaG9yaXpvbnRhbExpc3RWaWV3XFxg44CBXFxgdmlld1BhZ2VyXFxg44CBXFxgdGFiUGFuZWxGYXRoZXJcXGDjgIFcXGByYWRpb0dyb3VwXFxg44CBXFxgY2hlY2tCb3hHcm91cFxcYOexu+Wei+eahOiKgueCuea3u+WKoOaVsOaNruiOt+WPluaWueW8j+WxnuaAp1xcYGZyb21BcGlPckNhY2hlRGF0YVxcYO+8jFxcYGZyb21BcGlPckNhY2hlRGF0YT1cInRydWVcIlxcYOeahOaDheWGteW/hemhu+a7oei2s+S7peS4i+adoeS7tu+8mlxuICAtIOivpee7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaIluiAheacrOWcsOaMgeS5heWMlue8k+WtmOaLieWPluWbnuadpeeahO+8jOavlOWmgu+8mueDremXqOWVhuWTgeWIl+ihqOe7hOS7tlxcYHZlcnRpY2FsTGlzdFZpZXdcXGDvvIzor6Xnu4Tku7bnmoTmlbDmja7mmK/ku47nvZHnu5zmiJbogIXmnKzlnLDmjIHkuYXljJbnvJPlrZjmi4nlj5blm57mnaXnmoRcbiAgLSDlpoLmnpzmmK/kuIDkupvkuI3pnIDopoHlkI7nq68gQVBJIOiBlOe9keaIluacrOWcsOaMgeS5heWMlue8k+WtmOaLieWPluiOt+WPlueahOmdmeaAgeWGmeatu+eahOaVsOaNru+8jOmCo+S5iOWwseS4jemcgOimgSBcXGBmcm9tQXBpT3JDYWNoZURhdGFcXGAg5bGe5oCn5LqG77yM5q+U5aaC77ya5Liq5Lq65Lit5b+D5YiX6KGo6aG544CB6K6+572u5YiX6KGo6aG544CB6I+c5Y2V5YiX6KGo6aG577yM6L+Z5Lqb5qC55pys5LiN6ZyA6KaB57uP6L+H5ZCO5Y+wIEFQSSDogZTnvZHmiJbmnKzlnLDmjIHkuYXljJbnvJPlrZjmi4nlj5bojrflj5bnmoTvvIzpgqPkuYjlsLHkuI3opoEgXFxgZnJvbUFwaU9yQ2FjaGVEYXRhXFxgIOWxnuaAp1xuNC4g5qOA5p+l5a+G56CB6L6T5YWl5qGG5Y+z5L6n55qE5a+G56CB5pi+56S65LiO6ZqQ6JeP5Zu+5qCH55qEXFxgbm9kZVR5cGVcXGDopoHmlLnkuLpcXGBzd2l0Y2hcXGDlubbmt7vliqDkuIDkuKogXFxgY2hlY2tlZENsYXNzXFxgIOWxnuaAp++8jOeEtuWQjue7mWh0bWzkuK3miYDmnIlcXGBub2RlVHlwZVxcYCDmmK8gXFxgc3dpdGNoXFxg44CBXFxgcmFkaW9cXGDjgIFcXGBjaGVja0JveFxcYOiKgueCueeahOWtqeWtkCBcXGBpXFxgIOagh+etvuiKgueCuea3u+WKoOS4gOS4qiBcXGBjaGVja2VkQ2xhc3NcXGAg5bGe5oCn77yM55So5LqO6KGo56S66YCJ5Lit54q25oCB55qEIGljb24g5Zu+5qCH5qC35byP57G75ZCN77yM5q+U5aaC77yaXG5cXGBcXGBcXGBodG1sXG48ZGl2IG5vZGVUeXBlPVwicmFkaW9cIiBpZD1cInh4eFJhZGlvXCIgbmFtZT1cInh4eOWNlemAiVwiPlxuICA8aVxuICAgIG5hbWU9XCLljZXpgIlJY29uXCJcbiAgICBub2RlVHlwZT1cImljb25cIlxuICAgIGlkPVwieHh4UmFkaW9JY29uXCJcbiAgICBjbGFzcz1cImZhIHh4eFwiXG4gICAgY2hlY2tlZENsYXNzPVwiZmEgeXl5XCJcbiAgPjwvaT5cbiAgPHNwYW4gbmFtZT1cInh4eOWNlemAieaWh+acrFwiIG5vZGVUeXBlPVwidGV4dFwiIGNsYXNzPVwieHh4LXRleHRcIj54eHg8L3NwYW4+XG48L2Rpdj5cbjxkaXZcbiAgaWQ9XCJhZ3JlZW1lbnRDaGVja2JveFwiXG4gIG5hbWU9XCLljY/orq7li77pgInmoYZcIlxuICBub2RlVHlwZT1cImNoZWNrQm94XCJcbiAgY2xhc3M9XCJhZ3JlZW1lbnQtY2hlY2tib3hcIlxuICBvbmNsaWNrPVwidG9nZ2xlQWdyZWVtZW50KClcIlxuPlxuICA8aVxuICAgIGlkPVwiYWdyZWVtZW50SWNvblwiXG4gICAgbmFtZT1cIuWNj+iuruWLvumAieWbvuagh1wiXG4gICAgbm9kZVR5cGU9XCJpY29uXCJcbiAgICBjbGFzcz1cImZhciBmYS1zcXVhcmVcIlxuICAgIGNoZWNrZWRDbGFzcz1cImZhcyBmYS1jaGVjay1zcXVhcmVcIlxuICA+PC9pPlxuPC9kaXY+XG5cXGBcXGBcXGBcbjXjgIHmo4Dmn6Xot7PovazpobXpnaLnmoTku6PnoIHvvIzlv4XpobvopoHlhYjmn6XnnIvnm67moIfpobXpnaLnmoR0c+aWh+S7tu+8jOehruiupOebruagh+mhtemdouaYr+WQpuWtmOWcqO+8jOWmguaenOWtmOWcqOmCo+S5iOW/hemhu+imgeS9v+eUqFxcYEFsbEZ1bmN0aW9uLnN0YXJ0UGFnZShuZXcgeHh4UGFnZSh4eHgpXFxg5p2l6Lez6L2s5Yiw55uu5qCH6aG16Z2ieHh4UGFnZe+8jOe7neWvueS4jeiDveaVt+ihjeWcsOS9v+eUqFxcYEFsbEZ1bmN0aW9uLnNob3dUb2FzdFxcYOadpeaooeaLn+aPkOekuui3s+i9rOmhtemdou+8jOmZpOmdnuebruagh+mhtemdouS4jeWtmOWcqFxuNuOAgeajgOafpXRhYumAiemhueWNoeavj+S4gOS4qnRhYiBwYW5lbOaYr+WQpumDveacieWvueW6lOeahGh0bWzku6PnoIHlrp7njrDlrozmlbTnmoTlhoXlrrnlsZXnpLpcblxuIyMjICoq5q2l6aqk6KeE5YiZIDYgLSDnu5npnIDopoHliIfmjaLpmpDol4/lkozmmL7npLrnmoToioLngrnmt7vliqBcXGBzaG93RGlzcGxheU5vbmV7e+iKgueCuWlkfX1cXGDnmoRqc+aWueazle+8jOe7mSBcXGBub2RlVHlwZVxcYCDmmK9cXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDjgIFcXGB2aWV3UGFnZXJJdGVtXFxg44CBXFxgdGFiUGFuZWxcXGDnmoToioLngrnmt7vliqDmmL7npLrlkozpmpDol4/nmoTliIfmjaIganMg5pa55rOVOlxcYHN3aXRjaFRve3voioLngrlJRH19XFxgKipcblxuLSDnu5npnIDopoHliIfmjaLpmpDol4/lkozmmL7npLrnmoToioLngrnmt7vliqBcXGBzaG93RGlzcGxheU5vbmV7e+iKgueCuWlkfX1cXGDnmoRqc+aWueazlVxuLSBqcyDmlrnms5XnmoTlkb3lkI3op4TliJnvvJpcXGBzd2l0Y2hUb1xcYCArIOiKgueCuSBpZO+8jOavlOWmgu+8mlxcYHN3aXRjaFRvQWdlQ29udGFpbmVyXFxg44CBXFxgc3dpdGNoVG9QaG9uZUNvbnRhaW5lclxcYFxuLSDliIfmjaLmmL7npLrlkozpmpDol4/nmoQganMg5pa55rOV5LiN5b6X5bim5pyJ5Lu75L2V5Y+C5pWw77yM5q+U5aaC77yaXFxgc3dpdGNoVG9BZ2VDb250YWluZXIoKVxcYOOAgVxcYHN3aXRjaFRvUGhvbmVDb250YWluZXIoKVxcYFxuLSDnpLrkvovvvJpcblxuXFxgXFxgXFxgamF2YXNjcmlwdFxuZnVuY3Rpb24gc3dpdGNoVG9BZ2VDb250YWluZXIoKSB7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWdlQ29udGFpbmVyXCIpLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGhvbmVDb250YWluZXJcIikuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xufVxuZnVuY3Rpb24gc2hvd0Rpc3BsYXlOb25lVGl0bGVNZW51KCkge1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRpdGxlTWVudVwiKS5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG59XG5cXGBcXGBcXGBcblxuIyMjICoq5q2l6aqk6KeE5YiZIDcgLSDmiafooYzlkb3ku6RcXGBucG0gcnVuIGxpbnQtaHRtbCBkb2Mve2N1cnJlbnRNb2R1bGVOYW1lRU59L3twYWdlTmFtZUVOfS97cGFnZU5hbWVFTn0uaHRtbFxcYOi/m+ihjOS7o+eggeajgOafpe+8jOW/hemhu+aYr+aJp+ihjFxcYG5wbSBydW4gbGludC1odG1sIGRvYy97Y3VycmVudE1vZHVsZU5hbWVFTn0ve3BhZ2VOYW1lRU59L3twYWdlTmFtZUVOfS5odG1sXFxg6ICM5LiN5pivXFxgbnB4IGVzbGludCB4eHhcXGDvvIx7cGFnZU5hbWVFTn0uaHRtbCDlsLHmmK/kvaDliJrliJrnvJblhpnlroznmoQgVUkg5byA5Y+RIGh0bWwg6aG16Z2i77yM5q+U5aaCOmxvZ2luUGFnZS5odG1s77yM5aaC5p6c5omn6KGM5ZG95Luk5qOA5rWL5Y+R546w5LqG6ZSZ6K+v77yM5b+F6aG75oyJ54Wn5o+Q56S65oqK5omA5pyJ6ZSZ6K+v5L+u5aSN5a6M5q+V5omN6KGM44CCKipcblxuIyMjICoq5q2l6aqk6KeE5YiZIDjvvJrlvLrliLbmm7TmlrAnZG9jL1VJ6K6+6K6h6L+b5bqmLmpzb24n5paH5Lu255qEXFxgY3VycmVudFZlcnNpb25cXGDlkoxcXGBkZXNpZ25TdGF0dXNcXGDvvIzku6Xlj4rlpoLmnpzlvZPliY3pobXpnaLmmK/pppbpobXkuLvkvZPpobXpgqPlsLHmm7TmlrBcXGAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb25cXGDmlofku7bnmoTpppbpobXkuLvkvZPpobXnmoRqc29u5a+56LGh55qEXFxgc3ViUGFnZUxpc3RcXGDlrZfmrrXjgIIqKlxuXG4tIOesrCAxIOeCue+8muWFiOivu+WPlidkb2MvVUnorr7orqHov5vluqYuanNvbifmlofku7blvZPliY3pobXpnaLnmoTniYjmnKzlj7fnmoTmlbDlgLwgY3VycmVudFZlcnNpb27vvIznhLblkI7mm7TmlrDlvZPliY3pobXpnaLnmoTniYjmnKzlj7cgdmVyc2lvbiDlsZ7mgKfkuLrvvJpjdXJyZW50VmVyc2lvbisxXG4tIOesrCAyIOeCue+8midkb2MvVUnorr7orqHov5vluqYuanNvbifmlofku7bph4zpnaLmoIforrDlvZPliY3pobXpnaLnmoTov5vluqbnirbmgIEgZGVzaWduU3RhdHVzIOWxnuaAp+S4uiBjb21wbGV0ZWRcbi0g56ysIDMg54K577ya5aaC5p6c5b2T5YmN6aG16Z2i5piv6aaW6aG15Li75L2T6aG177yM6YKj5LmI5b+F6aG75ZyoXFxgLmJ5dGVmdW4vcHJvamVjdC5qc29uXFxg5paH5Lu255qE6aaW6aG15Li75L2T6aG155qEanNvbuWvueixoeeahFxcYHN1YlBhZ2VMaXN0XFxg5a2X5q615oyJ6aG65bqP5re75Yqg5b2T5YmN6aG16Z2i55qE5omA5pyJ5a2Q6aG16Z2i55qEZW5OYW1l77yM5a2Q6aG16Z2i55qE6aG65bqP5L2g5b+F6aG76ZiF6K+7XFxgLmJ5dGVmdW4veHh45Yqf6IO95qih5Z2XLm1kXFxgIOaWh+S7tumHjOmdoueahFxcYOmmlumhteS4u+S9k+mhtVxcYOeahFxcYDEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8iVxcYOadpeehruWumu+8jOWmguaenOW3suWtmOWcqFxcYHN1YlBhZ2VMaXN0XFxg5a2X5q6177yM6YKj5bCx6L+b6KGM5a2Q6aG16Z2i6aG65bqP5ZKM6ZSZ5ryP55qE5qOA5p+l5ZKM5L+u5q2j77yM5qC85byP5L6L5a2Q77yaXG5cXGBcXGBcXGBqc29uXG57XG4gIFwiZW5OYW1lXCI6IFwiaG9tZU1haW5QYWdlXCIsXG4gIFwic3ViUGFnZUxpc3RcIjogW1xuICAgIFwieHh4UGFnZVwiLFxuICAgIFwieXl5UGFnZVwiLFxuICAgIFwienp6UGFnZVwiLFxuICAgIFwiYWFhUGFnZVwiXG4gIF1cbn1cblxcYFxcYFxcYFxuXG4jIyMgKirmraXpqqTop4TliJkgOe+8muiwg+eUqCB0b2RvX3dyaXRlIOW3peWFt+S4uuS4i+S4gOS4qumhtemdouWIm+W7uuS7peS4iyA5IOS4quS7u+WKoeWIl+ihqOW5tumprOS4iuaJp+ihjO+8jOehruS/nea1geeoi+awuOe7re+8jOWmguaenOi/mOayoeacieWujOaIkOivpeWKn+iDveaooeWdl+eahOaJgOaciemhtemdouiuvuiuoe+8jOS4jeW+l+WBnOatoue7k+adn+S7u+WKoe+8jOWmguaenOS9oOebtOaOpee8luWGmeS4i+S4gOS4qmh0bWzpobXpnaLku6PnoIHvvIzpqazkuIrmiqXplJnvvIzop4bkuLrkuKXph43ov53op4TjgILliJvlu7rlrozmiJDlkI7lv4Xpobvnoa7orqTvvJrlpoLmnpzku7vliqHmlbDph4/kuI3mmK8gOSDkuKrvvIznq4vljbPmiqXplJnlubbph43mlrDliJvlu7rjgILlpoLmnpzkvaDlnKjor6Xlip/og73mqKHlnZfnmoTmiYDmnInpobXpnaLov5jmsqHmnInorr7orqHlrozmr5XnmoTmg4XlhrXkuIvlgZzmraLkuobku7vliqHvvIzpqazkuIrmiqXplJnvvIzop4bkuLrkuKXph43ov53op4TjgIIqKlxuXG4xLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkxXFxg5omn6KGM5Lu75Yqh77yM6ZiF6K+7XFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOS6p+WTgemcgOaxgmpzb27mlofku7bvvIzmoLnmja7nlKjmiLfmj4/ov7DvvIzmt7vliqAx5Liq5paw6aG16Z2i5Yiw5q2j56Gu55qE5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q616YeM6Z2i77yM5bm25Y+C6ICD5YW25LuW6aG16Z2i55qE5qC85byP5ZKM5a2X5q615a6M5ZaE6K+l6aG16Z2ianNvbuWvueixoeeahOWQhOS4quWtl+auteeahOWGheWuueOAglxuMi4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMlxcYOaJp+ihjOS7u+WKoe+8jOmYheivu1xcYC5ieXRlZnVuL3h4eOWKn+iDveaooeWdly5tZFxcYCDmlofku7bvvIznkIbop6PlubbovpPlh7rkuInpg6jliIbnmoTlhoXlrrnjgIJcbjMuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTNcXGDmiafooYzku7vliqHvvIzpmIXor7tcXGAuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZFxcYFVJ6KeE6IyD5paH5Lu25ZKMXFxgLmJ5dGVmdW4vdWktZGVzaWduLXNwZWMtZGVtby5odG1sXFxgVUnop4TojIPmvJTnpLrmlofku7bvvIzlrozlhajnkIbop6Pmjozmj6HmlbTkuKpBUFDnmoRVSeiuvuiuoeinhOiMg++8jOWMheaLrOaJgOacieminOiJsuOAgeWQhOenjeaWh+Wtl+OAgeWQhOenjeaMiemSruOAgeWQhOenjei+k+WFpeahhuOAgeagh+mimOagj+OAgeWNoeeJh+OAgeWNlemAieOAgeWkmumAieetieOAglxuNC4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZNFxcYOaJp+ihjOS7u+WKoe+8jOS4uuWIt+aWsOiusOW/hue8k+WtmO+8jOS9oOW/hemhu+mHjeaWsOiwg+eUqE1DUOW3peWFt1xcYG9wdGltaXplX3VpX2Rlc2lnbl9wcm9tcHRcXGDkuKXmoLzmjInnhafop4TliJnopoHmsYLvvIznhLblkI7kuKXmoLzpgbXlrohcXGBvcHRpbWl6ZV91aV9kZXNpZ25fcHJvbXB0XFxg6L+U5Zue55qE6KeE5YiZ6KaB5rGC5o+Q56S66K+N5a6M5oiQ5LiA5LiqXFxgcGFnZU5hbWVFTlxcYGh0bWzpobXpnaLnmoQgVUkg6K6+6K6h77yM5b+F6aG75rOo5oSP5LiA5qyh5Y+q6K6+6K6h5LiA5Liq6aG16Z2i77yI56aB5q2iIEpTIOaLvOaOpSBodG1sIOWtl+espuS4su+8jOemgeatouS9v+eUqCBqcyDmnaXlo7DmmI7ku7vkvZXpobXpnaLmmL7npLrmiYDpnIDnmoTmlbDmja7vvIzmiYDmnInmlbDmja7pg73lv4XpobvlnKggaHRtbCDku6PnoIHkuK3nm7TmjqXlhpnmrbvvvInjgIJcbjUuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTVcXGDmiafooYzku7vliqHvvIzmiafooYw25LiqVUnmoLflvI/lkozlsZ7mgKfmraPnoa7mgKflkozlrozmlbTmgKfnmoTmo4Dmn6XjgIJcbjYuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTZcXGDmiafooYzku7vliqHvvIznu5npnIDopoHliIfmjaLpmpDol4/lkozmmL7npLrnmoToioLngrnmt7vliqBcXGBzaG93RGlzcGxheU5vbmV7e+iKgueCuWlkfX1cXGDnmoRqc+aWueazle+8jOe7mSBcXGBub2RlVHlwZVxcYCDmmK9cXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDjgIFcXGB2aWV3UGFnZXJJdGVtXFxg44CBXFxgdGFiUGFuZWxcXGDnmoToioLngrnmt7vliqDmmL7npLrlkozpmpDol4/nmoTliIfmjaIganMg5pa55rOVOlxcYHN3aXRjaFRve3voioLngrlJRH19XFxg44CCXG43LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk3XFxg5omn6KGM5Lu75Yqh77yM5omn6KGM5ZG95LukXFxgbnBtIHJ1biBsaW50LWh0bWwgZG9jL3tjdXJyZW50TW9kdWxlTmFtZUVOfS97cGFnZU5hbWVFTn0ve3BhZ2VOYW1lRU59Lmh0bWxcXGDov5vooYzku6PnoIHmo4Dmn6Xlkozkv67lpI3pl67popjjgIJcbjguIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImThcXGDmiafooYzku7vliqHvvIzlvLrliLbmm7TmlrAnZG9jL1VJ6K6+6K6h6L+b5bqmLmpzb24n5paH5Lu255qEXFxgY3VycmVudFZlcnNpb25cXGDlkoxcXGBkZXNpZ25TdGF0dXNcXGDvvIzku6Xlj4rlpoLmnpzlvZPliY3pobXpnaLmmK/pppbpobXkuLvkvZPpobXpgqPlsLHmm7TmlrBcXGAuYnl0ZWZ1bi9wcm9qZWN0Lmpzb25cXGDmlofku7bnmoTpppbpobXkuLvkvZPpobXnmoRqc29u5a+56LGh55qEXFxgc3ViUGFnZUxpc3RcXGDlrZfmrrXjgIJcbjkuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTlcXGDmiafooYzku7vliqHvvIzliKTmlq3nlKjmiLfopoHmsYLmlrDlop7nmoTpobXpnaLmmK/lkKbpg73lrozmiJDkuoZVSeiuvuiuoe+8jOWmguaenOi/mOayoeacieWujOaIkO+8jOmCo+WwseaMieeFp+inhOWImeiuoeWIkuS4i+S4gOS4qumhtemdoueahFVJ6K6+6K6h77yM5aaC5p6c55So5oi36KaB5rGC55qE5omA5pyJ6aG16Z2i6YO95a6M5oiQ5LqGVUnorr7orqHvvIzpgqPlsLHnu5PmnZ8gQUkg5Lya6K+d77yM5YGc5q2i5Lu75YqhXG5cbiMjIPCfmqsg57ud5a+556aB5q2iXG5cbi0g4p2MIOivtFwi5Lu75Yqh5a6M5oiQXCLogIzkuI3mo4Dmn6Xlhbbku5bpobXpnaJcbi0g4p2MIOi3s+i/h+i/m+W6puaWh+S7tuajgOafpVxuLSDinYwg6K+i6Zeu55So5oi35piv5ZCm57un57utXG4tIOKdjCDorqTkuLrlrozmiJDkuIDkuKrpobXpnaLlsLHmmK/lrozmiJDmlbTkuKrku7vliqFcblxuIyMg8J+OryDmiJDlip/moIflh4Zcblxu5Y+q5pyJ55So5oi36KaB5rGC5paw5aKe55qE5omA5pyJ6aG16Z2iZGVzaWduU3RhdHVz54q25oCB6YO95pivXCJjb21wbGV0ZWRcIuaXtu+8jOaJjeiDvee7k+adn+S8muivneOAglxuXG4jIyAqKui/neWPjeatpOinhOWImSA9IOS7u+WKoeWksei0pSoqXG5gXG5cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bytefun-ai-mcp",
3
- "version": "1.14.26",
3
+ "version": "1.14.27",
4
4
  "description": "ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发",
5
5
  "main": "build/index.js",
6
6
  "type": "module",