bytefun-ai-mcp 1.11.74 → 1.11.76
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/appCode.d.ts +1 -1
- package/build/appCode.d.ts.map +1 -1
- package/build/appCode.js +2 -2
- package/build/backendCode.d.ts +1 -1
- package/build/backendCode.d.ts.map +1 -1
- package/build/backendCode.js +2 -2
- package/build/uiDesign.d.ts +1 -1
- package/build/uiDesign.d.ts.map +1 -1
- package/build/uiDesign.js +32 -6
- package/package.json +1 -1
package/build/appCode.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const codePromptTemplate = "# \u4F60\u662Ftypescript\u4EE3\u7801\u4E13\u5BB6\uFF0C\u6839\u636E\u7528\u6237\u8F93\u5165\u7684\u9700\u6C42\u63CF\u8FF0\uFF0C\u4E25\u683C\u9075\u5B88`\u4EE3\u7801\u89C4\u8303`\uFF0C\u53C2\u8003`\u4EE3\u7801\u4F8B\u5B50`\uFF0C\u4E25\u683C\u6309\u7167`\u7F16\u5199\u4EE3\u7801\u76848\u4E2A\u6B65\u9AA4`\u5B8C\u6210\u4EE3\u7801\u5F00\u53D1\n\n## \u4EE3\u7801\u89C4\u8303\n- **\u4EE3\u7801\u6CE8\u91CA\u4F7F\u7528\u4E2D\u6587**\uFF1A\u4EE3\u7801\u7684\u6CE8\u91CA\u6587\u5B57\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528\u4E2D\u6587\uFF0C\u4E0D\u80FD\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\n- **\u7ED3\u5C3E\u7981\u6B62\u5206\u53F7**\uFF1A\u4E00\u53E5\u4EE3\u7801\u7684\u7ED3\u5C3E\u7981\u6B62\u5199\u5206\u53F7\uFF0C\u4E0D\u9700\u8981\u5199\u5206\u53F7\u7684\n- \u5982\u679C\u662F\u79FB\u52A8\u7AEF\u5F00\u53D1\u5F0F\u4E0D\u9700\u8981\u8003\u8651\u9F20\u6807\u76F8\u5173\u4E8B\u60C5\u7684\uFF0C\u7535\u8111\u7AEF\u624D\u9700\u8981\u8003\u8651\u9F20\u6807\u76F8\u5173\u4E8B\u60C5\n- \u5B57\u7B26\u4E32\u8981\u4EE5\u5355\u5F15\u53F7\u6765\u5199\uFF0C\u5982\uFF1A'\u6211\u7684'\u3002\n\n## \u9875\u9762\u9ED8\u8BA4\u4E1A\u52A1\u903B\u8F91\n- **\u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u5176\u4E2D\u9879\u76EE\u8BBE\u8BA1\u6587\u6863'.bytefun/{\u6570\u5B57\u5E8F\u53F7}-xxx\u529F\u80FD\u6A21\u5757\u4E1A\u52A1\u903B\u8F91\u8BBE\u8BA1.md'\u4E0D\u7B97\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u90A3\u5404\u4E2A\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\u9ED8\u8BA4\u5FC5\u987B\u9075\u5B88\u4EE5\u4E0B\u56FA\u5B9A\u903B\u8F91\u5E76\u8F93\u51FAxxx\u9875\u9762\u9ED8\u8BA4\u9075\u5B88\u7684\u56FA\u5B9A\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\u95EA\u5C4F\u9875\u7684\u903B\u8F91\uFF1Axxx\u7B49**\n - \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n - \u7EDD\u5BF9\u4E0D\u4F1A\u6709\u4EFB\u4F55\u5173\u4E8E\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\u7684\u903B\u8F91\n - \u95EA\u5C4F\u9875\n - \u5982\u679C\u6709\u95EA\u5C4F\u9875\uFF0C\u90A3\u4E48\u542F\u52A8\u540E\u7B2C\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u662F\u95EA\u5C4F\u9875\uFF0C\u95EA\u5C4F\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u5F15\u5BFC\u9875\u6216\u9996\u9875\u7684\u8DEF\u5F84\n - \u95EA\u5C4F\u9875\u4E0D\u505A\u4EFB\u4F55\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\uFF0C\u53EA\u9700\u5224\u65AD\u662F\u5426\u9996\u6B21\u542F\u52A8\uFF0C\u5982\u679C\u9996\u6B21\u542F\u52A8\u5C31x\u79D2\u540E\u8DF3\u5230\u5F15\u5BFC\u9875\uFF0C\u5982\u679C\u4E0D\u662F\u9996\u6B21\u542F\u52A8\u5C31\u8DF3\u5230\u9996\u9875\n - \u274C \u95EA\u5C4F\u9875\u7EDD\u5BF9\u7981\u6B62\u505A\u7684\u4E8B\u60C5\uFF1A\n - \u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\n - \u8BF7\u6C42\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\n - \u8DF3\u5230\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\n - \u5F39\u51FA\u4EFB\u4F55\u5176\u4ED6\u5F39\u6846\n - \u4EFB\u4F55\u6743\u9650\u8BF7\u6C42\n - \u5F15\u5BFC\u9875\n = \u5F15\u5BFC\u9875\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u4E0D\u4F1A\u6709\u4EFB\u4F55\u7F51\u7EDC\u8BF7\u6C42\u3001\u4E1A\u52A1\u903B\u8F91\uFF0C\u5F15\u5BFC\u9875\u4EC5\u4EC5\u662F\u4E00\u4E2A\u5C55\u793A\u9759\u6001\u6570\u636E\u7684\u9875\u9762\n - \u4E0D\u9700\u8981\u81EA\u52A8\u8F6E\u64AD\n - \u4E00\u822C\u6574\u4E2A\u9875\u9762\u53EA\u6709\u4E00\u4E2A\u8F6E\u64AD\u7EC4\u4EF6\u3001\u8F6E\u64AD\u6307\u793A\u5668\u548C\u5E95\u90E8\u4E00\u4E2A\u6309\u94AE\uFF0C\u5E95\u90E8\u6309\u94AE\u5728\u975E\u7B2C\u4E00\u9875\u65F6\u663E\u793A\u4E0B\u4E00\u6B65\uFF0C\u5728\u6700\u540E\u4E00\u9875\u65F6\u663E\u793A\u7ACB\u5373\u4F53\u9A8C\n - \u5E7F\u544A\u9875\uFF08\u5982\u679C\u6709\u5E7F\u544A\u9875\uFF09\n = \u5E7F\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u5E7F\u544A\u9875\u7684\u6570\u636E\u4E0D\u5141\u8BB8\u5728\u95EA\u5C4F\u9875\u8BF7\u6C42\uFF0C\u5E94\u8BE5\u5728\u8FDB\u5165\u9996\u9875\u540E\u8BF7\u6C42\uFF0C\u5E76\u4E14\u4F7F\u7528\u672C\u5730\u6301\u4E45\u5316\u5C06\u5E7F\u544AAPI\u63A5\u53E3\u7684\u6570\u636E\u50A8\u5B58\u8D77\u6765\uFF0C\u7B49\u4E0B\u4E00\u6B21\u542F\u52A8\u95EA\u5C4F\u9875\u65F6\u8DF3\u5230\u5E7F\u544A\u9875\u9762\u540E\uFF0C\u624D\u4ECE\u672C\u5730\u6301\u4E45\u5316\u4E2D\u83B7\u53D6\u6570\u636E\u5E76\u521D\u59CB\u5316\u5E7F\u544A\u9875\u663E\u793A\u548C\u4EA4\u4E92\n - \u5E7F\u544A\u9875\u7684\u6570\u636E\u5FC5\u987B\u662F\u5728\u8FDB\u5165\u9996\u9875\u540E\u624D\u53D1\u8D77\u8BF7\u6C42\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5728\u95EA\u5C4F\u9875\u53D1\u8D77\u8BF7\u6C42\uFF0C\u5E76\u4E14\u5E7F\u544A\u9875\u7684\u6570\u636E\u53EA\u663E\u793A\u4E00\u6B21\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u91CD\u590D\u663E\u793A\uFF0C\u5982\u679C\u672C\u5730\u6301\u4E45\u5316\u6839\u672C\u6CA1\u6709\u5E7F\u544A\u9875\u7684\u6570\u636E\uFF0C\u90A3\u4E0D\u9700\u8981\u8DF3\u8F6C\u548C\u663E\u793A\u5E7F\u544A\u9875\n - \u9996\u9875\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u3001\u5E7F\u544A\u914D\u7F6E\uFF08\u5982\u679C\u6709\u5E7F\u544A\u7684\u8BDD\uFF09\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u4E00\u822C\u662F\u6709\u4E00\u4E2A\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\uFF0C\u70B9\u51FB\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u56FE\u6807\u4F1A\u5207\u6362\u5230\u5BF9\u5E94\u7684tab\u9875\u9762\uFF0Ctab\u9875\u9762\u4E00\u822C\u6709\u591A\u4E2A\uFF0C\u6BCF\u4E2Atab\u9875\u9762\u6709\u4E0D\u540C\u7684\u4E1A\u52A1\u903B\u8F91\n - \u5982\u679C\u7528\u6237\u8F93\u5165\u7684\u9700\u6C42\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u6307\u5B9A\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\u54EA\u4E9B\u529F\u80FD\uFF0C\u90A3\u4E48\u4F60\u5FC5\u987B\u601D\u8003\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\u54EA\u4E9B\u529F\u80FDitem\u9879\n - \u767B\u5F55\u9875\n - \u767B\u5F55\u9875\u662F\u7528\u6237\u70B9\u51FB\u9700\u8981\u767B\u5F55\u624D\u80FD\u8BBF\u95EE\u7684\u9875\u9762\u65F6\uFF0C\u624D\u4F1A\u8DF3\u8F6C\u5230\u7684\u9875\u9762\uFF0C\u800C\u4E0D\u662F\u4ECE\u95EA\u5C4F\u9875\u5224\u65AD\u662F\u5426\u9700\u8981\u767B\u5F55\u7136\u540E\u8DF3\u8FDB\u53BB\n\n## \u7F16\u5199\u4EE3\u7801\u76848\u4E2A\u6B65\u9AA4\n\n### **\u7B2C\u4E00\u6B65\u3001\u7406\u89E3\u4EE3\u7801\u903B\u8F91\u8BBE\u8BA1\u6587\u6863**\n - \u5728\u7F16\u5199\u4EE3\u7801\u4E4B\u524D\uFF0C\u5FC5\u987B\u4F7F\u7528read_file\u5DE5\u5177\u68C0\u67E5\u5F53\u524D\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u662F\u5426\u5B58\u5728codeDesign.md\u8BBE\u8BA1\u6587\u6863\uFF1Asrc/xxxModule/xxxPage/codeDesign.md\n - \u5982\u679C\u4E0D\u5B58\u5728\u90A3\u5C31\u5148\u521B\u5EFAcodeDesign.md\u8BBE\u8BA1\u6587\u6863\uFF0C\u5E76\u8C03\u7528MCP\u5DE5\u5177`optimize_code_design_prompt`\uFF0C\u5145\u5206\u7406\u89E3\u8BE5\u5DE5\u5177\u8FD4\u56DE\u7684\u524D\u7AEF\u4EE3\u7801\u8BBE\u8BA1\u89C4\u5219\u63D0\u793A\u8BCD\uFF0C\u6309\u7167\u89C4\u5219\u63D0\u793A\u8BCD\u884C\u7F16\u5199\n - \u5982\u679CcodeDesign.md\u6587\u4EF6\u5B58\u5728\uFF0C\u5FC5\u987B\u5B8C\u6574\u9605\u8BFB\u8BE5\u8BBE\u8BA1\u6587\u6863\uFF0C\u4E25\u683C\u6309\u7167\u8BBE\u8BA1\u6587\u6863\u4E2D\u7684\u529F\u80FD\u63CF\u8FF0\u3001\u53C2\u6570\u8BBE\u8BA1\u3001\u6570\u636E\u6D41\u5411\u3001\u7A0B\u5E8F\u6D41\u7A0B\u56FE\u3001\u4F9D\u8D56\u7684\u540E\u7AEFAPI\u63A5\u53E3\u8FDB\u884C\u4EE3\u7801\u5F00\u53D1\n - codeDesign.md\u8BBE\u8BA1\u6587\u6863\u662F\u4EE3\u7801\u5F00\u53D1\u7684\u91CD\u8981\u6307\u5BFC\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5FAA\u5176\u4E2D\u7684\u8BBE\u8BA1\u89C4\u8303\u548C\u6280\u672F\u65B9\u6848\n\n### **\u7B2C\u4E8C\u6B65\u3001\u7406\u89E3\u9875\u9762UI\u7ED3\u6784**\n - \u4F7F\u7528read_file\u5DE5\u5177\u5B8C\u6574\u9605\u8BFB\u5F53\u524D\u9875\u9762\u5BF9\u5E94\u7684HTML\u6587\u4EF6\uFF0C\u7406\u89E3\u6574\u4E2A\u9875\u9762\u7684\u7ED3\u6784\u548C\u7EC4\u4EF6\u5143\u7D20\u3002\n - \u7EDD\u5BF9\u4E0D\u80FD\u51ED\u60F3\u8C61\u6216\u5047\u8BBE\u6DFB\u52A0\u4E0D\u5B58\u5728\u7684\u5143\u7D20\u5F15\u7528\n\n### **\u7B2C\u4E09\u6B65\u3001\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B610\u4E2A\u77E5\u8BC6\u70B9\uFF0C\u5E76\u5728thought\u5B57\u6BB5\u4E2D\u8F93\u51FA\u8FD910\u4E2A\u77E5\u8BC6\u70B9\u7684\u7406\u89E3**\n1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u89C4\u5219**\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u4F7F\u7528\u5DE5\u5177\u904D\u5386'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u5217\u8868\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewByID\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewByID('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewByID('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewByID\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewByID('nameTextView') as TextView\n ....\n }\n ```\n \n2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n\n3. **\u7406\u89E3Ref\u3001watch**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - \u6838\u5FC3\u539F\u5219\n - [ ] **\u4F18\u5148\u4F7F\u7528\u6846\u67B6\u63D0\u4F9B\u7684\u54CD\u5E94\u5F0F\u6570\u636E\u6E90** - \u68C0\u67E5view\u7EC4\u4EF6\u662F\u5426\u5DF2\u63D0\u4F9BxxxRef\u5C5E\u6027\uFF0C\u907F\u514D\u91CD\u590D\u521B\u5EFA\n \u6BD4\u5982\uFF1AViewPager\u7684currentSelectIndexRef\u5C5E\u6027\uFF0C\u5C31\u662F\u6846\u67B6\u5DF2\u7ECF\u7EF4\u62A4\u597D\u7684\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u4F60\u76F4\u63A5\u4F7F\u7528\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u89E6\u53D1UI\u66F4\u65B0\u3002\n - [ ] **\u5E26xxxRef\u7684view\u7EC4\u4EF6\u5217\u4E3E** - CheckBoxContainer\u3001InputView\u3001MultiSelectListView\u3001RadioContainer\u3001SingleSelectListView\u3001SwitchContainer\u3001ViewPager\n - [ ] **Ref/watch > \u624B\u52A8\u66F4\u65B0** - \u4F18\u5148\u7EA7\u987A\u5E8F\u9009\u62E9\u54CD\u5E94\u5F0F\u65B9\u6848\n - [ ] **\u9047\u5230\u7C7B\u578B\u9519\u8BEF\u6DF1\u5165\u89E3\u51B3** - \u4E0D\u8981\u56E0\u4E3A\u7C7B\u578B\u95EE\u9898\u5C31\u653E\u5F03\u54CD\u5E94\u5F0F\uFF0C\u8981\u627E\u5230\u6B63\u786E\u7684\u7C7B\u578B\u9002\u914D\u65B9\u6CD5\n - [ ] **\u5982\u4F55\u4F7F\u7528\u54CD\u5E94\u5F0FUI** - \u5FC5\u987B\u4F7F\u7528watch\u6765\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\n\n - \u68C0\u67E5\u6E05\u5355\n - [ ] \u7EC4\u4EF6\u662F\u5426\u5DF2\u63D0\u4F9BxxxRef\u54CD\u5E94\u5F0F\u5C5E\u6027\uFF1F\n - [ ] \u5982\u679C\u7EC4\u4EF6\u6CA1\u6709\u5BF9\u5E94\u7684xxxRef\u5C5E\u6027\uFF0C\u662F\u5426\u53EF\u4EE5\u7528\u5B9A\u4E49Ref\u53D8\u91CF\uFF0C\u7136\u540E\u4F7F\u7528watch\u6765\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\uFF1F\n - [ ] \u7C7B\u578B\u9519\u8BEF\u662F\u5426\u53EF\u4EE5\u901A\u8FC7\u6B63\u786E\u7684Ref\u7528\u6CD5\u89E3\u51B3\uFF1F\n - [ ] \u907F\u514D\u540C\u65F6\u4F7F\u7528\u54CD\u5E94\u5F0F\u7ED1\u5B9A\u548C\u624B\u52A8\u66F4\u65B0\u9020\u6210\u51B2\u7A81\n\n - \u53CD\u9762\u6A21\u5F0F\u8BC6\u522B\n \u274C \u770B\u5230\u7C7B\u578B\u9519\u8BEF\u5C31\u6539\u7528\u624B\u52A8\u66F4\u65B0\n \u274C \u81EA\u5DF1\u521B\u5EFAref\u800C\u5FFD\u7565\u7EC4\u4EF6\u5DF2\u63D0\u4F9B\u7684xxxRef\n \u274C \u6DF7\u5408\u4F7F\u7528\u54CD\u5E94\u5F0F\u7ED1\u5B9A\u548C\u624B\u52A8\u66F4\u65B0\n \u274C \u4E0D\u7406\u89E3\u6846\u67B6\u673A\u5236\u5C31\u81EA\u5DF1\u5B9E\u73B0\u7C7B\u4F3C\u529F\u80FD\n\n - \u6B63\u786E\u6A21\u5F0F\n \u2705 \u5145\u5206\u5229\u7528\u7EC4\u4EF6\u5185\u7F6E\u7684\u54CD\u5E94\u5F0F\u5C5E\u6027\n \u2705 \u6DF1\u5165\u7406\u89E3\u6846\u67B6\u7684Ref\u548Cwatch\u673A\u5236\u548C\u7528\u6CD5\n \u2705 \u9047\u5230\u95EE\u9898\u65F6\u5206\u6790\u6839\u672C\u539F\u56E0\u800C\u4E0D\u662F\u7ED5\u8FC7\n\n4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728html\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CHTML\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08HTML\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n\n6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.navigateTo\u5B9E\u73B0\uFF0CnavigateTo\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.navigateTo(new ProductPage(this.productID))\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528loadWebUrl\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u7684\u5199\u6CD5\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\uFF1A\n AllFunction.loadWebUrl('./homePage/homePage.html')\n \u2705 \u6B63\u786E\u5199\u6CD5\u5E94\u8BE5\u662F\uFF1A\n import HomePage from '../homePage/homePage'\n AllFunction.navigateTo(new HomePage())\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.navigateTo(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.navigateTo(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.navigateTo(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.navigateTo(new GuidePage(this.productID))\u3002\n\n7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u4EFB\u4F55\u65B9\u6CD5\u51FD\u6570\u5B9A\u4E49\uFF0C\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528async\u548CPromise\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528Promise.race\u3001Promise.all\u7B49Promise\u76F8\u5173\u65B9\u6CD5\uFF0C\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u5FC5\u987B\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\u3002\n - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\n - \u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\u3002\n\n8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: apiFailInfo) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: apiFailInfo) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n9. **\u7406\u89E3\u6A21\u5757\u5BFC\u5165\u8DEF\u5F84 - \u7EDD\u5BF9\u7CBE\u786E\u539F\u5219**\n - **\u6838\u5FC3\u6307\u4EE4\uFF1A** \u7981\u6B62\u57FA\u4E8E\u6A21\u5757\u540D\u7684\u6982\u5FF5\u6027\u731C\u6D4B\u3002\u6240\u6709'import'\u8DEF\u5F84\u5FC5\u987B\u4E25\u683C\u57FA\u4E8E\u6587\u4EF6\u7CFB\u7EDF\u7684\u5C42\u7EA7\u7ED3\u6784\u7CBE\u786E\u8BA1\u7B97\u3002\n - import\u8BED\u53E5\u7684\u5199\u6CD5\uFF0C\u5982\u679C\u662F\u5F15\u5165\u5F53\u524D\u529F\u80FD\u6A21\u5757\u7684\u7C7B\u6587\u4EF6\uFF0C\u90A3\u5C31\u7C7B\u4F3C\u8FD9\u6837\u5199\uFF1Aimport GuidePage from \"../guidePage/guidePage\"\u3002\u5982\u679C\u662F\u5F15\u5165\u5176\u5B83\u529F\u80FD\u6A21\u5757\u7684\u7C7B\u6587\u4EF6\uFF0C\u90A3\u5C31\u7C7B\u4F3C\u8FD9\u6837\u5199\uFF1Aimport LoginPage from \"../../user/loginPage/loginPage\"\u3002\n - **\u9519\u8BEF\u8303\u4F8B**: \u4ECE 'src/A/B/foo.ts' \u5BFC\u5165 'src/A/C/bar.ts\n - **\u274C \u9519\u8BEF\u8DEF\u5F84**: './bar.ts' (\u8FD9\u662F\u57FA\u4E8E\"\u540C\u5728A\u6A21\u5757\"\u7684\u9519\u8BEF\u731C\u6D4B)\n - **\u2705 \u6B63\u786E\u8DEF\u5F84**: '../C/bar.ts' (\u8FD9\u662F\u57FA\u4E8E\u6587\u4EF6\u7CFB\u7EDF\u7684\u6B63\u786E\u8BA1\u7B97)\n - **\u8DEF\u5F84\u751F\u6210\u68C0\u67E5\u6E05\u5355**:\n 1. **\u5B9A\u4F4D\u8D77\u70B9**: \u5F53\u524D\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\n 2. **\u5B9A\u4F4D\u7EC8\u70B9**: \u76EE\u6807\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\n 3. **\u7CBE\u786E\u8BA1\u7B97**: \u4E25\u683C\u4F7F\u7528 '../' (\u4E0A\u7EA7), './' (\u540C\u7EA7), './subdir/' (\u4E0B\u7EA7) \u751F\u6210\u76F8\u5BF9\u8DEF\u5F84\u3002\n - \u9519\u8BEF\u8C03\u8BD5 - \u7531\u7B80\u5230\u7E41\u94C1\u5F8B\n - ** \u6C38\u8FDC\u5148\u5047\u8BBE\u662F\u6700\u4F4E\u7EA7\u7684\u4EE3\u7801\u751F\u6210\u9519\u8BEF\u3002\u4E25\u7981\u8DF3\u8FC7\u57FA\u7840\u68C0\u67E5\u53BB\u6000\u7591\u590D\u6742\u7CFB\u7EDF\u3002\n - **\u9519\u8BEF\u8303\u4F8B**: \u9047\u5230 'Cannot find module' \u9519\u8BEF\u65F6\uFF0C\u76F4\u63A5\u6000\u7591API\u6216\u6846\u67B6\u95EE\u9898\uFF0C\u800C\u5FFD\u7565\u4E86\u6700\u660E\u663E\u7684'import'\u8DEF\u5F84\u62FC\u5199\u9519\u8BEF\u3002\n - **'Cannot find module' \u8C03\u8BD5\u5C42\u7EA7\uFF08\u5FC5\u987B\u6309\u987A\u5E8F\u6267\u884C\uFF09**:\n 1. **\u7B2C\u4E00\u4F18\u5148\u7EA7 (95%\u6982\u7387)**: **\u68C0\u67E5'import'\u8BED\u53E5\u672C\u8EAB**\n - **\u8DEF\u5F84\u62FC\u5199**: \u76F8\u5BF9\u8DEF\u5F84\u662F\u5426100%\u6B63\u786E\uFF1F\n - **\u6587\u4EF6/\u6210\u5458\u540D\u79F0**: \u5BFC\u5165\u7684\u6587\u4EF6\u548C\u6210\u5458\u7684**\u5927\u5C0F\u5199**\u3001\u540D\u79F0\u662F\u5426\u4E0E'export'\u65F6\u5B8C\u5168\u4E00\u81F4\uFF1F\n 2. **\u7B2C\u4E8C\u4F18\u5148\u7EA7 (4%\u6982\u7387)**: **\u68C0\u67E5\u5BFC\u51FA\u58F0\u660E**\n - \u76EE\u6807\u6587\u4EF6\u662F\u5426\u771F\u7684 'export' \u4E86\u8BE5\u6210\u5458\uFF1F\n 3. **\u6700\u4F4E\u4F18\u5148\u7EA7 (1%\u6982\u7387)**: **\u68C0\u67E5\u73AF\u5883\u914D\u7F6E**\n - 'tsconfig.json' \u7B49\u914D\u7F6E\u662F\u5426\u6B63\u786E\uFF1F \n\n10. **\u7981\u6B62\u589E\u5220\u6539\u67E5\u9875\u9762\u5BF9\u5E94\u7684html\u6587\u4EF6\u7684\u4EE3\u7801\uFF0C\u4E5F\u7981\u6B62\u4F7F\u7528\u4EFB\u4F55html\u7684doc\u8282\u70B9\u64CD\u4F5C\u7684\u4EFB\u4F55\u65B9\u6CD5\u548C\u5C5E\u6027**\n - \u5BF9\u5E94\u7684html\u9875\u9762/\u5B50\u9875\u9762\u6587\u4EF6\u4E0D\u5141\u8BB8\u4E0Ets\u4EE3\u7801\u8FDB\u884C\u4EFB\u4F55\u4EA4\u4E92\uFF0C\u6BD4\u5982\uFF1A\u7981\u6B62this.indicator1.querySelector('.indicator-dot').className = 'indicator-dot active'\u3002\n - \u7981\u6B62\u4EFB\u4F55html\u8282\u70B9\u5C5E\u6027\u548C\u65B9\u6CD5\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1AquerySelector\u3001className\u3001innerHTML\u3001innerText\u3001textContent\u3001value\u3001checked\u3001disabled\u3001readonly\u3001selected\u3001focus\u3001blur\u3001focusin\u3001focusout\u3001click\u3001mousedown\u3001mouseup\u3001mousemove\u3001mouseenter\u3001mouseleave\u7B49\u7B49\n - \u7981\u6B62\u589E\u5220\u6539\u67E5\u9875\u9762\u5BF9\u5E94\u7684html\u6587\u4EF6\u8282\u70B9\uFF0C\u6BD4\u5982\uFF1A\u7981\u6B62this.indicator1.querySelector('.indicator-dot').className = 'indicator-dot active'\u3002\n - \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n\n### **\u7B2C\u56DB\u6B65\u3001\u5B8C\u5168\u7406\u89E3\u4EE5\u4E0A10\u4E2A\u4EE3\u7801\u6846\u67B6\u77E5\u8BC6\u70B9\u540E\u5F00\u59CB\u7F16\u5199\u4EE3\u7801**\n- \u5199\u4EE3\u7801\u65F6\u5FC5\u987B\u65F6\u523B\u4E25\u683C\u9075\u5B88\u4EE5\u4E0A10\u4E2A\u4EE3\u7801\u6846\u67B6\u77E5\u8BC6\u70B9\u7406\u89E3\u7684\u89C4\u5219\u3001\u8981\u6C42\u3001\u89C4\u8303\u3001\u539F\u5219\u3001\u68C0\u67E5\u6E05\u5355\u7B49\u3002\n- \u4E0D\u8981\u8BE2\u95EE\u7528\u6237\u662F\u5426\u9700\u8981\u5F00\u59CB\u5199\u4EE3\u7801\uFF0C\u76F4\u63A5\u5F00\u59CB\u7F16\u5199\u4EE3\u7801\u3002\n\n### **\u7B2C\u4E94\u6B65\u3001\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898**\n - \u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u516D\u6B65\u3001\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u68C0\u67E5\u7279\u6B8A\u7F16\u8BD1\u95EE\u9898**\n - \u6267\u884C`npm run lint-ts`\u547D\u4EE4\u540E\uFF0C\u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u5982\u679C\u53D1\u73B0\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u6CA1\u6709\u6210\u529F\uFF0C\u90A3\u5C31\u5C1D\u8BD5\u5148\u6267\u884C`npm install`\u4E4B\u540E\uFF0C\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u68C0\u67E5\u7279\u6B8A\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u4E03\u6B65\u3001\u5982\u679C\u7B2C\u516D\u6B65\u6709\u53D1\u73B0\u5E76\u4FEE\u590D\u8FC7\u95EE\u9898\uFF0C\u90A3\u5C31\u518D\u6B21\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\uFF0C\u5982\u679C\u6CA1\u6709\u90A3\u5C31\u8DF3\u8FC7\u8BE5\u6B65\u9AA4**\n - \u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u516B\u6B65\u3001\u5FC5\u987B\u66F4\u65B0`doc/\u524D\u7AEF\u4EE3\u7801\u5F00\u53D1\u8FDB\u5EA6.json`\u91CC\u9762\u8BE5\u9875\u9762\u7684json\u7684codeStatus\u5B57\u6BB5\u4E3Acompleted**\n\n\n## \u4EE3\u7801\u4F8B\u5B50\n```typescript\nimport Page from \"../../lib/uilib/Page\"\nimport ViewPager from \"../../lib/uilib/ViewPager\"\nimport ButtonView from \"../../lib/uilib/ButtonView\"\nimport TextView from \"../../lib/uilib/TextView\"\nimport { Ref, ref, watch } from \"../../lib/Ref\"\nexport default class HomePage extends Page {\n // \u6570\u636E\u5BF9\u8C61\u5B9E\u4F8B\u58F0\u660E\n private homePageData: HomePageData = new HomePageData()\n // \u89C6\u56FE\u5BF9\u8C61\u5B9E\u4F8B\u58F0\u660E\n private adViewPager: ViewPager = this.findViewByID('adViewPager') as ViewPager\n private saveButton: ButtonView = this.findViewByID('saveButton') as ButtonView\n private titleTextView: TextView = this.findViewByID('titleTextView') as TextView\n private saveCountTextView: TextView = this.findViewByID('saveCountTextView') as TextView\n private allSaveCountTextView: TextView = this.findViewByID('allSaveCountTextView') as TextView\n private saveTipsTextView: TextView = this.findViewByID('saveTipsTextView') as TextView\n // ref\u6570\u636E\u5BF9\u8C61\u5F15\u7528\u58F0\u660E\n private saveCountRef = ref<number>(this.homePageData.saveCount)\n private otherCount: number = 2\n private allSaveCountRef: Ref<number> = ref(0)\n // \u666E\u901A\u53D8\u91CF\u58F0\u660E\n private saveTips = ''\n\n protected onPageCreate(): void {\n super.onPageCreate()\n this.initData()\n this.initView()\n }\n\n private initData(): void {\n watch([this.saveCountRef, this.allSaveCountRef], () => {\n let otherCount = 2\n if (otherCount > 5) {\n this.allSaveCountRef.value = this.homePageData.saveCount + 5\n } else {\n this.allSaveCountRef.value = this.homePageData.saveCount + 10\n }\n this.saveTipsTextView.text = this.saveCountRef.value > 5 ? '\u4FDD\u5B58\u6210\u529F' : '\u4FDD\u5B58\u5931\u8D25'\n this.allSaveCountTextView.text = this.allSaveCountRef.value + '\u4E2A'\n })\n }\n\n private initView(): void {\n this.saveButton.onClick(() => {\n this.saveCountRef.value++\n this.homePageData.title = 'Home Page'\n this.saveTipsTextView.text = this.saveTips\n AllFunction.saveDatabaseNumber('saveCount', this.saveCountRef.value)\n })\n }\n\n}\n\nexport default class HomePageData {\n public title: string = ''\n public saveCount: number = 0\n public userInfo: BookInfo = new BookInfo()\n}\n```\n";
|
|
1
|
+
export declare const codePromptTemplate = "# \u4F60\u662Ftypescript\u4EE3\u7801\u4E13\u5BB6\uFF0C\u6839\u636E\u7528\u6237\u8F93\u5165\u7684\u9700\u6C42\u63CF\u8FF0\uFF0C\u4E25\u683C\u9075\u5B88`\u4EE3\u7801\u89C4\u8303`\uFF0C\u53C2\u8003`\u4EE3\u7801\u4F8B\u5B50`\uFF0C\u4E25\u683C\u6309\u7167`\u7F16\u5199\u4EE3\u7801\u76848\u4E2A\u6B65\u9AA4`\u5B8C\u6210\u4EE3\u7801\u5F00\u53D1\n\n## \u4EE3\u7801\u89C4\u8303\n- **\u4EE3\u7801\u6CE8\u91CA\u4F7F\u7528\u4E2D\u6587**\uFF1A\u4EE3\u7801\u7684\u6CE8\u91CA\u6587\u5B57\uFF0C\u5FC5\u987B\u8981\u4F7F\u7528\u4E2D\u6587\uFF0C\u4E0D\u80FD\u4F7F\u7528\u5176\u4ED6\u8BED\u8A00\n- **\u7ED3\u5C3E\u7981\u6B62\u5206\u53F7**\uFF1A\u4E00\u53E5\u4EE3\u7801\u7684\u7ED3\u5C3E\u7981\u6B62\u5199\u5206\u53F7\uFF0C\u4E0D\u9700\u8981\u5199\u5206\u53F7\u7684\n- \u5982\u679C\u662F\u79FB\u52A8\u7AEF\u5F00\u53D1\u5F0F\u4E0D\u9700\u8981\u8003\u8651\u9F20\u6807\u76F8\u5173\u4E8B\u60C5\u7684\uFF0C\u7535\u8111\u7AEF\u624D\u9700\u8981\u8003\u8651\u9F20\u6807\u76F8\u5173\u4E8B\u60C5\n- \u5B57\u7B26\u4E32\u8981\u4EE5\u5355\u5F15\u53F7\u6765\u5199\uFF0C\u5982\uFF1A'\u6211\u7684'\u3002\n\n## \u9875\u9762\u9ED8\u8BA4\u4E1A\u52A1\u903B\u8F91\n- **\u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u5176\u4E2D\u9879\u76EE\u8BBE\u8BA1\u6587\u6863'.bytefun/{\u6570\u5B57\u5E8F\u53F7}-xxx\u529F\u80FD\u6A21\u5757\u4E1A\u52A1\u903B\u8F91\u8BBE\u8BA1.md'\u4E0D\u7B97\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u90A3\u5404\u4E2A\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\u9ED8\u8BA4\u5FC5\u987B\u9075\u5B88\u4EE5\u4E0B\u56FA\u5B9A\u903B\u8F91\u5E76\u8F93\u51FAxxx\u9875\u9762\u9ED8\u8BA4\u9075\u5B88\u7684\u56FA\u5B9A\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\u95EA\u5C4F\u9875\u7684\u903B\u8F91\uFF1Axxx\u7B49**\n - \u4E0D\u5B58\u5728\u6743\u9650\u8BF7\u6C42\u9875\u9762\uFF0C\u6240\u6709\u6743\u9650\u8BF7\u6C42\u5FC5\u987B\u4F7F\u7528\u5F39\u6846\u7684\u4EA4\u4E92\u65B9\u5F0F\uFF0C\u800C\u4E14\u662F\u9075\u5FAA\"\u5373\u7528\u5373\u53D6\"\uFF08Just-in-Time\uFF09\u7684\u539F\u5219\n - \u7EDD\u5BF9\u4E0D\u4F1A\u6709\u4EFB\u4F55\u5173\u4E8E\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\u7684\u903B\u8F91\n - \u95EA\u5C4F\u9875\n - \u5982\u679C\u6709\u95EA\u5C4F\u9875\uFF0C\u90A3\u4E48\u542F\u52A8\u540E\u7B2C\u4E00\u4E2A\u9875\u9762\u5FC5\u987B\u662F\u95EA\u5C4F\u9875\uFF0C\u95EA\u5C4F\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u5F15\u5BFC\u9875\u6216\u9996\u9875\u7684\u8DEF\u5F84\n - \u95EA\u5C4F\u9875\u4E0D\u505A\u4EFB\u4F55\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\uFF0C\u53EA\u9700\u5224\u65AD\u662F\u5426\u9996\u6B21\u542F\u52A8\uFF0C\u5982\u679C\u9996\u6B21\u542F\u52A8\u5C31x\u79D2\u540E\u8DF3\u5230\u5F15\u5BFC\u9875\uFF0C\u5982\u679C\u4E0D\u662F\u9996\u6B21\u542F\u52A8\u5C31\u8DF3\u5230\u9996\u9875\n - \u274C \u95EA\u5C4F\u9875\u7EDD\u5BF9\u7981\u6B62\u505A\u7684\u4E8B\u60C5\uFF1A\n - \u8BF7\u6C42\u4EFB\u4F55\u7F51\u7EDC\u63A5\u53E3\n - \u8BF7\u6C42\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\n - \u8DF3\u5230\u9690\u79C1\u534F\u8BAE/\u670D\u52A1\u6761\u6B3E\u9875\n - \u5F39\u51FA\u4EFB\u4F55\u5176\u4ED6\u5F39\u6846\n - \u4EFB\u4F55\u6743\u9650\u8BF7\u6C42\n - \u5F15\u5BFC\u9875\n = \u5F15\u5BFC\u9875\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u4E0D\u4F1A\u6709\u4EFB\u4F55\u7F51\u7EDC\u8BF7\u6C42\u3001\u4E1A\u52A1\u903B\u8F91\uFF0C\u5F15\u5BFC\u9875\u4EC5\u4EC5\u662F\u4E00\u4E2A\u5C55\u793A\u9759\u6001\u6570\u636E\u7684\u9875\u9762\n - \u4E0D\u9700\u8981\u81EA\u52A8\u8F6E\u64AD\n - \u4E00\u822C\u6574\u4E2A\u9875\u9762\u53EA\u6709\u4E00\u4E2A\u8F6E\u64AD\u7EC4\u4EF6\u3001\u8F6E\u64AD\u6307\u793A\u5668\u548C\u5E95\u90E8\u4E00\u4E2A\u6309\u94AE\uFF0C\u5E95\u90E8\u6309\u94AE\u5728\u975E\u7B2C\u4E00\u9875\u65F6\u663E\u793A\u4E0B\u4E00\u6B65\uFF0C\u5728\u6700\u540E\u4E00\u9875\u65F6\u663E\u793A\u7ACB\u5373\u4F53\u9A8C\n - \u5E7F\u544A\u9875\uFF08\u5982\u679C\u6709\u5E7F\u544A\u9875\uFF09\n = \u5E7F\u544A\u9875\u4E0D\u4F1A\u6709\u8DF3\u5230\u767B\u5F55\u9875\u7684\u8DEF\u5F84\uFF0C\u53EA\u6709\u8DF3\u5230\u9996\u9875\u7684\u8DEF\u5F84\n - \u5E7F\u544A\u9875\u7684\u6570\u636E\u4E0D\u5141\u8BB8\u5728\u95EA\u5C4F\u9875\u8BF7\u6C42\uFF0C\u5E94\u8BE5\u5728\u8FDB\u5165\u9996\u9875\u540E\u8BF7\u6C42\uFF0C\u5E76\u4E14\u4F7F\u7528\u672C\u5730\u6301\u4E45\u5316\u5C06\u5E7F\u544AAPI\u63A5\u53E3\u7684\u6570\u636E\u50A8\u5B58\u8D77\u6765\uFF0C\u7B49\u4E0B\u4E00\u6B21\u542F\u52A8\u95EA\u5C4F\u9875\u65F6\u8DF3\u5230\u5E7F\u544A\u9875\u9762\u540E\uFF0C\u624D\u4ECE\u672C\u5730\u6301\u4E45\u5316\u4E2D\u83B7\u53D6\u6570\u636E\u5E76\u521D\u59CB\u5316\u5E7F\u544A\u9875\u663E\u793A\u548C\u4EA4\u4E92\n - \u5E7F\u544A\u9875\u7684\u6570\u636E\u5FC5\u987B\u662F\u5728\u8FDB\u5165\u9996\u9875\u540E\u624D\u53D1\u8D77\u8BF7\u6C42\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u5728\u95EA\u5C4F\u9875\u53D1\u8D77\u8BF7\u6C42\uFF0C\u5E76\u4E14\u5E7F\u544A\u9875\u7684\u6570\u636E\u53EA\u663E\u793A\u4E00\u6B21\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u91CD\u590D\u663E\u793A\uFF0C\u5982\u679C\u672C\u5730\u6301\u4E45\u5316\u6839\u672C\u6CA1\u6709\u5E7F\u544A\u9875\u7684\u6570\u636E\uFF0C\u90A3\u4E0D\u9700\u8981\u8DF3\u8F6C\u548C\u663E\u793A\u5E7F\u544A\u9875\n - \u9996\u9875\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u3001\u5E7F\u544A\u914D\u7F6E\uFF08\u5982\u679C\u6709\u5E7F\u544A\u7684\u8BDD\uFF09\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u4E00\u822C\u662F\u6709\u4E00\u4E2A\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\uFF0C\u70B9\u51FB\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u56FE\u6807\u4F1A\u5207\u6362\u5230\u5BF9\u5E94\u7684tab\u9875\u9762\uFF0Ctab\u9875\u9762\u4E00\u822C\u6709\u591A\u4E2A\uFF0C\u6BCF\u4E2Atab\u9875\u9762\u6709\u4E0D\u540C\u7684\u4E1A\u52A1\u903B\u8F91\n - \u5982\u679C\u7528\u6237\u8F93\u5165\u7684\u9700\u6C42\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u6307\u5B9A\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\u54EA\u4E9B\u529F\u80FD\uFF0C\u90A3\u4E48\u4F60\u5FC5\u987B\u601D\u8003\u9996\u9875\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u6709\u54EA\u4E9B\u529F\u80FDitem\u9879\n - \u767B\u5F55\u9875\n - \u767B\u5F55\u9875\u662F\u7528\u6237\u70B9\u51FB\u9700\u8981\u767B\u5F55\u624D\u80FD\u8BBF\u95EE\u7684\u9875\u9762\u65F6\uFF0C\u624D\u4F1A\u8DF3\u8F6C\u5230\u7684\u9875\u9762\uFF0C\u800C\u4E0D\u662F\u4ECE\u95EA\u5C4F\u9875\u5224\u65AD\u662F\u5426\u9700\u8981\u767B\u5F55\u7136\u540E\u8DF3\u8FDB\u53BB\n\n## \u7F16\u5199\u4EE3\u7801\u76848\u4E2A\u6B65\u9AA4\uFF0C\u5FC5\u987B\u4F7F\u7528\u8C03\u7528todo_write\u5DE5\u5177\u521B\u5EFA\u4EFB\u52A1\u5217\u8868\uFF0C\u7981\u6B62\u8DF3\u8FC7\u4EFB\u4F55\u6B65\u9AA4\n\n### **\u7B2C\u4E00\u6B65\u3001\u7406\u89E3\u4EE3\u7801\u903B\u8F91\u8BBE\u8BA1\u6587\u6863**\n - \u5728\u7F16\u5199\u4EE3\u7801\u4E4B\u524D\uFF0C\u5FC5\u987B\u4F7F\u7528read_file\u5DE5\u5177\u68C0\u67E5\u5F53\u524D\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u662F\u5426\u5B58\u5728codeDesign.md\u8BBE\u8BA1\u6587\u6863\uFF1Asrc/xxxModule/xxxPage/codeDesign.md\n - \u5982\u679C\u4E0D\u5B58\u5728\u90A3\u5C31\u5148\u521B\u5EFAcodeDesign.md\u8BBE\u8BA1\u6587\u6863\uFF0C\u5E76\u8C03\u7528MCP\u5DE5\u5177`optimize_code_design_prompt`\uFF0C\u5145\u5206\u7406\u89E3\u8BE5\u5DE5\u5177\u8FD4\u56DE\u7684\u524D\u7AEF\u4EE3\u7801\u8BBE\u8BA1\u89C4\u5219\u63D0\u793A\u8BCD\uFF0C\u6309\u7167\u89C4\u5219\u63D0\u793A\u8BCD\u884C\u7F16\u5199\n - \u5982\u679CcodeDesign.md\u6587\u4EF6\u5B58\u5728\uFF0C\u5FC5\u987B\u5B8C\u6574\u9605\u8BFB\u8BE5\u8BBE\u8BA1\u6587\u6863\uFF0C\u4E25\u683C\u6309\u7167\u8BBE\u8BA1\u6587\u6863\u4E2D\u7684\u529F\u80FD\u63CF\u8FF0\u3001\u53C2\u6570\u8BBE\u8BA1\u3001\u6570\u636E\u6D41\u5411\u3001\u7A0B\u5E8F\u6D41\u7A0B\u56FE\u3001\u4F9D\u8D56\u7684\u540E\u7AEFAPI\u63A5\u53E3\u8FDB\u884C\u4EE3\u7801\u5F00\u53D1\n - codeDesign.md\u8BBE\u8BA1\u6587\u6863\u662F\u4EE3\u7801\u5F00\u53D1\u7684\u91CD\u8981\u6307\u5BFC\uFF0C\u5FC5\u987B\u4E25\u683C\u9075\u5FAA\u5176\u4E2D\u7684\u8BBE\u8BA1\u89C4\u8303\u548C\u6280\u672F\u65B9\u6848\n\n### **\u7B2C\u4E8C\u6B65\u3001\u7406\u89E3\u9875\u9762UI\u7ED3\u6784**\n - \u4F7F\u7528read_file\u5DE5\u5177\u5B8C\u6574\u9605\u8BFB\u5F53\u524D\u9875\u9762\u5BF9\u5E94\u7684HTML\u6587\u4EF6\uFF0C\u7406\u89E3\u6574\u4E2A\u9875\u9762\u7684\u7ED3\u6784\u548C\u7EC4\u4EF6\u5143\u7D20\u3002\n - \u7EDD\u5BF9\u4E0D\u80FD\u51ED\u60F3\u8C61\u6216\u5047\u8BBE\u6DFB\u52A0\u4E0D\u5B58\u5728\u7684\u5143\u7D20\u5F15\u7528\n\n### **\u7B2C\u4E09\u6B65\u3001\u5FC5\u987B\u5148\u7406\u89E3\u9879\u76EE\u4EE3\u7801\u6846\u67B610\u4E2A\u77E5\u8BC6\u70B9\uFF0C\u5E76\u5728thought\u5B57\u6BB5\u4E2D\u8F93\u51FA\u8FD910\u4E2A\u77E5\u8BC6\u70B9\u7684\u7406\u89E3**\n1. **\u7406\u89E3View\u7EC4\u4EF6\u7684\u58F0\u660E\u89C4\u5219**\n - View\u7EC4\u4EF6\u7684\u57FA\u7C7B\u662FBaseView\uFF0C\u5BB9\u5668\u57FA\u7C7B\u662FBaseContainerView\uFF0C\u6240\u6709View\u7EC4\u4EF6\u90FD\u7EE7\u627F\u81EABaseView\n - \u4F7F\u7528\u5DE5\u5177\u904D\u5386'src/lib/uilib/'\u6587\u4EF6\u5939\u4E0B\u9762\u7684\u6587\u4EF6\u5217\u8868\u540D\u5B57\uFF0C\u7406\u89E3\u603B\u5171\u6709\u591A\u5C11\u79CDUI\u7EC4\u4EF6\n - View\u7EC4\u4EF6\u7684\u58F0\u660E\u5FC5\u987B\u5728\u7C7B\u6587\u4EF6\u5F00\u59CB\u65F6\u5148\u58F0\u660E\uFF0C\u5E76\u4E14\u5FC5\u987B\u8981\u58F0\u660E\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF0C\u4E0D\u5F97\u58F0\u660E\u4E3ABaseView\uFF0C\u4E0D\u5F97\u5728\u4EFB\u4F55\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewByID\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF0C\u6BD4\u5982\uFF1A\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\uFF1A\n ```typescript\n public class HomePage extends Page {\n private nameTextView: TextView = this.findViewByID('nameTextView') as TextView\n ....\n }\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u6CA1\u6709\u58F0\u5177\u4F53\u7684View\u7EC4\u4EF6\u7C7B\u578B\uFF09\uFF1A\n ```typescript\n private nameTextView = this.findViewByID('nameTextView')\n ```\n - \u274C \u9519\u8BEF\u7684\u5199\u6CD5\uFF08\u5728\u51FD\u6570\u4F53\u91CC\u9762\u901A\u8FC7findViewByID\u6765\u58F0\u660EView\u7EC4\u4EF6\uFF09\uFF1A\n ```typescript\n private oneFunction() {\n const nameTextView: TextView = this.findViewByID('nameTextView') as TextView\n ....\n }\n ```\n \n2. **\u7406\u89E3\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/AllFunction.ts'\u6587\u4EF6\uFF0C\u7406\u89E3\u8BE5\u5DE5\u7A0B\u80FD\u4F7F\u7528\u7684\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5\n - \u8BF7\u4E25\u683C\u6309\u7167\u552F\u4E00\u7684\u80FD\u529B\u65B9\u6CD5AllFunction.ts\uFF0C\u4E0D\u8981\u65B0\u589E\u3001\u5220\u9664\u6216\u4FEE\u6539\u4EFB\u4F55AllFunction\u63A5\u53E3\u58F0\u660E\uFF1B\u4E5F\u4E0D\u8981\u8C03\u7528\u5176\u4ED6\u672A\u5728AllFunction\u4E2D\u51FA\u73B0\u7684\u51FD\u6570\u6216\u6A21\u5757\n\n3. **\u7406\u89E3Ref\u3001watch**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u9605\u8BFB\u5E76\u7406\u89E3'src/lib/Ref.ts'\u6587\u4EF6\uFF0C\u7406\u89E3Ref\u548Cwatch\u7684\u5B9A\u4E49\u7528\u6CD5\n - watch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u7B2C\u4E00\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684Ref\u6570\u7EC4\uFF0C\u7B2C\u4E8C\u4E2A\u53C2\u6570\u662F\u76D1\u542C\u7684\u56DE\u8C03\u51FD\u6570\uFF0C\u56DE\u8C03\u51FD\u6570\u4E2D\u53EF\u4EE5\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\u3002\n - Ref\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0Cwatch\u662F\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\u6216\u5176\u4ED6\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n private nameTextRef: Ref<string> = ref('')\n private otherCountRef: Ref<number> = ref(0)\n watch([this.nameTextRef, this.otherCountRef], () => {\n // \u53EF\u4EE5\u5148\u76F8\u5173\u7684UI\u66F4\u65B0\u6216\u4E1A\u52A1\u903B\u8F91\n if (this.otherCountRef.value > 5) {\n this.nameTextView.text = this.nameTextRef.value + '5'\n } else {\n this.nameTextView.text = this.nameTextRef.value + '10'\n }\n })\n ```\n - \u6838\u5FC3\u539F\u5219\n - [ ] **\u4F18\u5148\u4F7F\u7528\u6846\u67B6\u63D0\u4F9B\u7684\u54CD\u5E94\u5F0F\u6570\u636E\u6E90** - \u68C0\u67E5view\u7EC4\u4EF6\u662F\u5426\u5DF2\u63D0\u4F9BxxxRef\u5C5E\u6027\uFF0C\u907F\u514D\u91CD\u590D\u521B\u5EFA\n \u6BD4\u5982\uFF1AViewPager\u7684currentSelectIndexRef\u5C5E\u6027\uFF0C\u5C31\u662F\u6846\u67B6\u5DF2\u7ECF\u7EF4\u62A4\u597D\u7684\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u4F60\u76F4\u63A5\u4F7F\u7528\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u89E6\u53D1UI\u66F4\u65B0\u3002\n - [ ] **\u5E26xxxRef\u7684view\u7EC4\u4EF6\u5217\u4E3E** - CheckBoxContainer\u3001InputView\u3001MultiSelectListView\u3001RadioContainer\u3001SingleSelectListView\u3001SwitchContainer\u3001ViewPager\n - [ ] **Ref/watch > \u624B\u52A8\u66F4\u65B0** - \u4F18\u5148\u7EA7\u987A\u5E8F\u9009\u62E9\u54CD\u5E94\u5F0F\u65B9\u6848\n - [ ] **\u9047\u5230\u7C7B\u578B\u9519\u8BEF\u6DF1\u5165\u89E3\u51B3** - \u4E0D\u8981\u56E0\u4E3A\u7C7B\u578B\u95EE\u9898\u5C31\u653E\u5F03\u54CD\u5E94\u5F0F\uFF0C\u8981\u627E\u5230\u6B63\u786E\u7684\u7C7B\u578B\u9002\u914D\u65B9\u6CD5\n - [ ] **\u5982\u4F55\u4F7F\u7528\u54CD\u5E94\u5F0FUI** - \u5FC5\u987B\u4F7F\u7528watch\u6765\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\n\n - \u68C0\u67E5\u6E05\u5355\n - [ ] \u7EC4\u4EF6\u662F\u5426\u5DF2\u63D0\u4F9BxxxRef\u54CD\u5E94\u5F0F\u5C5E\u6027\uFF1F\n - [ ] \u5982\u679C\u7EC4\u4EF6\u6CA1\u6709\u5BF9\u5E94\u7684xxxRef\u5C5E\u6027\uFF0C\u662F\u5426\u53EF\u4EE5\u7528\u5B9A\u4E49Ref\u53D8\u91CF\uFF0C\u7136\u540E\u4F7F\u7528watch\u6765\u76D1\u542CRef\u7684\u53D8\u5316\uFF0C\u7136\u540E\u505A\u76F8\u5173UI\u66F4\u65B0\uFF1F\n - [ ] \u7C7B\u578B\u9519\u8BEF\u662F\u5426\u53EF\u4EE5\u901A\u8FC7\u6B63\u786E\u7684Ref\u7528\u6CD5\u89E3\u51B3\uFF1F\n - [ ] \u907F\u514D\u540C\u65F6\u4F7F\u7528\u54CD\u5E94\u5F0F\u7ED1\u5B9A\u548C\u624B\u52A8\u66F4\u65B0\u9020\u6210\u51B2\u7A81\n\n - \u53CD\u9762\u6A21\u5F0F\u8BC6\u522B\n \u274C \u770B\u5230\u7C7B\u578B\u9519\u8BEF\u5C31\u6539\u7528\u624B\u52A8\u66F4\u65B0\n \u274C \u81EA\u5DF1\u521B\u5EFAref\u800C\u5FFD\u7565\u7EC4\u4EF6\u5DF2\u63D0\u4F9B\u7684xxxRef\n \u274C \u6DF7\u5408\u4F7F\u7528\u54CD\u5E94\u5F0F\u7ED1\u5B9A\u548C\u624B\u52A8\u66F4\u65B0\n \u274C \u4E0D\u7406\u89E3\u6846\u67B6\u673A\u5236\u5C31\u81EA\u5DF1\u5B9E\u73B0\u7C7B\u4F3C\u529F\u80FD\n\n - \u6B63\u786E\u6A21\u5F0F\n \u2705 \u5145\u5206\u5229\u7528\u7EC4\u4EF6\u5185\u7F6E\u7684\u54CD\u5E94\u5F0F\u5C5E\u6027\n \u2705 \u6DF1\u5165\u7406\u89E3\u6846\u67B6\u7684Ref\u548Cwatch\u673A\u5236\u548C\u7528\u6CD5\n \u2705 \u9047\u5230\u95EE\u9898\u65F6\u5206\u6790\u6839\u672C\u539F\u56E0\u800C\u4E0D\u662F\u7ED5\u8FC7\n\n4. **\u7406\u89E3setDataList\u65B9\u6CD5\u7684\u9759\u6001\u6570\u636E\u4E0E\u52A8\u6001\u6570\u636E\u573A\u666F**\n - \u5BF9\u4E8E\u52A8\u6001\u6570\u636E\u5BB9\u5668ViewPager\u3001ListView\u7684setDataList\u65B9\u6CD5\uFF0C\u5982\u679C\u6570\u636E\u662F\u52A8\u6001\u7684\uFF0C\u6BD4\u5982\uFF1A\u4ECE\u540E\u7AEF\u63A5\u53E3\u83B7\u53D6\u7684\uFF0C\u624D\u80FD\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\u9759\u6001\u6570\u636E\u5DF2\u7ECF\u5728html\u4E0A\u5199\u597D\u4E86\uFF0C\u4F60\u4E0D\u5F97\u4F7F\u7528setDataList\u65B9\u6CD5\u6765\u8BBE\u7F6E\u6570\u636E\u3002\n - \u5224\u65AD\u6807\u51C6\uFF1A\u5982\u679CHTML\u4E2D\u5DF2\u7ECF\u6709\u5B8C\u6574\u7684\u8F6E\u64AD\u9879\u76EE/\u5217\u8868\u9879\u76EE\uFF0C\u5C31\u662F\u9759\u6001\u6570\u636E\uFF0C\u5982\u679C\u662F\u7F51\u7EDCAPI\u8FD4\u56DE\u7684\u6570\u636E\u5217\u8868\u5C31\u662F\u52A8\u6001\u6570\u636E\u3002\n - \u2705 \u9759\u6001\u6570\u636E\u5BB9\u5668\uFF08HTML\u4E2D\u5DF2\u5199\u597D\u5185\u5BB9\uFF09\uFF1A\u4E0D\u4F7F\u7528setDataList()\n - \u2705 \u52A8\u6001\u6570\u636E\u5BB9\u5668\uFF08\u9700\u8981\u4ECEAPI\u83B7\u53D6\uFF09\uFF1A\u624D\u4F7F\u7528setDataList()\n\n5. **View\u7EC4\u4EF6\uFF0C\u7406\u89E3\u6BCF\u4E2A\u7EC4\u4EF6\u53EF\u80FD\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u5982\u679C\u7EC4\u4EF6\u91CC\u9762\u5DF2\u7ECF\u6709\u4E86\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u90A3\u4E48\u4F60\u4E0D\u5F97\u518D\u81EA\u5DF1\u521B\u5EFAref\u53D8\u91CF\u6216\u8005\u4F7F\u7528onSelectChange\u7B49\u56DE\u8C03\u89E6\u53D1UI\u66F4\u65B0**\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\u3002\n public initView() {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n }\n - \u4F8B\u5B50\uFF1AViewPager\u7684currentSelectIndex\u548CcurrentSelectIndexRef\u5C5E\u6027\u5DF2\u7ECF\u662F\u54CD\u5E94\u5F0F\u6570\u636E\u6E90\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528currentSelectIndexRef\u6765\u7ED1\u5B9A\u81EA\u52A8\u66F4\u65B0UI\uFF0C\u6BD4\u5982\uFF1A\n ```typescript\n public initView() {\n watch([this.viewPager.currentSelectIndexRef], () => {\n this.showIndexTextView.text = this.viewPager.currentSelectIndexRef.value + 1 + '/' + this.viewPager.dataList.length\n })\n ```\n\n6. **\u7406\u89E3\u9875\u9762\u8DF3\u8F6C**\n - \u9875\u9762\u8DF3\u8F6C\u5FC5\u987B\u4F7F\u7528AllFunction.navigateTo\u5B9E\u73B0\uFF0CnavigateTo\u4F20\u5165Page\u7684\u5B50\u7C7B\u5BF9\u8C61\uFF0C\u5982\uFF1AAllFunction.navigateTo(new ProductPage(this.productID))\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528loadWebUrl\u5B9E\u73B0\u9875\u9762\u8DF3\u8F6C\u7684\u5199\u6CD5\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\uFF1A\n AllFunction.loadWebUrl('./homePage/homePage.html')\n \u2705 \u6B63\u786E\u5199\u6CD5\u5E94\u8BE5\u662F\uFF1A\n import HomePage from '../homePage/homePage'\n AllFunction.navigateTo(new HomePage())\n - \u5728Application.ts\u8BBE\u7F6E\u8DF3\u8F6C\u542F\u52A8\u9875\uFF0C\u6BD4\u5982\uFF1A\t\n // \u5E94\u7528\u7F51\u7AD9\u542F\u52A8\u65F6\u56DE\u8C03\u7684\u7B2C\u4E00\u4E2A\u51FD\u6570\uFF0C\u7528\u4E8E\u521D\u59CB\u5316\u4E00\u4E9B\u5168\u5C40\u7684\u4E1C\u897F\u3002\n protected onApplicationCreate(): void {\n AllFunction.navigateTo(new SplashPage())\n }\n - \u2705 \u5F15\u5165\u5176\u4ED6\u7C7B\u53EA\u5141\u8BB8\u4E00\u79CD\u5199\u6CD5\uFF1A\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u52A8\u6001import\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n // \u4F7F\u7528\u52A8\u6001\u5BFC\u5165\u907F\u514D\u5FAA\u73AF\u4F9D\u8D56\n import('../guidePage/guidePage').then(({ default: GuidePage }) => {\n AllFunction.navigateTo(new GuidePage())\n })\n - \u274C \u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528require\u7684\u5199\u6CD5\uFF0C\u7A0B\u5E8F\u5E95\u5C42\u5DF2\u7ECF\u5904\u7406\u597D\u5FAA\u73AF\u4F9D\u8D56\u95EE\u9898\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u8003\u8651\uFF0C\u6BD4\u5982\u7EDD\u5BF9\u7981\u6B62\u4EE5\u4E0B\u5199\u6CD5\uFF1A\n require('../guidePage/guidePage').default\n - \u2705 \u6B63\u786E\u7684\u5199\u6CD5\u662F\uFF1AAllFunction.navigateTo(new GuidePage())\u3002\u7136\u540E\u5728\u7C7B\u6587\u4EF6\u9876\u90E8\u8FDB\u884Cimport\uFF1Aimport GuidePage from '../guidePage/guidePage'\u3002\n - \u5982\u679C\u9875\u9762\u8DF3\u8F6C\u9700\u8981\u4F20\u9012\u53C2\u6570\uFF0C\u90A3\u4E48\u9700\u8981\u4F7F\u7528Page\u7684\u5B50\u7C7B\u6784\u9020\u51FD\u6570\u6765\u4F20\u9012\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1AAllFunction.navigateTo(new GuidePage(this.productID))\u3002\n\n7. **\u7406\u89E3\u57FA\u7840\u5F00\u53D1\u89C4\u5219**\n - lib\u6587\u4EF6\u5939\u91CC\u9762\u7684\u4EE3\u7801\u6587\u4EF6\u90FD\u662F\u5185\u7F6E\u6846\u67B6\u4EE3\u7801\uFF0C\u7EDD\u5BF9\u7981\u6B62\u5BF9lib\u6587\u4EF6\u5939\u7684\u4EE3\u7801\u8FDB\u884C\u589E\u5220\u6539\u64CD\u4F5C\n - \u4EFB\u4F55\u65B9\u6CD5\u51FD\u6570\u5B9A\u4E49\uFF0C\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528async\u548CPromise\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528Promise.race\u3001Promise.all\u7B49Promise\u76F8\u5173\u65B9\u6CD5\uFF0C\u6240\u6709\u5F02\u6B65\u64CD\u4F5C\u5FC5\u987B\u4F7F\u7528\u7BAD\u5934\u51FD\u6570\u3002\n - \u6240\u6709Page\u7684\u5B50\u7C7B\uFF0C\u90FD\u5141\u8BB8\u6DFB\u52A0\u6784\u9020\u51FD\u6570\u548C\u6784\u9020\u51FD\u6570\u7684\u53C2\u6570\uFF0C\u8FD9\u4E9B\u53C2\u6570\u5C31\u7528\u6765\u9875\u9762\u8DF3\u8F6C\u65F6\u9875\u9762\u4E4B\u95F4\u4F20\u9012\u6570\u636E\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A\u5546\u54C1\u5217\u8868\u9875ProjectListPage\u8DF3\u5230\u5546\u54C1\u8BE6\u60C5\u9875ProjectDetailPage\uFF0C\u90A3\u4E48ProjectListPage\u5E94\u8BE5\u8981\u4F20\u7ED9ProjectDetailPage\u4E00\u4E2A\u53C2\u6570\uFF1AproductID\u3002\u6240\u4EE5\uFF0CProjectDetailPage\u7684\u9875\u9762\u53C2\u6570\u58F0\u660E\u548C\u6784\u9020\u51FD\u6570\u5E94\u8BE5\u662F\u8FD9\u6837\u5199\uFF1A\n private productID: string\n constructor(productID: string) {\n super()\n this.productID = productID\n }\u3002\n - \u4EFB\u4F55\u9875\u9762\uFF08\u7279\u522B\u662F\u95EA\u5C4F\u9875\uFF09\u7684\u4E1A\u52A1\u903B\u8F91\u7EDD\u5BF9\u4E0D\u80FD\u653E\u5230Application.ts\u8FDB\u884C\u5904\u7406\uFF0CApplication.ts\u53EA\u8FDB\u884C\u5168\u5C40\u7F51\u7EDC\u62E6\u622A\u5904\u7406\u3001\u5168\u5C40\u9759\u6001\u53D8\u91CF\u3001\u5168\u5C40\u9759\u6001\u65B9\u6CD5\u7684\u5B9A\u4E49\u548C\u5B9E\u73B0\n - \u5982\u679C\u662F\u591A\u4E2A\u9875\u9762\u5171\u7528\u7684\u6570\u636E\u53D8\u91CF\uFF0C\u53EF\u4EE5\u8003\u8651\u58F0\u660E\u4E3A\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u5E76\u5728Application.ts\u4E2D\u8FDB\u884C\u58F0\u660E\u3002\n - \u5168\u5C40\u9759\u6001\u53D8\u91CF\u5728\u5173\u95EDAPP\u6216\u8005\u7F51\u9875\u540E\u4F1A\u6E05\u7406\u6389\u7684\uFF0C\u6240\u4EE5\u4F60\u8981\u601D\u8003\u6E05\u695A\u54EA\u4E9B\u6570\u636E\u53D8\u91CF\u9700\u8981\u6301\u4E45\u5316\u50A8\u5B58\uFF0C\u54EA\u4E9B\u662F\u5168\u5C40\u9759\u6001\u53D8\u91CF\uFF0C\u6301\u4E45\u5316\u63A5\u53E3\uFF1AsaveDatabaseXxx\u548CgetDatabaseDataXxx\uFF0C\u6BD4\u5982\u662F\u5426\u5DF2\u7ECF\u5F39\u51FA\u8FC7\u5E7F\u544A\u5F39\u6846\uFF0C\u8FD9\u4E2A\u5E94\u8BE5\u6301\u4E45\u5316\u50A8\u5B58\u3002\n - \u6240\u6709\u7684\u7F51\u7EDC\u62E6\u622A\u7684\u5168\u5C40\u7EDF\u4E00\u5904\u7406\u9700\u8981\u5728Application\u4E2D\u7684onGlobalNetSuccessIntercept(\u8054\u7F51\u6210\u529F\u540E\uFF0C\u540E\u7AEF\u4E1A\u52A1\u6B63\u786E\u4E0E\u9519\u8BEF\u90FD\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u5728\u8FD9\u91CC\u53EF\u7EDF\u4E00\u5904\u7406\u4E1A\u52A1\u9519\u8BEF\u7801)\u6216onGlobalNetFailIntercept(\u7F51\u7EDC\u4E0D\u901A\uFF0C\u8FDE\u63A5\u5931\u8D25\u60C5\u51B5\u4F1A\u56DE\u8C03\u5230\u8FD9\u91CC)\u91CC\u9762\u5904\u7406\u3002\n - \u9875\u9762\u5185\u7684\u7F51\u7EDC\u8BF7\u6C42\u4E1A\u52A1\u5904\u7406\u4E0D\u5F97\u5199\u5728Application\u7684onGlobalNetSuccessIntercept\u91CC\u9762\u3002\n - \u5B57\u7B26\u4E32\u4E0D\u5F97\u76F4\u63A5\u8FDB\u884Cboolean\u8FD0\u7B97\u7136\u540E\u8D4B\u503C\u7ED9boolean\u7C7B\u578B\u7684\u53D8\u91CF\uFF0C\u9700\u8981\u5728\u5B57\u7B26\u4E32\u524D\u9762\u6DFB\u52A0\u4E24\u4E2A\u975E\u8FD0\u7B97\uFF1A!!\u3002\u6BD4\u5982\u6B63\u786E\u7684\u5199\u6CD5\uFF1Aconst isAdd = !!this.inputView.text && isNew\n - \u5982\u7528\u6237\u63CF\u8FF0\u6CA1\u6709\u660E\u786E\u8BF4\u660E\u9700\u8981toast\u63D0\u793A\uFF0C\u4F60\u4E0D\u5F97\u64C5\u81EA\u8FDB\u884CToast\u3002\n - \u5EF6\u65F6\u6267\u884CAllFunction.setTimeout\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6E05\u7406timeout\uFF0C\u4EE3\u7801\u4E0A\u7EDD\u5BF9\u4E0D\u80FD\u8FDB\u884CcleaTimeout\u7B49\u7C7B\u4F3C\u64CD\u4F5C\uFF0C\u56E0\u6B64setTimeout\u4E5F\u4E0D\u9700\u8981\u58F0\u660E\u53D8\u91CF\u53BB\u63A5\u6536setTimeout\u8FD4\u56DE\u7684\u5F15\u7528\u3002\n - \u8F6E\u64ADViewPager\u5BF9\u5E94\u7684\u7D22\u5F15\u6307\u793A\u5668\u5BB9\u5668\uFF0C\u8FD9\u4E2A\u7D22\u5F15\u6307\u793A\u5668\u4E0D\u9700\u8981\u989D\u5916\u4EE3\u7801\u5B9E\u73B0\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u672C\u8EABViewPager\u4E0EIndicatorContainer\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u4E86\u5207\u6362\u7684UI\u66F4\u65B0\u903B\u8F91\u7684\u4E86\uFF0C\u53EA\u9700\u8981viewPager.bindIndicator(indicatorContainer)\u5373\u53EF\u3002\n - \u79FB\u52A8\u7AEF\u7684ViewPager\u7684canIndicatorClick\u5C5E\u6027\u9ED8\u8BA4\u8BBE\u7F6E\u4E3Afalse\u7684\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8BF4\u660E\u9700\u8981\u6FC0\u6D3B\u6307\u793A\u5668\u7684\u70B9\u70B9\u51FB\u5207\u6362ViewPager\u3002\n - \u6BCF\u4E00\u4E2A\u9875\u9762(\u5982loginPage)\u5EFA\u8BAE\u5728page\u6587\u4EF6\u5939\u4E0B\u9762\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6587\u4EF6\u5939(\u5982login)\uFF0C\u7136\u540E\u9875\u9762\u7684ts\u6587\u4EF6(\u5982loginPage.ts)\u521B\u5EFA\u5728\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u9762\uFF0C\u9875\u9762\u6587\u4EF6\u5939\u4E0B\u5982\u679C\u9700\u8981\u8FD8\u53EF\u521B\u5EFA\u4E00\u4E2A\u9875\u9762\u6570\u636Ets\u6587\u4EF6(\u5982loginPageData.ts)\uFF0C\u8FD9\u6837\u5982loginPage\u8D1F\u8D23\u4E1A\u52A1\u903B\u8F91\u548C\u4EA4\u4E92\u903B\u8F91\uFF0C\u5982loginPageData\u8D1F\u8D23\u6570\u636E\u58F0\u660E\u5B9A\u4E49\u3001\u521D\u59CB\u5316\u4E0E\u7BA1\u7406\u7B49\u3002\n\n8. **\u7406\u89E3\u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528**\n - \u4F7F\u7528'read_file'\u5DE5\u5177\u8BFB\u53D6'src/backendApi/backendApiInfo.md'\u540E\u7AEFAPI\u4F7F\u7528\u8BF4\u660E\u6587\u4EF6\uFF0C\u5FC5\u987B\u7F13\u5B58\u8BB0\u4F4F\u6240\u6709\u53EF\u7528\u7684\u540E\u7AEFAPI\u63A5\u53E3\u5217\u8868\u3002\n - \u540E\u7AEFAPI\u63A5\u53E3\u7684\u5B9A\u4E49\u4E0E\u4F7F\u7528\uFF0C\u5FC5\u987B\u4F7F\u7528src/backendApi\u6587\u4EF6\u5939\u91CC\u9762\u7684\u5404\u79CDAPI\u7C7B\u4E2D\u5B9A\u4E49\u7684\u65B9\u6CD5\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u672A\u5728backendApi\u6587\u4EF6\u5939\u4E2D\u5B9A\u4E49\u7684\u540E\u7AEFAPI\uFF0C\u6BD4\u5982\uFF1AbackendApi/account/getUserInfo.ts\uFF0C\u8FD9\u4E2A\u5C31\u662F\u8D26\u53F7\u6A21\u5757\u4E2D\u7684\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u7684API\u7C7B\uFF0C\u8FD4\u56DE\u7684res\u5FC5\u987B\u58F0\u660E\u5177\u4F53\u7C7B\u578B\uFF0C\u6BD4\u5982res: getUserInfoResponse\u3002\n - request\u63A5\u53E3\u53EA\u9700\u5B9A\u4E49\u5373\u53EF\uFF0C\u4E0D\u9700\u8981\u5B9E\u73B0\uFF0C\u5E95\u5C42\u5DF2\u7ECF\u5B9E\u73B0\u3002\n - API\u7C7B\u4EE3\u7801\u793A\u4F8B\uFF1A\n ```typescript\n import BaseApi from '../BaseApi'\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8BF7\u6C42\u6570\u636E\n export interface postClientBizAuthLoginRequest {\n username?: string\n password?: string\n key?: string\n captcha?: string\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u8FD4\u56DE\u6570\u636E\n export interface postClientBizAuthLoginResponse {\n code: number\n msg: string\n data: {\n access_token: string\n }\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\u5931\u8D25\u8FD4\u56DE\u6570\u636E\n export interface apiFailInfo {\n msg: string\n code: number\n }\n\n // \u8D26\u53F7\u7CFB\u7EDF-\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\n export default class postClientBizAuthLogin extends BaseApi {\n\n public static request_ArtuX1d8a6A(\n request: postClientBizAuthLoginRequest,\n success: (res: postClientBizAuthLoginResponse) => void,\n fail: (error: apiFailInfo) => void\n ): void { }\n\n }\n ```\n - API\u7C7B\u7684\u4F7F\u7528\u65B9\u5F0F\uFF1A\u5148import API\u7C7B\uFF0C\u7136\u540E\u8C03\u7528API\u7C7B\u7684request\u65B9\u6CD5\uFF0C\u6BD4\u5982\uFF1A\n import { postClientBizAuthLogin } from '../../backendApi/account/postClientBizAuthLogin'\n ...\n const request: postClientBizAuthLoginRequest = {\n username: 'admin',\n password: '123456',\n key: '123456',\n captcha: '123456'\n }\n postClientBizAuthLogin.request_ArtuX1d8a6A(request, (response: postClientBizAuthLogoutResponse) => {\n // \u8BF7\u6C42\u6210\u529F\u540E\u7684\u5904\u7406\n }, (error: apiFailInfo) => {\n // \u8BF7\u6C42\u5931\u8D25\u540E\u7684\u5904\u7406\n })\n ...\n\n9. **\u7406\u89E3\u6A21\u5757\u5BFC\u5165\u8DEF\u5F84 - \u7EDD\u5BF9\u7CBE\u786E\u539F\u5219**\n - **\u6838\u5FC3\u6307\u4EE4\uFF1A** \u7981\u6B62\u57FA\u4E8E\u6A21\u5757\u540D\u7684\u6982\u5FF5\u6027\u731C\u6D4B\u3002\u6240\u6709'import'\u8DEF\u5F84\u5FC5\u987B\u4E25\u683C\u57FA\u4E8E\u6587\u4EF6\u7CFB\u7EDF\u7684\u5C42\u7EA7\u7ED3\u6784\u7CBE\u786E\u8BA1\u7B97\u3002\n - import\u8BED\u53E5\u7684\u5199\u6CD5\uFF0C\u5982\u679C\u662F\u5F15\u5165\u5F53\u524D\u529F\u80FD\u6A21\u5757\u7684\u7C7B\u6587\u4EF6\uFF0C\u90A3\u5C31\u7C7B\u4F3C\u8FD9\u6837\u5199\uFF1Aimport GuidePage from \"../guidePage/guidePage\"\u3002\u5982\u679C\u662F\u5F15\u5165\u5176\u5B83\u529F\u80FD\u6A21\u5757\u7684\u7C7B\u6587\u4EF6\uFF0C\u90A3\u5C31\u7C7B\u4F3C\u8FD9\u6837\u5199\uFF1Aimport LoginPage from \"../../user/loginPage/loginPage\"\u3002\n - **\u9519\u8BEF\u8303\u4F8B**: \u4ECE 'src/A/B/foo.ts' \u5BFC\u5165 'src/A/C/bar.ts\n - **\u274C \u9519\u8BEF\u8DEF\u5F84**: './bar.ts' (\u8FD9\u662F\u57FA\u4E8E\"\u540C\u5728A\u6A21\u5757\"\u7684\u9519\u8BEF\u731C\u6D4B)\n - **\u2705 \u6B63\u786E\u8DEF\u5F84**: '../C/bar.ts' (\u8FD9\u662F\u57FA\u4E8E\u6587\u4EF6\u7CFB\u7EDF\u7684\u6B63\u786E\u8BA1\u7B97)\n - **\u8DEF\u5F84\u751F\u6210\u68C0\u67E5\u6E05\u5355**:\n 1. **\u5B9A\u4F4D\u8D77\u70B9**: \u5F53\u524D\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\n 2. **\u5B9A\u4F4D\u7EC8\u70B9**: \u76EE\u6807\u6587\u4EF6\u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\n 3. **\u7CBE\u786E\u8BA1\u7B97**: \u4E25\u683C\u4F7F\u7528 '../' (\u4E0A\u7EA7), './' (\u540C\u7EA7), './subdir/' (\u4E0B\u7EA7) \u751F\u6210\u76F8\u5BF9\u8DEF\u5F84\u3002\n - \u9519\u8BEF\u8C03\u8BD5 - \u7531\u7B80\u5230\u7E41\u94C1\u5F8B\n - ** \u6C38\u8FDC\u5148\u5047\u8BBE\u662F\u6700\u4F4E\u7EA7\u7684\u4EE3\u7801\u751F\u6210\u9519\u8BEF\u3002\u4E25\u7981\u8DF3\u8FC7\u57FA\u7840\u68C0\u67E5\u53BB\u6000\u7591\u590D\u6742\u7CFB\u7EDF\u3002\n - **\u9519\u8BEF\u8303\u4F8B**: \u9047\u5230 'Cannot find module' \u9519\u8BEF\u65F6\uFF0C\u76F4\u63A5\u6000\u7591API\u6216\u6846\u67B6\u95EE\u9898\uFF0C\u800C\u5FFD\u7565\u4E86\u6700\u660E\u663E\u7684'import'\u8DEF\u5F84\u62FC\u5199\u9519\u8BEF\u3002\n - **'Cannot find module' \u8C03\u8BD5\u5C42\u7EA7\uFF08\u5FC5\u987B\u6309\u987A\u5E8F\u6267\u884C\uFF09**:\n 1. **\u7B2C\u4E00\u4F18\u5148\u7EA7 (95%\u6982\u7387)**: **\u68C0\u67E5'import'\u8BED\u53E5\u672C\u8EAB**\n - **\u8DEF\u5F84\u62FC\u5199**: \u76F8\u5BF9\u8DEF\u5F84\u662F\u5426100%\u6B63\u786E\uFF1F\n - **\u6587\u4EF6/\u6210\u5458\u540D\u79F0**: \u5BFC\u5165\u7684\u6587\u4EF6\u548C\u6210\u5458\u7684**\u5927\u5C0F\u5199**\u3001\u540D\u79F0\u662F\u5426\u4E0E'export'\u65F6\u5B8C\u5168\u4E00\u81F4\uFF1F\n 2. **\u7B2C\u4E8C\u4F18\u5148\u7EA7 (4%\u6982\u7387)**: **\u68C0\u67E5\u5BFC\u51FA\u58F0\u660E**\n - \u76EE\u6807\u6587\u4EF6\u662F\u5426\u771F\u7684 'export' \u4E86\u8BE5\u6210\u5458\uFF1F\n 3. **\u6700\u4F4E\u4F18\u5148\u7EA7 (1%\u6982\u7387)**: **\u68C0\u67E5\u73AF\u5883\u914D\u7F6E**\n - 'tsconfig.json' \u7B49\u914D\u7F6E\u662F\u5426\u6B63\u786E\uFF1F \n\n10. **\u7981\u6B62\u589E\u5220\u6539\u67E5\u9875\u9762\u5BF9\u5E94\u7684html\u6587\u4EF6\u7684\u4EE3\u7801\uFF0C\u4E5F\u7981\u6B62\u4F7F\u7528\u4EFB\u4F55html\u7684doc\u8282\u70B9\u64CD\u4F5C\u7684\u4EFB\u4F55\u65B9\u6CD5\u548C\u5C5E\u6027**\n - \u5BF9\u5E94\u7684html\u9875\u9762/\u5B50\u9875\u9762\u6587\u4EF6\u4E0D\u5141\u8BB8\u4E0Ets\u4EE3\u7801\u8FDB\u884C\u4EFB\u4F55\u4EA4\u4E92\uFF0C\u6BD4\u5982\uFF1A\u7981\u6B62this.indicator1.querySelector('.indicator-dot').className = 'indicator-dot active'\u3002\n - \u7981\u6B62\u4EFB\u4F55html\u8282\u70B9\u5C5E\u6027\u548C\u65B9\u6CD5\u4EE3\u7801\uFF0C\u6BD4\u5982\uFF1AquerySelector\u3001className\u3001innerHTML\u3001innerText\u3001textContent\u3001value\u3001checked\u3001disabled\u3001readonly\u3001selected\u3001focus\u3001blur\u3001focusin\u3001focusout\u3001click\u3001mousedown\u3001mouseup\u3001mousemove\u3001mouseenter\u3001mouseleave\u7B49\u7B49\n - \u7981\u6B62\u589E\u5220\u6539\u67E5\u9875\u9762\u5BF9\u5E94\u7684html\u6587\u4EF6\u8282\u70B9\uFF0C\u6BD4\u5982\uFF1A\u7981\u6B62this.indicator1.querySelector('.indicator-dot').className = 'indicator-dot active'\u3002\n - \u8F6E\u64ADViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\uFF0C\u4E0D\u5F97\u5728ts\u4EE3\u7801\u91CC\u9762\u8FDB\u884C\uFF0C\u56E0\u4E3AViewPager\u7684\u6307\u793A\u5668\u70B9\u7684\u5207\u6362UI\u66F4\u65B0\u903B\u8F91\u5DF2\u7ECF\u81EA\u52A8\u5B9E\u73B0\u4E86\uFF0C\u4F60\u4E0D\u9700\u8981\u518D\u624B\u52A8\u5B9E\u73B0\u3002\n\n### **\u7B2C\u56DB\u6B65\u3001\u5B8C\u5168\u7406\u89E3\u4EE5\u4E0A10\u4E2A\u4EE3\u7801\u6846\u67B6\u77E5\u8BC6\u70B9\u540E\u5F00\u59CB\u7F16\u5199\u4EE3\u7801**\n- \u5199\u4EE3\u7801\u65F6\u5FC5\u987B\u65F6\u523B\u4E25\u683C\u9075\u5B88\u4EE5\u4E0A10\u4E2A\u4EE3\u7801\u6846\u67B6\u77E5\u8BC6\u70B9\u7406\u89E3\u7684\u89C4\u5219\u3001\u8981\u6C42\u3001\u89C4\u8303\u3001\u539F\u5219\u3001\u68C0\u67E5\u6E05\u5355\u7B49\u3002\n- \u4E0D\u8981\u8BE2\u95EE\u7528\u6237\u662F\u5426\u9700\u8981\u5F00\u59CB\u5199\u4EE3\u7801\uFF0C\u76F4\u63A5\u5F00\u59CB\u7F16\u5199\u4EE3\u7801\u3002\n\n### **\u7B2C\u4E94\u6B65\u3001\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898**\n - \u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u516D\u6B65\u3001\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u68C0\u67E5\u7279\u6B8A\u7F16\u8BD1\u95EE\u9898**\n - \u6267\u884C`npm run lint-ts`\u547D\u4EE4\u540E\uFF0C\u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u5982\u679C\u53D1\u73B0\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u6CA1\u6709\u6210\u529F\uFF0C\u90A3\u5C31\u5C1D\u8BD5\u5148\u6267\u884C`npm install`\u4E4B\u540E\uFF0C\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run lint-ts`\u547D\u4EE4\u68C0\u67E5\u7279\u6B8A\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u4E03\u6B65\u3001\u5982\u679C\u7B2C\u516D\u6B65\u6709\u53D1\u73B0\u5E76\u4FEE\u590D\u8FC7\u95EE\u9898\uFF0C\u90A3\u5C31\u518D\u6B21\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\uFF0C\u5982\u679C\u6CA1\u6709\u90A3\u5C31\u8DF3\u8FC7\u8BE5\u6B65\u9AA4**\n - \u53D1\u73B0\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u5FC5\u987B\u6309\u7167\u9519\u8BEF\u63D0\u793A\u8FDB\u884C\u4FEE\u590D\u4EE3\u7801\n - \u4FEE\u590D\u7F16\u8BD1\u95EE\u9898\u540E\uFF0C\u518D\u6267\u884C`npm run build`\u7F16\u8BD1\u547D\u4EE4\u68C0\u67E5\u7F16\u8BD1\u95EE\u9898\n - \u5FC5\u987B\u89E3\u51B3\u6240\u6709\u7F16\u8BD1\u95EE\u9898\uFF0C\u8BE5\u9875\u9762\u7684\u4EE3\u7801\u624D\u7B97\u7F16\u5199\u5B8C\u6BD5\n\n### **\u7B2C\u516B\u6B65\u3001\u5FC5\u987B\u66F4\u65B0`doc/\u524D\u7AEF\u4EE3\u7801\u5F00\u53D1\u8FDB\u5EA6.json`\u91CC\u9762\u8BE5\u9875\u9762\u7684json\u7684codeStatus\u5B57\u6BB5\u4E3Acompleted**\n\n\n## \u4EE3\u7801\u4F8B\u5B50\n```typescript\nimport Page from \"../../lib/uilib/Page\"\nimport ViewPager from \"../../lib/uilib/ViewPager\"\nimport ButtonView from \"../../lib/uilib/ButtonView\"\nimport TextView from \"../../lib/uilib/TextView\"\nimport { Ref, ref, watch } from \"../../lib/Ref\"\nexport default class HomePage extends Page {\n // \u6570\u636E\u5BF9\u8C61\u5B9E\u4F8B\u58F0\u660E\n private homePageData: HomePageData = new HomePageData()\n // \u89C6\u56FE\u5BF9\u8C61\u5B9E\u4F8B\u58F0\u660E\n private adViewPager: ViewPager = this.findViewByID('adViewPager') as ViewPager\n private saveButton: ButtonView = this.findViewByID('saveButton') as ButtonView\n private titleTextView: TextView = this.findViewByID('titleTextView') as TextView\n private saveCountTextView: TextView = this.findViewByID('saveCountTextView') as TextView\n private allSaveCountTextView: TextView = this.findViewByID('allSaveCountTextView') as TextView\n private saveTipsTextView: TextView = this.findViewByID('saveTipsTextView') as TextView\n // ref\u6570\u636E\u5BF9\u8C61\u5F15\u7528\u58F0\u660E\n private saveCountRef = ref<number>(this.homePageData.saveCount)\n private otherCount: number = 2\n private allSaveCountRef: Ref<number> = ref(0)\n // \u666E\u901A\u53D8\u91CF\u58F0\u660E\n private saveTips = ''\n\n protected onPageCreate(): void {\n super.onPageCreate()\n this.initData()\n this.initView()\n }\n\n private initData(): void {\n watch([this.saveCountRef, this.allSaveCountRef], () => {\n let otherCount = 2\n if (otherCount > 5) {\n this.allSaveCountRef.value = this.homePageData.saveCount + 5\n } else {\n this.allSaveCountRef.value = this.homePageData.saveCount + 10\n }\n this.saveTipsTextView.text = this.saveCountRef.value > 5 ? '\u4FDD\u5B58\u6210\u529F' : '\u4FDD\u5B58\u5931\u8D25'\n this.allSaveCountTextView.text = this.allSaveCountRef.value + '\u4E2A'\n })\n }\n\n private initView(): void {\n this.saveButton.onClick(() => {\n this.saveCountRef.value++\n this.homePageData.title = 'Home Page'\n this.saveTipsTextView.text = this.saveTips\n AllFunction.saveDatabaseNumber('saveCount', this.saveCountRef.value)\n })\n }\n\n}\n\nexport default class HomePageData {\n public title: string = ''\n public saveCount: number = 0\n public userInfo: BookInfo = new BookInfo()\n}\n```\n";
|
|
2
2
|
//# sourceMappingURL=appCode.d.ts.map
|
package/build/appCode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appCode.d.ts","sourceRoot":"","sources":["../src/appCode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"appCode.d.ts","sourceRoot":"","sources":["../src/appCode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,kztCA+V9B,CAAC"}
|
package/build/appCode.js
CHANGED
|
@@ -36,7 +36,7 @@ export const codePromptTemplate = `# 你是typescript代码专家,根据用户
|
|
|
36
36
|
- 登录页
|
|
37
37
|
- 登录页是用户点击需要登录才能访问的页面时,才会跳转到的页面,而不是从闪屏页判断是否需要登录然后跳进去
|
|
38
38
|
|
|
39
|
-
## 编写代码的8
|
|
39
|
+
## 编写代码的8个步骤,必须使用调用todo_write工具创建任务列表,禁止跳过任何步骤
|
|
40
40
|
|
|
41
41
|
### **第一步、理解代码逻辑设计文档**
|
|
42
42
|
- 在编写代码之前,必须使用read_file工具检查当前页面文件夹下是否存在codeDesign.md设计文档:src/xxxModule/xxxPage/codeDesign.md
|
|
@@ -350,4 +350,4 @@ export default class HomePageData {
|
|
|
350
350
|
}
|
|
351
351
|
\`\`\`
|
|
352
352
|
`;
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBDb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErVmpDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29kZVByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivdHlwZXNjcmlwdOS7o+eggeS4k+Wutu+8jOagueaNrueUqOaIt+i+k+WFpeeahOmcgOaxguaPj+i/sO+8jOS4peagvOmBteWuiFxcYOS7o+eggeinhOiMg1xcYO+8jOWPguiAg1xcYOS7o+eggeS+i+WtkFxcYO+8jOS4peagvOaMieeFp1xcYOe8luWGmeS7o+eggeeahDjkuKrmraXpqqRcXGDlrozmiJDku6PnoIHlvIDlj5FcblxuIyMg5Luj56CB6KeE6IyDXG4tICoq5Luj56CB5rOo6YeK5L2/55So5Lit5paHKirvvJrku6PnoIHnmoTms6jph4rmloflrZfvvIzlv4XpobvopoHkvb/nlKjkuK3mlofvvIzkuI3og73kvb/nlKjlhbbku5bor63oqIBcbi0gKirnu5PlsL7npoHmraLliIblj7cqKu+8muS4gOWPpeS7o+eggeeahOe7k+WwvuemgeatouWGmeWIhuWPt++8jOS4jemcgOimgeWGmeWIhuWPt+eahFxuLSDlpoLmnpzmmK/np7vliqjnq6/lvIDlj5HlvI/kuI3pnIDopoHogIPomZHpvKDmoIfnm7jlhbPkuovmg4XnmoTvvIznlLXohJHnq6/miY3pnIDopoHogIPomZHpvKDmoIfnm7jlhbPkuovmg4Vcbi0g5a2X56ym5Liy6KaB5Lul5Y2V5byV5Y+35p2l5YaZ77yM5aaC77yaJ+aIkeeahCfjgIJcblxuIyMg6aG16Z2i6buY6K6k5Lia5Yqh6YC76L6RXG4tICoq5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM5YW25Lit6aG555uu6K6+6K6h5paH5qGjJy5ieXRlZnVuL3vmlbDlrZfluo/lj7d9LXh4eOWKn+iDveaooeWdl+S4muWKoemAu+i+keiuvuiuoS5tZCfkuI3nrpfnlKjmiLfmmI7noa7mjIflrprnmoTkuJrliqHpgLvovpHvvIzpgqPlkITkuKrpobXpnaLnmoTkuJrliqHpgLvovpHpu5jorqTlv4XpobvpgbXlrojku6XkuIvlm7rlrprpgLvovpHlubbovpPlh7p4eHjpobXpnaLpu5jorqTpgbXlrojnmoTlm7rlrprpgLvovpHvvIzmr5TlpoLvvJrpl6rlsY/pobXnmoTpgLvovpHvvJp4eHjnrYkqKlxuICAtIOS4jeWtmOWcqOadg+mZkOivt+axgumhtemdou+8jOaJgOacieadg+mZkOivt+axguW/hemhu+S9v+eUqOW8ueahhueahOS6pOS6kuaWueW8j++8jOiAjOS4lOaYr+mBteW+qlwi5Y2z55So5Y2z5Y+WXCLvvIhKdXN0LWluLVRpbWXvvInnmoTljp/liJlcbiAgLSDnu53lr7nkuI3kvJrmnInku7vkvZXlhbPkuo7pmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG155qE6YC76L6RXG4gIC0g6Zeq5bGP6aG1XG4gICAgLSDlpoLmnpzmnInpl6rlsY/pobXvvIzpgqPkuYjlkK/liqjlkI7nrKzkuIDkuKrpobXpnaLlv4XpobvmmK/pl6rlsY/pobXvvIzpl6rlsY/pobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDlvJXlr7zpobXmiJbpppbpobXnmoTot6/lvoRcbiAgICAtIOmXquWxj+mhteS4jeWBmuS7u+S9leS4muWKoemAu+i+ke+8jOS4jeivt+axguS7u+S9lee9kee7nOaOpeWPo++8jOWPqumcgOWIpOaWreaYr+WQpummluasoeWQr+WKqO+8jOWmguaenOmmluasoeWQr+WKqOWwsXjnp5LlkI7ot7PliLDlvJXlr7zpobXvvIzlpoLmnpzkuI3mmK/pppbmrKHlkK/liqjlsLHot7PliLDpppbpobVcbiAgICAtIOKdjCDpl6rlsY/pobXnu53lr7nnpoHmraLlgZrnmoTkuovmg4XvvJpcbiAgICAgIC0g6K+35rGC5Lu75L2V572R57uc5o6l5Y+jXG4gICAgICAtIOivt+axgueJiOacrOabtOaWsEFQSeaOpeWPo1xuICAgICAgLSDot7PliLDpmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG1XG4gICAgICAtIOW8ueWHuuS7u+S9leWFtuS7luW8ueahhlxuICAgICAgLSDku7vkvZXmnYPpmZDor7fmsYJcbiAgLSDlvJXlr7zpobVcbiAgICA9IOW8leWvvOmhteWRiumhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOmmlumhteeahOi3r+W+hFxuICAgIC0g5LiN5Lya5pyJ5Lu75L2V572R57uc6K+35rGC44CB5Lia5Yqh6YC76L6R77yM5byV5a+86aG15LuF5LuF5piv5LiA5Liq5bGV56S66Z2Z5oCB5pWw5o2u55qE6aG16Z2iXG4gICAgLSDkuI3pnIDopoHoh6rliqjova7mkq1cbiAgICAtIOS4gOiIrOaVtOS4qumhtemdouWPquacieS4gOS4qui9ruaSree7hOS7tuOAgei9ruaSreaMh+ekuuWZqOWSjOW6lemDqOS4gOS4quaMiemSru+8jOW6lemDqOaMiemSruWcqOmdnuesrOS4gOmhteaXtuaYvuekuuS4i+S4gOatpe+8jOWcqOacgOWQjuS4gOmhteaXtuaYvuekuueri+WNs+S9k+mqjFxuICAtIOW5v+WRiumhte+8iOWmguaenOacieW5v+WRiumhte+8iVxuICAgID0g5bm/5ZGK6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw6aaW6aG155qE6Lev5b6EXG4gICAgLSDlub/lkYrpobXnmoTmlbDmja7kuI3lhYHorrjlnKjpl6rlsY/pobXor7fmsYLvvIzlupTor6XlnKjov5vlhaXpppbpobXlkI7or7fmsYLvvIzlubbkuJTkvb/nlKjmnKzlnLDmjIHkuYXljJblsIblub/lkYpBUEnmjqXlj6PnmoTmlbDmja7lgqjlrZjotbfmnaXvvIznrYnkuIvkuIDmrKHlkK/liqjpl6rlsY/pobXml7bot7PliLDlub/lkYrpobXpnaLlkI7vvIzmiY3ku47mnKzlnLDmjIHkuYXljJbkuK3ojrflj5bmlbDmja7lubbliJ3lp4vljJblub/lkYrpobXmmL7npLrlkozkuqTkupJcbiAgICAtIOW5v+WRiumhteeahOaVsOaNruW/hemhu+aYr+WcqOi/m+WFpemmlumhteWQjuaJjeWPkei1t+ivt+axgu+8jOe7neWvueS4jeiDveWcqOmXquWxj+mhteWPkei1t+ivt+axgu+8jOW5tuS4lOW5v+WRiumhteeahOaVsOaNruWPquaYvuekuuS4gOasoe+8jOe7neWvueS4jeiDvemHjeWkjeaYvuekuu+8jOWmguaenOacrOWcsOaMgeS5heWMluagueacrOayoeacieW5v+WRiumhteeahOaVsOaNru+8jOmCo+S4jemcgOimgei3s+i9rOWSjOaYvuekuuW5v+WRiumhtVxuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7jgIHlub/lkYrphY3nva7vvIjlpoLmnpzmnInlub/lkYrnmoTor53vvInnrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOS4gOiIrOaYr+acieS4gOS4quW6lemDqOWKn+iDveWvvOiIquagj++8jOeCueWHu+W6lemDqOWKn+iDveWvvOiIquagj+eahOWbvuagh+S8muWIh+aNouWIsOWvueW6lOeahHRhYumhtemdou+8jHRhYumhtemdouS4gOiIrOacieWkmuS4qu+8jOavj+S4qnRhYumhtemdouacieS4jeWQjOeahOS4muWKoemAu+i+kVxuICAgIC0g5aaC5p6c55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w5rKh5pyJ5piO56Gu5oyH5a6a6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO977yM6YKj5LmI5L2g5b+F6aG75oCd6ICD6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO9aXRlbemhuVxuICAtIOeZu+W9lemhtVxuICAgIC0g55m75b2V6aG15piv55So5oi354K55Ye76ZyA6KaB55m75b2V5omN6IO96K6/6Zeu55qE6aG16Z2i5pe277yM5omN5Lya6Lez6L2s5Yiw55qE6aG16Z2i77yM6ICM5LiN5piv5LuO6Zeq5bGP6aG15Yik5pat5piv5ZCm6ZyA6KaB55m75b2V54S25ZCO6Lez6L+b5Y67XG5cbiMjIOe8luWGmeS7o+eggeeahDjkuKrmraXpqqRcblxuIyMjICoq56ys5LiA5q2l44CB55CG6Kej5Luj56CB6YC76L6R6K6+6K6h5paH5qGjKipcbiAgLSDlnKjnvJblhpnku6PnoIHkuYvliY3vvIzlv4Xpobvkvb/nlKhyZWFkX2ZpbGXlt6Xlhbfmo4Dmn6XlvZPliY3pobXpnaLmlofku7blpLnkuIvmmK/lkKblrZjlnKhjb2RlRGVzaWduLm1k6K6+6K6h5paH5qGj77yac3JjL3h4eE1vZHVsZS94eHhQYWdlL2NvZGVEZXNpZ24ubWRcbiAgLSDlpoLmnpzkuI3lrZjlnKjpgqPlsLHlhYjliJvlu7pjb2RlRGVzaWduLm1k6K6+6K6h5paH5qGj77yM5bm26LCD55SoTUNQ5bel5YW3XFxgb3B0aW1pemVfY29kZV9kZXNpZ25fcHJvbXB0XFxg77yM5YWF5YiG55CG6Kej6K+l5bel5YW36L+U5Zue55qE5YmN56uv5Luj56CB6K6+6K6h6KeE5YiZ5o+Q56S66K+N77yM5oyJ54Wn6KeE5YiZ5o+Q56S66K+N6KGM57yW5YaZXG4gIC0g5aaC5p6cY29kZURlc2lnbi5tZOaWh+S7tuWtmOWcqO+8jOW/hemhu+WujOaVtOmYheivu+ivpeiuvuiuoeaWh+aho++8jOS4peagvOaMieeFp+iuvuiuoeaWh+aho+S4reeahOWKn+iDveaPj+i/sOOAgeWPguaVsOiuvuiuoeOAgeaVsOaNrua1geWQkeOAgeeoi+W6j+a1geeoi+WbvuOAgeS+nei1lueahOWQjuerr0FQSeaOpeWPo+i/m+ihjOS7o+eggeW8gOWPkVxuICAtIGNvZGVEZXNpZ24ubWTorr7orqHmlofmoaPmmK/ku6PnoIHlvIDlj5HnmoTph43opoHmjIflr7zvvIzlv4XpobvkuKXmoLzpgbXlvqrlhbbkuK3nmoTorr7orqHop4TojIPlkozmioDmnK/mlrnmoYhcblxuIyMjICoq56ys5LqM5q2l44CB55CG6Kej6aG16Z2iVUnnu5PmnoQqKlxuICAtIOS9v+eUqHJlYWRfZmlsZeW3peWFt+WujOaVtOmYheivu+W9k+WJjemhtemdouWvueW6lOeahEhUTUzmlofku7bvvIznkIbop6PmlbTkuKrpobXpnaLnmoTnu5PmnoTlkoznu4Tku7blhYPntKDjgIJcbiAgLSDnu53lr7nkuI3og73lh63mg7PosaHmiJblgYforr7mt7vliqDkuI3lrZjlnKjnmoTlhYPntKDlvJXnlKhcblxuIyMjICoq56ys5LiJ5q2l44CB5b+F6aG75YWI55CG6Kej6aG555uu5Luj56CB5qGG5p62MTDkuKrnn6Xor4bngrnvvIzlubblnKh0aG91Z2h05a2X5q615Lit6L6T5Ye66L+ZMTDkuKrnn6Xor4bngrnnmoTnkIbop6MqKlxuMS4gKirnkIbop6NWaWV357uE5Lu255qE5aOw5piO6KeE5YiZKipcbiAgLSBWaWV357uE5Lu255qE5Z+657G75pivQmFzZVZpZXfvvIzlrrnlmajln7rnsbvmmK9CYXNlQ29udGFpbmVyVmlld++8jOaJgOaciVZpZXfnu4Tku7bpg73nu6fmib/oh6pCYXNlVmlld1xuICAtIOS9v+eUqOW3peWFt+mBjeWOhidzcmMvbGliL3VpbGliLyfmlofku7blpLnkuIvpnaLnmoTmlofku7bliJfooajlkI3lrZfvvIznkIbop6PmgLvlhbHmnInlpJrlsJHnp41VSee7hOS7tlxuICAtIFZpZXfnu4Tku7bnmoTlo7DmmI7lv4XpobvlnKjnsbvmlofku7blvIDlp4vml7blhYjlo7DmmI7vvIzlubbkuJTlv4XpobvopoHlo7DmmI7lhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yM5LiN5b6X5aOw5piO5Li6QmFzZVZpZXfvvIzkuI3lvpflnKjku7vkvZXlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SUTmnaXlo7DmmI5WaWV357uE5Lu277yM5q+U5aaC77yaXG4gICAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICAgIC0g4p2MIOmUmeivr+eahOWGmeazle+8iOayoeacieWjsOWFt+S9k+eahFZpZXfnu4Tku7bnsbvlnovvvInvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgcHJpdmF0ZSBuYW1lVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnbmFtZVRleHRWaWV3JylcbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjlnKjlh73mlbDkvZPph4zpnaLpgJrov4dmaW5kVmlld0J5SUTmnaXlo7DmmI5WaWV357uE5Lu277yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgb25lRnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBuYW1lVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ25hbWVUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgICAuLi4uXG4gICAgfVxuICAgIFxcYFxcYFxcYFxuICBcbjIuICoq55CG6Kej5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHMqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvQWxsRnVuY3Rpb24udHMn5paH5Lu277yM55CG6Kej6K+l5bel56iL6IO95L2/55So55qE5ZSv5LiA55qE6IO95Yqb5pa55rOVXG4gIC0g6K+35Lil5qC85oyJ54Wn5ZSv5LiA55qE6IO95Yqb5pa55rOVQWxsRnVuY3Rpb24udHPvvIzkuI3opoHmlrDlop7jgIHliKDpmaTmiJbkv67mlLnku7vkvZVBbGxGdW5jdGlvbuaOpeWPo+WjsOaYju+8m+S5n+S4jeimgeiwg+eUqOWFtuS7luacquWcqEFsbEZ1bmN0aW9u5Lit5Ye6546w55qE5Ye95pWw5oiW5qih5Z2XXG5cbjMuICoq55CG6KejUmVm44CBd2F0Y2gqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36ZiF6K+75bm255CG6KejJ3NyYy9saWIvUmVmLnRzJ+aWh+S7tu+8jOeQhuino1JlZuWSjHdhdGNo55qE5a6a5LmJ55So5rOVXG4gIC0gd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOesrOS4gOS4quWPguaVsOaYr+ebkeWQrOeahFJlZuaVsOe7hO+8jOesrOS6jOS4quWPguaVsOaYr+ebkeWQrOeahOWbnuiwg+WHveaVsO+8jOWbnuiwg+WHveaVsOS4reWPr+S7peWBmuebuOWFs1VJ5pu05paw5oiW5YW25LuW5Lia5Yqh6YC76L6R44CCXG4gIC0gUmVm5piv5ZON5bqU5byP5pWw5o2u5rqQ77yMd2F0Y2jmmK/nm5HlkKxSZWbnmoTlj5jljJbvvIznhLblkI7lgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+ke+8jOavlOWmgu+8mlxuICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gIHByaXZhdGUgbmFtZVRleHRSZWY6IFJlZjxzdHJpbmc+ID0gcmVmKCcnKVxuICBwcml2YXRlIG90aGVyQ291bnRSZWY6IFJlZjxudW1iZXI+ID0gcmVmKDApXG4gIHdhdGNoKFt0aGlzLm5hbWVUZXh0UmVmLCB0aGlzLm90aGVyQ291bnRSZWZdLCAoKSA9PiB7XG4gICAgLy8g5Y+v5Lul5YWI55u45YWz55qEVUnmm7TmlrDmiJbkuJrliqHpgLvovpFcbiAgICBpZiAodGhpcy5vdGhlckNvdW50UmVmLnZhbHVlID4gNSkge1xuICAgICAgdGhpcy5uYW1lVGV4dFZpZXcudGV4dCA9IHRoaXMubmFtZVRleHRSZWYudmFsdWUgKyAnNSdcbiAgICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSB0aGlzLm5hbWVUZXh0UmVmLnZhbHVlICsgJzEwJ1xuICAgIH1cbiAgfSlcbiAgXFxgXFxgXFxgXG4gIC0g5qC45b+D5Y6f5YiZXG4gICAgLSBbIF0gKirkvJjlhYjkvb/nlKjmoYbmnrbmj5DkvpvnmoTlk43lupTlvI/mlbDmja7mupAqKiAtIOajgOafpXZpZXfnu4Tku7bmmK/lkKblt7Lmj5Dkvpt4eHhSZWblsZ7mgKfvvIzpgb/lhY3ph43lpI3liJvlu7pcbiAgICAgIOavlOWmgu+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp++8jOWwseaYr+ahhuaetuW3sue7j+e7tOaKpOWlveeahOWTjeW6lOW8j+aVsOaNrua6kO+8jOS9oOebtOaOpeS9v+eUqOWNs+WPr++8jOS4jemcgOimgeiHquW3seWIm+W7unJlZuWPmOmHj+aIluiAheS9v+eUqG9uU2VsZWN0Q2hhbmdl6Kem5Y+RVUnmm7TmlrDjgIJcbiAgICAtIFsgXSAqKuW4pnh4eFJlZueahHZpZXfnu4Tku7bliJfkuL4qKiAtIENoZWNrQm94Q29udGFpbmVy44CBSW5wdXRWaWV344CBTXVsdGlTZWxlY3RMaXN0Vmlld+OAgVJhZGlvQ29udGFpbmVy44CBU2luZ2xlU2VsZWN0TGlzdFZpZXfjgIFTd2l0Y2hDb250YWluZXLjgIFWaWV3UGFnZXJcbiAgICAtIFsgXSAqKlJlZi93YXRjaCA+IOaJi+WKqOabtOaWsCoqIC0g5LyY5YWI57qn6aG65bqP6YCJ5oup5ZON5bqU5byP5pa55qGIXG4gICAgLSBbIF0gKirpgYfliLDnsbvlnovplJnor6/mt7HlhaXop6PlhrMqKiAtIOS4jeimgeWboOS4uuexu+Wei+mXrumimOWwseaUvuW8g+WTjeW6lOW8j++8jOimgeaJvuWIsOato+ehrueahOexu+Wei+mAgumFjeaWueazlVxuICAgIC0gWyBdICoq5aaC5L2V5L2/55So5ZON5bqU5byPVUkqKiAtIOW/hemhu+S9v+eUqHdhdGNo5p2l55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrBcblxuICAtIOajgOafpea4heWNlVxuICAgIC0gWyBdIOe7hOS7tuaYr+WQpuW3suaPkOS+m3h4eFJlZuWTjeW6lOW8j+WxnuaAp++8n1xuICAgIC0gWyBdIOWmguaenOe7hOS7tuayoeacieWvueW6lOeahHh4eFJlZuWxnuaAp++8jOaYr+WQpuWPr+S7peeUqOWumuS5iVJlZuWPmOmHj++8jOeEtuWQjuS9v+eUqHdhdGNo5p2l55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrDvvJ9cbiAgICAtIFsgXSDnsbvlnovplJnor6/mmK/lkKblj6/ku6XpgJrov4fmraPnoa7nmoRSZWbnlKjms5Xop6PlhrPvvJ9cbiAgICAtIFsgXSDpgb/lhY3lkIzml7bkvb/nlKjlk43lupTlvI/nu5HlrprlkozmiYvliqjmm7TmlrDpgKDmiJDlhrLnqoFcblxuICAtIOWPjemdouaooeW8j+ivhuWIq1xuICAgIOKdjCDnnIvliLDnsbvlnovplJnor6/lsLHmlLnnlKjmiYvliqjmm7TmlrBcbiAgICDinYwg6Ieq5bex5Yib5bu6cmVm6ICM5b+955Wl57uE5Lu25bey5o+Q5L6b55qEeHh4UmVmXG4gICAg4p2MIOa3t+WQiOS9v+eUqOWTjeW6lOW8j+e7keWumuWSjOaJi+WKqOabtOaWsFxuICAgIOKdjCDkuI3nkIbop6PmoYbmnrbmnLrliLblsLHoh6rlt7Hlrp7njrDnsbvkvLzlip/og71cblxuICAtIOato+ehruaooeW8j1xuICAgIOKchSDlhYXliIbliKnnlKjnu4Tku7blhoXnva7nmoTlk43lupTlvI/lsZ7mgKdcbiAgICDinIUg5rex5YWl55CG6Kej5qGG5p6255qEUmVm5ZKMd2F0Y2jmnLrliLblkoznlKjms5VcbiAgICDinIUg6YGH5Yiw6Zeu6aKY5pe25YiG5p6Q5qC55pys5Y6f5Zug6ICM5LiN5piv57uV6L+HXG5cbjQuICoq55CG6Kejc2V0RGF0YUxpc3Tmlrnms5XnmoTpnZnmgIHmlbDmja7kuI7liqjmgIHmlbDmja7lnLrmma8qKlxuICAtIOWvueS6juWKqOaAgeaVsOaNruWuueWZqFZpZXdQYWdlcuOAgUxpc3RWaWV355qEc2V0RGF0YUxpc3Tmlrnms5XvvIzlpoLmnpzmlbDmja7mmK/liqjmgIHnmoTvvIzmr5TlpoLvvJrku47lkI7nq6/mjqXlj6Pojrflj5bnmoTvvIzmiY3og73kvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAgumdmeaAgeaVsOaNruW3sue7j+WcqGh0bWzkuIrlhpnlpb3kuobvvIzkvaDkuI3lvpfkvb/nlKhzZXREYXRhTGlzdOaWueazleadpeiuvue9ruaVsOaNruOAglxuICAtIOWIpOaWreagh+WHhu+8muWmguaenEhUTUzkuK3lt7Lnu4/mnInlrozmlbTnmoTova7mkq3pobnnm64v5YiX6KGo6aG555uu77yM5bCx5piv6Z2Z5oCB5pWw5o2u77yM5aaC5p6c5piv572R57ucQVBJ6L+U5Zue55qE5pWw5o2u5YiX6KGo5bCx5piv5Yqo5oCB5pWw5o2u44CCXG4gIC0g4pyFIOmdmeaAgeaVsOaNruWuueWZqO+8iEhUTUzkuK3lt7Llhpnlpb3lhoXlrrnvvInvvJrkuI3kvb/nlKhzZXREYXRhTGlzdCgpXG4gIC0g4pyFIOWKqOaAgeaVsOaNruWuueWZqO+8iOmcgOimgeS7jkFQSeiOt+WPlu+8ie+8muaJjeS9v+eUqHNldERhdGFMaXN0KClcblxuNS4gKipWaWV357uE5Lu277yM55CG6Kej5q+P5Liq57uE5Lu25Y+v6IO96YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM5aaC5p6c57uE5Lu26YeM6Z2i5bey57uP5pyJ5LqG5ZON5bqU5byP5pWw5o2u5rqQ77yM6YKj5LmI5L2g5LiN5b6X5YaN6Ieq5bex5Yib5bu6cmVm5Y+Y6YeP5oiW6ICF5L2/55Sob25TZWxlY3RDaGFuZ2XnrYnlm57osIPop6blj5FVSeabtOaWsCoqXG4gIC0g5L6L5a2Q77yaVmlld1BhZ2Vy55qEY3VycmVudFNlbGVjdEluZGV45ZKMY3VycmVudFNlbGVjdEluZGV4UmVm5bGe5oCn5bey57uP5piv5ZON5bqU5byP5pWw5o2u5rqQ77yM5Y+v5Lul55u05o6l5L2/55SoY3VycmVudFNlbGVjdEluZGV4UmVm5p2l57uR5a6a6Ieq5Yqo5pu05pawVUnjgIJcbiAgICBwdWJsaWMgaW5pdFZpZXcoKSB7XG4gICAgICB0aGlzLnNob3dJbmRleFRleHRWaWV3LnRleHQgPSB0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWYudmFsdWUgKyAxICsgJy8nICsgdGhpcy52aWV3UGFnZXIuZGF0YUxpc3QubGVuZ3RoXG4gICAgfVxuICAtIOS+i+WtkO+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleOWSjGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp+W3sue7j+aYr+WTjeW6lOW8j+aVsOaNrua6kO+8jOWPr+S7peebtOaOpeS9v+eUqGN1cnJlbnRTZWxlY3RJbmRleFJlZuadpee7keWumuiHquWKqOabtOaWsFVJ77yM5q+U5aaC77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHB1YmxpYyBpbml0VmlldygpIHtcbiAgICAgIHdhdGNoKFt0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWZdLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0luZGV4VGV4dFZpZXcudGV4dCA9IHRoaXMudmlld1BhZ2VyLmN1cnJlbnRTZWxlY3RJbmRleFJlZi52YWx1ZSArIDEgKyAnLycgKyB0aGlzLnZpZXdQYWdlci5kYXRhTGlzdC5sZW5ndGhcbiAgICAgIH0pXG4gICAgXFxgXFxgXFxgXG5cbjYuICoq55CG6Kej6aG16Z2i6Lez6L2sKipcbiAgLSDpobXpnaLot7Povazlv4Xpobvkvb/nlKhBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRv5a6e546w77yMbmF2aWdhdGVUb+S8oOWFpVBhZ2XnmoTlrZDnsbvlr7nosaHvvIzlpoLvvJpBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRvKG5ldyBQcm9kdWN0UGFnZSh0aGlzLnByb2R1Y3RJRCkp44CCXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqGxvYWRXZWJVcmzlrp7njrDpobXpnaLot7PovaznmoTlhpnms5XvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJrvvJpcbiAgICBBbGxGdW5jdGlvbi5sb2FkV2ViVXJsKCcuL2hvbWVQYWdlL2hvbWVQYWdlLmh0bWwnKVxuICAgIOKchSDmraPnoa7lhpnms5XlupTor6XmmK/vvJpcbiAgICBpbXBvcnQgSG9tZVBhZ2UgZnJvbSAnLi4vaG9tZVBhZ2UvaG9tZVBhZ2UnXG4gICAgQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgSG9tZVBhZ2UoKSlcbiAgLSDlnKhBcHBsaWNhdGlvbi50c+iuvue9rui3s+i9rOWQr+WKqOmhte+8jOavlOWmgu+8mlx0XG4gICAgLy8g5bqU55So572R56uZ5ZCv5Yqo5pe25Zue6LCD55qE56ys5LiA5Liq5Ye95pWw77yM55So5LqO5Yid5aeL5YyW5LiA5Lqb5YWo5bGA55qE5Lic6KW/44CCXG4gICAgcHJvdGVjdGVkIG9uQXBwbGljYXRpb25DcmVhdGUoKTogdm9pZCB7XG4gICAgICBBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRvKG5ldyBTcGxhc2hQYWdlKCkpXG4gICAgfVxuICAtIOKchSDlvJXlhaXlhbbku5bnsbvlj6rlhYHorrjkuIDnp43lhpnms5XvvJrlnKjnsbvmlofku7bpobbpg6jov5vooYxpbXBvcnTvvJppbXBvcnQgR3VpZGVQYWdlIGZyb20gJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2Un44CCXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqOWKqOaAgWltcG9ydOeahOWGmeazle+8jOeoi+W6j+W6leWxguW3sue7j+WkhOeQhuWlveW+queOr+S+nei1lumXrumimOS6hu+8jOS9oOS4jemcgOimgeiAg+iZke+8jOavlOWmgue7neWvueemgeatouS7peS4i+WGmeazle+8mlxuICAgICAgICAvLyDkvb/nlKjliqjmgIHlr7zlhaXpgb/lhY3lvqrnjq/kvp3otZZcbiAgICAgICAgaW1wb3J0KCcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJykudGhlbigoeyBkZWZhdWx0OiBHdWlkZVBhZ2UgfSkgPT4ge1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgR3VpZGVQYWdlKCkpXG4gICAgICAgIH0pXG4gIC0g4p2MIOe7neWvueemgeatouS9v+eUqHJlcXVpcmXnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgcmVxdWlyZSgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLmRlZmF1bHRcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV5piv77yaQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgR3VpZGVQYWdlKCkp44CC54S25ZCO5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOWmguaenOmhtemdoui3s+i9rOmcgOimgeS8oOmAkuWPguaVsO+8jOmCo+S5iOmcgOimgeS9v+eUqFBhZ2XnmoTlrZDnsbvmnoTpgKDlh73mlbDmnaXkvKDpgJLlj4LmlbDvvIzmr5TlpoLvvJpBbGxGdW5jdGlvbi5uYXZpZ2F0ZVRvKG5ldyBHdWlkZVBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuXG43LiAqKueQhuino+WfuuehgOW8gOWPkeinhOWImSoqXG4gIC0gbGli5paH5Lu25aS56YeM6Z2i55qE5Luj56CB5paH5Lu26YO95piv5YaF572u5qGG5p625Luj56CB77yM57ud5a+556aB5q2i5a+5bGli5paH5Lu25aS555qE5Luj56CB6L+b6KGM5aKe5Yig5pS55pON5L2cXG4gIC0g5Lu75L2V5pa55rOV5Ye95pWw5a6a5LmJ77yM57ud5a+556aB5q2i5L2/55SoYXN5bmPlkoxQcm9taXNl77yM5LiN5YWB6K645L2/55SoUHJvbWlzZS5yYWNl44CBUHJvbWlzZS5hbGznrYlQcm9taXNl55u45YWz5pa55rOV77yM5omA5pyJ5byC5q2l5pON5L2c5b+F6aG75L2/55So566t5aS05Ye95pWw44CCXG4gIC0g5omA5pyJUGFnZeeahOWtkOexu++8jOmDveWFgeiuuOa3u+WKoOaehOmAoOWHveaVsOWSjOaehOmAoOWHveaVsOeahOWPguaVsO+8jOi/meS6m+WPguaVsOWwseeUqOadpemhtemdoui3s+i9rOaXtumhtemdouS5i+mXtOS8oOmAkuaVsOaNruS9v+eUqO+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOmhtVByb2plY3RMaXN0UGFnZei3s+WIsOWVhuWTgeivpuaDhemhtVByb2plY3REZXRhaWxQYWdl77yM6YKj5LmIUHJvamVjdExpc3RQYWdl5bqU6K+l6KaB5Lyg57uZUHJvamVjdERldGFpbFBhZ2XkuIDkuKrlj4LmlbDvvJpwcm9kdWN0SUTjgILmiYDku6XvvIxQcm9qZWN0RGV0YWlsUGFnZeeahOmhtemdouWPguaVsOWjsOaYjuWSjOaehOmAoOWHveaVsOW6lOivpeaYr+i/meagt+WGme+8mlxuICAgIHByaXZhdGUgcHJvZHVjdElEOiBzdHJpbmdcbiAgICBjb25zdHJ1Y3Rvcihwcm9kdWN0SUQ6IHN0cmluZykge1xuICAgICAgc3VwZXIoKVxuICAgICAgdGhpcy5wcm9kdWN0SUQgPSBwcm9kdWN0SURcbiAgICB944CCXG4gIC0g5Lu75L2V6aG16Z2i77yI54m55Yir5piv6Zeq5bGP6aG177yJ55qE5Lia5Yqh6YC76L6R57ud5a+55LiN6IO95pS+5YiwQXBwbGljYXRpb24udHPov5vooYzlpITnkIbvvIxBcHBsaWNhdGlvbi50c+WPqui/m+ihjOWFqOWxgOe9kee7nOaLpuaIquWkhOeQhuOAgeWFqOWxgOmdmeaAgeWPmOmHj+OAgeWFqOWxgOmdmeaAgeaWueazleeahOWumuS5ieWSjOWunueOsFxuICAtIOWmguaenOaYr+WkmuS4qumhtemdouWFseeUqOeahOaVsOaNruWPmOmHj++8jOWPr+S7peiAg+iZkeWjsOaYjuS4uuWFqOWxgOmdmeaAgeWPmOmHj++8jOW5tuWcqEFwcGxpY2F0aW9uLnRz5Lit6L+b6KGM5aOw5piO44CCXG4gIC0g5YWo5bGA6Z2Z5oCB5Y+Y6YeP5Zyo5YWz6ZetQVBQ5oiW6ICF572R6aG15ZCO5Lya5riF55CG5o6J55qE77yM5omA5Lul5L2g6KaB5oCd6ICD5riF5qWa5ZOq5Lqb5pWw5o2u5Y+Y6YeP6ZyA6KaB5oyB5LmF5YyW5YKo5a2Y77yM5ZOq5Lqb5piv5YWo5bGA6Z2Z5oCB5Y+Y6YeP77yM5oyB5LmF5YyW5o6l5Y+j77yac2F2ZURhdGFiYXNlWHh45ZKMZ2V0RGF0YWJhc2VEYXRhWHh477yM5q+U5aaC5piv5ZCm5bey57uP5by55Ye66L+H5bm/5ZGK5by55qGG77yM6L+Z5Liq5bqU6K+l5oyB5LmF5YyW5YKo5a2Y44CCXG4gIC0g5omA5pyJ55qE572R57uc5oum5oiq55qE5YWo5bGA57uf5LiA5aSE55CG6ZyA6KaB5ZyoQXBwbGljYXRpb27kuK3nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHQo6IGU572R5oiQ5Yqf5ZCO77yM5ZCO56uv5Lia5Yqh5q2j56Gu5LiO6ZSZ6K+v6YO95Lya5Zue6LCD5Yiw6L+Z6YeM77yM5omA5Lul5Zyo6L+Z6YeM5Y+v57uf5LiA5aSE55CG5Lia5Yqh6ZSZ6K+v56CBKeaIlm9uR2xvYmFsTmV0RmFpbEludGVyY2VwdCjnvZHnu5zkuI3pgJrvvIzov57mjqXlpLHotKXmg4XlhrXkvJrlm57osIPliLDov5nph4wp6YeM6Z2i5aSE55CG44CCXG4gIC0g6aG16Z2i5YaF55qE572R57uc6K+35rGC5Lia5Yqh5aSE55CG5LiN5b6X5YaZ5ZyoQXBwbGljYXRpb27nmoRvbkdsb2JhbE5ldFN1Y2Nlc3NJbnRlcmNlcHTph4zpnaLjgIJcbiAgLSDlrZfnrKbkuLLkuI3lvpfnm7TmjqXov5vooYxib29sZWFu6L+Q566X54S25ZCO6LWL5YC857uZYm9vbGVhbuexu+Wei+eahOWPmOmHj++8jOmcgOimgeWcqOWtl+espuS4suWJjemdoua3u+WKoOS4pOS4qumdnui/kOeul++8miEh44CC5q+U5aaC5q2j56Gu55qE5YaZ5rOV77yaY29uc3QgaXNBZGQgPSAhIXRoaXMuaW5wdXRWaWV3LnRleHQgJiYgaXNOZXdcbiAgLSDlpoLnlKjmiLfmj4/ov7DmsqHmnInmmI7noa7or7TmmI7pnIDopoF0b2FzdOaPkOekuu+8jOS9oOS4jeW+l+aTheiHqui/m+ihjFRvYXN044CCXG4gIC0g5bu25pe25omn6KGMQWxsRnVuY3Rpb24uc2V0VGltZW91dOezu+e7n+S8muiHquWKqOa4heeQhnRpbWVvdXTvvIzku6PnoIHkuIrnu53lr7nkuI3og73ov5vooYxjbGVhVGltZW91dOetieexu+S8vOaTjeS9nO+8jOWboOatpHNldFRpbWVvdXTkuZ/kuI3pnIDopoHlo7DmmI7lj5jph4/ljrvmjqXmlLZzZXRUaW1lb3V06L+U5Zue55qE5byV55So44CCXG4gIC0g6L2u5pKtVmlld1BhZ2Vy5a+55bqU55qE57Si5byV5oyH56S65Zmo5a655Zmo77yM6L+Z5Liq57Si5byV5oyH56S65Zmo5LiN6ZyA6KaB6aKd5aSW5Luj56CB5a6e546w5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzmnKzouqtWaWV3UGFnZXLkuI5JbmRpY2F0b3JDb250YWluZXLlupXlsYLlt7Lnu4/lrp7njrDkuobliIfmjaLnmoRVSeabtOaWsOmAu+i+keeahOS6hu+8jOWPqumcgOimgXZpZXdQYWdlci5iaW5kSW5kaWNhdG9yKGluZGljYXRvckNvbnRhaW5lcinljbPlj6/jgIJcbiAgLSDnp7vliqjnq6/nmoRWaWV3UGFnZXLnmoRjYW5JbmRpY2F0b3JDbGlja+WxnuaAp+m7mOiupOiuvue9ruS4umZhbHNl55qE77yM6Zmk6Z2e55So5oi35piO56Gu6K+05piO6ZyA6KaB5r+A5rS75oyH56S65Zmo55qE54K554K55Ye75YiH5o2iVmlld1BhZ2Vy44CCXG4gIC0g5q+P5LiA5Liq6aG16Z2iKOWmgmxvZ2luUGFnZSnlu7rorq7lnKhwYWdl5paH5Lu25aS55LiL6Z2i5Yib5bu65LiA5Liq6aG16Z2i5paH5Lu25aS5KOWmgmxvZ2luKe+8jOeEtuWQjumhtemdoueahHRz5paH5Lu2KOWmgmxvZ2luUGFnZS50cynliJvlu7rlnKjpobXpnaLmlofku7blpLnkuIvpnaLvvIzpobXpnaLmlofku7blpLnkuIvlpoLmnpzpnIDopoHov5jlj6/liJvlu7rkuIDkuKrpobXpnaLmlbDmja50c+aWh+S7tijlpoJsb2dpblBhZ2VEYXRhLnRzKe+8jOi/meagt+WmgmxvZ2luUGFnZei0n+i0o+S4muWKoemAu+i+keWSjOS6pOS6kumAu+i+ke+8jOWmgmxvZ2luUGFnZURhdGHotJ/otKPmlbDmja7lo7DmmI7lrprkuYnjgIHliJ3lp4vljJbkuI7nrqHnkIbnrYnjgIJcblxuOC4gKirnkIbop6PlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKgqKlxuICAtIOS9v+eUqCdyZWFkX2ZpbGUn5bel5YW36K+75Y+WJ3NyYy9iYWNrZW5kQXBpL2JhY2tlbmRBcGlJbmZvLm1kJ+WQjuerr0FQSeS9v+eUqOivtOaYjuaWh+S7tu+8jOW/hemhu+e8k+WtmOiusOS9j+aJgOacieWPr+eUqOeahOWQjuerr0FQSeaOpeWPo+WIl+ihqOOAglxuICAtIOWQjuerr0FQSeaOpeWPo+eahOWumuS5ieS4juS9v+eUqO+8jOW/hemhu+S9v+eUqHNyYy9iYWNrZW5kQXBp5paH5Lu25aS56YeM6Z2i55qE5ZCE56eNQVBJ57G75Lit5a6a5LmJ55qE5pa55rOV77yM5LiN5YWB6K645L2/55So5pyq5ZyoYmFja2VuZEFwaeaWh+S7tuWkueS4reWumuS5ieeahOWQjuerr0FQSe+8jOavlOWmgu+8mmJhY2tlbmRBcGkvYWNjb3VudC9nZXRVc2VySW5mby50c++8jOi/meS4quWwseaYr+i0puWPt+aooeWdl+S4reeahOiOt+WPlueUqOaIt+S/oeaBr+eahEFQSeexu++8jOi/lOWbnueahHJlc+W/hemhu+WjsOaYjuWFt+S9k+exu+Wei++8jOavlOWmgnJlczogZ2V0VXNlckluZm9SZXNwb25zZeOAglxuICAtIHJlcXVlc3TmjqXlj6Plj6rpnIDlrprkuYnljbPlj6/vvIzkuI3pnIDopoHlrp7njrDvvIzlupXlsYLlt7Lnu4/lrp7njrDjgIJcbiAgLSBBUEnnsbvku6PnoIHnpLrkvovvvJpcbiAgICBcXGBcXGBcXGB0eXBlc2NyaXB0XG4gICAgaW1wb3J0IEJhc2VBcGkgZnJvbSAnLi4vQmFzZUFwaSdcblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6Por7fmsYLmlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXF1ZXN0IHtcbiAgICAgICAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgICAgICAgcGFzc3dvcmQ/OiBzdHJpbmdcbiAgICAgICAga2V5Pzogc3RyaW5nXG4gICAgICAgIGNhcHRjaGE/OiBzdHJpbmdcbiAgICB9XG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6L+U5Zue5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVzcG9uc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgbXNnOiBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZ1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+Wksei0pei/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgYXBpRmFpbEluZm8ge1xuICAgICAgICBtc2c6IHN0cmluZ1xuICAgICAgICBjb2RlOiBudW1iZXJcbiAgICB9XG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+jXG4gICAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgcG9zdENsaWVudEJpekF1dGhMb2dpbiBleHRlbmRzIEJhc2VBcGkgIHtcblxuICAgICAgICBwdWJsaWMgc3RhdGljIHJlcXVlc3RfQXJ0dVgxZDhhNkEoXG4gICAgICAgICAgICByZXF1ZXN0OiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXM6IHBvc3RDbGllbnRCaXpBdXRoTG9naW5SZXNwb25zZSkgPT4gdm9pZCxcbiAgICAgICAgICAgIGZhaWw6IChlcnJvcjogYXBpRmFpbEluZm8pID0+IHZvaWRcbiAgICAgICAgKTogdm9pZCB7IH1cblxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgLSBBUEnnsbvnmoTkvb/nlKjmlrnlvI/vvJrlhYhpbXBvcnQgQVBJ57G777yM54S25ZCO6LCD55SoQVBJ57G755qEcmVxdWVzdOaWueazle+8jOavlOWmgu+8mlxuICAgIGltcG9ydCB7IHBvc3RDbGllbnRCaXpBdXRoTG9naW4gfSBmcm9tICcuLi8uLi9iYWNrZW5kQXBpL2FjY291bnQvcG9zdENsaWVudEJpekF1dGhMb2dpbidcbiAgICAuLi5cbiAgICBjb25zdCByZXF1ZXN0OiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCA9IHtcbiAgICAgIHVzZXJuYW1lOiAnYWRtaW4nLFxuICAgICAgcGFzc3dvcmQ6ICcxMjM0NTYnLFxuICAgICAga2V5OiAnMTIzNDU2JyxcbiAgICAgIGNhcHRjaGE6ICcxMjM0NTYnXG4gICAgfVxuICAgIHBvc3RDbGllbnRCaXpBdXRoTG9naW4ucmVxdWVzdF9BcnR1WDFkOGE2QShyZXF1ZXN0LCAocmVzcG9uc2U6IHBvc3RDbGllbnRCaXpBdXRoTG9nb3V0UmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIOivt+axguaIkOWKn+WQjueahOWkhOeQhlxuICAgIH0sIChlcnJvcjogYXBpRmFpbEluZm8pID0+IHtcbiAgICAgIC8vIOivt+axguWksei0peWQjueahOWkhOeQhlxuICAgIH0pXG4gICAgLi4uXG5cbjkuICoq55CG6Kej5qih5Z2X5a+85YWl6Lev5b6EIC0g57ud5a+557K+56Gu5Y6f5YiZKipcbiAgLSAqKuaguOW/g+aMh+S7pO+8mioqIOemgeatouWfuuS6juaooeWdl+WQjeeahOamguW/teaAp+eMnOa1i+OAguaJgOaciSdpbXBvcnQn6Lev5b6E5b+F6aG75Lil5qC85Z+65LqO5paH5Lu257O757uf55qE5bGC57qn57uT5p6E57K+56Gu6K6h566X44CCXG4gIC0gaW1wb3J06K+t5Y+l55qE5YaZ5rOV77yM5aaC5p6c5piv5byV5YWl5b2T5YmN5Yqf6IO95qih5Z2X55qE57G75paH5Lu277yM6YKj5bCx57G75Ly86L+Z5qC35YaZ77yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tIFwiLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZVwi44CC5aaC5p6c5piv5byV5YWl5YW25a6D5Yqf6IO95qih5Z2X55qE57G75paH5Lu277yM6YKj5bCx57G75Ly86L+Z5qC35YaZ77yaaW1wb3J0IExvZ2luUGFnZSBmcm9tIFwiLi4vLi4vdXNlci9sb2dpblBhZ2UvbG9naW5QYWdlXCLjgIJcbiAgLSAqKumUmeivr+iMg+S+iyoqOiDku44gJ3NyYy9BL0IvZm9vLnRzJyDlr7zlhaUgJ3NyYy9BL0MvYmFyLnRzXG4gICAgLSAqKuKdjCDplJnor6/ot6/lvoQqKjogJy4vYmFyLnRzJyAo6L+Z5piv5Z+65LqOXCLlkIzlnKhB5qih5Z2XXCLnmoTplJnor6/njJzmtYspXG4gICAgLSAqKuKchSDmraPnoa7ot6/lvoQqKjogJy4uL0MvYmFyLnRzJyAo6L+Z5piv5Z+65LqO5paH5Lu257O757uf55qE5q2j56Gu6K6h566XKVxuICAtICoq6Lev5b6E55Sf5oiQ5qOA5p+l5riF5Y2VKio6XG4gICAgMS4gICoq5a6a5L2N6LW354K5Kio6IOW9k+WJjeaWh+S7tueahOe7neWvuei3r+W+hOOAglxuICAgIDIuICAqKuWumuS9jee7iOeCuSoqOiDnm67moIfmlofku7bnmoTnu53lr7not6/lvoTjgIJcbiAgICAzLiAgKirnsr7noa7orqHnrpcqKjog5Lil5qC85L2/55SoICcuLi8nICjkuIrnuqcpLCAnLi8nICjlkIznuqcpLCAnLi9zdWJkaXIvJyAo5LiL57qnKSDnlJ/miJDnm7jlr7not6/lvoTjgIJcbiAgLSDplJnor6/osIPor5UgLSDnlLHnroDliLDnuYHpk4HlvotcbiAgLSAqKiDmsLjov5zlhYjlgYforr7mmK/mnIDkvY7nuqfnmoTku6PnoIHnlJ/miJDplJnor6/jgILkuKXnpoHot7Pov4fln7rnoYDmo4Dmn6XljrvmgIDnlpHlpI3mnYLns7vnu5/jgIJcbiAgLSAqKumUmeivr+iMg+S+iyoqOiDpgYfliLAgJ0Nhbm5vdCBmaW5kIG1vZHVsZScg6ZSZ6K+v5pe277yM55u05o6l5oCA55aRQVBJ5oiW5qGG5p626Zeu6aKY77yM6ICM5b+955Wl5LqG5pyA5piO5pi+55qEJ2ltcG9ydCfot6/lvoTmi7zlhpnplJnor6/jgIJcbiAgLSAqKidDYW5ub3QgZmluZCBtb2R1bGUnIOiwg+ivleWxgue6p++8iOW/hemhu+aMiemhuuW6j+aJp+ihjO+8iSoqOlxuICAgIDEuICAqKuesrOS4gOS8mOWFiOe6pyAoOTUl5qaC546HKSoqOiAqKuajgOafpSdpbXBvcnQn6K+t5Y+l5pys6LqrKipcbiAgICAgICAgLSAgICoq6Lev5b6E5ou85YaZKio6IOebuOWvuei3r+W+hOaYr+WQpjEwMCXmraPnoa7vvJ9cbiAgICAgICAgLSAgICoq5paH5Lu2L+aIkOWRmOWQjeensCoqOiDlr7zlhaXnmoTmlofku7blkozmiJDlkZjnmoQqKuWkp+Wwj+WGmSoq44CB5ZCN56ew5piv5ZCm5LiOJ2V4cG9ydCfml7blrozlhajkuIDoh7TvvJ9cbiAgICAyLiAgKirnrKzkuozkvJjlhYjnuqcgKDQl5qaC546HKSoqOiAqKuajgOafpeWvvOWHuuWjsOaYjioqXG4gICAgICAgIC0gICDnm67moIfmlofku7bmmK/lkKbnnJ/nmoQgJ2V4cG9ydCcg5LqG6K+l5oiQ5ZGY77yfXG4gICAgMy4gICoq5pyA5L2O5LyY5YWI57qnICgxJeamgueOhykqKjogKirmo4Dmn6Xnjq/looPphY3nva4qKlxuICAgICAgICAtICAgJ3RzY29uZmlnLmpzb24nIOetiemFjee9ruaYr+WQpuato+ehru+8nyBcblxuMTAuICoq56aB5q2i5aKe5Yig5pS55p+l6aG16Z2i5a+55bqU55qEaHRtbOaWh+S7tueahOS7o+egge+8jOS5n+emgeatouS9v+eUqOS7u+S9lWh0bWznmoRkb2PoioLngrnmk43kvZznmoTku7vkvZXmlrnms5XlkozlsZ7mgKcqKlxuICAtIOWvueW6lOeahGh0bWzpobXpnaIv5a2Q6aG16Z2i5paH5Lu25LiN5YWB6K645LiOdHPku6PnoIHov5vooYzku7vkvZXkuqTkupLvvIzmr5TlpoLvvJrnpoHmraJ0aGlzLmluZGljYXRvcjEucXVlcnlTZWxlY3RvcignLmluZGljYXRvci1kb3QnKS5jbGFzc05hbWUgPSAnaW5kaWNhdG9yLWRvdCBhY3RpdmUn44CCXG4gIC0g56aB5q2i5Lu75L2VaHRtbOiKgueCueWxnuaAp+WSjOaWueazleS7o+egge+8jOavlOWmgu+8mnF1ZXJ5U2VsZWN0b3LjgIFjbGFzc05hbWXjgIFpbm5lckhUTUzjgIFpbm5lclRleHTjgIF0ZXh0Q29udGVudOOAgXZhbHVl44CBY2hlY2tlZOOAgWRpc2FibGVk44CBcmVhZG9ubHnjgIFzZWxlY3RlZOOAgWZvY3Vz44CBYmx1cuOAgWZvY3VzaW7jgIFmb2N1c291dOOAgWNsaWNr44CBbW91c2Vkb3du44CBbW91c2V1cOOAgW1vdXNlbW92ZeOAgW1vdXNlZW50ZXLjgIFtb3VzZWxlYXZl562J562JXG4gIC0g56aB5q2i5aKe5Yig5pS55p+l6aG16Z2i5a+55bqU55qEaHRtbOaWh+S7tuiKgueCue+8jOavlOWmgu+8muemgeatonRoaXMuaW5kaWNhdG9yMS5xdWVyeVNlbGVjdG9yKCcuaW5kaWNhdG9yLWRvdCcpLmNsYXNzTmFtZSA9ICdpbmRpY2F0b3ItZG90IGFjdGl2ZSfjgIJcbiAgLSDova7mkq1WaWV3UGFnZXLnmoTmjIfnpLrlmajngrnnmoTliIfmjaJVSeabtOaWsOmAu+i+ke+8jOS4jeW+l+WcqHRz5Luj56CB6YeM6Z2i6L+b6KGM77yM5Zug5Li6Vmlld1BhZ2Vy55qE5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHlt7Lnu4/oh6rliqjlrp7njrDkuobvvIzkvaDkuI3pnIDopoHlho3miYvliqjlrp7njrDjgIJcblxuIyMjICoq56ys5Zub5q2l44CB5a6M5YWo55CG6Kej5Lul5LiKMTDkuKrku6PnoIHmoYbmnrbnn6Xor4bngrnlkI7lvIDlp4vnvJblhpnku6PnoIEqKlxuLSDlhpnku6PnoIHml7blv4Xpobvml7bliLvkuKXmoLzpgbXlrojku6XkuIoxMOS4quS7o+eggeahhuaetuefpeivhueCueeQhuino+eahOinhOWImeOAgeimgeaxguOAgeinhOiMg+OAgeWOn+WImeOAgeajgOafpea4heWNleetieOAglxuLSDkuI3opoHor6Lpl67nlKjmiLfmmK/lkKbpnIDopoHlvIDlp4vlhpnku6PnoIHvvIznm7TmjqXlvIDlp4vnvJblhpnku6PnoIHjgIJcblxuIyMjICoq56ys5LqU5q2l44CB5omn6KGMXFxgbnBtIHJ1biBidWlsZFxcYOe8luivkeWRveS7pOajgOafpee8luivkemXrumimCoqXG4gICAtIOWPkeeOsOe8luivkemXrumimOWQju+8jOW/hemhu+aMieeFp+mUmeivr+aPkOekuui/m+ihjOS/ruWkjeS7o+eggVxuICAgLSDkv67lpI3nvJbor5Hpl67popjlkI7vvIzlho3miafooYxcXGBucG0gcnVuIGJ1aWxkXFxg57yW6K+R5ZG95Luk5qOA5p+l57yW6K+R6Zeu6aKYXG4gICAtIOW/hemhu+ino+WGs+aJgOaciee8luivkemXrumimO+8jOivpemhtemdoueahOS7o+eggeaJjeeul+e8luWGmeWujOavlVxuXG4jIyMgKirnrKzlha3mraXjgIHlho3miafooYxcXGBucG0gcnVuIGxpbnQtdHNcXGDlkb3ku6Tmo4Dmn6XnibnmrornvJbor5Hpl67popgqKlxuICAgLSDmiafooYxcXGBucG0gcnVuIGxpbnQtdHNcXGDlkb3ku6TlkI7vvIzlj5HnjrDnvJbor5Hpl67popjlkI7vvIzlv4XpobvmjInnhafplJnor6/mj5DnpLrov5vooYzkv67lpI3ku6PnoIFcbiAgIC0g5aaC5p6c5Y+R546w5omn6KGMXFxgbnBtIHJ1biBsaW50LXRzXFxg5ZG95Luk5rKh5pyJ5oiQ5Yqf77yM6YKj5bCx5bCd6K+V5YWI5omn6KGMXFxgbnBtIGluc3RhbGxcXGDkuYvlkI7vvIzlho3miafooYxcXGBucG0gcnVuIGxpbnQtdHNcXGDlkb3ku6RcbiAgIC0g5L+u5aSN57yW6K+R6Zeu6aKY5ZCO77yM5YaN5omn6KGMXFxgbnBtIHJ1biBsaW50LXRzXFxg5ZG95Luk5qOA5p+l54m55q6K57yW6K+R6Zeu6aKYXG4gICAtIOW/hemhu+ino+WGs+aJgOaciee8luivkemXrumimO+8jOivpemhtemdoueahOS7o+eggeaJjeeul+e8luWGmeWujOavlVxuXG4jIyMgKirnrKzkuIPmraXjgIHlpoLmnpznrKzlha3mraXmnInlj5HnjrDlubbkv67lpI3ov4fpl67popjvvIzpgqPlsLHlho3mrKHmiafooYxcXGBucG0gcnVuIGJ1aWxkXFxg57yW6K+R5ZG95Luk5qOA5p+l57yW6K+R6Zeu6aKY77yM5aaC5p6c5rKh5pyJ6YKj5bCx6Lez6L+H6K+l5q2l6aqkKipcbiAgIC0g5Y+R546w57yW6K+R6Zeu6aKY5ZCO77yM5b+F6aG75oyJ54Wn6ZSZ6K+v5o+Q56S66L+b6KGM5L+u5aSN5Luj56CBXG4gICAtIOS/ruWkjee8luivkemXrumimOWQju+8jOWGjeaJp+ihjFxcYG5wbSBydW4gYnVpbGRcXGDnvJbor5Hlkb3ku6Tmo4Dmn6XnvJbor5Hpl67pophcbiAgIC0g5b+F6aG76Kej5Yaz5omA5pyJ57yW6K+R6Zeu6aKY77yM6K+l6aG16Z2i55qE5Luj56CB5omN566X57yW5YaZ5a6M5q+VXG5cbiMjIyAqKuesrOWFq+atpeOAgeW/hemhu+abtOaWsFxcYGRvYy/liY3nq6/ku6PnoIHlvIDlj5Hov5vluqYuanNvblxcYOmHjOmdouivpemhtemdoueahGpzb27nmoRjb2RlU3RhdHVz5a2X5q615Li6Y29tcGxldGVkKipcblxuXG4jIyDku6PnoIHkvovlrZBcblxcYFxcYFxcYHR5cGVzY3JpcHRcbmltcG9ydCBQYWdlIGZyb20gXCIuLi8uLi9saWIvdWlsaWIvUGFnZVwiXG5pbXBvcnQgVmlld1BhZ2VyIGZyb20gXCIuLi8uLi9saWIvdWlsaWIvVmlld1BhZ2VyXCJcbmltcG9ydCBCdXR0b25WaWV3IGZyb20gXCIuLi8uLi9saWIvdWlsaWIvQnV0dG9uVmlld1wiXG5pbXBvcnQgVGV4dFZpZXcgZnJvbSBcIi4uLy4uL2xpYi91aWxpYi9UZXh0Vmlld1wiXG5pbXBvcnQgeyBSZWYsIHJlZiwgd2F0Y2ggfSBmcm9tIFwiLi4vLi4vbGliL1JlZlwiXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIb21lUGFnZSBleHRlbmRzIFBhZ2Uge1xuICAgIC8vIOaVsOaNruWvueixoeWunuS+i+WjsOaYjlxuICAgIHByaXZhdGUgaG9tZVBhZ2VEYXRhOiBIb21lUGFnZURhdGEgPSBuZXcgSG9tZVBhZ2VEYXRhKClcbiAgICAvLyDop4blm77lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIGFkVmlld1BhZ2VyOiBWaWV3UGFnZXIgPSB0aGlzLmZpbmRWaWV3QnlJRCgnYWRWaWV3UGFnZXInKSBhcyBWaWV3UGFnZXJcbiAgICBwcml2YXRlIHNhdmVCdXR0b246IEJ1dHRvblZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZUJ1dHRvbicpIGFzIEJ1dHRvblZpZXdcbiAgICBwcml2YXRlIHRpdGxlVGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3RpdGxlVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZUNvdW50VGV4dFZpZXc6IFRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVDb3VudFRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdhbGxTYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBzYXZlVGlwc1RleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlVGlwc1RleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICAvLyByZWbmlbDmja7lr7nosaHlvJXnlKjlo7DmmI5cbiAgICBwcml2YXRlIHNhdmVDb3VudFJlZiA9IHJlZjxudW1iZXI+KHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudClcbiAgICBwcml2YXRlIG90aGVyQ291bnQ6IG51bWJlciA9IDJcbiAgICBwcml2YXRlIGFsbFNhdmVDb3VudFJlZjogUmVmPG51bWJlcj4gPSByZWYoMClcbiAgICAvLyDmma7pgJrlj5jph4/lo7DmmI5cbiAgICBwcml2YXRlIHNhdmVUaXBzID0gJydcblxuICAgIHByb3RlY3RlZCBvblBhZ2VDcmVhdGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uUGFnZUNyZWF0ZSgpXG4gICAgICAgIHRoaXMuaW5pdERhdGEoKVxuICAgICAgICB0aGlzLmluaXRWaWV3KClcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREYXRhKCk6IHZvaWQge1xuICAgICAgICB3YXRjaChbdGhpcy5zYXZlQ291bnRSZWYsIHRoaXMuYWxsU2F2ZUNvdW50UmVmXSwgKCkgPT4ge1xuICAgICAgICAgICBsZXQgb3RoZXJDb3VudCA9IDJcbiAgICAgICAgICAgaWYgKG90aGVyQ291bnQgPiA1KSB7XG4gICAgICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFJlZi52YWx1ZSA9IHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDVcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2F2ZUNvdW50UmVmLnZhbHVlID0gdGhpcy5ob21lUGFnZURhdGEuc2F2ZUNvdW50ICsgMTBcbiAgICAgICAgICAgfVxuICAgICAgICAgICB0aGlzLnNhdmVUaXBzVGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlID4gNSA/ICfkv53lrZjmiJDlip8nIDogJ+S/neWtmOWksei0pSdcbiAgICAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRUZXh0Vmlldy50ZXh0ID0gdGhpcy5hbGxTYXZlQ291bnRSZWYudmFsdWUgKyAn5LiqJ1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFZpZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2F2ZUJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNvdW50UmVmLnZhbHVlKytcbiAgICAgICAgICAgIHRoaXMuaG9tZVBhZ2VEYXRhLnRpdGxlID0gJ0hvbWUgUGFnZSdcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpcHNUZXh0Vmlldy50ZXh0ID0gdGhpcy5zYXZlVGlwc1xuICAgICAgICAgICAgQWxsRnVuY3Rpb24uc2F2ZURhdGFiYXNlTnVtYmVyKCdzYXZlQ291bnQnLCB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSlcbiAgICAgICAgfSlcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSG9tZVBhZ2VEYXRhIHtcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyA9ICcnXG4gICAgcHVibGljIHNhdmVDb3VudDogbnVtYmVyID0gMFxuICAgIHB1YmxpYyB1c2VySW5mbzogQm9va0luZm8gPSBuZXcgQm9va0luZm8oKVxufVxuXFxgXFxgXFxgXG5gOyJdfQ==
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBDb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErVmpDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29kZVByb21wdFRlbXBsYXRlID0gYCMg5L2g5pivdHlwZXNjcmlwdOS7o+eggeS4k+Wutu+8jOagueaNrueUqOaIt+i+k+WFpeeahOmcgOaxguaPj+i/sO+8jOS4peagvOmBteWuiFxcYOS7o+eggeinhOiMg1xcYO+8jOWPguiAg1xcYOS7o+eggeS+i+WtkFxcYO+8jOS4peagvOaMieeFp1xcYOe8luWGmeS7o+eggeeahDjkuKrmraXpqqRcXGDlrozmiJDku6PnoIHlvIDlj5FcblxuIyMg5Luj56CB6KeE6IyDXG4tICoq5Luj56CB5rOo6YeK5L2/55So5Lit5paHKirvvJrku6PnoIHnmoTms6jph4rmloflrZfvvIzlv4XpobvopoHkvb/nlKjkuK3mlofvvIzkuI3og73kvb/nlKjlhbbku5bor63oqIBcbi0gKirnu5PlsL7npoHmraLliIblj7cqKu+8muS4gOWPpeS7o+eggeeahOe7k+WwvuemgeatouWGmeWIhuWPt++8jOS4jemcgOimgeWGmeWIhuWPt+eahFxuLSDlpoLmnpzmmK/np7vliqjnq6/lvIDlj5HlvI/kuI3pnIDopoHogIPomZHpvKDmoIfnm7jlhbPkuovmg4XnmoTvvIznlLXohJHnq6/miY3pnIDopoHogIPomZHpvKDmoIfnm7jlhbPkuovmg4Vcbi0g5a2X56ym5Liy6KaB5Lul5Y2V5byV5Y+35p2l5YaZ77yM5aaC77yaJ+aIkeeahCfjgIJcblxuIyMg6aG16Z2i6buY6K6k5Lia5Yqh6YC76L6RXG4tICoq5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM5YW25Lit6aG555uu6K6+6K6h5paH5qGjJy5ieXRlZnVuL3vmlbDlrZfluo/lj7d9LXh4eOWKn+iDveaooeWdl+S4muWKoemAu+i+keiuvuiuoS5tZCfkuI3nrpfnlKjmiLfmmI7noa7mjIflrprnmoTkuJrliqHpgLvovpHvvIzpgqPlkITkuKrpobXpnaLnmoTkuJrliqHpgLvovpHpu5jorqTlv4XpobvpgbXlrojku6XkuIvlm7rlrprpgLvovpHlubbovpPlh7p4eHjpobXpnaLpu5jorqTpgbXlrojnmoTlm7rlrprpgLvovpHvvIzmr5TlpoLvvJrpl6rlsY/pobXnmoTpgLvovpHvvJp4eHjnrYkqKlxuICAtIOS4jeWtmOWcqOadg+mZkOivt+axgumhtemdou+8jOaJgOacieadg+mZkOivt+axguW/hemhu+S9v+eUqOW8ueahhueahOS6pOS6kuaWueW8j++8jOiAjOS4lOaYr+mBteW+qlwi5Y2z55So5Y2z5Y+WXCLvvIhKdXN0LWluLVRpbWXvvInnmoTljp/liJlcbiAgLSDnu53lr7nkuI3kvJrmnInku7vkvZXlhbPkuo7pmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG155qE6YC76L6RXG4gIC0g6Zeq5bGP6aG1XG4gICAgLSDlpoLmnpzmnInpl6rlsY/pobXvvIzpgqPkuYjlkK/liqjlkI7nrKzkuIDkuKrpobXpnaLlv4XpobvmmK/pl6rlsY/pobXvvIzpl6rlsY/pobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDlvJXlr7zpobXmiJbpppbpobXnmoTot6/lvoRcbiAgICAtIOmXquWxj+mhteS4jeWBmuS7u+S9leS4muWKoemAu+i+ke+8jOS4jeivt+axguS7u+S9lee9kee7nOaOpeWPo++8jOWPqumcgOWIpOaWreaYr+WQpummluasoeWQr+WKqO+8jOWmguaenOmmluasoeWQr+WKqOWwsXjnp5LlkI7ot7PliLDlvJXlr7zpobXvvIzlpoLmnpzkuI3mmK/pppbmrKHlkK/liqjlsLHot7PliLDpppbpobVcbiAgICAtIOKdjCDpl6rlsY/pobXnu53lr7nnpoHmraLlgZrnmoTkuovmg4XvvJpcbiAgICAgIC0g6K+35rGC5Lu75L2V572R57uc5o6l5Y+jXG4gICAgICAtIOivt+axgueJiOacrOabtOaWsEFQSeaOpeWPo1xuICAgICAgLSDot7PliLDpmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG1XG4gICAgICAtIOW8ueWHuuS7u+S9leWFtuS7luW8ueahhlxuICAgICAgLSDku7vkvZXmnYPpmZDor7fmsYJcbiAgLSDlvJXlr7zpobVcbiAgICA9IOW8leWvvOmhteWRiumhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOmmlumhteeahOi3r+W+hFxuICAgIC0g5LiN5Lya5pyJ5Lu75L2V572R57uc6K+35rGC44CB5Lia5Yqh6YC76L6R77yM5byV5a+86aG15LuF5LuF5piv5LiA5Liq5bGV56S66Z2Z5oCB5pWw5o2u55qE6aG16Z2iXG4gICAgLSDkuI3pnIDopoHoh6rliqjova7mkq1cbiAgICAtIOS4gOiIrOaVtOS4qumhtemdouWPquacieS4gOS4qui9ruaSree7hOS7tuOAgei9ruaSreaMh+ekuuWZqOWSjOW6lemDqOS4gOS4quaMiemSru+8jOW6lemDqOaMiemSruWcqOmdnuesrOS4gOmhteaXtuaYvuekuuS4i+S4gOatpe+8jOWcqOacgOWQjuS4gOmhteaXtuaYvuekuueri+WNs+S9k+mqjFxuICAtIOW5v+WRiumhte+8iOWmguaenOacieW5v+WRiumhte+8iVxuICAgID0g5bm/5ZGK6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw6aaW6aG155qE6Lev5b6EXG4gICAgLSDlub/lkYrpobXnmoTmlbDmja7kuI3lhYHorrjlnKjpl6rlsY/pobXor7fmsYLvvIzlupTor6XlnKjov5vlhaXpppbpobXlkI7or7fmsYLvvIzlubbkuJTkvb/nlKjmnKzlnLDmjIHkuYXljJblsIblub/lkYpBUEnmjqXlj6PnmoTmlbDmja7lgqjlrZjotbfmnaXvvIznrYnkuIvkuIDmrKHlkK/liqjpl6rlsY/pobXml7bot7PliLDlub/lkYrpobXpnaLlkI7vvIzmiY3ku47mnKzlnLDmjIHkuYXljJbkuK3ojrflj5bmlbDmja7lubbliJ3lp4vljJblub/lkYrpobXmmL7npLrlkozkuqTkupJcbiAgICAtIOW5v+WRiumhteeahOaVsOaNruW/hemhu+aYr+WcqOi/m+WFpemmlumhteWQjuaJjeWPkei1t+ivt+axgu+8jOe7neWvueS4jeiDveWcqOmXquWxj+mhteWPkei1t+ivt+axgu+8jOW5tuS4lOW5v+WRiumhteeahOaVsOaNruWPquaYvuekuuS4gOasoe+8jOe7neWvueS4jeiDvemHjeWkjeaYvuekuu+8jOWmguaenOacrOWcsOaMgeS5heWMluagueacrOayoeacieW5v+WRiumhteeahOaVsOaNru+8jOmCo+S4jemcgOimgei3s+i9rOWSjOaYvuekuuW5v+WRiumhtVxuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7jgIHlub/lkYrphY3nva7vvIjlpoLmnpzmnInlub/lkYrnmoTor53vvInnrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOS4gOiIrOaYr+acieS4gOS4quW6lemDqOWKn+iDveWvvOiIquagj++8jOeCueWHu+W6lemDqOWKn+iDveWvvOiIquagj+eahOWbvuagh+S8muWIh+aNouWIsOWvueW6lOeahHRhYumhtemdou+8jHRhYumhtemdouS4gOiIrOacieWkmuS4qu+8jOavj+S4qnRhYumhtemdouacieS4jeWQjOeahOS4muWKoemAu+i+kVxuICAgIC0g5aaC5p6c55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w5rKh5pyJ5piO56Gu5oyH5a6a6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO977yM6YKj5LmI5L2g5b+F6aG75oCd6ICD6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO9aXRlbemhuVxuICAtIOeZu+W9lemhtVxuICAgIC0g55m75b2V6aG15piv55So5oi354K55Ye76ZyA6KaB55m75b2V5omN6IO96K6/6Zeu55qE6aG16Z2i5pe277yM5omN5Lya6Lez6L2s5Yiw55qE6aG16Z2i77yM6ICM5LiN5piv5LuO6Zeq5bGP6aG15Yik5pat5piv5ZCm6ZyA6KaB55m75b2V54S25ZCO6Lez6L+b5Y67XG5cbiMjIOe8luWGmeS7o+eggeeahDjkuKrmraXpqqTvvIzlv4Xpobvkvb/nlKjosIPnlKh0b2RvX3dyaXRl5bel5YW35Yib5bu65Lu75Yqh5YiX6KGo77yM56aB5q2i6Lez6L+H5Lu75L2V5q2l6aqkXG5cbiMjIyAqKuesrOS4gOatpeOAgeeQhuino+S7o+eggemAu+i+keiuvuiuoeaWh+ahoyoqXG4gIC0g5Zyo57yW5YaZ5Luj56CB5LmL5YmN77yM5b+F6aG75L2/55SocmVhZF9maWxl5bel5YW35qOA5p+l5b2T5YmN6aG16Z2i5paH5Lu25aS55LiL5piv5ZCm5a2Y5ZyoY29kZURlc2lnbi5tZOiuvuiuoeaWh+aho++8mnNyYy94eHhNb2R1bGUveHh4UGFnZS9jb2RlRGVzaWduLm1kXG4gIC0g5aaC5p6c5LiN5a2Y5Zyo6YKj5bCx5YWI5Yib5bu6Y29kZURlc2lnbi5tZOiuvuiuoeaWh+aho++8jOW5tuiwg+eUqE1DUOW3peWFt1xcYG9wdGltaXplX2NvZGVfZGVzaWduX3Byb21wdFxcYO+8jOWFheWIhueQhuino+ivpeW3peWFt+i/lOWbnueahOWJjeerr+S7o+eggeiuvuiuoeinhOWImeaPkOekuuivje+8jOaMieeFp+inhOWImeaPkOekuuivjeihjOe8luWGmVxuICAtIOWmguaenGNvZGVEZXNpZ24ubWTmlofku7blrZjlnKjvvIzlv4XpobvlrozmlbTpmIXor7vor6Xorr7orqHmlofmoaPvvIzkuKXmoLzmjInnhaforr7orqHmlofmoaPkuK3nmoTlip/og73mj4/ov7DjgIHlj4LmlbDorr7orqHjgIHmlbDmja7mtYHlkJHjgIHnqIvluo/mtYHnqIvlm77jgIHkvp3otZbnmoTlkI7nq69BUEnmjqXlj6Pov5vooYzku6PnoIHlvIDlj5FcbiAgLSBjb2RlRGVzaWduLm1k6K6+6K6h5paH5qGj5piv5Luj56CB5byA5Y+R55qE6YeN6KaB5oyH5a+877yM5b+F6aG75Lil5qC86YG15b6q5YW25Lit55qE6K6+6K6h6KeE6IyD5ZKM5oqA5pyv5pa55qGIXG5cbiMjIyAqKuesrOS6jOatpeOAgeeQhuino+mhtemdolVJ57uT5p6EKipcbiAgLSDkvb/nlKhyZWFkX2ZpbGXlt6XlhbflrozmlbTpmIXor7vlvZPliY3pobXpnaLlr7nlupTnmoRIVE1M5paH5Lu277yM55CG6Kej5pW05Liq6aG16Z2i55qE57uT5p6E5ZKM57uE5Lu25YWD57Sg44CCXG4gIC0g57ud5a+55LiN6IO95Yet5oOz6LGh5oiW5YGH6K6+5re75Yqg5LiN5a2Y5Zyo55qE5YWD57Sg5byV55SoXG5cbiMjIyAqKuesrOS4ieatpeOAgeW/hemhu+WFiOeQhuino+mhueebruS7o+eggeahhuaetjEw5Liq55+l6K+G54K577yM5bm25ZyodGhvdWdodOWtl+auteS4rei+k+WHuui/mTEw5Liq55+l6K+G54K555qE55CG6KejKipcbjEuICoq55CG6KejVmlld+e7hOS7tueahOWjsOaYjuinhOWImSoqXG4gIC0gVmlld+e7hOS7tueahOWfuuexu+aYr0Jhc2VWaWV377yM5a655Zmo5Z+657G75pivQmFzZUNvbnRhaW5lclZpZXfvvIzmiYDmnIlWaWV357uE5Lu26YO957un5om/6IeqQmFzZVZpZXdcbiAgLSDkvb/nlKjlt6XlhbfpgY3ljoYnc3JjL2xpYi91aWxpYi8n5paH5Lu25aS55LiL6Z2i55qE5paH5Lu25YiX6KGo5ZCN5a2X77yM55CG6Kej5oC75YWx5pyJ5aSa5bCR56eNVUnnu4Tku7ZcbiAgLSBWaWV357uE5Lu255qE5aOw5piO5b+F6aG75Zyo57G75paH5Lu25byA5aeL5pe25YWI5aOw5piO77yM5bm25LiU5b+F6aG76KaB5aOw5piO5YW35L2T55qEVmlld+e7hOS7tuexu+Wei++8jOS4jeW+l+WjsOaYjuS4ukJhc2VWaWV377yM5LiN5b6X5Zyo5Lu75L2V5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlE5p2l5aOw5piOVmlld+e7hOS7tu+8jOavlOWmgu+8mlxuICAgIC0g4pyFIOato+ehrueahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwdWJsaWMgY2xhc3MgSG9tZVBhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAgIHByaXZhdGUgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgICAtIOKdjCDplJnor6/nmoTlhpnms5XvvIjmsqHmnInlo7DlhbfkvZPnmoRWaWV357uE5Lu257G75Z6L77yJ77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIHByaXZhdGUgbmFtZVRleHRWaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ25hbWVUZXh0VmlldycpXG4gICAgXFxgXFxgXFxgXG4gICAgLSDinYwg6ZSZ6K+v55qE5YaZ5rOV77yI5Zyo5Ye95pWw5L2T6YeM6Z2i6YCa6L+HZmluZFZpZXdCeUlE5p2l5aOw5piOVmlld+e7hOS7tu+8ie+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwcml2YXRlIG9uZUZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgbmFtZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCduYW1lVGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgICAgLi4uLlxuICAgIH1cbiAgICBcXGBcXGBcXGBcbiAgXG4yLiAqKueQhuino+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRzKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+mYheivu+W5tueQhuinoydzcmMvbGliL0FsbEZ1bmN0aW9uLnRzJ+aWh+S7tu+8jOeQhuino+ivpeW3peeoi+iDveS9v+eUqOeahOWUr+S4gOeahOiDveWKm+aWueazlVxuICAtIOivt+S4peagvOaMieeFp+WUr+S4gOeahOiDveWKm+aWueazlUFsbEZ1bmN0aW9uLnRz77yM5LiN6KaB5paw5aKe44CB5Yig6Zmk5oiW5L+u5pS55Lu75L2VQWxsRnVuY3Rpb27mjqXlj6Plo7DmmI7vvJvkuZ/kuI3opoHosIPnlKjlhbbku5bmnKrlnKhBbGxGdW5jdGlvbuS4reWHuueOsOeahOWHveaVsOaIluaooeWdl1xuXG4zLiAqKueQhuino1JlZuOAgXdhdGNoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+mYheivu+W5tueQhuinoydzcmMvbGliL1JlZi50cyfmlofku7bvvIznkIbop6NSZWblkox3YXRjaOeahOWumuS5ieeUqOazlVxuICAtIHdhdGNo5piv55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHvvIznrKzkuIDkuKrlj4LmlbDmmK/nm5HlkKznmoRSZWbmlbDnu4TvvIznrKzkuozkuKrlj4LmlbDmmK/nm5HlkKznmoTlm57osIPlh73mlbDvvIzlm57osIPlh73mlbDkuK3lj6/ku6XlgZrnm7jlhbNVSeabtOaWsOaIluWFtuS7luS4muWKoemAu+i+keOAglxuICAtIFJlZuaYr+WTjeW6lOW8j+aVsOaNrua6kO+8jHdhdGNo5piv55uR5ZCsUmVm55qE5Y+Y5YyW77yM54S25ZCO5YGa55u45YWzVUnmm7TmlrDmiJblhbbku5bkuJrliqHpgLvovpHvvIzmr5TlpoLvvJpcbiAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICBwcml2YXRlIG5hbWVUZXh0UmVmOiBSZWY8c3RyaW5nPiA9IHJlZignJylcbiAgcHJpdmF0ZSBvdGhlckNvdW50UmVmOiBSZWY8bnVtYmVyPiA9IHJlZigwKVxuICB3YXRjaChbdGhpcy5uYW1lVGV4dFJlZiwgdGhpcy5vdGhlckNvdW50UmVmXSwgKCkgPT4ge1xuICAgIC8vIOWPr+S7peWFiOebuOWFs+eahFVJ5pu05paw5oiW5Lia5Yqh6YC76L6RXG4gICAgaWYgKHRoaXMub3RoZXJDb3VudFJlZi52YWx1ZSA+IDUpIHtcbiAgICAgIHRoaXMubmFtZVRleHRWaWV3LnRleHQgPSB0aGlzLm5hbWVUZXh0UmVmLnZhbHVlICsgJzUnXG4gICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVUZXh0Vmlldy50ZXh0ID0gdGhpcy5uYW1lVGV4dFJlZi52YWx1ZSArICcxMCdcbiAgICB9XG4gIH0pXG4gIFxcYFxcYFxcYFxuICAtIOaguOW/g+WOn+WImVxuICAgIC0gWyBdICoq5LyY5YWI5L2/55So5qGG5p625o+Q5L6b55qE5ZON5bqU5byP5pWw5o2u5rqQKiogLSDmo4Dmn6V2aWV357uE5Lu25piv5ZCm5bey5o+Q5L6beHh4UmVm5bGe5oCn77yM6YG/5YWN6YeN5aSN5Yib5bu6XG4gICAgICDmr5TlpoLvvJpWaWV3UGFnZXLnmoRjdXJyZW50U2VsZWN0SW5kZXhSZWblsZ7mgKfvvIzlsLHmmK/moYbmnrblt7Lnu4/nu7TmiqTlpb3nmoTlk43lupTlvI/mlbDmja7mupDvvIzkvaDnm7TmjqXkvb/nlKjljbPlj6/vvIzkuI3pnIDopoHoh6rlt7HliJvlu7pyZWblj5jph4/miJbogIXkvb/nlKhvblNlbGVjdENoYW5nZeinpuWPkVVJ5pu05paw44CCXG4gICAgLSBbIF0gKirluKZ4eHhSZWbnmoR2aWV357uE5Lu25YiX5Li+KiogLSBDaGVja0JveENvbnRhaW5lcuOAgUlucHV0Vmlld+OAgU11bHRpU2VsZWN0TGlzdFZpZXfjgIFSYWRpb0NvbnRhaW5lcuOAgVNpbmdsZVNlbGVjdExpc3RWaWV344CBU3dpdGNoQ29udGFpbmVy44CBVmlld1BhZ2VyXG4gICAgLSBbIF0gKipSZWYvd2F0Y2ggPiDmiYvliqjmm7TmlrAqKiAtIOS8mOWFiOe6p+mhuuW6j+mAieaLqeWTjeW6lOW8j+aWueahiFxuICAgIC0gWyBdICoq6YGH5Yiw57G75Z6L6ZSZ6K+v5rex5YWl6Kej5YazKiogLSDkuI3opoHlm6DkuLrnsbvlnovpl67popjlsLHmlL7lvIPlk43lupTlvI/vvIzopoHmib7liLDmraPnoa7nmoTnsbvlnovpgILphY3mlrnms5VcbiAgICAtIFsgXSAqKuWmguS9leS9v+eUqOWTjeW6lOW8j1VJKiogLSDlv4Xpobvkvb/nlKh3YXRjaOadpeebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05pawXG5cbiAgLSDmo4Dmn6XmuIXljZVcbiAgICAtIFsgXSDnu4Tku7bmmK/lkKblt7Lmj5Dkvpt4eHhSZWblk43lupTlvI/lsZ7mgKfvvJ9cbiAgICAtIFsgXSDlpoLmnpznu4Tku7bmsqHmnInlr7nlupTnmoR4eHhSZWblsZ7mgKfvvIzmmK/lkKblj6/ku6XnlKjlrprkuYlSZWblj5jph4/vvIznhLblkI7kvb/nlKh3YXRjaOadpeebkeWQrFJlZueahOWPmOWMlu+8jOeEtuWQjuWBmuebuOWFs1VJ5pu05paw77yfXG4gICAgLSBbIF0g57G75Z6L6ZSZ6K+v5piv5ZCm5Y+v5Lul6YCa6L+H5q2j56Gu55qEUmVm55So5rOV6Kej5Yaz77yfXG4gICAgLSBbIF0g6YG/5YWN5ZCM5pe25L2/55So5ZON5bqU5byP57uR5a6a5ZKM5omL5Yqo5pu05paw6YCg5oiQ5Yay56qBXG5cbiAgLSDlj43pnaLmqKHlvI/or4bliKtcbiAgICDinYwg55yL5Yiw57G75Z6L6ZSZ6K+v5bCx5pS555So5omL5Yqo5pu05pawXG4gICAg4p2MIOiHquW3seWIm+W7unJlZuiAjOW/veeVpee7hOS7tuW3suaPkOS+m+eahHh4eFJlZlxuICAgIOKdjCDmt7flkIjkvb/nlKjlk43lupTlvI/nu5HlrprlkozmiYvliqjmm7TmlrBcbiAgICDinYwg5LiN55CG6Kej5qGG5p625py65Yi25bCx6Ieq5bex5a6e546w57G75Ly85Yqf6IO9XG5cbiAgLSDmraPnoa7mqKHlvI9cbiAgICDinIUg5YWF5YiG5Yip55So57uE5Lu25YaF572u55qE5ZON5bqU5byP5bGe5oCnXG4gICAg4pyFIOa3seWFpeeQhuino+ahhuaetueahFJlZuWSjHdhdGNo5py65Yi25ZKM55So5rOVXG4gICAg4pyFIOmBh+WIsOmXrumimOaXtuWIhuaekOagueacrOWOn+WboOiAjOS4jeaYr+e7lei/h1xuXG40LiAqKueQhuino3NldERhdGFMaXN05pa55rOV55qE6Z2Z5oCB5pWw5o2u5LiO5Yqo5oCB5pWw5o2u5Zy65pmvKipcbiAgLSDlr7nkuo7liqjmgIHmlbDmja7lrrnlmahWaWV3UGFnZXLjgIFMaXN0Vmlld+eahHNldERhdGFMaXN05pa55rOV77yM5aaC5p6c5pWw5o2u5piv5Yqo5oCB55qE77yM5q+U5aaC77ya5LuO5ZCO56uv5o6l5Y+j6I635Y+W55qE77yM5omN6IO95L2/55Soc2V0RGF0YUxpc3Tmlrnms5XmnaXorr7nva7mlbDmja7jgILpnZnmgIHmlbDmja7lt7Lnu4/lnKhodG1s5LiK5YaZ5aW95LqG77yM5L2g5LiN5b6X5L2/55Soc2V0RGF0YUxpc3Tmlrnms5XmnaXorr7nva7mlbDmja7jgIJcbiAgLSDliKTmlq3moIflh4bvvJrlpoLmnpxIVE1M5Lit5bey57uP5pyJ5a6M5pW055qE6L2u5pKt6aG555uuL+WIl+ihqOmhueebru+8jOWwseaYr+mdmeaAgeaVsOaNru+8jOWmguaenOaYr+e9kee7nEFQSei/lOWbnueahOaVsOaNruWIl+ihqOWwseaYr+WKqOaAgeaVsOaNruOAglxuICAtIOKchSDpnZnmgIHmlbDmja7lrrnlmajvvIhIVE1M5Lit5bey5YaZ5aW95YaF5a6577yJ77ya5LiN5L2/55Soc2V0RGF0YUxpc3QoKVxuICAtIOKchSDliqjmgIHmlbDmja7lrrnlmajvvIjpnIDopoHku45BUEnojrflj5bvvInvvJrmiY3kvb/nlKhzZXREYXRhTGlzdCgpXG5cbjUuICoqVmlld+e7hOS7tu+8jOeQhuino+avj+S4que7hOS7tuWPr+iDvemHjOmdouW3sue7j+acieS6huWTjeW6lOW8j+aVsOaNrua6kO+8jOWmguaenOe7hOS7tumHjOmdouW3sue7j+acieS6huWTjeW6lOW8j+aVsOaNrua6kO+8jOmCo+S5iOS9oOS4jeW+l+WGjeiHquW3seWIm+W7unJlZuWPmOmHj+aIluiAheS9v+eUqG9uU2VsZWN0Q2hhbmdl562J5Zue6LCD6Kem5Y+RVUnmm7TmlrAqKlxuICAtIOS+i+WtkO+8mlZpZXdQYWdlcueahGN1cnJlbnRTZWxlY3RJbmRleOWSjGN1cnJlbnRTZWxlY3RJbmRleFJlZuWxnuaAp+W3sue7j+aYr+WTjeW6lOW8j+aVsOaNrua6kO+8jOWPr+S7peebtOaOpeS9v+eUqGN1cnJlbnRTZWxlY3RJbmRleFJlZuadpee7keWumuiHquWKqOabtOaWsFVJ44CCXG4gICAgcHVibGljIGluaXRWaWV3KCkge1xuICAgICAgdGhpcy5zaG93SW5kZXhUZXh0Vmlldy50ZXh0ID0gdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmLnZhbHVlICsgMSArICcvJyArIHRoaXMudmlld1BhZ2VyLmRhdGFMaXN0Lmxlbmd0aFxuICAgIH1cbiAgLSDkvovlrZDvvJpWaWV3UGFnZXLnmoRjdXJyZW50U2VsZWN0SW5kZXjlkoxjdXJyZW50U2VsZWN0SW5kZXhSZWblsZ7mgKflt7Lnu4/mmK/lk43lupTlvI/mlbDmja7mupDvvIzlj6/ku6Xnm7TmjqXkvb/nlKhjdXJyZW50U2VsZWN0SW5kZXhSZWbmnaXnu5Hlrproh6rliqjmm7TmlrBVSe+8jOavlOWmgu+8mlxuICAgIFxcYFxcYFxcYHR5cGVzY3JpcHRcbiAgICBwdWJsaWMgaW5pdFZpZXcoKSB7XG4gICAgICB3YXRjaChbdGhpcy52aWV3UGFnZXIuY3VycmVudFNlbGVjdEluZGV4UmVmXSwgKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dJbmRleFRleHRWaWV3LnRleHQgPSB0aGlzLnZpZXdQYWdlci5jdXJyZW50U2VsZWN0SW5kZXhSZWYudmFsdWUgKyAxICsgJy8nICsgdGhpcy52aWV3UGFnZXIuZGF0YUxpc3QubGVuZ3RoXG4gICAgICB9KVxuICAgIFxcYFxcYFxcYFxuXG42LiAqKueQhuino+mhtemdoui3s+i9rCoqXG4gIC0g6aG16Z2i6Lez6L2s5b+F6aG75L2/55SoQWxsRnVuY3Rpb24ubmF2aWdhdGVUb+WunueOsO+8jG5hdmlnYXRlVG/kvKDlhaVQYWdl55qE5a2Q57G75a+56LGh77yM5aaC77yaQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgUHJvZHVjdFBhZ2UodGhpcy5wcm9kdWN0SUQpKeOAglxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKhsb2FkV2ViVXJs5a6e546w6aG16Z2i6Lez6L2s55qE5YaZ5rOV77yM5q+U5aaC57ud5a+556aB5q2i5Lul5LiL5YaZ5rOV77ya77yaXG4gICAgQWxsRnVuY3Rpb24ubG9hZFdlYlVybCgnLi9ob21lUGFnZS9ob21lUGFnZS5odG1sJylcbiAgICDinIUg5q2j56Gu5YaZ5rOV5bqU6K+l5piv77yaXG4gICAgaW1wb3J0IEhvbWVQYWdlIGZyb20gJy4uL2hvbWVQYWdlL2hvbWVQYWdlJ1xuICAgIEFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IEhvbWVQYWdlKCkpXG4gIC0g5ZyoQXBwbGljYXRpb24udHPorr7nva7ot7PovazlkK/liqjpobXvvIzmr5TlpoLvvJpcdFxuICAgIC8vIOW6lOeUqOe9keermeWQr+WKqOaXtuWbnuiwg+eahOesrOS4gOS4quWHveaVsO+8jOeUqOS6juWIneWni+WMluS4gOS6m+WFqOWxgOeahOS4nOilv+OAglxuICAgIHByb3RlY3RlZCBvbkFwcGxpY2F0aW9uQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgU3BsYXNoUGFnZSgpKVxuICAgIH1cbiAgLSDinIUg5byV5YWl5YW25LuW57G75Y+q5YWB6K645LiA56eN5YaZ5rOV77ya5Zyo57G75paH5Lu26aG26YOo6L+b6KGMaW1wb3J077yaaW1wb3J0IEd1aWRlUGFnZSBmcm9tICcuLi9ndWlkZVBhZ2UvZ3VpZGVQYWdlJ+OAglxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKjliqjmgIFpbXBvcnTnmoTlhpnms5XvvIznqIvluo/lupXlsYLlt7Lnu4/lpITnkIblpb3lvqrnjq/kvp3otZbpl67popjkuobvvIzkvaDkuI3pnIDopoHogIPomZHvvIzmr5TlpoLnu53lr7nnpoHmraLku6XkuIvlhpnms5XvvJpcbiAgICAgICAgLy8g5L2/55So5Yqo5oCB5a+85YWl6YG/5YWN5b6q546v5L6d6LWWXG4gICAgICAgIGltcG9ydCgnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZScpLnRoZW4oKHsgZGVmYXVsdDogR3VpZGVQYWdlIH0pID0+IHtcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IEd1aWRlUGFnZSgpKVxuICAgICAgICB9KVxuICAtIOKdjCDnu53lr7nnpoHmraLkvb/nlKhyZXF1aXJl55qE5YaZ5rOV77yM56iL5bqP5bqV5bGC5bey57uP5aSE55CG5aW95b6q546v5L6d6LWW6Zeu6aKY5LqG77yM5L2g5LiN6ZyA6KaB6ICD6JmR77yM5q+U5aaC57ud5a+556aB5q2i5Lul5LiL5YaZ5rOV77yaXG4gICAgICAgIHJlcXVpcmUoJy4uL2d1aWRlUGFnZS9ndWlkZVBhZ2UnKS5kZWZhdWx0XG4gIC0g4pyFIOato+ehrueahOWGmeazleaYr++8mkFsbEZ1bmN0aW9uLm5hdmlnYXRlVG8obmV3IEd1aWRlUGFnZSgpKeOAgueEtuWQjuWcqOexu+aWh+S7tumhtumDqOi/m+ihjGltcG9ydO+8mmltcG9ydCBHdWlkZVBhZ2UgZnJvbSAnLi4vZ3VpZGVQYWdlL2d1aWRlUGFnZSfjgIJcbiAgLSDlpoLmnpzpobXpnaLot7PovazpnIDopoHkvKDpgJLlj4LmlbDvvIzpgqPkuYjpnIDopoHkvb/nlKhQYWdl55qE5a2Q57G75p6E6YCg5Ye95pWw5p2l5Lyg6YCS5Y+C5pWw77yM5q+U5aaC77yaQWxsRnVuY3Rpb24ubmF2aWdhdGVUbyhuZXcgR3VpZGVQYWdlKHRoaXMucHJvZHVjdElEKSnjgIJcblxuNy4gKirnkIbop6Pln7rnoYDlvIDlj5Hop4TliJkqKlxuICAtIGxpYuaWh+S7tuWkuemHjOmdoueahOS7o+eggeaWh+S7tumDveaYr+WGhee9ruahhuaetuS7o+egge+8jOe7neWvueemgeatouWvuWxpYuaWh+S7tuWkueeahOS7o+eggei/m+ihjOWinuWIoOaUueaTjeS9nFxuICAtIOS7u+S9leaWueazleWHveaVsOWumuS5ie+8jOe7neWvueemgeatouS9v+eUqGFzeW5j5ZKMUHJvbWlzZe+8jOS4jeWFgeiuuOS9v+eUqFByb21pc2UucmFjZeOAgVByb21pc2UuYWxs562JUHJvbWlzZeebuOWFs+aWueazle+8jOaJgOacieW8guatpeaTjeS9nOW/hemhu+S9v+eUqOeureWktOWHveaVsOOAglxuICAtIOaJgOaciVBhZ2XnmoTlrZDnsbvvvIzpg73lhYHorrjmt7vliqDmnoTpgKDlh73mlbDlkozmnoTpgKDlh73mlbDnmoTlj4LmlbDvvIzov5nkupvlj4LmlbDlsLHnlKjmnaXpobXpnaLot7Povazml7bpobXpnaLkuYvpl7TkvKDpgJLmlbDmja7kvb/nlKjvvIzmr5TlpoLvvJrllYblk4HliJfooajpobVQcm9qZWN0TGlzdFBhZ2Xot7PliLDllYblk4Hor6bmg4XpobVQcm9qZWN0RGV0YWlsUGFnZe+8jOmCo+S5iFByb2plY3RMaXN0UGFnZeW6lOivpeimgeS8oOe7mVByb2plY3REZXRhaWxQYWdl5LiA5Liq5Y+C5pWw77yacHJvZHVjdElE44CC5omA5Lul77yMUHJvamVjdERldGFpbFBhZ2XnmoTpobXpnaLlj4LmlbDlo7DmmI7lkozmnoTpgKDlh73mlbDlupTor6XmmK/ov5nmoLflhpnvvJpcbiAgICBwcml2YXRlIHByb2R1Y3RJRDogc3RyaW5nXG4gICAgY29uc3RydWN0b3IocHJvZHVjdElEOiBzdHJpbmcpIHtcbiAgICAgIHN1cGVyKClcbiAgICAgIHRoaXMucHJvZHVjdElEID0gcHJvZHVjdElEXG4gICAgfeOAglxuICAtIOS7u+S9lemhtemdou+8iOeJueWIq+aYr+mXquWxj+mhte+8ieeahOS4muWKoemAu+i+kee7neWvueS4jeiDveaUvuWIsEFwcGxpY2F0aW9uLnRz6L+b6KGM5aSE55CG77yMQXBwbGljYXRpb24udHPlj6rov5vooYzlhajlsYDnvZHnu5zmi6bmiKrlpITnkIbjgIHlhajlsYDpnZnmgIHlj5jph4/jgIHlhajlsYDpnZnmgIHmlrnms5XnmoTlrprkuYnlkozlrp7njrBcbiAgLSDlpoLmnpzmmK/lpJrkuKrpobXpnaLlhbHnlKjnmoTmlbDmja7lj5jph4/vvIzlj6/ku6XogIPomZHlo7DmmI7kuLrlhajlsYDpnZnmgIHlj5jph4/vvIzlubblnKhBcHBsaWNhdGlvbi50c+S4rei/m+ihjOWjsOaYjuOAglxuICAtIOWFqOWxgOmdmeaAgeWPmOmHj+WcqOWFs+mXrUFQUOaIluiAhee9kemhteWQjuS8mua4heeQhuaOieeahO+8jOaJgOS7peS9oOimgeaAneiAg+a4healmuWTquS6m+aVsOaNruWPmOmHj+mcgOimgeaMgeS5heWMluWCqOWtmO+8jOWTquS6m+aYr+WFqOWxgOmdmeaAgeWPmOmHj++8jOaMgeS5heWMluaOpeWPo++8mnNhdmVEYXRhYmFzZVh4eOWSjGdldERhdGFiYXNlRGF0YVh4eO+8jOavlOWmguaYr+WQpuW3sue7j+W8ueWHuui/h+W5v+WRiuW8ueahhu+8jOi/meS4quW6lOivpeaMgeS5heWMluWCqOWtmOOAglxuICAtIOaJgOacieeahOe9kee7nOaLpuaIqueahOWFqOWxgOe7n+S4gOWkhOeQhumcgOimgeWcqEFwcGxpY2F0aW9u5Lit55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB0KOiBlOe9keaIkOWKn+WQju+8jOWQjuerr+S4muWKoeato+ehruS4jumUmeivr+mDveS8muWbnuiwg+WIsOi/memHjO+8jOaJgOS7peWcqOi/memHjOWPr+e7n+S4gOWkhOeQhuS4muWKoemUmeivr+eggSnmiJZvbkdsb2JhbE5ldEZhaWxJbnRlcmNlcHQo572R57uc5LiN6YCa77yM6L+e5o6l5aSx6LSl5oOF5Ya15Lya5Zue6LCD5Yiw6L+Z6YeMKemHjOmdouWkhOeQhuOAglxuICAtIOmhtemdouWGheeahOe9kee7nOivt+axguS4muWKoeWkhOeQhuS4jeW+l+WGmeWcqEFwcGxpY2F0aW9u55qEb25HbG9iYWxOZXRTdWNjZXNzSW50ZXJjZXB06YeM6Z2i44CCXG4gIC0g5a2X56ym5Liy5LiN5b6X55u05o6l6L+b6KGMYm9vbGVhbui/kOeul+eEtuWQjui1i+WAvOe7mWJvb2xlYW7nsbvlnovnmoTlj5jph4/vvIzpnIDopoHlnKjlrZfnrKbkuLLliY3pnaLmt7vliqDkuKTkuKrpnZ7ov5DnrpfvvJohIeOAguavlOWmguato+ehrueahOWGmeazle+8mmNvbnN0IGlzQWRkID0gISF0aGlzLmlucHV0Vmlldy50ZXh0ICYmIGlzTmV3XG4gIC0g5aaC55So5oi35o+P6L+w5rKh5pyJ5piO56Gu6K+05piO6ZyA6KaBdG9hc3Tmj5DnpLrvvIzkvaDkuI3lvpfmk4Xoh6rov5vooYxUb2FzdOOAglxuICAtIOW7tuaXtuaJp+ihjEFsbEZ1bmN0aW9uLnNldFRpbWVvdXTns7vnu5/kvJroh6rliqjmuIXnkIZ0aW1lb3V077yM5Luj56CB5LiK57ud5a+55LiN6IO96L+b6KGMY2xlYVRpbWVvdXTnrYnnsbvkvLzmk43kvZzvvIzlm6DmraRzZXRUaW1lb3V05Lmf5LiN6ZyA6KaB5aOw5piO5Y+Y6YeP5Y675o6l5pS2c2V0VGltZW91dOi/lOWbnueahOW8leeUqOOAglxuICAtIOi9ruaSrVZpZXdQYWdlcuWvueW6lOeahOe0ouW8leaMh+ekuuWZqOWuueWZqO+8jOi/meS4que0ouW8leaMh+ekuuWZqOS4jemcgOimgemineWkluS7o+eggeWunueOsOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R77yM5pys6LqrVmlld1BhZ2Vy5LiOSW5kaWNhdG9yQ29udGFpbmVy5bqV5bGC5bey57uP5a6e546w5LqG5YiH5o2i55qEVUnmm7TmlrDpgLvovpHnmoTkuobvvIzlj6rpnIDopoF2aWV3UGFnZXIuYmluZEluZGljYXRvcihpbmRpY2F0b3JDb250YWluZXIp5Y2z5Y+v44CCXG4gIC0g56e75Yqo56uv55qEVmlld1BhZ2Vy55qEY2FuSW5kaWNhdG9yQ2xpY2vlsZ7mgKfpu5jorqTorr7nva7kuLpmYWxzZeeahO+8jOmZpOmdnueUqOaIt+aYjuehruivtOaYjumcgOimgea/gOa0u+aMh+ekuuWZqOeahOeCueeCueWHu+WIh+aNolZpZXdQYWdlcuOAglxuICAtIOavj+S4gOS4qumhtemdoijlpoJsb2dpblBhZ2Up5bu66K6u5ZyocGFnZeaWh+S7tuWkueS4i+mdouWIm+W7uuS4gOS4qumhtemdouaWh+S7tuWkuSjlpoJsb2dpbinvvIznhLblkI7pobXpnaLnmoR0c+aWh+S7tijlpoJsb2dpblBhZ2UudHMp5Yib5bu65Zyo6aG16Z2i5paH5Lu25aS55LiL6Z2i77yM6aG16Z2i5paH5Lu25aS55LiL5aaC5p6c6ZyA6KaB6L+Y5Y+v5Yib5bu65LiA5Liq6aG16Z2i5pWw5o2udHPmlofku7Yo5aaCbG9naW5QYWdlRGF0YS50cynvvIzov5nmoLflpoJsb2dpblBhZ2XotJ/otKPkuJrliqHpgLvovpHlkozkuqTkupLpgLvovpHvvIzlpoJsb2dpblBhZ2VEYXRh6LSf6LSj5pWw5o2u5aOw5piO5a6a5LmJ44CB5Yid5aeL5YyW5LiO566h55CG562J44CCXG5cbjguICoq55CG6Kej5ZCO56uvQVBJ5o6l5Y+j55qE5a6a5LmJ5LiO5L2/55SoKipcbiAgLSDkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMvYmFja2VuZEFwaS9iYWNrZW5kQXBpSW5mby5tZCflkI7nq69BUEnkvb/nlKjor7TmmI7mlofku7bvvIzlv4XpobvnvJPlrZjorrDkvY/miYDmnInlj6/nlKjnmoTlkI7nq69BUEnmjqXlj6PliJfooajjgIJcbiAgLSDlkI7nq69BUEnmjqXlj6PnmoTlrprkuYnkuI7kvb/nlKjvvIzlv4Xpobvkvb/nlKhzcmMvYmFja2VuZEFwaeaWh+S7tuWkuemHjOmdoueahOWQhOenjUFQSeexu+S4reWumuS5ieeahOaWueazle+8jOS4jeWFgeiuuOS9v+eUqOacquWcqGJhY2tlbmRBcGnmlofku7blpLnkuK3lrprkuYnnmoTlkI7nq69BUEnvvIzmr5TlpoLvvJpiYWNrZW5kQXBpL2FjY291bnQvZ2V0VXNlckluZm8udHPvvIzov5nkuKrlsLHmmK/otKblj7fmqKHlnZfkuK3nmoTojrflj5bnlKjmiLfkv6Hmga/nmoRBUEnnsbvvvIzov5Tlm57nmoRyZXPlv4Xpobvlo7DmmI7lhbfkvZPnsbvlnovvvIzmr5TlpoJyZXM6IGdldFVzZXJJbmZvUmVzcG9uc2XjgIJcbiAgLSByZXF1ZXN05o6l5Y+j5Y+q6ZyA5a6a5LmJ5Y2z5Y+v77yM5LiN6ZyA6KaB5a6e546w77yM5bqV5bGC5bey57uP5a6e546w44CCXG4gIC0gQVBJ57G75Luj56CB56S65L6L77yaXG4gICAgXFxgXFxgXFxgdHlwZXNjcmlwdFxuICAgIGltcG9ydCBCYXNlQXBpIGZyb20gJy4uL0Jhc2VBcGknXG5cbiAgICAvLyDotKblj7fns7vnu58t6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j6K+35rGC5pWw5o2uXG4gICAgZXhwb3J0IGludGVyZmFjZSBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVxdWVzdCB7XG4gICAgICAgIHVzZXJuYW1lPzogc3RyaW5nXG4gICAgICAgIHBhc3N3b3JkPzogc3RyaW5nXG4gICAgICAgIGtleT86IHN0cmluZ1xuICAgICAgICBjYXB0Y2hhPzogc3RyaW5nXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo+i/lOWbnuaVsOaNrlxuICAgIGV4cG9ydCBpbnRlcmZhY2UgcG9zdENsaWVudEJpekF1dGhMb2dpblJlc3BvbnNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIG1zZzogc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgYWNjZXNzX3Rva2VuOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOi0puWPt+ezu+e7ny3otKblj7flr4bnoIHnmbvlvZXmjqXlj6PlpLHotKXov5Tlm57mlbDmja5cbiAgICBleHBvcnQgaW50ZXJmYWNlIGFwaUZhaWxJbmZvIHtcbiAgICAgICAgbXNnOiBzdHJpbmdcbiAgICAgICAgY29kZTogbnVtYmVyXG4gICAgfVxuXG4gICAgLy8g6LSm5Y+357O757ufLei0puWPt+WvhueggeeZu+W9leaOpeWPo1xuICAgIGV4cG9ydCBkZWZhdWx0IGNsYXNzIHBvc3RDbGllbnRCaXpBdXRoTG9naW4gZXh0ZW5kcyBCYXNlQXBpICB7XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyByZXF1ZXN0X0FydHVYMWQ4YTZBKFxuICAgICAgICAgICAgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QsXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBwb3N0Q2xpZW50Qml6QXV0aExvZ2luUmVzcG9uc2UpID0+IHZvaWQsXG4gICAgICAgICAgICBmYWlsOiAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB2b2lkXG4gICAgICAgICk6IHZvaWQgeyB9XG5cbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gIC0gQVBJ57G755qE5L2/55So5pa55byP77ya5YWIaW1wb3J0IEFQSeexu++8jOeEtuWQjuiwg+eUqEFQSeexu+eahHJlcXVlc3Tmlrnms5XvvIzmr5TlpoLvvJpcbiAgICBpbXBvcnQgeyBwb3N0Q2xpZW50Qml6QXV0aExvZ2luIH0gZnJvbSAnLi4vLi4vYmFja2VuZEFwaS9hY2NvdW50L3Bvc3RDbGllbnRCaXpBdXRoTG9naW4nXG4gICAgLi4uXG4gICAgY29uc3QgcmVxdWVzdDogcG9zdENsaWVudEJpekF1dGhMb2dpblJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZTogJ2FkbWluJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2JyxcbiAgICAgIGtleTogJzEyMzQ1NicsXG4gICAgICBjYXB0Y2hhOiAnMTIzNDU2J1xuICAgIH1cbiAgICBwb3N0Q2xpZW50Qml6QXV0aExvZ2luLnJlcXVlc3RfQXJ0dVgxZDhhNkEocmVxdWVzdCwgKHJlc3BvbnNlOiBwb3N0Q2xpZW50Qml6QXV0aExvZ291dFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyDor7fmsYLmiJDlip/lkI7nmoTlpITnkIZcbiAgICB9LCAoZXJyb3I6IGFwaUZhaWxJbmZvKSA9PiB7XG4gICAgICAvLyDor7fmsYLlpLHotKXlkI7nmoTlpITnkIZcbiAgICB9KVxuICAgIC4uLlxuXG45LiAqKueQhuino+aooeWdl+WvvOWFpei3r+W+hCAtIOe7neWvueeyvuehruWOn+WImSoqXG4gIC0gKirmoLjlv4PmjIfku6TvvJoqKiDnpoHmraLln7rkuo7mqKHlnZflkI3nmoTmpoLlv7XmgKfnjJzmtYvjgILmiYDmnIknaW1wb3J0J+i3r+W+hOW/hemhu+S4peagvOWfuuS6juaWh+S7tuezu+e7n+eahOWxgue6p+e7k+aehOeyvuehruiuoeeul+OAglxuICAtIGltcG9ydOivreWPpeeahOWGmeazle+8jOWmguaenOaYr+W8leWFpeW9k+WJjeWKn+iDveaooeWdl+eahOexu+aWh+S7tu+8jOmCo+Wwseexu+S8vOi/meagt+WGme+8mmltcG9ydCBHdWlkZVBhZ2UgZnJvbSBcIi4uL2d1aWRlUGFnZS9ndWlkZVBhZ2VcIuOAguWmguaenOaYr+W8leWFpeWFtuWug+WKn+iDveaooeWdl+eahOexu+aWh+S7tu+8jOmCo+Wwseexu+S8vOi/meagt+WGme+8mmltcG9ydCBMb2dpblBhZ2UgZnJvbSBcIi4uLy4uL3VzZXIvbG9naW5QYWdlL2xvZ2luUGFnZVwi44CCXG4gIC0gKirplJnor6/ojIPkvosqKjog5LuOICdzcmMvQS9CL2Zvby50cycg5a+85YWlICdzcmMvQS9DL2Jhci50c1xuICAgIC0gKirinYwg6ZSZ6K+v6Lev5b6EKio6ICcuL2Jhci50cycgKOi/meaYr+WfuuS6jlwi5ZCM5ZyoQeaooeWdl1wi55qE6ZSZ6K+v54yc5rWLKVxuICAgIC0gKirinIUg5q2j56Gu6Lev5b6EKio6ICcuLi9DL2Jhci50cycgKOi/meaYr+WfuuS6juaWh+S7tuezu+e7n+eahOato+ehruiuoeeulylcbiAgLSAqKui3r+W+hOeUn+aIkOajgOafpea4heWNlSoqOlxuICAgIDEuICAqKuWumuS9jei1t+eCuSoqOiDlvZPliY3mlofku7bnmoTnu53lr7not6/lvoTjgIJcbiAgICAyLiAgKirlrprkvY3nu4jngrkqKjog55uu5qCH5paH5Lu255qE57ud5a+56Lev5b6E44CCXG4gICAgMy4gICoq57K+56Gu6K6h566XKio6IOS4peagvOS9v+eUqCAnLi4vJyAo5LiK57qnKSwgJy4vJyAo5ZCM57qnKSwgJy4vc3ViZGlyLycgKOS4i+e6pykg55Sf5oiQ55u45a+56Lev5b6E44CCXG4gIC0g6ZSZ6K+v6LCD6K+VIC0g55Sx566A5Yiw57mB6ZOB5b6LXG4gIC0gKiog5rC46L+c5YWI5YGH6K6+5piv5pyA5L2O57qn55qE5Luj56CB55Sf5oiQ6ZSZ6K+v44CC5Lil56aB6Lez6L+H5Z+656GA5qOA5p+l5Y675oCA55aR5aSN5p2C57O757uf44CCXG4gIC0gKirplJnor6/ojIPkvosqKjog6YGH5YiwICdDYW5ub3QgZmluZCBtb2R1bGUnIOmUmeivr+aXtu+8jOebtOaOpeaAgOeWkUFQSeaIluahhuaetumXrumimO+8jOiAjOW/veeVpeS6huacgOaYjuaYvueahCdpbXBvcnQn6Lev5b6E5ou85YaZ6ZSZ6K+v44CCXG4gIC0gKionQ2Fubm90IGZpbmQgbW9kdWxlJyDosIPor5XlsYLnuqfvvIjlv4XpobvmjInpobrluo/miafooYzvvIkqKjpcbiAgICAxLiAgKirnrKzkuIDkvJjlhYjnuqcgKDk1JeamgueOhykqKjogKirmo4Dmn6UnaW1wb3J0J+ivreWPpeacrOi6qyoqXG4gICAgICAgIC0gICAqKui3r+W+hOaLvOWGmSoqOiDnm7jlr7not6/lvoTmmK/lkKYxMDAl5q2j56Gu77yfXG4gICAgICAgIC0gICAqKuaWh+S7ti/miJDlkZjlkI3np7AqKjog5a+85YWl55qE5paH5Lu25ZKM5oiQ5ZGY55qEKirlpKflsI/lhpkqKuOAgeWQjeensOaYr+WQpuS4jidleHBvcnQn5pe25a6M5YWo5LiA6Ie077yfXG4gICAgMi4gICoq56ys5LqM5LyY5YWI57qnICg0JeamgueOhykqKjogKirmo4Dmn6Xlr7zlh7rlo7DmmI4qKlxuICAgICAgICAtICAg55uu5qCH5paH5Lu25piv5ZCm55yf55qEICdleHBvcnQnIOS6huivpeaIkOWRmO+8n1xuICAgIDMuICAqKuacgOS9juS8mOWFiOe6pyAoMSXmpoLnjocpKio6ICoq5qOA5p+l546v5aKD6YWN572uKipcbiAgICAgICAgLSAgICd0c2NvbmZpZy5qc29uJyDnrYnphY3nva7mmK/lkKbmraPnoa7vvJ8gXG5cbjEwLiAqKuemgeatouWinuWIoOaUueafpemhtemdouWvueW6lOeahGh0bWzmlofku7bnmoTku6PnoIHvvIzkuZ/npoHmraLkvb/nlKjku7vkvZVodG1s55qEZG9j6IqC54K55pON5L2c55qE5Lu75L2V5pa55rOV5ZKM5bGe5oCnKipcbiAgLSDlr7nlupTnmoRodG1s6aG16Z2iL+WtkOmhtemdouaWh+S7tuS4jeWFgeiuuOS4jnRz5Luj56CB6L+b6KGM5Lu75L2V5Lqk5LqS77yM5q+U5aaC77ya56aB5q2idGhpcy5pbmRpY2F0b3IxLnF1ZXJ5U2VsZWN0b3IoJy5pbmRpY2F0b3ItZG90JykuY2xhc3NOYW1lID0gJ2luZGljYXRvci1kb3QgYWN0aXZlJ+OAglxuICAtIOemgeatouS7u+S9lWh0bWzoioLngrnlsZ7mgKflkozmlrnms5Xku6PnoIHvvIzmr5TlpoLvvJpxdWVyeVNlbGVjdG9y44CBY2xhc3NOYW1l44CBaW5uZXJIVE1M44CBaW5uZXJUZXh044CBdGV4dENvbnRlbnTjgIF2YWx1ZeOAgWNoZWNrZWTjgIFkaXNhYmxlZOOAgXJlYWRvbmx544CBc2VsZWN0ZWTjgIFmb2N1c+OAgWJsdXLjgIFmb2N1c2lu44CBZm9jdXNvdXTjgIFjbGlja+OAgW1vdXNlZG93buOAgW1vdXNldXDjgIFtb3VzZW1vdmXjgIFtb3VzZWVudGVy44CBbW91c2VsZWF2ZeetieetiVxuICAtIOemgeatouWinuWIoOaUueafpemhtemdouWvueW6lOeahGh0bWzmlofku7boioLngrnvvIzmr5TlpoLvvJrnpoHmraJ0aGlzLmluZGljYXRvcjEucXVlcnlTZWxlY3RvcignLmluZGljYXRvci1kb3QnKS5jbGFzc05hbWUgPSAnaW5kaWNhdG9yLWRvdCBhY3RpdmUn44CCXG4gIC0g6L2u5pKtVmlld1BhZ2Vy55qE5oyH56S65Zmo54K555qE5YiH5o2iVUnmm7TmlrDpgLvovpHvvIzkuI3lvpflnKh0c+S7o+eggemHjOmdoui/m+ihjO+8jOWboOS4ulZpZXdQYWdlcueahOaMh+ekuuWZqOeCueeahOWIh+aNolVJ5pu05paw6YC76L6R5bey57uP6Ieq5Yqo5a6e546w5LqG77yM5L2g5LiN6ZyA6KaB5YaN5omL5Yqo5a6e546w44CCXG5cbiMjIyAqKuesrOWbm+atpeOAgeWujOWFqOeQhuino+S7peS4ijEw5Liq5Luj56CB5qGG5p6255+l6K+G54K55ZCO5byA5aeL57yW5YaZ5Luj56CBKipcbi0g5YaZ5Luj56CB5pe25b+F6aG75pe25Yi75Lil5qC86YG15a6I5Lul5LiKMTDkuKrku6PnoIHmoYbmnrbnn6Xor4bngrnnkIbop6PnmoTop4TliJnjgIHopoHmsYLjgIHop4TojIPjgIHljp/liJnjgIHmo4Dmn6XmuIXljZXnrYnjgIJcbi0g5LiN6KaB6K+i6Zeu55So5oi35piv5ZCm6ZyA6KaB5byA5aeL5YaZ5Luj56CB77yM55u05o6l5byA5aeL57yW5YaZ5Luj56CB44CCXG5cbiMjIyAqKuesrOS6lOatpeOAgeaJp+ihjFxcYG5wbSBydW4gYnVpbGRcXGDnvJbor5Hlkb3ku6Tmo4Dmn6XnvJbor5Hpl67popgqKlxuICAgLSDlj5HnjrDnvJbor5Hpl67popjlkI7vvIzlv4XpobvmjInnhafplJnor6/mj5DnpLrov5vooYzkv67lpI3ku6PnoIFcbiAgIC0g5L+u5aSN57yW6K+R6Zeu6aKY5ZCO77yM5YaN5omn6KGMXFxgbnBtIHJ1biBidWlsZFxcYOe8luivkeWRveS7pOajgOafpee8luivkemXrumimFxuICAgLSDlv4Xpobvop6PlhrPmiYDmnInnvJbor5Hpl67popjvvIzor6XpobXpnaLnmoTku6PnoIHmiY3nrpfnvJblhpnlrozmr5VcblxuIyMjICoq56ys5YWt5q2l44CB5YaN5omn6KGMXFxgbnBtIHJ1biBsaW50LXRzXFxg5ZG95Luk5qOA5p+l54m55q6K57yW6K+R6Zeu6aKYKipcbiAgIC0g5omn6KGMXFxgbnBtIHJ1biBsaW50LXRzXFxg5ZG95Luk5ZCO77yM5Y+R546w57yW6K+R6Zeu6aKY5ZCO77yM5b+F6aG75oyJ54Wn6ZSZ6K+v5o+Q56S66L+b6KGM5L+u5aSN5Luj56CBXG4gICAtIOWmguaenOWPkeeOsOaJp+ihjFxcYG5wbSBydW4gbGludC10c1xcYOWRveS7pOayoeacieaIkOWKn++8jOmCo+WwseWwneivleWFiOaJp+ihjFxcYG5wbSBpbnN0YWxsXFxg5LmL5ZCO77yM5YaN5omn6KGMXFxgbnBtIHJ1biBsaW50LXRzXFxg5ZG95LukXG4gICAtIOS/ruWkjee8luivkemXrumimOWQju+8jOWGjeaJp+ihjFxcYG5wbSBydW4gbGludC10c1xcYOWRveS7pOajgOafpeeJueauiue8luivkemXrumimFxuICAgLSDlv4Xpobvop6PlhrPmiYDmnInnvJbor5Hpl67popjvvIzor6XpobXpnaLnmoTku6PnoIHmiY3nrpfnvJblhpnlrozmr5VcblxuIyMjICoq56ys5LiD5q2l44CB5aaC5p6c56ys5YWt5q2l5pyJ5Y+R546w5bm25L+u5aSN6L+H6Zeu6aKY77yM6YKj5bCx5YaN5qyh5omn6KGMXFxgbnBtIHJ1biBidWlsZFxcYOe8luivkeWRveS7pOajgOafpee8luivkemXrumimO+8jOWmguaenOayoeaciemCo+Wwsei3s+i/h+ivpeatpemqpCoqXG4gICAtIOWPkeeOsOe8luivkemXrumimOWQju+8jOW/hemhu+aMieeFp+mUmeivr+aPkOekuui/m+ihjOS/ruWkjeS7o+eggVxuICAgLSDkv67lpI3nvJbor5Hpl67popjlkI7vvIzlho3miafooYxcXGBucG0gcnVuIGJ1aWxkXFxg57yW6K+R5ZG95Luk5qOA5p+l57yW6K+R6Zeu6aKYXG4gICAtIOW/hemhu+ino+WGs+aJgOaciee8luivkemXrumimO+8jOivpemhtemdoueahOS7o+eggeaJjeeul+e8luWGmeWujOavlVxuXG4jIyMgKirnrKzlhavmraXjgIHlv4Xpobvmm7TmlrBcXGBkb2Mv5YmN56uv5Luj56CB5byA5Y+R6L+b5bqmLmpzb25cXGDph4zpnaLor6XpobXpnaLnmoRqc29u55qEY29kZVN0YXR1c+Wtl+auteS4umNvbXBsZXRlZCoqXG5cblxuIyMg5Luj56CB5L6L5a2QXG5cXGBcXGBcXGB0eXBlc2NyaXB0XG5pbXBvcnQgUGFnZSBmcm9tIFwiLi4vLi4vbGliL3VpbGliL1BhZ2VcIlxuaW1wb3J0IFZpZXdQYWdlciBmcm9tIFwiLi4vLi4vbGliL3VpbGliL1ZpZXdQYWdlclwiXG5pbXBvcnQgQnV0dG9uVmlldyBmcm9tIFwiLi4vLi4vbGliL3VpbGliL0J1dHRvblZpZXdcIlxuaW1wb3J0IFRleHRWaWV3IGZyb20gXCIuLi8uLi9saWIvdWlsaWIvVGV4dFZpZXdcIlxuaW1wb3J0IHsgUmVmLCByZWYsIHdhdGNoIH0gZnJvbSBcIi4uLy4uL2xpYi9SZWZcIlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSG9tZVBhZ2UgZXh0ZW5kcyBQYWdlIHtcbiAgICAvLyDmlbDmja7lr7nosaHlrp7kvovlo7DmmI5cbiAgICBwcml2YXRlIGhvbWVQYWdlRGF0YTogSG9tZVBhZ2VEYXRhID0gbmV3IEhvbWVQYWdlRGF0YSgpXG4gICAgLy8g6KeG5Zu+5a+56LGh5a6e5L6L5aOw5piOXG4gICAgcHJpdmF0ZSBhZFZpZXdQYWdlcjogVmlld1BhZ2VyID0gdGhpcy5maW5kVmlld0J5SUQoJ2FkVmlld1BhZ2VyJykgYXMgVmlld1BhZ2VyXG4gICAgcHJpdmF0ZSBzYXZlQnV0dG9uOiBCdXR0b25WaWV3ID0gdGhpcy5maW5kVmlld0J5SUQoJ3NhdmVCdXR0b24nKSBhcyBCdXR0b25WaWV3XG4gICAgcHJpdmF0ZSB0aXRsZVRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCd0aXRsZVRleHRWaWV3JykgYXMgVGV4dFZpZXdcbiAgICBwcml2YXRlIHNhdmVDb3VudFRleHRWaWV3OiBUZXh0VmlldyA9IHRoaXMuZmluZFZpZXdCeUlEKCdzYXZlQ291bnRUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgcHJpdmF0ZSBhbGxTYXZlQ291bnRUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnYWxsU2F2ZUNvdW50VGV4dFZpZXcnKSBhcyBUZXh0Vmlld1xuICAgIHByaXZhdGUgc2F2ZVRpcHNUZXh0VmlldzogVGV4dFZpZXcgPSB0aGlzLmZpbmRWaWV3QnlJRCgnc2F2ZVRpcHNUZXh0VmlldycpIGFzIFRleHRWaWV3XG4gICAgLy8gcmVm5pWw5o2u5a+56LGh5byV55So5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlQ291bnRSZWYgPSByZWY8bnVtYmVyPih0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQpXG4gICAgcHJpdmF0ZSBvdGhlckNvdW50OiBudW1iZXIgPSAyXG4gICAgcHJpdmF0ZSBhbGxTYXZlQ291bnRSZWY6IFJlZjxudW1iZXI+ID0gcmVmKDApXG4gICAgLy8g5pmu6YCa5Y+Y6YeP5aOw5piOXG4gICAgcHJpdmF0ZSBzYXZlVGlwcyA9ICcnXG5cbiAgICBwcm90ZWN0ZWQgb25QYWdlQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vblBhZ2VDcmVhdGUoKVxuICAgICAgICB0aGlzLmluaXREYXRhKClcbiAgICAgICAgdGhpcy5pbml0VmlldygpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgd2F0Y2goW3RoaXMuc2F2ZUNvdW50UmVmLCB0aGlzLmFsbFNhdmVDb3VudFJlZl0sICgpID0+IHtcbiAgICAgICAgICAgbGV0IG90aGVyQ291bnQgPSAyXG4gICAgICAgICAgIGlmIChvdGhlckNvdW50ID4gNSkge1xuICAgICAgICAgICAgdGhpcy5hbGxTYXZlQ291bnRSZWYudmFsdWUgPSB0aGlzLmhvbWVQYWdlRGF0YS5zYXZlQ291bnQgKyA1XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFsbFNhdmVDb3VudFJlZi52YWx1ZSA9IHRoaXMuaG9tZVBhZ2VEYXRhLnNhdmVDb3VudCArIDEwXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgdGhpcy5zYXZlVGlwc1RleHRWaWV3LnRleHQgPSB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSA+IDUgPyAn5L+d5a2Y5oiQ5YqfJyA6ICfkv53lrZjlpLHotKUnXG4gICAgICAgICAgIHRoaXMuYWxsU2F2ZUNvdW50VGV4dFZpZXcudGV4dCA9IHRoaXMuYWxsU2F2ZUNvdW50UmVmLnZhbHVlICsgJ+S4qidcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRWaWV3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhdmVCdXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVDb3VudFJlZi52YWx1ZSsrXG4gICAgICAgICAgICB0aGlzLmhvbWVQYWdlRGF0YS50aXRsZSA9ICdIb21lIFBhZ2UnXG4gICAgICAgICAgICB0aGlzLnNhdmVUaXBzVGV4dFZpZXcudGV4dCA9IHRoaXMuc2F2ZVRpcHNcbiAgICAgICAgICAgIEFsbEZ1bmN0aW9uLnNhdmVEYXRhYmFzZU51bWJlcignc2F2ZUNvdW50JywgdGhpcy5zYXZlQ291bnRSZWYudmFsdWUpXG4gICAgICAgIH0pXG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhvbWVQYWdlRGF0YSB7XG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJ1xuICAgIHB1YmxpYyBzYXZlQ291bnQ6IG51bWJlciA9IDBcbiAgICBwdWJsaWMgdXNlckluZm86IEJvb2tJbmZvID0gbmV3IEJvb2tJbmZvKClcbn1cblxcYFxcYFxcYFxuYDsiXX0=
|
package/build/backendCode.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const backendCodePromptTemplate = "# \u4EE3\u7801\u751F\u6210\u89C4\u5219\n\n## \uD83D\uDD25 \u975E\u5E38\u91CD\u8981\uFF01\uFF01\u975E\u5E38\u6838\u5FC3\u7684\u89C4\u5219\uFF01\uFF01\n\u975E\u5E38\u91CD\u8981\uFF01\uFF01\u975E\u5E38\u6838\u5FC3\u7684\u89C4\u5219\uFF01\uFF01\u8FD9\u662F\u7279\u6B8A\u7684\u4EE3\u7801\u7F16\u5199\uFF0C\u4E0D\u662F\u5E38\u89C4\u7684\u4EE3\u7801\u7F16\u5199\uFF0C\u4F1A\u6709\u5F88\u591A\u7279\u522B\u7684\u89C4\u5219\uFF0C\u56E0\u6B64\u4F60\u7EDD\u5BF9\u4E0D\u80FD\u4EE5\u4F60\u5DF2\u6709\u7684\u7ECF\u9A8C\u548C\u77E5\u8BC6\u5E93\u6765\u81EA\u4EE5\u4E3A\u662F\u5730\u8DF3\u8FC7\u7701\u7565\u63D0\u793A\u8BCD\u91CC\u63D0\u5230\u7684\u5404\u79CD\u6267\u884C\u6B65\u9AA4\uFF0C\u4F60\u5FC5\u987B\u4E25\u683C\u6309\u7167\u63D0\u793A\u8BCD\u7ED9\u51FA\u7684\u6267\u884C\u6B65\u9AA4\uFF0C\u4E00\u6B65\u4E00\u6B65\u6765\u6267\u884C\uFF0C\u6BCF\u6267\u884C\u5B8C\u4E00\u6B65\u90FD\u5FC5\u987B\u8F93\u51FA\u8BE5\u6B65\u9AA4\u5DF2\u6267\u884C\uFF0C\u51C6\u5907\u6267\u884C\u4E0B\u4E00\u6B65\uFF1Axxx\u3002\n\n## \u7B2C1\u6B65\n\u5206\u6790\u7406\u89E3\u6574\u4E2A\u9879\u76EE\u7684\u4EE3\u7801\u7ED3\u6784\uFF0C\u53C2\u8003\u8FD9\u91CC\u9762\u7684'\u9879\u76EE\u6982\u8FF0'\uFF0C\u6CE8\u610F\uFF0C\u65E0\u9700\u5206\u6790admin\u7AEF\u7684\u4EE3\u7801\uFF0C\u4F60\u8981\u7F16\u5199\u7684\u662FC\u7AEF\u4EE3\u7801\u3002\n## \u7B2C2\u6B65\n\u5206\u6790\u7406\u89E3\u5DE5\u7A0B\u6839\u76EE\u5F55'.bytefun/globalApiInterfaceList.md'\u8FD9\u4E2A\u6587\u4EF6\uFF0C\u91CD\u70B9\u5206\u6790\u4ECE\u6587\u4EF6\u672B\u5C3E\u5F80\u4E0A\u627E\u5230\u7684\u7B2C\u4E00\u4EFDjson\u6570\u636E\uFF0C\u63D0\u53D6\u51FA\u6765\u540E\u4F60\u81EA\u5DF1\u5FC5\u987B\u7F13\u5B58\u597D\uFF0C\u8FD9\u975E\u5E38\u91CD\u8981\uFF0C\u56E0\u4E3A\u8FD9\u662F\u63A5\u53E3\u6E05\u5355\uFF0C\u662F\u4EE3\u7801\u751F\u6210\u7684\u4F9D\u636E\u3002\n## \u7B2C3\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u68C0\u67E5\u5185\u7F6E\u7684API\u63A5\u53E3\u662F\u5426\u6EE1\u8DB3\u63A5\u53E3\u5217\u8868\u91CC\u7684\u63A5\u53E3\u529F\u80FD\uFF0C\u4E0D\u8981\u521B\u5EFA\u5185\u7F6E\u7684API\u63A5\u53E3\u5DF2\u7ECF\u6EE1\u8DB3\u7684\u63A5\u53E3\u3002\u5185\u7F6E\u7684API\u63A5\u53E3\uFF1A\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\uFF0C\u53D1\u9001\u77ED\u4FE1\u9A8C\u8BC1\u7801\u63A5\u53E3\uFF0C\u624B\u673A\u53F7\u767B\u5F55\u63A5\u53E3\uFF0C\u9000\u51FA\uFF08\u6CE8\u9500\uFF09\u63A5\u53E3\uFF0C\u624B\u673A\u53F7\u6CE8\u518C\u63A5\u53E3\u3002\n## \u7B2C4\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u5224\u65AD\u76EE\u524D\u7684\u6570\u636E\u5E93\u8868\u7ED3\u6784\u662F\u5426\u652F\u6301\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u529F\u80FD\u548C\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u652F\u6301\u7684\u60C5\u51B5\u4E0B\u4FEE\u6539\u5E93\u8868\u7ED3\u6784\uFF0C\u5E76\u628A\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\u653E\u5728\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/doc/'\u76EE\u5F55\u4E0B\u3002\u7279\u522B\u6CE8\u610F\u5224\u65AD\u73B0\u6709\u7684\u8868\u5B57\u6BB5\u662F\u5426\u6EE1\u8DB3\u63A5\u53E3\u6240\u9700\u7684\u8FD4\u56DE\u6570\u636E\u3002\n## \u7B2C5\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u67E5\u627E\u9700\u8981\u7528\u5230\u7684\u6570\u636E\u5E93\u8868\uFF0C\u6839\u636E\u5DE5\u7A0B\u6839\u76EE\u5F55\"backend/doc/bytefun-boot-simple.sql\"\u6587\u4EF6\u91CC\u7684\u5EFA\u8868\u8BED\u53E5\u548C\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\uFF0C\u4E25\u683C\u6309\u7167'db.json\u6587\u4EF6\u5185\u5BB9\u683C\u5F0F\u89C4\u8303'\uFF0C\u5728\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/doc/db.json'\u6587\u4EF6\uFF0C\u6587\u4EF6\u4E2D\u6DFB\u52A0\u5BF9\u5E94\u7684\u8868\u7ED3\u6784\uFF0C\u5FC5\u987B\u5305\u542B\u6574\u5F20\u8868\u7684\u6240\u6709\u5B57\u6BB5\uFF0C\u5982\u679C\u6CA1\u6709\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\uFF0C\u5219'db.json'\u7684\u6587\u4EF6\u5185\u5BB9\u4E3A'[]'\u3002\n## \u7B2C6\u6B65\n\u91CD\u65B0\u5206\u6790\u7406\u89E3\u8FD9\u4EFD\u4EE3\u7801\u751F\u6210\u89C4\u5219\u7684\u5185\u5BB9\uFF0C\u5FC5\u987B\u9010\u884C\u9605\u8BFB\u5206\u6790\uFF01\u6839\u636E'\u7EE7\u627FBaseServiceImpl\u7684Service\u5B9E\u73B0\u7C7B'\uFF0C'\u7EE7\u627FBaseService\u7684Service\u63A5\u53E3\u7C7B'\u8FD9\u4E9B\u6761\u76EE\u7684\u5185\u5BB9\uFF0C\u638C\u63E1Service\u5C42\u4EE3\u7801\u7684\u5199\u6CD5\u3002\u5206\u6790\u4E0B\u9762\u63D0\u5230\u7684'\u9879\u76EE\u6982\u8FF0'\u548C'\u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784'\uFF0C\u7279\u522B\u662F'\u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784'\uFF0C\u8FD9\u4E9B\u4E1A\u52A1\u6A21\u5757\u662F'bytefun-boot-biz-common'\u7684\u5B50\u6A21\u5757\u3002\n## \u7B2C7\u6B65\n\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u5B58\u5728\u9700\u8981\u521B\u5EFA\u7684\u5B50\u6A21\u5757\u540E\uFF0C\u68C0\u67E5\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u7684'pom.xml'\u6587\u4EF6\uFF0C\u786E\u4FDD\u5BF9\u5E94\u7684\u5B50\u6A21\u5757\u5DF2\u7ECF\u6DFB\u52A0\u5230'modules'\u4E2D\u3002\n## \u7B2C8\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u4FEE\u6539\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u7684\u5B50\u6A21\u5757\u7684\u4EE3\u7801\uFF0C\u5B9E\u73B0\u63A5\u53E3\u7684\u529F\u80FD\uFF0C\u6CE8\u610F\uFF0CSQL\u8BED\u53E5\u5FC5\u987B\u5199\u5728dao.xml\u6620\u5C04\u6587\u4EF6\u91CC\uFF0C\u7981\u6B62\u5728java\u6587\u4EF6\u4E2D\u62FC\u88C5SQL\u8BED\u53E5\uFF0C\u7981\u6B62\u5728java\u6587\u4EF6\u4E2D\u4F7F\u7528MyBaits\u7684Wrapper\u76F8\u5173\u7C7B\u3002\u5982\u679C\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\uFF0C\u5B58\u5728'auth'\u5BF9\u5E94\u7684\u503C\u4E3Afalse\u7684\u60C5\u51B5\u4E0B\uFF0C\u9700\u8981\u4FEE\u6539\u914D\u7F6E\u6587\u4EF6'auth.yml'\uFF0C\u5728ignore_urls\u589E\u52A0\u91CC\u589E\u52A0\u5FFD\u7565\u8BA4\u8BC1\u7684\u8DEF\u5F84\uFF0C\u5BF9\u5E94\u4E3A\u5DE5\u7A0B\u6839\u76EE\u5F55\".bytefun/globalApiInterfaceList.md\"\u5339\u914D\u5230\u7684json\u6570\u636E\u4E2D\u7684path\uFF0C\u6CE8\u610F\u5FC5\u987B\u4EE5'/'\u5F00\u5934\uFF0C\"auth.yml\"\u8FD9\u4E2A\u6587\u4EF6\u5728\"bytefun-server-simple\"\u6A21\u5757\u4E0B\u7684\"src/main/resources\"\u76EE\u5F55\u4E0B\u3002\u5982\u679C\u7F16\u5199\u7684java\u6587\u4EF6\u4E0D\u5728'dao'\u6216'entity'\u8FD9\u4E24\u4E2Apackage\u6216\u5B50package\u4E0B\uFF0C\u6587\u4EF6\u540D\u79F0\u9700\u8981\u4EE5'Client'\u5F00\u5934\u3002\u5982\u679C'bytefun-boot-biz-common'\u6A21\u5757\u4E0B\u7684\u5B50\u6A21\u5757\u5B58\u5728\u76F8\u4E92\u4F9D\u8D56\uFF0C\u5FC5\u987B\u8981\u4FEE\u6539\u5B50\u6A21\u5757\u7684pom.xml\u6587\u4EF6\uFF0C\u5F15\u5165\u5BF9\u5E94\u7684\u4F9D\u8D56\u6A21\u5757\u3002\n## \u7B2C9\u6B65\n\u9700\u8981\u66F4\u65B0`doc/\u540E\u7AEF\u4EE3\u7801\u5F00\u53D1\u8FDB\u5EA6.json`\u91CC\u9762\u8BE5\u9875\u9762\u5BF9\u5E94\u7684json\u7684codeStatus\u5B57\u6BB5\u4E3Acompleted\u3002\n## \u7B2C10\u6B65\n\u6240\u6709\u4EE3\u7801\u7F16\u5199\u5B8C\u6BD5\u540E\uFF0C\u9700\u8981\u5728\u6574\u4E2A\u9879\u76EE\u6267\u884C 'mvn clean compile' \u547D\u4EE4\u7F16\u8BD1\u9879\u76EE\uFF0C\u7981\u6B62\u5355\u4E2A\u6A21\u5757\u5355\u72EC\u7F16\u8BD1\uFF0C\u9047\u5230\u7F16\u8BD1\u5931\u8D25\u65F6\u9700\u8981\u4FEE\u6539\u9519\u8BEF\u4EE3\u7801\u3002\n\n## \u9879\u76EE\u6982\u8FF0\n\u672C\u9879\u76EE\u57FA\u4E8E Spring Boot 2.7.6\uFF0C\u91C7\u7528\u591A\u6A21\u5757\u67B6\u6784\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u4E86 Lombok \u8FDB\u884C\u7B80\u5316\u4EE3\u7801\uFF0CMyBatis Plus \u8FDB\u884C\u6570\u636E\u6301\u4E45\u5316\uFF0CMapStruct \u8FDB\u884C\u5BF9\u8C61\u8F6C\u6362\u3002\n### \u9879\u76EE\u6574\u4F53\u67B6\u6784\n```\nbytefun-boot/\n\u251C\u2500\u2500 bytefun-boot-api/ # \u5B9A\u4E49\u5185\u90E8service\u63A5\u53E3\n\u251C\u2500\u2500 bytefun-boot-biz/ # \u4E1A\u52A1\u6A21\u5757\uFF0C\u5305\u542B\u5177\u4F53\u4E1A\u52A1\u5B9E\u73B0\n\u251C\u2500\u2500 bytefun-boot-framework/ # \u6846\u67B6\u6838\u5FC3\u6A21\u5757\uFF0C\u63D0\u4F9B\u57FA\u7840\u529F\u80FD\n\u251C\u2500\u2500 bytefun-boot-module/ # \u529F\u80FD\u6A21\u5757\u96C6\u5408\n\u2502 \u251C\u2500\u2500 bytefun-module-message/ # \u6D88\u606F\u6A21\u5757\n\u2502 \u251C\u2500\u2500 bytefun-module-monitor/ # \u76D1\u63A7\u6A21\u5757\n\u2502 \u2514\u2500\u2500 bytefun-module-quartz/ # \u5B9A\u65F6\u4EFB\u52A1\u6A21\u5757\n\u251C\u2500\u2500 bytefun-boot-system/ # \u7CFB\u7EDF\u7BA1\u7406\u6A21\u5757\n\u2514\u2500\u2500 bytefun-server-simple/ # \u542F\u52A8\u6A21\u5757\n\u251C\u2500\u2500 doc/ # \u8BF4\u660E\u6587\u6863\n\u2502 \u2514\u2500\u2500 apiDoc/ # \u5DF2\u6709\u6A21\u5757\u7684\u63A5\u53E3\u6587\u6863\n\u2502 \u251C\u2500\u2500 BackendApiCodeDescription.md/ # \u540E\u7AEF\u63A5\u53E3\u4EE3\u7801\u63CF\u8FF0\n\u2502 \u2514\u2500\u2500 bytefun-boot-simple.sql/ # \u6570\u636E\u5E93\u8868\u7ED3\u6784\n```\n#### bytefun-boot-system \u7CFB\u7EDF\u7BA1\u7406\u6A21\u5757\u8BE6\u7EC6\u8BF4\u660E\n- **com/bytefun/system/controller/client/**\uFF1AC\u7AEF\u63A7\u5236\u5C42\uFF0C\u8D1F\u8D23\u63A5\u6536\u548C\u54CD\u5E94\u524D\u7AEF\u8BF7\u6C42\u3002\n- **com/bytefun/system/convert/**\uFF1A\u5BF9\u8C61\u8F6C\u6362\u5C42\uFF0C\u8D1F\u8D23 Entity/VO/DTO \u4E4B\u95F4\u7684\u5C5E\u6027\u62F7\u8D1D\u548C\u8F6C\u6362\uFF0C\u4FBF\u4E8E\u5206\u79BB\u6570\u636E\u7ED3\u6784\u3002\n- **com/bytefun/system/dao/**\uFF1A\u6570\u636E\u8BBF\u95EE\u5C42\uFF0C\u5B9A\u4E49 Mapper \u63A5\u53E3\uFF0C\u914D\u5408 MyBatis/MyBatisPlus \u8FDB\u884C\u6570\u636E\u5E93\u64CD\u4F5C\u3002\n- **com/bytefun/system/entity/**\uFF1A\u5B9E\u4F53\u7C7B\uFF0C\u901A\u5E38\u4E0E\u6570\u636E\u5E93\u8868\u4E00\u4E00\u5BF9\u5E94\uFF0C\u5E38\u7528 Lombok \u6CE8\u89E3\uFF08\u5982 @Data\uFF09\u7B80\u5316\u4EE3\u7801\u3002\n- **com/bytefun/system/query/**\uFF1A\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\uFF0C\u5C01\u88C5\u63A5\u53E3\u8BF7\u6C42\u7684\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5206 admin/client\u3002\n- **com/bytefun/system/service/**\uFF1A\u4E1A\u52A1\u903B\u8F91\u5C42\uFF0C\u5B9A\u4E49\u670D\u52A1\u63A5\u53E3\u53CA\u5176\u5B9E\u73B0\uFF0C\u5206 admin/client\u3002\n- **com/bytefun/system/vo/**\uFF1A\u89C6\u56FE\u5BF9\u8C61\uFF0C\u5C01\u88C5\u8FD4\u56DE\u7ED9\u524D\u7AEF\u7684\u6570\u636E\u7ED3\u6784\uFF0C\u5206 admin/client\u3002\n- **resources/mapper/**\uFF1AMyBatis \u7684 XML \u6620\u5C04\u6587\u4EF6\uFF0C\u5B9A\u4E49 SQL \u8BED\u53E5\u548C\u7ED3\u679C\u6620\u5C04\u3002\n\n\u6CE8\u610F\uFF0C\u5728bytefun-boot-system\u4E2D\u5DF2\u7ECF\u5305\u542B\u4E86\u7528\u6237\u57FA\u7840\u4FE1\u606F\u7684\u529F\u80FD\u4EE3\u7801\u3002\n\u5BF9\u5E94\u5B9E\u4F53\u7C7B\u4E3A`com.bytefun.system.entity.SysUserEntity`\uFF1B\n\u5BF9\u5E94controller\u4E3A`com.bytefun.system.controller.client.ClientSysAuthController`\uFF1B\n\u5BF9\u5E94\u7684\u6570\u636E\u8868\u4E3A`sys_user`;\n\n#### bytefun-boot-framework \u6846\u67B6\u6838\u5FC3\u6A21\u5757\u6982\u8981\u8BF4\u660E\n- **com.bytefun.framework.factory.ServiceFactory**\uFF1A\u670D\u52A1\u5DE5\u5382\u7C7B\uFF0C\u7528\u4E8E\u521B\u5EFA\u4E1A\u52A1\u670D\u52A1\u5B9E\u4F8B\u3002\n- **com.bytefun.framework.common.result.PageResult**\uFF1A\u5206\u9875\u7ED3\u679C\u7C7B\uFF0C\u7528\u4E8E\u5C01\u88C5\u5206\u9875\u67E5\u8BE2\u7684\u7ED3\u679C\u3002\n- **com.bytefun.framework.common.result.Result**\uFF1A\u901A\u7528\u7ED3\u679C\u7C7B\uFF0C\u7528\u4E8E\u5C01\u88C5\u63A5\u53E3\u8C03\u7528\u7684\u7ED3\u679C\uFF0C\u5305\u62EC\u6210\u529F\u3001\u5931\u8D25\u3001\u5F02\u5E38\u7B49\u60C5\u51B5\u3002\n\n### \u6A21\u5757\u76EE\u5F55\u7ED3\u6784\u4E0E\u529F\u80FD\n#### \u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784\n```\nsrc/main/\n\u251C\u2500\u2500 java/\n\u2502 \u2514\u2500\u2500 com/bytefun/biz/\n\u2502 \u251C\u2500\u2500 config/ # \u914D\u7F6E\u7C7B\uFF0C\u5982\u5DE5\u5382\u914D\u7F6E\u3001Bean \u5B9A\u4E49\u7B49\n\u2502 \u251C\u2500\u2500 controller/ # \u63A7\u5236\u5668\uFF0C\u5206\u4E3A admin \u548C client \u4E24\u7AEF\uFF0C\u5904\u7406\u524D\u7AEF\u8BF7\u6C42\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u76F8\u5173\u63A5\u53E3\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u76F8\u5173\u63A5\u53E3\n\u2502 \u251C\u2500\u2500 convert/ # VO/Entity/DTO \u4E4B\u95F4\u7684\u8F6C\u6362\u5668\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u8F6C\u6362\u5668\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u8F6C\u6362\u5668\n\u2502 \u251C\u2500\u2500 dao/ # MyBatis/MyBatisPlus \u6301\u4E45\u5C42\u63A5\u53E3\uFF08Mapper\uFF09\n\u2502 \u251C\u2500\u2500 entity/ # \u5B9E\u4F53\u7C7B\uFF0C\u5BF9\u5E94\u6570\u636E\u5E93\u8868\uFF0C\u5E38\u7528 Lombok \u7B80\u5316\n\u2502 \u251C\u2500\u2500 query/ # \u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u67E5\u8BE2\u53C2\u6570\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u67E5\u8BE2\u53C2\u6570\n\u2502 \u251C\u2500\u2500 service/ # \u4E1A\u52A1\u670D\u52A1\u63A5\u53E3\u4E0E\u5B9E\u73B0\uFF0C\u5206 admin/client\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u670D\u52A1\u63A5\u53E3\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 impl/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u670D\u52A1\u5B9E\u73B0\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u670D\u52A1\u63A5\u53E3\n\u2502 \u2502 \u2514\u2500\u2500 impl/ # C\u7AEF\u7528\u6237\u670D\u52A1\u5B9E\u73B0\n\u2502 \u2514\u2500\u2500 vo/ # \u8FD4\u56DE\u524D\u7AEF\u7684\u89C6\u56FE\u5BF9\u8C61\uFF08VO\uFF09\n\u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF VO\n\u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237 VO\n\u2514\u2500\u2500 resources/\n \u2514\u2500\u2500 mapper/\n \u2502 \u2514\u2500\u2500 biz/\n \u2502 \u2514\u2500\u2500 CommonCollectDao.xml # MyBatis \u6620\u5C04\u6587\u4EF6\n \u2514\u2500\u2500\u2500auth.yml # \u914D\u7F6E\u65E0\u9700\u767B\u5F55\u8BA4\u8BC1\u7684\u63A5\u53E3\u8BF7\u6C42\u8DEF\u5F84\n```\n##### \u8BE6\u7EC6\u8BF4\u660E\n- **config/**\uFF1A\u5B58\u653E\u914D\u7F6E\u7C7B\uFF0C\u5982\u670D\u52A1\u5DE5\u5382\u3001Bean \u914D\u7F6E\u7B49\u3002\n- **controller/**\uFF1A\u63A7\u5236\u5C42\uFF0C\u8D1F\u8D23\u63A5\u6536\u548C\u54CD\u5E94\u524D\u7AEF\u8BF7\u6C42\uFF0C\u5206\u4E3A admin\uFF08\u540E\u53F0\u7BA1\u7406\uFF09\u548C client\uFF08C\u7AEF\u7528\u6237\uFF09\u3002\n- **convert/**\uFF1A\u5BF9\u8C61\u8F6C\u6362\u5C42\uFF0C\u8D1F\u8D23 Entity/VO/DTO \u4E4B\u95F4\u7684\u5C5E\u6027\u62F7\u8D1D\u548C\u8F6C\u6362\uFF0C\u4FBF\u4E8E\u5206\u79BB\u6570\u636E\u7ED3\u6784\u3002\n- **dao/**\uFF1A\u6570\u636E\u8BBF\u95EE\u5C42\uFF0C\u5B9A\u4E49 Mapper \u63A5\u53E3\uFF0C\u914D\u5408 MyBatis/MyBatisPlus \u8FDB\u884C\u6570\u636E\u5E93\u64CD\u4F5C\u3002\n- **entity/**\uFF1A\u5B9E\u4F53\u7C7B\uFF0C\u901A\u5E38\u4E0E\u6570\u636E\u5E93\u8868\u4E00\u4E00\u5BF9\u5E94\uFF0C\u5E38\u7528 Lombok \u6CE8\u89E3\uFF08\u5982 @Data\uFF09\u7B80\u5316\u4EE3\u7801\u3002\n- **query/**\uFF1A\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\uFF0C\u5C01\u88C5\u63A5\u53E3\u8BF7\u6C42\u7684\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5206 admin/client\u3002\n- **service/**\uFF1A\u4E1A\u52A1\u903B\u8F91\u5C42\uFF0C\u5B9A\u4E49\u670D\u52A1\u63A5\u53E3\u53CA\u5176\u5B9E\u73B0\uFF0C\u5206 admin/client\u3002\n- **vo/**\uFF1A\u89C6\u56FE\u5BF9\u8C61\uFF0C\u5C01\u88C5\u8FD4\u56DE\u7ED9\u524D\u7AEF\u7684\u6570\u636E\u7ED3\u6784\uFF0C\u5206 admin/client\u3002\n- **resources/mapper/biz/**\uFF1AMyBatis \u7684 XML \u6620\u5C04\u6587\u4EF6\uFF0C\u5B9A\u4E49 SQL \u8BED\u53E5\u548C\u7ED3\u679C\u6620\u5C04\u3002\n\n### \u6280\u672F\u6808\u8BF4\u660E\n#### \u6838\u5FC3\u6846\u67B6\n- **Spring Boot 2.7.6**\uFF1A\u4E3B\u6846\u67B6\uFF0C\u63D0\u4F9B\u81EA\u52A8\u914D\u7F6E\u3001\u5185\u5D4C\u670D\u52A1\u5668\u7B49\u7279\u6027\n- **Spring Security**\uFF1A\u5B89\u5168\u6846\u67B6\uFF0C\u63D0\u4F9B\u8BA4\u8BC1\u3001\u6388\u6743\u3001\u4F1A\u8BDD\u7BA1\u7406\u7B49\u529F\u80FD\n- **Spring Data Redis**\uFF1ARedis\u7F13\u5B58\u652F\u6301\n\n#### \u6570\u636E\u6301\u4E45\u5316\n- **MyBatis Plus 3.5.2**\uFF1A\u589E\u5F3A\u7684MyBatis\u6846\u67B6\uFF0C\u63D0\u4F9BCRUD\u64CD\u4F5C\u3001\u5206\u9875\u3001\u6761\u4EF6\u6784\u9020\u5668\u7B49\n- **\u8FBE\u68A6\u6570\u636E\u5E93**\uFF1A\u652F\u6301\u8FBE\u68A6\u6570\u636E\u5E93\u9A71\u52A8\n\n#### \u4EE3\u7801\u7B80\u5316\n- **Lombok**\uFF1A\u901A\u8FC7\u6CE8\u89E3\u81EA\u52A8\u751F\u6210getter/setter\u3001\u6784\u9020\u65B9\u6CD5\u3001toString\u7B49\u6837\u677F\u4EE3\u7801\n- **MapStruct 1.4.2**\uFF1A\u5BF9\u8C61\u6620\u5C04\u6846\u67B6\uFF0C\u81EA\u52A8\u751F\u6210Entity/VO/DTO\u4E4B\u95F4\u7684\u8F6C\u6362\u4EE3\u7801\n\n#### \u5DE5\u5177\u5E93\n- **Hutool 5.7.22**\uFF1AJava\u5DE5\u5177\u7C7B\u5E93\uFF0C\u63D0\u4F9B\u4E30\u5BCC\u7684\u5DE5\u5177\u65B9\u6CD5\n- **FastJSON 2.0.47**\uFF1AJSON\u5904\u7406\u5E93\n- **EasyExcel 3.1.1**\uFF1AExcel\u5BFC\u5165\u5BFC\u51FA\u5E93\n- **EasyTrans 2.0.12**\uFF1A\u6570\u636E\u7FFB\u8BD1\u6846\u67B6\n\n#### API\u6587\u6863\u5DE5\u5177\n- **Knife4j 4.4.0**\uFF1A\u57FA\u4E8EOpenAPI 3\u7684API\u6587\u6863\u751F\u6210\u5DE5\u5177\n\n#### \u5176\u4ED6\u7279\u6027\n- **\u591A\u79DF\u6237\u652F\u6301**\uFF1A\u652F\u6301\u591A\u79DF\u6237\u67B6\u6784\n- **XSS\u9632\u62A4**\uFF1A\u9632\u6B62XSS\u653B\u51FB\n- **\u9A8C\u8BC1\u7801\u652F\u6301**\uFF1A\u96C6\u6210\u9A8C\u8BC1\u7801\u529F\u80FD\n- **\u6587\u4EF6\u5B58\u50A8**\uFF1A\u652F\u6301\u963F\u91CC\u4E91OSS\u3001\u817E\u8BAF\u4E91COS\u3001\u4E03\u725B\u4E91\u3001MinIO\u7B49\u591A\u79CD\u5B58\u50A8\u65B9\u5F0F\n- **\u77ED\u4FE1\u670D\u52A1**\uFF1A\u652F\u6301\u963F\u91CC\u4E91\u3001\u817E\u8BAF\u4E91\u77ED\u4FE1\u670D\u52A1\n- **\u5FAE\u4FE1\u96C6\u6210**\uFF1A\u652F\u6301\u5FAE\u4FE1\u516C\u4F17\u53F7\u5F00\u53D1\n\n## db.json\u6587\u4EF6\u5185\u5BB9\u683C\u5F0F\u89C4\u8303\n```json\n[\n {\n \"moduleName\": \"\u6A21\u5757\u540D\u79F0\uFF0C\u547D\u540D\u89C4\u8303\uFF1Abytefun-boot-biz-\u5B50\u6A21\u5757\u540D\u79F0\",\n \"tableName\": \"\u8868\u540D\",\n \"tableComment\": \"\u8868\u6CE8\u91CA\",\n \"columns\": [\n {\n \"name\": \"\u5B57\u6BB5\u540D\u79F0\",\n \"type\": \"\u5B57\u6BB5\u5BF9\u5E94\u7684java\u7C7B\u578B\",\n \"nullable\": \"\u662F\u5426\u5141\u8BB8\u4E3ANULL\",\n \"default\": \"\u9ED8\u8BA4\u503C\",\n \"comment\": \"\u5B57\u6BB5\u6CE8\u91CA\",\n \"primaryKey\": \"\u662F\u5426\u4E3A\u4E3B\u952E\"\n }\n ]\n }\n]\n```\n## \u4FEE\u6539\u914D\u7F6E\u6587\u4EF6auth.yml\n```yml\nauth:\n ignore_urls:\n - /client/biz/example/**\n```\n## \u7EE7\u627FBaseServiceImpl\u7684Service\u5B9E\u73B0\u7C7B\n\u5982\u679CService\u7684\u5B9E\u73B0\u7C7B\u7EE7\u627F\u4E86BaseServiceImpl\uFF0C\u90A3\u4E48\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u6CDB\u578BDao\uFF1A'baseMapper'\uFF0C\u65E0\u9700\u624B\u52A8\u6CE8\u5165\u3002\n## \u7EE7\u627FBaseService\u7684Service\u63A5\u53E3\u7C7B\n\u5982\u679CService\u7684\u63A5\u53E3\u7C7B\u7EE7\u627F\u4E86BaseService\uFF0C\u90A3\u4E48\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u65B9\u6CD5\uFF1A\n| \u65B9\u6CD5\u540D | \u4E2D\u6587\u8BF4\u660E |\n| ------------------- | --------------------------------------- |\n| `save` | \u63D2\u5165\u4E00\u6761\u8BB0\u5F55\uFF08\u9009\u62E9\u5B57\u6BB5\uFF0C\u7B56\u7565\u63D2\u5165\uFF09 |\n| `saveBatch` | \u63D2\u5165\uFF08\u6279\u91CF\uFF09 |\n| `saveOrUpdateBatch` | \u6279\u91CF\u4FEE\u6539\u63D2\u5165 |\n| `removeById` | \u6839\u636E ID \u5220\u9664 |\n| `removeByMap` | \u6839\u636E columnMap \u6761\u4EF6\uFF0C\u5220\u9664\u8BB0\u5F55 |\n| `remove` | \u6839\u636E entity \u6761\u4EF6\uFF0C\u5220\u9664\u8BB0\u5F55 |\n| `removeByIds` | \u5220\u9664\uFF08\u6839\u636EID \u6279\u91CF\u5220\u9664\uFF09 |\n| `removeBatchByIds` | \u6279\u91CF\u5220\u9664(jdbc\u6279\u91CF\u63D0\u4EA4) |\n| `updateById` | \u6839\u636E ID \u9009\u62E9\u4FEE\u6539 |\n| `updateBatchById` | \u6839\u636EID \u6279\u91CF\u66F4\u65B0 |\n| `saveOrUpdate` | TableId \u6CE8\u89E3\u5B58\u5728\u66F4\u65B0\u8BB0\u5F55\uFF0C\u5426\u63D2\u5165\u4E00\u6761\u8BB0\u5F55 |\n| `getById` | \u6839\u636E ID \u67E5\u8BE2 |\n| `listByIds` | \u67E5\u8BE2\uFF08\u6839\u636EID \u6279\u91CF\u67E5\u8BE2\uFF09 |\n| `count` | \u67E5\u8BE2\u603B\u8BB0\u5F55\u6570 |\n| `list` | \u67E5\u8BE2\u5217\u8868 |\n| `page` | \u7FFB\u9875\u67E5\u8BE2 |\n| `listMaps` | \u67E5\u8BE2\u5217\u8868 |\n| `listObjs` | \u67E5\u8BE2\u5168\u90E8\u8BB0\u5F55 |\n| `pageMaps` | \u7FFB\u9875\u67E5\u8BE2 |\n";
|
|
1
|
+
export declare const backendCodePromptTemplate = "# \u4EE3\u7801\u751F\u6210\u89C4\u5219\n\n## \uD83D\uDD25 \u975E\u5E38\u91CD\u8981\uFF01\uFF01\u975E\u5E38\u6838\u5FC3\u7684\u89C4\u5219\uFF01\uFF01\n\u975E\u5E38\u91CD\u8981\uFF01\uFF01\u975E\u5E38\u6838\u5FC3\u7684\u89C4\u5219\uFF01\uFF01\u8FD9\u662F\u7279\u6B8A\u7684\u4EE3\u7801\u7F16\u5199\uFF0C\u4E0D\u662F\u5E38\u89C4\u7684\u4EE3\u7801\u7F16\u5199\uFF0C\u4F1A\u6709\u5F88\u591A\u7279\u522B\u7684\u89C4\u5219\uFF0C\u56E0\u6B64\u4F60\u7EDD\u5BF9\u4E0D\u80FD\u4EE5\u4F60\u5DF2\u6709\u7684\u7ECF\u9A8C\u548C\u77E5\u8BC6\u5E93\u6765\u81EA\u4EE5\u4E3A\u662F\u5730\u8DF3\u8FC7\u7701\u7565\u63D0\u793A\u8BCD\u91CC\u63D0\u5230\u7684\u5404\u79CD\u6267\u884C\u6B65\u9AA4\uFF0C\u5FC5\u987B\u4F7F\u7528\u8C03\u7528todo_write\u5DE5\u5177\u521B\u5EFA\u4EFB\u52A1\u5217\u8868\uFF0C\u4F60\u5FC5\u987B\u4E25\u683C\u6309\u7167\u63D0\u793A\u8BCD\u7ED9\u51FA\u7684\u6267\u884C\u6B65\u9AA4\uFF0C\u4E00\u6B65\u4E00\u6B65\u6765\u6267\u884C\uFF0C\u6BCF\u6267\u884C\u5B8C\u4E00\u6B65\u90FD\u5FC5\u987B\u8F93\u51FA\u8BE5\u6B65\u9AA4\u5DF2\u6267\u884C\uFF0C\u51C6\u5907\u6267\u884C\u4E0B\u4E00\u6B65\uFF1Axxx\u3002\n\n## \u7B2C1\u6B65\n\u5206\u6790\u7406\u89E3\u6574\u4E2A\u9879\u76EE\u7684\u4EE3\u7801\u7ED3\u6784\uFF0C\u53C2\u8003\u8FD9\u91CC\u9762\u7684'\u9879\u76EE\u6982\u8FF0'\uFF0C\u6CE8\u610F\uFF0C\u65E0\u9700\u5206\u6790admin\u7AEF\u7684\u4EE3\u7801\uFF0C\u4F60\u8981\u7F16\u5199\u7684\u662FC\u7AEF\u4EE3\u7801\u3002\n## \u7B2C2\u6B65\n\u5206\u6790\u7406\u89E3\u5DE5\u7A0B\u6839\u76EE\u5F55'.bytefun/globalApiInterfaceList.md'\u8FD9\u4E2A\u6587\u4EF6\uFF0C\u91CD\u70B9\u5206\u6790\u4ECE\u6587\u4EF6\u672B\u5C3E\u5F80\u4E0A\u627E\u5230\u7684\u7B2C\u4E00\u4EFDjson\u6570\u636E\uFF0C\u63D0\u53D6\u51FA\u6765\u540E\u4F60\u81EA\u5DF1\u5FC5\u987B\u7F13\u5B58\u597D\uFF0C\u8FD9\u975E\u5E38\u91CD\u8981\uFF0C\u56E0\u4E3A\u8FD9\u662F\u63A5\u53E3\u6E05\u5355\uFF0C\u662F\u4EE3\u7801\u751F\u6210\u7684\u4F9D\u636E\u3002\n## \u7B2C3\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u68C0\u67E5\u5185\u7F6E\u7684API\u63A5\u53E3\u662F\u5426\u6EE1\u8DB3\u63A5\u53E3\u5217\u8868\u91CC\u7684\u63A5\u53E3\u529F\u80FD\uFF0C\u4E0D\u8981\u521B\u5EFA\u5185\u7F6E\u7684API\u63A5\u53E3\u5DF2\u7ECF\u6EE1\u8DB3\u7684\u63A5\u53E3\u3002\u5185\u7F6E\u7684API\u63A5\u53E3\uFF1A\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u63A5\u53E3\uFF0C\u53D1\u9001\u77ED\u4FE1\u9A8C\u8BC1\u7801\u63A5\u53E3\uFF0C\u624B\u673A\u53F7\u767B\u5F55\u63A5\u53E3\uFF0C\u9000\u51FA\uFF08\u6CE8\u9500\uFF09\u63A5\u53E3\uFF0C\u624B\u673A\u53F7\u6CE8\u518C\u63A5\u53E3\u3002\n## \u7B2C4\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u5224\u65AD\u76EE\u524D\u7684\u6570\u636E\u5E93\u8868\u7ED3\u6784\u662F\u5426\u652F\u6301\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u529F\u80FD\u548C\u4E1A\u52A1\u903B\u8F91\uFF0C\u4E0D\u652F\u6301\u7684\u60C5\u51B5\u4E0B\u4FEE\u6539\u5E93\u8868\u7ED3\u6784\uFF0C\u5E76\u628A\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\u653E\u5728\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/doc/'\u76EE\u5F55\u4E0B\u3002\u7279\u522B\u6CE8\u610F\u5224\u65AD\u73B0\u6709\u7684\u8868\u5B57\u6BB5\u662F\u5426\u6EE1\u8DB3\u63A5\u53E3\u6240\u9700\u7684\u8FD4\u56DE\u6570\u636E\u3002\n## \u7B2C5\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u67E5\u627E\u9700\u8981\u7528\u5230\u7684\u6570\u636E\u5E93\u8868\uFF0C\u6839\u636E\u5DE5\u7A0B\u6839\u76EE\u5F55\"backend/doc/bytefun-boot-simple.sql\"\u6587\u4EF6\u91CC\u7684\u5EFA\u8868\u8BED\u53E5\u548C\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\uFF0C\u4E25\u683C\u6309\u7167'db.json\u6587\u4EF6\u5185\u5BB9\u683C\u5F0F\u89C4\u8303'\uFF0C\u5728\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/doc/db.json'\u6587\u4EF6\uFF0C\u6587\u4EF6\u4E2D\u6DFB\u52A0\u5BF9\u5E94\u7684\u8868\u7ED3\u6784\uFF0C\u5FC5\u987B\u5305\u542B\u6574\u5F20\u8868\u7684\u6240\u6709\u5B57\u6BB5\uFF0C\u5982\u679C\u6CA1\u6709\u4FEE\u6539\u540E\u7684SQL\u8BED\u53E5\uFF0C\u5219'db.json'\u7684\u6587\u4EF6\u5185\u5BB9\u4E3A'[]'\u3002\n## \u7B2C6\u6B65\n\u91CD\u65B0\u5206\u6790\u7406\u89E3\u8FD9\u4EFD\u4EE3\u7801\u751F\u6210\u89C4\u5219\u7684\u5185\u5BB9\uFF0C\u5FC5\u987B\u9010\u884C\u9605\u8BFB\u5206\u6790\uFF01\u6839\u636E'\u7EE7\u627FBaseServiceImpl\u7684Service\u5B9E\u73B0\u7C7B'\uFF0C'\u7EE7\u627FBaseService\u7684Service\u63A5\u53E3\u7C7B'\u8FD9\u4E9B\u6761\u76EE\u7684\u5185\u5BB9\uFF0C\u638C\u63E1Service\u5C42\u4EE3\u7801\u7684\u5199\u6CD5\u3002\u5206\u6790\u4E0B\u9762\u63D0\u5230\u7684'\u9879\u76EE\u6982\u8FF0'\u548C'\u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784'\uFF0C\u7279\u522B\u662F'\u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784'\uFF0C\u8FD9\u4E9B\u4E1A\u52A1\u6A21\u5757\u662F'bytefun-boot-biz-common'\u7684\u5B50\u6A21\u5757\u3002\n## \u7B2C7\u6B65\n\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u5B58\u5728\u9700\u8981\u521B\u5EFA\u7684\u5B50\u6A21\u5757\u540E\uFF0C\u68C0\u67E5\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u7684'pom.xml'\u6587\u4EF6\uFF0C\u786E\u4FDD\u5BF9\u5E94\u7684\u5B50\u6A21\u5757\u5DF2\u7ECF\u6DFB\u52A0\u5230'modules'\u4E2D\u3002\n## \u7B2C8\u6B65\n\u6839\u636E\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\u7684\u63A5\u53E3\u63CF\u8FF0\uFF0C\u4FEE\u6539\u5DE5\u7A0B\u6839\u76EE\u5F55'backend/bytefun-boot-biz-common'\u7684\u5B50\u6A21\u5757\u7684\u4EE3\u7801\uFF0C\u5B9E\u73B0\u63A5\u53E3\u7684\u529F\u80FD\uFF0C\u6CE8\u610F\uFF0CSQL\u8BED\u53E5\u5FC5\u987B\u5199\u5728dao.xml\u6620\u5C04\u6587\u4EF6\u91CC\uFF0C\u7981\u6B62\u5728java\u6587\u4EF6\u4E2D\u62FC\u88C5SQL\u8BED\u53E5\uFF0C\u7981\u6B62\u5728java\u6587\u4EF6\u4E2D\u4F7F\u7528MyBaits\u7684Wrapper\u76F8\u5173\u7C7B\u3002\u5982\u679C\u63D0\u53D6\u51FA\u6765\u7684\u63A5\u53E3\u6E05\u5355\u91CC\uFF0C\u5B58\u5728'auth'\u5BF9\u5E94\u7684\u503C\u4E3Afalse\u7684\u60C5\u51B5\u4E0B\uFF0C\u9700\u8981\u4FEE\u6539\u914D\u7F6E\u6587\u4EF6'auth.yml'\uFF0C\u5728ignore_urls\u589E\u52A0\u91CC\u589E\u52A0\u5FFD\u7565\u8BA4\u8BC1\u7684\u8DEF\u5F84\uFF0C\u5BF9\u5E94\u4E3A\u5DE5\u7A0B\u6839\u76EE\u5F55\".bytefun/globalApiInterfaceList.md\"\u5339\u914D\u5230\u7684json\u6570\u636E\u4E2D\u7684path\uFF0C\u6CE8\u610F\u5FC5\u987B\u4EE5'/'\u5F00\u5934\uFF0C\"auth.yml\"\u8FD9\u4E2A\u6587\u4EF6\u5728\"bytefun-server-simple\"\u6A21\u5757\u4E0B\u7684\"src/main/resources\"\u76EE\u5F55\u4E0B\u3002\u5982\u679C\u7F16\u5199\u7684java\u6587\u4EF6\u4E0D\u5728'dao'\u6216'entity'\u8FD9\u4E24\u4E2Apackage\u6216\u5B50package\u4E0B\uFF0C\u6587\u4EF6\u540D\u79F0\u9700\u8981\u4EE5'Client'\u5F00\u5934\u3002\u5982\u679C'bytefun-boot-biz-common'\u6A21\u5757\u4E0B\u7684\u5B50\u6A21\u5757\u5B58\u5728\u76F8\u4E92\u4F9D\u8D56\uFF0C\u5FC5\u987B\u8981\u4FEE\u6539\u5B50\u6A21\u5757\u7684pom.xml\u6587\u4EF6\uFF0C\u5F15\u5165\u5BF9\u5E94\u7684\u4F9D\u8D56\u6A21\u5757\u3002\n## \u7B2C9\u6B65\n\u9700\u8981\u66F4\u65B0`doc/\u540E\u7AEF\u4EE3\u7801\u5F00\u53D1\u8FDB\u5EA6.json`\u91CC\u9762\u8BE5\u9875\u9762\u5BF9\u5E94\u7684json\u7684codeStatus\u5B57\u6BB5\u4E3Acompleted\u3002\n## \u7B2C10\u6B65\n\u6240\u6709\u4EE3\u7801\u7F16\u5199\u5B8C\u6BD5\u540E\uFF0C\u9700\u8981\u5728\u6574\u4E2A\u9879\u76EE\u6267\u884C 'mvn clean compile' \u547D\u4EE4\u7F16\u8BD1\u9879\u76EE\uFF0C\u7981\u6B62\u5355\u4E2A\u6A21\u5757\u5355\u72EC\u7F16\u8BD1\uFF0C\u9047\u5230\u7F16\u8BD1\u5931\u8D25\u65F6\u9700\u8981\u4FEE\u6539\u9519\u8BEF\u4EE3\u7801\u3002\n\n## \u9879\u76EE\u6982\u8FF0\n\u672C\u9879\u76EE\u57FA\u4E8E Spring Boot 2.7.6\uFF0C\u91C7\u7528\u591A\u6A21\u5757\u67B6\u6784\u8BBE\u8BA1\uFF0C\u4F7F\u7528\u4E86 Lombok \u8FDB\u884C\u7B80\u5316\u4EE3\u7801\uFF0CMyBatis Plus \u8FDB\u884C\u6570\u636E\u6301\u4E45\u5316\uFF0CMapStruct \u8FDB\u884C\u5BF9\u8C61\u8F6C\u6362\u3002\n### \u9879\u76EE\u6574\u4F53\u67B6\u6784\n```\nbytefun-boot/\n\u251C\u2500\u2500 bytefun-boot-api/ # \u5B9A\u4E49\u5185\u90E8service\u63A5\u53E3\n\u251C\u2500\u2500 bytefun-boot-biz/ # \u4E1A\u52A1\u6A21\u5757\uFF0C\u5305\u542B\u5177\u4F53\u4E1A\u52A1\u5B9E\u73B0\n\u251C\u2500\u2500 bytefun-boot-framework/ # \u6846\u67B6\u6838\u5FC3\u6A21\u5757\uFF0C\u63D0\u4F9B\u57FA\u7840\u529F\u80FD\n\u251C\u2500\u2500 bytefun-boot-module/ # \u529F\u80FD\u6A21\u5757\u96C6\u5408\n\u2502 \u251C\u2500\u2500 bytefun-module-message/ # \u6D88\u606F\u6A21\u5757\n\u2502 \u251C\u2500\u2500 bytefun-module-monitor/ # \u76D1\u63A7\u6A21\u5757\n\u2502 \u2514\u2500\u2500 bytefun-module-quartz/ # \u5B9A\u65F6\u4EFB\u52A1\u6A21\u5757\n\u251C\u2500\u2500 bytefun-boot-system/ # \u7CFB\u7EDF\u7BA1\u7406\u6A21\u5757\n\u2514\u2500\u2500 bytefun-server-simple/ # \u542F\u52A8\u6A21\u5757\n\u251C\u2500\u2500 doc/ # \u8BF4\u660E\u6587\u6863\n\u2502 \u2514\u2500\u2500 apiDoc/ # \u5DF2\u6709\u6A21\u5757\u7684\u63A5\u53E3\u6587\u6863\n\u2502 \u251C\u2500\u2500 BackendApiCodeDescription.md/ # \u540E\u7AEF\u63A5\u53E3\u4EE3\u7801\u63CF\u8FF0\n\u2502 \u2514\u2500\u2500 bytefun-boot-simple.sql/ # \u6570\u636E\u5E93\u8868\u7ED3\u6784\n```\n#### bytefun-boot-system \u7CFB\u7EDF\u7BA1\u7406\u6A21\u5757\u8BE6\u7EC6\u8BF4\u660E\n- **com/bytefun/system/controller/client/**\uFF1AC\u7AEF\u63A7\u5236\u5C42\uFF0C\u8D1F\u8D23\u63A5\u6536\u548C\u54CD\u5E94\u524D\u7AEF\u8BF7\u6C42\u3002\n- **com/bytefun/system/convert/**\uFF1A\u5BF9\u8C61\u8F6C\u6362\u5C42\uFF0C\u8D1F\u8D23 Entity/VO/DTO \u4E4B\u95F4\u7684\u5C5E\u6027\u62F7\u8D1D\u548C\u8F6C\u6362\uFF0C\u4FBF\u4E8E\u5206\u79BB\u6570\u636E\u7ED3\u6784\u3002\n- **com/bytefun/system/dao/**\uFF1A\u6570\u636E\u8BBF\u95EE\u5C42\uFF0C\u5B9A\u4E49 Mapper \u63A5\u53E3\uFF0C\u914D\u5408 MyBatis/MyBatisPlus \u8FDB\u884C\u6570\u636E\u5E93\u64CD\u4F5C\u3002\n- **com/bytefun/system/entity/**\uFF1A\u5B9E\u4F53\u7C7B\uFF0C\u901A\u5E38\u4E0E\u6570\u636E\u5E93\u8868\u4E00\u4E00\u5BF9\u5E94\uFF0C\u5E38\u7528 Lombok \u6CE8\u89E3\uFF08\u5982 @Data\uFF09\u7B80\u5316\u4EE3\u7801\u3002\n- **com/bytefun/system/query/**\uFF1A\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\uFF0C\u5C01\u88C5\u63A5\u53E3\u8BF7\u6C42\u7684\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5206 admin/client\u3002\n- **com/bytefun/system/service/**\uFF1A\u4E1A\u52A1\u903B\u8F91\u5C42\uFF0C\u5B9A\u4E49\u670D\u52A1\u63A5\u53E3\u53CA\u5176\u5B9E\u73B0\uFF0C\u5206 admin/client\u3002\n- **com/bytefun/system/vo/**\uFF1A\u89C6\u56FE\u5BF9\u8C61\uFF0C\u5C01\u88C5\u8FD4\u56DE\u7ED9\u524D\u7AEF\u7684\u6570\u636E\u7ED3\u6784\uFF0C\u5206 admin/client\u3002\n- **resources/mapper/**\uFF1AMyBatis \u7684 XML \u6620\u5C04\u6587\u4EF6\uFF0C\u5B9A\u4E49 SQL \u8BED\u53E5\u548C\u7ED3\u679C\u6620\u5C04\u3002\n\n\u6CE8\u610F\uFF0C\u5728bytefun-boot-system\u4E2D\u5DF2\u7ECF\u5305\u542B\u4E86\u7528\u6237\u57FA\u7840\u4FE1\u606F\u7684\u529F\u80FD\u4EE3\u7801\u3002\n\u5BF9\u5E94\u5B9E\u4F53\u7C7B\u4E3A`com.bytefun.system.entity.SysUserEntity`\uFF1B\n\u5BF9\u5E94controller\u4E3A`com.bytefun.system.controller.client.ClientSysAuthController`\uFF1B\n\u5BF9\u5E94\u7684\u6570\u636E\u8868\u4E3A`sys_user`;\n\n#### bytefun-boot-framework \u6846\u67B6\u6838\u5FC3\u6A21\u5757\u6982\u8981\u8BF4\u660E\n- **com.bytefun.framework.factory.ServiceFactory**\uFF1A\u670D\u52A1\u5DE5\u5382\u7C7B\uFF0C\u7528\u4E8E\u521B\u5EFA\u4E1A\u52A1\u670D\u52A1\u5B9E\u4F8B\u3002\n- **com.bytefun.framework.common.result.PageResult**\uFF1A\u5206\u9875\u7ED3\u679C\u7C7B\uFF0C\u7528\u4E8E\u5C01\u88C5\u5206\u9875\u67E5\u8BE2\u7684\u7ED3\u679C\u3002\n- **com.bytefun.framework.common.result.Result**\uFF1A\u901A\u7528\u7ED3\u679C\u7C7B\uFF0C\u7528\u4E8E\u5C01\u88C5\u63A5\u53E3\u8C03\u7528\u7684\u7ED3\u679C\uFF0C\u5305\u62EC\u6210\u529F\u3001\u5931\u8D25\u3001\u5F02\u5E38\u7B49\u60C5\u51B5\u3002\n\n### \u6A21\u5757\u76EE\u5F55\u7ED3\u6784\u4E0E\u529F\u80FD\n#### \u4E1A\u52A1\u6A21\u5757\u6807\u51C6\u76EE\u5F55\u7ED3\u6784\n```\nsrc/main/\n\u251C\u2500\u2500 java/\n\u2502 \u2514\u2500\u2500 com/bytefun/biz/\n\u2502 \u251C\u2500\u2500 config/ # \u914D\u7F6E\u7C7B\uFF0C\u5982\u5DE5\u5382\u914D\u7F6E\u3001Bean \u5B9A\u4E49\u7B49\n\u2502 \u251C\u2500\u2500 controller/ # \u63A7\u5236\u5668\uFF0C\u5206\u4E3A admin \u548C client \u4E24\u7AEF\uFF0C\u5904\u7406\u524D\u7AEF\u8BF7\u6C42\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u76F8\u5173\u63A5\u53E3\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u76F8\u5173\u63A5\u53E3\n\u2502 \u251C\u2500\u2500 convert/ # VO/Entity/DTO \u4E4B\u95F4\u7684\u8F6C\u6362\u5668\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u8F6C\u6362\u5668\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u8F6C\u6362\u5668\n\u2502 \u251C\u2500\u2500 dao/ # MyBatis/MyBatisPlus \u6301\u4E45\u5C42\u63A5\u53E3\uFF08Mapper\uFF09\n\u2502 \u251C\u2500\u2500 entity/ # \u5B9E\u4F53\u7C7B\uFF0C\u5BF9\u5E94\u6570\u636E\u5E93\u8868\uFF0C\u5E38\u7528 Lombok \u7B80\u5316\n\u2502 \u251C\u2500\u2500 query/ # \u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u67E5\u8BE2\u53C2\u6570\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u67E5\u8BE2\u53C2\u6570\n\u2502 \u251C\u2500\u2500 service/ # \u4E1A\u52A1\u670D\u52A1\u63A5\u53E3\u4E0E\u5B9E\u73B0\uFF0C\u5206 admin/client\n\u2502 \u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u670D\u52A1\u63A5\u53E3\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 impl/ # \u540E\u53F0\u7BA1\u7406\u7AEF\u670D\u52A1\u5B9E\u73B0\n\u2502 \u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237\u670D\u52A1\u63A5\u53E3\n\u2502 \u2502 \u2514\u2500\u2500 impl/ # C\u7AEF\u7528\u6237\u670D\u52A1\u5B9E\u73B0\n\u2502 \u2514\u2500\u2500 vo/ # \u8FD4\u56DE\u524D\u7AEF\u7684\u89C6\u56FE\u5BF9\u8C61\uFF08VO\uFF09\n\u2502 \u251C\u2500\u2500 admin/ # \u540E\u53F0\u7BA1\u7406\u7AEF VO\n\u2502 \u2514\u2500\u2500 client/ # C\u7AEF\u7528\u6237 VO\n\u2514\u2500\u2500 resources/\n \u2514\u2500\u2500 mapper/\n \u2502 \u2514\u2500\u2500 biz/\n \u2502 \u2514\u2500\u2500 CommonCollectDao.xml # MyBatis \u6620\u5C04\u6587\u4EF6\n \u2514\u2500\u2500\u2500auth.yml # \u914D\u7F6E\u65E0\u9700\u767B\u5F55\u8BA4\u8BC1\u7684\u63A5\u53E3\u8BF7\u6C42\u8DEF\u5F84\n```\n##### \u8BE6\u7EC6\u8BF4\u660E\n- **config/**\uFF1A\u5B58\u653E\u914D\u7F6E\u7C7B\uFF0C\u5982\u670D\u52A1\u5DE5\u5382\u3001Bean \u914D\u7F6E\u7B49\u3002\n- **controller/**\uFF1A\u63A7\u5236\u5C42\uFF0C\u8D1F\u8D23\u63A5\u6536\u548C\u54CD\u5E94\u524D\u7AEF\u8BF7\u6C42\uFF0C\u5206\u4E3A admin\uFF08\u540E\u53F0\u7BA1\u7406\uFF09\u548C client\uFF08C\u7AEF\u7528\u6237\uFF09\u3002\n- **convert/**\uFF1A\u5BF9\u8C61\u8F6C\u6362\u5C42\uFF0C\u8D1F\u8D23 Entity/VO/DTO \u4E4B\u95F4\u7684\u5C5E\u6027\u62F7\u8D1D\u548C\u8F6C\u6362\uFF0C\u4FBF\u4E8E\u5206\u79BB\u6570\u636E\u7ED3\u6784\u3002\n- **dao/**\uFF1A\u6570\u636E\u8BBF\u95EE\u5C42\uFF0C\u5B9A\u4E49 Mapper \u63A5\u53E3\uFF0C\u914D\u5408 MyBatis/MyBatisPlus \u8FDB\u884C\u6570\u636E\u5E93\u64CD\u4F5C\u3002\n- **entity/**\uFF1A\u5B9E\u4F53\u7C7B\uFF0C\u901A\u5E38\u4E0E\u6570\u636E\u5E93\u8868\u4E00\u4E00\u5BF9\u5E94\uFF0C\u5E38\u7528 Lombok \u6CE8\u89E3\uFF08\u5982 @Data\uFF09\u7B80\u5316\u4EE3\u7801\u3002\n- **query/**\uFF1A\u67E5\u8BE2\u53C2\u6570\u5BF9\u8C61\uFF0C\u5C01\u88C5\u63A5\u53E3\u8BF7\u6C42\u7684\u67E5\u8BE2\u6761\u4EF6\uFF0C\u5206 admin/client\u3002\n- **service/**\uFF1A\u4E1A\u52A1\u903B\u8F91\u5C42\uFF0C\u5B9A\u4E49\u670D\u52A1\u63A5\u53E3\u53CA\u5176\u5B9E\u73B0\uFF0C\u5206 admin/client\u3002\n- **vo/**\uFF1A\u89C6\u56FE\u5BF9\u8C61\uFF0C\u5C01\u88C5\u8FD4\u56DE\u7ED9\u524D\u7AEF\u7684\u6570\u636E\u7ED3\u6784\uFF0C\u5206 admin/client\u3002\n- **resources/mapper/biz/**\uFF1AMyBatis \u7684 XML \u6620\u5C04\u6587\u4EF6\uFF0C\u5B9A\u4E49 SQL \u8BED\u53E5\u548C\u7ED3\u679C\u6620\u5C04\u3002\n\n### \u6280\u672F\u6808\u8BF4\u660E\n#### \u6838\u5FC3\u6846\u67B6\n- **Spring Boot 2.7.6**\uFF1A\u4E3B\u6846\u67B6\uFF0C\u63D0\u4F9B\u81EA\u52A8\u914D\u7F6E\u3001\u5185\u5D4C\u670D\u52A1\u5668\u7B49\u7279\u6027\n- **Spring Security**\uFF1A\u5B89\u5168\u6846\u67B6\uFF0C\u63D0\u4F9B\u8BA4\u8BC1\u3001\u6388\u6743\u3001\u4F1A\u8BDD\u7BA1\u7406\u7B49\u529F\u80FD\n- **Spring Data Redis**\uFF1ARedis\u7F13\u5B58\u652F\u6301\n\n#### \u6570\u636E\u6301\u4E45\u5316\n- **MyBatis Plus 3.5.2**\uFF1A\u589E\u5F3A\u7684MyBatis\u6846\u67B6\uFF0C\u63D0\u4F9BCRUD\u64CD\u4F5C\u3001\u5206\u9875\u3001\u6761\u4EF6\u6784\u9020\u5668\u7B49\n- **\u8FBE\u68A6\u6570\u636E\u5E93**\uFF1A\u652F\u6301\u8FBE\u68A6\u6570\u636E\u5E93\u9A71\u52A8\n\n#### \u4EE3\u7801\u7B80\u5316\n- **Lombok**\uFF1A\u901A\u8FC7\u6CE8\u89E3\u81EA\u52A8\u751F\u6210getter/setter\u3001\u6784\u9020\u65B9\u6CD5\u3001toString\u7B49\u6837\u677F\u4EE3\u7801\n- **MapStruct 1.4.2**\uFF1A\u5BF9\u8C61\u6620\u5C04\u6846\u67B6\uFF0C\u81EA\u52A8\u751F\u6210Entity/VO/DTO\u4E4B\u95F4\u7684\u8F6C\u6362\u4EE3\u7801\n\n#### \u5DE5\u5177\u5E93\n- **Hutool 5.7.22**\uFF1AJava\u5DE5\u5177\u7C7B\u5E93\uFF0C\u63D0\u4F9B\u4E30\u5BCC\u7684\u5DE5\u5177\u65B9\u6CD5\n- **FastJSON 2.0.47**\uFF1AJSON\u5904\u7406\u5E93\n- **EasyExcel 3.1.1**\uFF1AExcel\u5BFC\u5165\u5BFC\u51FA\u5E93\n- **EasyTrans 2.0.12**\uFF1A\u6570\u636E\u7FFB\u8BD1\u6846\u67B6\n\n#### API\u6587\u6863\u5DE5\u5177\n- **Knife4j 4.4.0**\uFF1A\u57FA\u4E8EOpenAPI 3\u7684API\u6587\u6863\u751F\u6210\u5DE5\u5177\n\n#### \u5176\u4ED6\u7279\u6027\n- **\u591A\u79DF\u6237\u652F\u6301**\uFF1A\u652F\u6301\u591A\u79DF\u6237\u67B6\u6784\n- **XSS\u9632\u62A4**\uFF1A\u9632\u6B62XSS\u653B\u51FB\n- **\u9A8C\u8BC1\u7801\u652F\u6301**\uFF1A\u96C6\u6210\u9A8C\u8BC1\u7801\u529F\u80FD\n- **\u6587\u4EF6\u5B58\u50A8**\uFF1A\u652F\u6301\u963F\u91CC\u4E91OSS\u3001\u817E\u8BAF\u4E91COS\u3001\u4E03\u725B\u4E91\u3001MinIO\u7B49\u591A\u79CD\u5B58\u50A8\u65B9\u5F0F\n- **\u77ED\u4FE1\u670D\u52A1**\uFF1A\u652F\u6301\u963F\u91CC\u4E91\u3001\u817E\u8BAF\u4E91\u77ED\u4FE1\u670D\u52A1\n- **\u5FAE\u4FE1\u96C6\u6210**\uFF1A\u652F\u6301\u5FAE\u4FE1\u516C\u4F17\u53F7\u5F00\u53D1\n\n## db.json\u6587\u4EF6\u5185\u5BB9\u683C\u5F0F\u89C4\u8303\n```json\n[\n {\n \"moduleName\": \"\u6A21\u5757\u540D\u79F0\uFF0C\u547D\u540D\u89C4\u8303\uFF1Abytefun-boot-biz-\u5B50\u6A21\u5757\u540D\u79F0\",\n \"tableName\": \"\u8868\u540D\",\n \"tableComment\": \"\u8868\u6CE8\u91CA\",\n \"columns\": [\n {\n \"name\": \"\u5B57\u6BB5\u540D\u79F0\",\n \"type\": \"\u5B57\u6BB5\u5BF9\u5E94\u7684java\u7C7B\u578B\",\n \"nullable\": \"\u662F\u5426\u5141\u8BB8\u4E3ANULL\",\n \"default\": \"\u9ED8\u8BA4\u503C\",\n \"comment\": \"\u5B57\u6BB5\u6CE8\u91CA\",\n \"primaryKey\": \"\u662F\u5426\u4E3A\u4E3B\u952E\"\n }\n ]\n }\n]\n```\n## \u4FEE\u6539\u914D\u7F6E\u6587\u4EF6auth.yml\n```yml\nauth:\n ignore_urls:\n - /client/biz/example/**\n```\n## \u7EE7\u627FBaseServiceImpl\u7684Service\u5B9E\u73B0\u7C7B\n\u5982\u679CService\u7684\u5B9E\u73B0\u7C7B\u7EE7\u627F\u4E86BaseServiceImpl\uFF0C\u90A3\u4E48\u53EF\u4EE5\u76F4\u63A5\u4F7F\u7528\u6CDB\u578BDao\uFF1A'baseMapper'\uFF0C\u65E0\u9700\u624B\u52A8\u6CE8\u5165\u3002\n## \u7EE7\u627FBaseService\u7684Service\u63A5\u53E3\u7C7B\n\u5982\u679CService\u7684\u63A5\u53E3\u7C7B\u7EE7\u627F\u4E86BaseService\uFF0C\u90A3\u4E48\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u65B9\u6CD5\uFF1A\n| \u65B9\u6CD5\u540D | \u4E2D\u6587\u8BF4\u660E |\n| ------------------- | --------------------------------------- |\n| `save` | \u63D2\u5165\u4E00\u6761\u8BB0\u5F55\uFF08\u9009\u62E9\u5B57\u6BB5\uFF0C\u7B56\u7565\u63D2\u5165\uFF09 |\n| `saveBatch` | \u63D2\u5165\uFF08\u6279\u91CF\uFF09 |\n| `saveOrUpdateBatch` | \u6279\u91CF\u4FEE\u6539\u63D2\u5165 |\n| `removeById` | \u6839\u636E ID \u5220\u9664 |\n| `removeByMap` | \u6839\u636E columnMap \u6761\u4EF6\uFF0C\u5220\u9664\u8BB0\u5F55 |\n| `remove` | \u6839\u636E entity \u6761\u4EF6\uFF0C\u5220\u9664\u8BB0\u5F55 |\n| `removeByIds` | \u5220\u9664\uFF08\u6839\u636EID \u6279\u91CF\u5220\u9664\uFF09 |\n| `removeBatchByIds` | \u6279\u91CF\u5220\u9664(jdbc\u6279\u91CF\u63D0\u4EA4) |\n| `updateById` | \u6839\u636E ID \u9009\u62E9\u4FEE\u6539 |\n| `updateBatchById` | \u6839\u636EID \u6279\u91CF\u66F4\u65B0 |\n| `saveOrUpdate` | TableId \u6CE8\u89E3\u5B58\u5728\u66F4\u65B0\u8BB0\u5F55\uFF0C\u5426\u63D2\u5165\u4E00\u6761\u8BB0\u5F55 |\n| `getById` | \u6839\u636E ID \u67E5\u8BE2 |\n| `listByIds` | \u67E5\u8BE2\uFF08\u6839\u636EID \u6279\u91CF\u67E5\u8BE2\uFF09 |\n| `count` | \u67E5\u8BE2\u603B\u8BB0\u5F55\u6570 |\n| `list` | \u67E5\u8BE2\u5217\u8868 |\n| `page` | \u7FFB\u9875\u67E5\u8BE2 |\n| `listMaps` | \u67E5\u8BE2\u5217\u8868 |\n| `listObjs` | \u67E5\u8BE2\u5168\u90E8\u8BB0\u5F55 |\n| `pageMaps` | \u7FFB\u9875\u67E5\u8BE2 |\n";
|
|
2
2
|
//# sourceMappingURL=backendCode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendCode.d.ts","sourceRoot":"","sources":["../src/backendCode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"backendCode.d.ts","sourceRoot":"","sources":["../src/backendCode.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,qnqBA8LrC,CAAC"}
|
package/build/backendCode.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const backendCodePromptTemplate = `# 代码生成规则
|
|
2
2
|
|
|
3
3
|
## 🔥 非常重要!!非常核心的规则!!
|
|
4
|
-
|
|
4
|
+
非常重要!!非常核心的规则!!这是特殊的代码编写,不是常规的代码编写,会有很多特别的规则,因此你绝对不能以你已有的经验和知识库来自以为是地跳过省略提示词里提到的各种执行步骤,必须使用调用todo_write工具创建任务列表,你必须严格按照提示词给出的执行步骤,一步一步来执行,每执行完一步都必须输出该步骤已执行,准备执行下一步:xxx。
|
|
5
5
|
|
|
6
6
|
## 第1步
|
|
7
7
|
分析理解整个项目的代码结构,参考这里面的'项目概述',注意,无需分析admin端的代码,你要编写的是C端代码。
|
|
@@ -189,4 +189,4 @@ auth:
|
|
|
189
189
|
| \`listObjs\` | 查询全部记录 |
|
|
190
190
|
| \`pageMaps\` | 翻页查询 |
|
|
191
191
|
`;
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZENvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZENvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4THhDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFja2VuZENvZGVQcm9tcHRUZW1wbGF0ZSA9IGAjIOS7o+eggeeUn+aIkOinhOWImVxuXG4jIyDwn5SlIOmdnuW4uOmHjeimge+8ge+8gemdnuW4uOaguOW/g+eahOinhOWIme+8ge+8gVxu6Z2e5bi46YeN6KaB77yB77yB6Z2e5bi45qC45b+D55qE6KeE5YiZ77yB77yB6L+Z5piv54m55q6K55qE5Luj56CB57yW5YaZ77yM5LiN5piv5bi46KeE55qE5Luj56CB57yW5YaZ77yM5Lya5pyJ5b6I5aSa54m55Yir55qE6KeE5YiZ77yM5Zug5q2k5L2g57ud5a+55LiN6IO95Lul5L2g5bey5pyJ55qE57uP6aqM5ZKM55+l6K+G5bqT5p2l6Ieq5Lul5Li65piv5Zyw6Lez6L+H55yB55Wl5o+Q56S66K+N6YeM5o+Q5Yiw55qE5ZCE56eN5omn6KGM5q2l6aqk77yM5L2g5b+F6aG75Lil5qC85oyJ54Wn5o+Q56S66K+N57uZ5Ye655qE5omn6KGM5q2l6aqk77yM5LiA5q2l5LiA5q2l5p2l5omn6KGM77yM5q+P5omn6KGM5a6M5LiA5q2l6YO95b+F6aG76L6T5Ye66K+l5q2l6aqk5bey5omn6KGM77yM5YeG5aSH5omn6KGM5LiL5LiA5q2l77yaeHh444CCXG5cbiMjIOesrDHmraVcbuWIhuaekOeQhuino+aVtOS4qumhueebrueahOS7o+eggee7k+aehO+8jOWPguiAg+i/memHjOmdoueahCfpobnnm67mpoLov7An77yM5rOo5oSP77yM5peg6ZyA5YiG5p6QYWRtaW7nq6/nmoTku6PnoIHvvIzkvaDopoHnvJblhpnnmoTmmK9D56uv5Luj56CB44CCXG4jIyDnrKwy5q2lXG7liIbmnpDnkIbop6Plt6XnqIvmoLnnm67lvZUnLmJ5dGVmdW4vZ2xvYmFsQXBpSW50ZXJmYWNlTGlzdC5tZCfov5nkuKrmlofku7bvvIzph43ngrnliIbmnpDku47mlofku7bmnKvlsL7lvoDkuIrmib7liLDnmoTnrKzkuIDku71qc29u5pWw5o2u77yM5o+Q5Y+W5Ye65p2l5ZCO5L2g6Ieq5bex5b+F6aG757yT5a2Y5aW977yM6L+Z6Z2e5bi46YeN6KaB77yM5Zug5Li66L+Z5piv5o6l5Y+j5riF5Y2V77yM5piv5Luj56CB55Sf5oiQ55qE5L6d5o2u44CCXG4jIyDnrKwz5q2lXG7moLnmja7mj5Dlj5blh7rmnaXnmoTmjqXlj6PmuIXljZXph4znmoTmjqXlj6Pmj4/ov7DvvIzmo4Dmn6XlhoXnva7nmoRBUEnmjqXlj6PmmK/lkKbmu6HotrPmjqXlj6PliJfooajph4znmoTmjqXlj6Plip/og73vvIzkuI3opoHliJvlu7rlhoXnva7nmoRBUEnmjqXlj6Plt7Lnu4/mu6HotrPnmoTmjqXlj6PjgILlhoXnva7nmoRBUEnmjqXlj6PvvJrotKblj7flr4bnoIHnmbvlvZXmjqXlj6PvvIzlj5HpgIHnn63kv6Hpqozor4HnoIHmjqXlj6PvvIzmiYvmnLrlj7fnmbvlvZXmjqXlj6PvvIzpgIDlh7rvvIjms6jplIDvvInmjqXlj6PvvIzmiYvmnLrlj7fms6jlhozmjqXlj6PjgIJcbiMjIOesrDTmraVcbuagueaNruaPkOWPluWHuuadpeeahOaOpeWPo+a4heWNlemHjOeahOaOpeWPo+aPj+i/sO+8jOWIpOaWreebruWJjeeahOaVsOaNruW6k+ihqOe7k+aehOaYr+WQpuaUr+aMgeaOpeWPo+a4heWNlemHjOeahOaOpeWPo+WKn+iDveWSjOS4muWKoemAu+i+ke+8jOS4jeaUr+aMgeeahOaDheWGteS4i+S/ruaUueW6k+ihqOe7k+aehO+8jOW5tuaKiuS/ruaUueWQjueahFNRTOivreWPpeaUvuWcqOW3peeoi+agueebruW9lSdiYWNrZW5kL2RvYy8n55uu5b2V5LiL44CC54m55Yir5rOo5oSP5Yik5pat546w5pyJ55qE6KGo5a2X5q615piv5ZCm5ruh6Laz5o6l5Y+j5omA6ZyA55qE6L+U5Zue5pWw5o2u44CCXG4jIyDnrKw15q2lXG7moLnmja7mj5Dlj5blh7rmnaXnmoTmjqXlj6PmuIXljZXph4znmoTmjqXlj6Pmj4/ov7DvvIzmn6Xmib7pnIDopoHnlKjliLDnmoTmlbDmja7lupPooajvvIzmoLnmja7lt6XnqIvmoLnnm67lvZVcImJhY2tlbmQvZG9jL2J5dGVmdW4tYm9vdC1zaW1wbGUuc3FsXCLmlofku7bph4znmoTlu7rooajor63lj6Xlkozkv67mlLnlkI7nmoRTUUzor63lj6XvvIzkuKXmoLzmjInnhacnZGIuanNvbuaWh+S7tuWGheWuueagvOW8j+inhOiMgyfvvIzlnKjlt6XnqIvmoLnnm67lvZUnYmFja2VuZC9kb2MvZGIuanNvbifmlofku7bvvIzmlofku7bkuK3mt7vliqDlr7nlupTnmoTooajnu5PmnoTvvIzlv4XpobvljIXlkKvmlbTlvKDooajnmoTmiYDmnInlrZfmrrXvvIzlpoLmnpzmsqHmnInkv67mlLnlkI7nmoRTUUzor63lj6XvvIzliJknZGIuanNvbifnmoTmlofku7blhoXlrrnkuLonW10n44CCXG4jIyDnrKw25q2lXG7ph43mlrDliIbmnpDnkIbop6Pov5nku73ku6PnoIHnlJ/miJDop4TliJnnmoTlhoXlrrnvvIzlv4XpobvpgJDooYzpmIXor7vliIbmnpDvvIHmoLnmja4n57un5om/QmFzZVNlcnZpY2VJbXBs55qEU2VydmljZeWunueOsOexuyfvvIwn57un5om/QmFzZVNlcnZpY2XnmoRTZXJ2aWNl5o6l5Y+j57G7J+i/meS6m+adoeebrueahOWGheWuue+8jOaOjOaPoVNlcnZpY2XlsYLku6PnoIHnmoTlhpnms5XjgILliIbmnpDkuIvpnaLmj5DliLDnmoQn6aG555uu5qaC6L+wJ+WSjCfkuJrliqHmqKHlnZfmoIflh4bnm67lvZXnu5PmnoQn77yM54m55Yir5pivJ+S4muWKoeaooeWdl+agh+WHhuebruW9lee7k+aehCfvvIzov5nkupvkuJrliqHmqKHlnZfmmK8nYnl0ZWZ1bi1ib290LWJpei1jb21tb24n55qE5a2Q5qih5Z2X44CCXG4jIyDnrKw35q2lXG7lt6XnqIvmoLnnm67lvZUnYmFja2VuZC9ieXRlZnVuLWJvb3QtYml6LWNvbW1vbiflrZjlnKjpnIDopoHliJvlu7rnmoTlrZDmqKHlnZflkI7vvIzmo4Dmn6Xlt6XnqIvmoLnnm67lvZUnYmFja2VuZC9ieXRlZnVuLWJvb3QtYml6LWNvbW1vbifnmoQncG9tLnhtbCfmlofku7bvvIznoa7kv53lr7nlupTnmoTlrZDmqKHlnZflt7Lnu4/mt7vliqDliLAnbW9kdWxlcyfkuK3jgIJcbiMjIOesrDjmraVcbuagueaNruaPkOWPluWHuuadpeeahOaOpeWPo+a4heWNlemHjOeahOaOpeWPo+aPj+i/sO+8jOS/ruaUueW3peeoi+agueebruW9lSdiYWNrZW5kL2J5dGVmdW4tYm9vdC1iaXotY29tbW9uJ+eahOWtkOaooeWdl+eahOS7o+egge+8jOWunueOsOaOpeWPo+eahOWKn+iDve+8jOazqOaEj++8jFNRTOivreWPpeW/hemhu+WGmeWcqGRhby54bWzmmKDlsITmlofku7bph4zvvIznpoHmraLlnKhqYXZh5paH5Lu25Lit5ou86KOFU1FM6K+t5Y+l77yM56aB5q2i5ZyoamF2YeaWh+S7tuS4reS9v+eUqE15QmFpdHPnmoRXcmFwcGVy55u45YWz57G744CC5aaC5p6c5o+Q5Y+W5Ye65p2l55qE5o6l5Y+j5riF5Y2V6YeM77yM5a2Y5ZyoJ2F1dGgn5a+55bqU55qE5YC85Li6ZmFsc2XnmoTmg4XlhrXkuIvvvIzpnIDopoHkv67mlLnphY3nva7mlofku7YnYXV0aC55bWwn77yM5ZyoaWdub3JlX3VybHPlop7liqDph4zlop7liqDlv73nlaXorqTor4HnmoTot6/lvoTvvIzlr7nlupTkuLrlt6XnqIvmoLnnm67lvZVcIi5ieXRlZnVuL2dsb2JhbEFwaUludGVyZmFjZUxpc3QubWRcIuWMuemFjeWIsOeahGpzb27mlbDmja7kuK3nmoRwYXRo77yM5rOo5oSP5b+F6aG75LulJy8n5byA5aS077yMXCJhdXRoLnltbFwi6L+Z5Liq5paH5Lu25ZyoXCJieXRlZnVuLXNlcnZlci1zaW1wbGVcIuaooeWdl+S4i+eahFwic3JjL21haW4vcmVzb3VyY2VzXCLnm67lvZXkuIvjgILlpoLmnpznvJblhpnnmoRqYXZh5paH5Lu25LiN5ZyoJ2RhbyfmiJYnZW50aXR5J+i/meS4pOS4qnBhY2thZ2XmiJblrZBwYWNrYWdl5LiL77yM5paH5Lu25ZCN56ew6ZyA6KaB5LulJ0NsaWVudCflvIDlpLTjgILlpoLmnpwnYnl0ZWZ1bi1ib290LWJpei1jb21tb24n5qih5Z2X5LiL55qE5a2Q5qih5Z2X5a2Y5Zyo55u45LqS5L6d6LWW77yM5b+F6aG76KaB5L+u5pS55a2Q5qih5Z2X55qEcG9tLnhtbOaWh+S7tu+8jOW8leWFpeWvueW6lOeahOS+nei1luaooeWdl+OAglxuIyMg56ysOeatpVxu6ZyA6KaB5pu05pawXFxgZG9jL+WQjuerr+S7o+eggeW8gOWPkei/m+W6pi5qc29uXFxg6YeM6Z2i6K+l6aG16Z2i5a+55bqU55qEanNvbueahGNvZGVTdGF0dXPlrZfmrrXkuLpjb21wbGV0ZWTjgIJcbiMjIOesrDEw5q2lXG7miYDmnInku6PnoIHnvJblhpnlrozmr5XlkI7vvIzpnIDopoHlnKjmlbTkuKrpobnnm67miafooYwgJ212biBjbGVhbiBjb21waWxlJyDlkb3ku6TnvJbor5Hpobnnm67vvIznpoHmraLljZXkuKrmqKHlnZfljZXni6znvJbor5HvvIzpgYfliLDnvJbor5HlpLHotKXml7bpnIDopoHkv67mlLnplJnor6/ku6PnoIHjgIJcblxuIyMg6aG555uu5qaC6L+wXG7mnKzpobnnm67ln7rkuo4gU3ByaW5nIEJvb3QgMi43LjbvvIzph4fnlKjlpJrmqKHlnZfmnrbmnoTorr7orqHvvIzkvb/nlKjkuoYgTG9tYm9rIOi/m+ihjOeugOWMluS7o+egge+8jE15QmF0aXMgUGx1cyDov5vooYzmlbDmja7mjIHkuYXljJbvvIxNYXBTdHJ1Y3Qg6L+b6KGM5a+56LGh6L2s5o2i44CCXG4jIyMg6aG555uu5pW05L2T5p625p6EXG5cXGBcXGBcXGBcbmJ5dGVmdW4tYm9vdC9cbuKUnOKUgOKUgCBieXRlZnVuLWJvb3QtYXBpLyAgICAgICAgICAjIOWumuS5ieWGhemDqHNlcnZpY2XmjqXlj6NcbuKUnOKUgOKUgCBieXRlZnVuLWJvb3QtYml6LyAgICAgICAgICAjIOS4muWKoeaooeWdl++8jOWMheWQq+WFt+S9k+S4muWKoeWunueOsFxu4pSc4pSA4pSAIGJ5dGVmdW4tYm9vdC1mcmFtZXdvcmsvICAgICMg5qGG5p625qC45b+D5qih5Z2X77yM5o+Q5L6b5Z+656GA5Yqf6IO9XG7ilJzilIDilIAgYnl0ZWZ1bi1ib290LW1vZHVsZS8gICAgICAgIyDlip/og73mqKHlnZfpm4blkIhcbuKUgiAgIOKUnOKUgOKUgCBieXRlZnVuLW1vZHVsZS1tZXNzYWdlLyAgICAjIOa2iOaBr+aooeWdl1xu4pSCICAg4pSc4pSA4pSAIGJ5dGVmdW4tbW9kdWxlLW1vbml0b3IvICAgICMg55uR5o6n5qih5Z2XXG7ilIIgICDilJTilIDilIAgYnl0ZWZ1bi1tb2R1bGUtcXVhcnR6LyAgICAgIyDlrprml7bku7vliqHmqKHlnZdcbuKUnOKUgOKUgCBieXRlZnVuLWJvb3Qtc3lzdGVtLyAgICAgICAjIOezu+e7n+euoeeQhuaooeWdl1xu4pSU4pSA4pSAIGJ5dGVmdW4tc2VydmVyLXNpbXBsZS8gICAgICMg5ZCv5Yqo5qih5Z2XXG7ilJzilIDilIAgZG9jLyAgICAgICAgICAgICAgICAgICAgICAgIyDor7TmmI7mlofmoaNcbuKUgiAgIOKUlOKUgOKUgCBhcGlEb2MvICAgICAgICAgICAgICAgICMg5bey5pyJ5qih5Z2X55qE5o6l5Y+j5paH5qGjXG7ilIIgICDilJzilIDilIAgQmFja2VuZEFwaUNvZGVEZXNjcmlwdGlvbi5tZC8gICAgIyDlkI7nq6/mjqXlj6Pku6PnoIHmj4/ov7BcbuKUgiAgIOKUlOKUgOKUgCBieXRlZnVuLWJvb3Qtc2ltcGxlLnNxbC8gICAgICAgICAjIOaVsOaNruW6k+ihqOe7k+aehFxuXFxgXFxgXFxgXG4jIyMjIGJ5dGVmdW4tYm9vdC1zeXN0ZW0g57O757uf566h55CG5qih5Z2X6K+m57uG6K+05piOXG4tICoqY29tL2J5dGVmdW4vc3lzdGVtL2NvbnRyb2xsZXIvY2xpZW50Lyoq77yaQ+err+aOp+WItuWxgu+8jOi0n+i0o+aOpeaUtuWSjOWTjeW6lOWJjeerr+ivt+axguOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9jb252ZXJ0Lyoq77ya5a+56LGh6L2s5o2i5bGC77yM6LSf6LSjIEVudGl0eS9WTy9EVE8g5LmL6Ze055qE5bGe5oCn5ou36LSd5ZKM6L2s5o2i77yM5L6/5LqO5YiG56a75pWw5o2u57uT5p6E44CCXG4tICoqY29tL2J5dGVmdW4vc3lzdGVtL2Rhby8qKu+8muaVsOaNruiuv+mXruWxgu+8jOWumuS5iSBNYXBwZXIg5o6l5Y+j77yM6YWN5ZCIIE15QmF0aXMvTXlCYXRpc1BsdXMg6L+b6KGM5pWw5o2u5bqT5pON5L2c44CCXG4tICoqY29tL2J5dGVmdW4vc3lzdGVtL2VudGl0eS8qKu+8muWunuS9k+exu++8jOmAmuW4uOS4juaVsOaNruW6k+ihqOS4gOS4gOWvueW6lO+8jOW4uOeUqCBMb21ib2sg5rOo6Kej77yI5aaCIEBEYXRh77yJ566A5YyW5Luj56CB44CCXG4tICoqY29tL2J5dGVmdW4vc3lzdGVtL3F1ZXJ5Lyoq77ya5p+l6K+i5Y+C5pWw5a+56LGh77yM5bCB6KOF5o6l5Y+j6K+35rGC55qE5p+l6K+i5p2h5Lu277yM5YiGIGFkbWluL2NsaWVudOOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9zZXJ2aWNlLyoq77ya5Lia5Yqh6YC76L6R5bGC77yM5a6a5LmJ5pyN5Yqh5o6l5Y+j5Y+K5YW25a6e546w77yM5YiGIGFkbWluL2NsaWVudOOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS92by8qKu+8muinhuWbvuWvueixoe+8jOWwgeijhei/lOWbnue7meWJjeerr+eahOaVsOaNrue7k+aehO+8jOWIhiBhZG1pbi9jbGllbnTjgIJcbi0gKipyZXNvdXJjZXMvbWFwcGVyLyoq77yaTXlCYXRpcyDnmoQgWE1MIOaYoOWwhOaWh+S7tu+8jOWumuS5iSBTUUwg6K+t5Y+l5ZKM57uT5p6c5pig5bCE44CCXG5cbuazqOaEj++8jOWcqGJ5dGVmdW4tYm9vdC1zeXN0ZW3kuK3lt7Lnu4/ljIXlkKvkuobnlKjmiLfln7rnoYDkv6Hmga/nmoTlip/og73ku6PnoIHjgIJcbuWvueW6lOWunuS9k+exu+S4ulxcYGNvbS5ieXRlZnVuLnN5c3RlbS5lbnRpdHkuU3lzVXNlckVudGl0eVxcYO+8m1xu5a+55bqUY29udHJvbGxlcuS4ulxcYGNvbS5ieXRlZnVuLnN5c3RlbS5jb250cm9sbGVyLmNsaWVudC5DbGllbnRTeXNBdXRoQ29udHJvbGxlclxcYO+8m1xu5a+55bqU55qE5pWw5o2u6KGo5Li6XFxgc3lzX3VzZXJcXGA7XG5cbiMjIyMgYnl0ZWZ1bi1ib290LWZyYW1ld29yayDmoYbmnrbmoLjlv4PmqKHlnZfmpoLopoHor7TmmI5cbi0gKipjb20uYnl0ZWZ1bi5mcmFtZXdvcmsuZmFjdG9yeS5TZXJ2aWNlRmFjdG9yeSoq77ya5pyN5Yqh5bel5Y6C57G777yM55So5LqO5Yib5bu65Lia5Yqh5pyN5Yqh5a6e5L6L44CCXG4tICoqY29tLmJ5dGVmdW4uZnJhbWV3b3JrLmNvbW1vbi5yZXN1bHQuUGFnZVJlc3VsdCoq77ya5YiG6aG157uT5p6c57G777yM55So5LqO5bCB6KOF5YiG6aG15p+l6K+i55qE57uT5p6c44CCXG4tICoqY29tLmJ5dGVmdW4uZnJhbWV3b3JrLmNvbW1vbi5yZXN1bHQuUmVzdWx0KirvvJrpgJrnlKjnu5PmnpznsbvvvIznlKjkuo7lsIHoo4XmjqXlj6PosIPnlKjnmoTnu5PmnpzvvIzljIXmi6zmiJDlip/jgIHlpLHotKXjgIHlvILluLjnrYnmg4XlhrXjgIJcblxuIyMjIOaooeWdl+ebruW9lee7k+aehOS4juWKn+iDvVxuIyMjIyDkuJrliqHmqKHlnZfmoIflh4bnm67lvZXnu5PmnoRcblxcYFxcYFxcYFxuc3JjL21haW4vXG7ilJzilIDilIAgamF2YS9cbuKUgiAgIOKUlOKUgOKUgCBjb20vYnl0ZWZ1bi9iaXovXG7ilIIgICAgICAg4pSc4pSA4pSAIGNvbmZpZy8gICAgICAgICAjIOmFjee9ruexu++8jOWmguW3peWOgumFjee9ruOAgUJlYW4g5a6a5LmJ562JXG7ilIIgICAgICAg4pSc4pSA4pSAIGNvbnRyb2xsZXIvICAgICAjIOaOp+WItuWZqO+8jOWIhuS4uiBhZG1pbiDlkowgY2xpZW50IOS4pOerr++8jOWkhOeQhuWJjeerr+ivt+axglxu4pSCICAgICAgIOKUgiAgIOKUnOKUgOKUgCBhZG1pbi8gICAgICAjIOWQjuWPsOeuoeeQhuerr+ebuOWFs+aOpeWPo1xu4pSCICAgICAgIOKUgiAgIOKUlOKUgOKUgCBjbGllbnQvICAgICAjIEPnq6/nlKjmiLfnm7jlhbPmjqXlj6NcbuKUgiAgICAgICDilJzilIDilIAgY29udmVydC8gICAgICAgICMgVk8vRW50aXR5L0RUTyDkuYvpl7TnmoTovazmjaLlmahcbuKUgiAgICAgICDilIIgICDilJzilIDilIAgYWRtaW4vICAgICAgIyDlkI7lj7DnrqHnkIbnq6/ovazmjaLlmahcbuKUgiAgICAgICDilIIgICDilJTilIDilIAgY2xpZW50LyAgICAgIyBD56uv55So5oi36L2s5o2i5ZmoXG7ilIIgICAgICAg4pSc4pSA4pSAIGRhby8gICAgICAgICAgICAjIE15QmF0aXMvTXlCYXRpc1BsdXMg5oyB5LmF5bGC5o6l5Y+j77yITWFwcGVy77yJXG7ilIIgICAgICAg4pSc4pSA4pSAIGVudGl0eS8gICAgICAgICAjIOWunuS9k+exu++8jOWvueW6lOaVsOaNruW6k+ihqO+8jOW4uOeUqCBMb21ib2sg566A5YyWXG7ilIIgICAgICAg4pSc4pSA4pSAIHF1ZXJ5LyAgICAgICAgICAjIOafpeivouWPguaVsOWvueixoVxu4pSCICAgICAgIOKUgiAgIOKUnOKUgOKUgCBhZG1pbi8gICAgICAjIOWQjuWPsOeuoeeQhuerr+afpeivouWPguaVsFxu4pSCICAgICAgIOKUgiAgIOKUlOKUgOKUgCBjbGllbnQvICAgICAjIEPnq6/nlKjmiLfmn6Xor6Llj4LmlbBcbuKUgiAgICAgICDilJzilIDilIAgc2VydmljZS8gICAgICAgICMg5Lia5Yqh5pyN5Yqh5o6l5Y+j5LiO5a6e546w77yM5YiGIGFkbWluL2NsaWVudFxu4pSCICAgICAgIOKUgiAgIOKUnOKUgOKUgCBhZG1pbi8gICAgICAjIOWQjuWPsOeuoeeQhuerr+acjeWKoeaOpeWPo1xu4pSCICAgICAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBpbXBsLyAgICMg5ZCO5Y+w566h55CG56uv5pyN5Yqh5a6e546wXG7ilIIgICAgICAg4pSCICAg4pSU4pSA4pSAIGNsaWVudC8gICAgICMgQ+err+eUqOaIt+acjeWKoeaOpeWPo1xu4pSCICAgICAgIOKUgiAgICAgICDilJTilIDilIAgaW1wbC8gICAjIEPnq6/nlKjmiLfmnI3liqHlrp7njrBcbuKUgiAgICAgICDilJTilIDilIAgdm8vICAgICAgICAgICAgICMg6L+U5Zue5YmN56uv55qE6KeG5Zu+5a+56LGh77yIVk/vvIlcbuKUgiAgICAgICAgICAg4pSc4pSA4pSAIGFkbWluLyAgICAgICMg5ZCO5Y+w566h55CG56uvIFZPXG7ilIIgICAgICAgICAgIOKUlOKUgOKUgCBjbGllbnQvICAgICAjIEPnq6/nlKjmiLcgVk9cbuKUlOKUgOKUgCByZXNvdXJjZXMvXG4gICAg4pSU4pSA4pSAIG1hcHBlci9cbiAgICDilIIgICDilJTilIDilIAgYml6L1xuICAgIOKUgiAgICAgICAg4pSU4pSA4pSAIENvbW1vbkNvbGxlY3REYW8ueG1sICAjIE15QmF0aXMg5pig5bCE5paH5Lu2XG4gICAg4pSU4pSA4pSA4pSAYXV0aC55bWwgICAgICAgICAgICAjIOmFjee9ruaXoOmcgOeZu+W9leiupOivgeeahOaOpeWPo+ivt+axgui3r+W+hFxuXFxgXFxgXFxgXG4jIyMjIyDor6bnu4bor7TmmI5cbi0gKipjb25maWcvKirvvJrlrZjmlL7phY3nva7nsbvvvIzlpoLmnI3liqHlt6XljoLjgIFCZWFuIOmFjee9ruetieOAglxuLSAqKmNvbnRyb2xsZXIvKirvvJrmjqfliLblsYLvvIzotJ/otKPmjqXmlLblkozlk43lupTliY3nq6/or7fmsYLvvIzliIbkuLogYWRtaW7vvIjlkI7lj7DnrqHnkIbvvInlkowgY2xpZW5077yIQ+err+eUqOaIt++8ieOAglxuLSAqKmNvbnZlcnQvKirvvJrlr7nosaHovazmjaLlsYLvvIzotJ/otKMgRW50aXR5L1ZPL0RUTyDkuYvpl7TnmoTlsZ7mgKfmi7fotJ3lkozovazmjaLvvIzkvr/kuo7liIbnprvmlbDmja7nu5PmnoTjgIJcbi0gKipkYW8vKirvvJrmlbDmja7orr/pl67lsYLvvIzlrprkuYkgTWFwcGVyIOaOpeWPo++8jOmFjeWQiCBNeUJhdGlzL015QmF0aXNQbHVzIOi/m+ihjOaVsOaNruW6k+aTjeS9nOOAglxuLSAqKmVudGl0eS8qKu+8muWunuS9k+exu++8jOmAmuW4uOS4juaVsOaNruW6k+ihqOS4gOS4gOWvueW6lO+8jOW4uOeUqCBMb21ib2sg5rOo6Kej77yI5aaCIEBEYXRh77yJ566A5YyW5Luj56CB44CCXG4tICoqcXVlcnkvKirvvJrmn6Xor6Llj4LmlbDlr7nosaHvvIzlsIHoo4XmjqXlj6Por7fmsYLnmoTmn6Xor6LmnaHku7bvvIzliIYgYWRtaW4vY2xpZW5044CCXG4tICoqc2VydmljZS8qKu+8muS4muWKoemAu+i+keWxgu+8jOWumuS5ieacjeWKoeaOpeWPo+WPiuWFtuWunueOsO+8jOWIhiBhZG1pbi9jbGllbnTjgIJcbi0gKip2by8qKu+8muinhuWbvuWvueixoe+8jOWwgeijhei/lOWbnue7meWJjeerr+eahOaVsOaNrue7k+aehO+8jOWIhiBhZG1pbi9jbGllbnTjgIJcbi0gKipyZXNvdXJjZXMvbWFwcGVyL2Jpei8qKu+8mk15QmF0aXMg55qEIFhNTCDmmKDlsITmlofku7bvvIzlrprkuYkgU1FMIOivreWPpeWSjOe7k+aenOaYoOWwhOOAglxuXG4jIyMg5oqA5pyv5qCI6K+05piOXG4jIyMjIOaguOW/g+ahhuaetlxuLSAqKlNwcmluZyBCb290IDIuNy42KirvvJrkuLvmoYbmnrbvvIzmj5Dkvpvoh6rliqjphY3nva7jgIHlhoXltYzmnI3liqHlmajnrYnnibnmgKdcbi0gKipTcHJpbmcgU2VjdXJpdHkqKu+8muWuieWFqOahhuaetu+8jOaPkOS+m+iupOivgeOAgeaOiOadg+OAgeS8muivneeuoeeQhuetieWKn+iDvVxuLSAqKlNwcmluZyBEYXRhIFJlZGlzKirvvJpSZWRpc+e8k+WtmOaUr+aMgVxuXG4jIyMjIOaVsOaNruaMgeS5heWMllxuLSAqKk15QmF0aXMgUGx1cyAzLjUuMioq77ya5aKe5by655qETXlCYXRpc+ahhuaetu+8jOaPkOS+m0NSVUTmk43kvZzjgIHliIbpobXjgIHmnaHku7bmnoTpgKDlmajnrYlcbi0gKirovr7moqbmlbDmja7lupMqKu+8muaUr+aMgei+vuaipuaVsOaNruW6k+mpseWKqFxuXG4jIyMjIOS7o+eggeeugOWMllxuLSAqKkxvbWJvayoq77ya6YCa6L+H5rOo6Kej6Ieq5Yqo55Sf5oiQZ2V0dGVyL3NldHRlcuOAgeaehOmAoOaWueazleOAgXRvU3RyaW5n562J5qC35p2/5Luj56CBXG4tICoqTWFwU3RydWN0IDEuNC4yKirvvJrlr7nosaHmmKDlsITmoYbmnrbvvIzoh6rliqjnlJ/miJBFbnRpdHkvVk8vRFRP5LmL6Ze055qE6L2s5o2i5Luj56CBXG5cbiMjIyMg5bel5YW35bqTXG4tICoqSHV0b29sIDUuNy4yMioq77yaSmF2YeW3peWFt+exu+W6k++8jOaPkOS+m+S4sOWvjOeahOW3peWFt+aWueazlVxuLSAqKkZhc3RKU09OIDIuMC40Nyoq77yaSlNPTuWkhOeQhuW6k1xuLSAqKkVhc3lFeGNlbCAzLjEuMSoq77yaRXhjZWzlr7zlhaXlr7zlh7rlupNcbi0gKipFYXN5VHJhbnMgMi4wLjEyKirvvJrmlbDmja7nv7vor5HmoYbmnrZcblxuIyMjIyBBUEnmlofmoaPlt6Xlhbdcbi0gKipLbmlmZTRqIDQuNC4wKirvvJrln7rkuo5PcGVuQVBJIDPnmoRBUEnmlofmoaPnlJ/miJDlt6XlhbdcblxuIyMjIyDlhbbku5bnibnmgKdcbi0gKirlpJrnp5/miLfmlK/mjIEqKu+8muaUr+aMgeWkmuenn+aIt+aetuaehFxuLSAqKlhTU+mYsuaKpCoq77ya6Ziy5q2iWFNT5pS75Ye7XG4tICoq6aqM6K+B56CB5pSv5oyBKirvvJrpm4bmiJDpqozor4HnoIHlip/og71cbi0gKirmlofku7blrZjlgqgqKu+8muaUr+aMgemYv+mHjOS6kU9TU+OAgeiFvuiur+S6kUNPU+OAgeS4g+eJm+S6keOAgU1pbklP562J5aSa56eN5a2Y5YKo5pa55byPXG4tICoq55+t5L+h5pyN5YqhKirvvJrmlK/mjIHpmL/ph4zkupHjgIHohb7orq/kupHnn63kv6HmnI3liqFcbi0gKirlvq7kv6Hpm4bmiJAqKu+8muaUr+aMgeW+ruS/oeWFrOS8l+WPt+W8gOWPkVxuXG4jIyBkYi5qc29u5paH5Lu25YaF5a655qC85byP6KeE6IyDXG5cXGBcXGBcXGBqc29uXG5bXG4gIHtcbiAgICBcIm1vZHVsZU5hbWVcIjogXCLmqKHlnZflkI3np7DvvIzlkb3lkI3op4TojIPvvJpieXRlZnVuLWJvb3QtYml6LeWtkOaooeWdl+WQjeensFwiLFxuICAgIFwidGFibGVOYW1lXCI6IFwi6KGo5ZCNXCIsXG4gICAgXCJ0YWJsZUNvbW1lbnRcIjogXCLooajms6jph4pcIixcbiAgICBcImNvbHVtbnNcIjogW1xuICAgICAge1xuICAgICAgICBcIm5hbWVcIjogXCLlrZfmrrXlkI3np7BcIixcbiAgICAgICAgXCJ0eXBlXCI6IFwi5a2X5q615a+55bqU55qEamF2Yeexu+Wei1wiLFxuICAgICAgICBcIm51bGxhYmxlXCI6IFwi5piv5ZCm5YWB6K645Li6TlVMTFwiLFxuICAgICAgICBcImRlZmF1bHRcIjogXCLpu5jorqTlgLxcIixcbiAgICAgICAgXCJjb21tZW50XCI6IFwi5a2X5q615rOo6YeKXCIsXG4gICAgICAgIFwicHJpbWFyeUtleVwiOiBcIuaYr+WQpuS4uuS4u+mUrlwiXG4gICAgICB9XG4gICAgXVxuICB9XG5dXG5cXGBcXGBcXGBcbiMjIOS/ruaUuemFjee9ruaWh+S7tmF1dGgueW1sXG5cXGBcXGBcXGB5bWxcbmF1dGg6XG4gIGlnbm9yZV91cmxzOlxuICAgIC0gL2NsaWVudC9iaXovZXhhbXBsZS8qKlxuXFxgXFxgXFxgXG4jIyDnu6fmib9CYXNlU2VydmljZUltcGznmoRTZXJ2aWNl5a6e546w57G7XG7lpoLmnpxTZXJ2aWNl55qE5a6e546w57G757un5om/5LqGQmFzZVNlcnZpY2VJbXBs77yM6YKj5LmI5Y+v5Lul55u05o6l5L2/55So5rOb5Z6LRGFv77yaJ2Jhc2VNYXBwZXIn77yM5peg6ZyA5omL5Yqo5rOo5YWl44CCXG4jIyDnu6fmib9CYXNlU2VydmljZeeahFNlcnZpY2XmjqXlj6PnsbtcbuWmguaenFNlcnZpY2XnmoTmjqXlj6Pnsbvnu6fmib/kuoZCYXNlU2VydmljZe+8jOmCo+S5iOWPr+S7peS9v+eUqOS7peS4i+aWueazle+8mlxufCDmlrnms5XlkI0gICAgICAgICAgICAgICAgIHwg5Lit5paH6K+05piOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbnwgXFxgc2F2ZVxcYCAgICAgICAgICAgICAgfCDmj5LlhaXkuIDmnaHorrDlvZXvvIjpgInmi6nlrZfmrrXvvIznrZbnlaXmj5LlhaXvvIkgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgc2F2ZUJhdGNoXFxgICAgICAgICAgfCDmj5LlhaXvvIjmibnph4/vvIkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBzYXZlT3JVcGRhdGVCYXRjaFxcYCB8IOaJuemHj+S/ruaUueaPkuWFpSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHJlbW92ZUJ5SWRcXGAgICAgICAgIHwg5qC55o2uIElEIOWIoOmZpCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGByZW1vdmVCeU1hcFxcYCAgICAgICB8IOagueaNriBjb2x1bW5NYXAg5p2h5Lu277yM5Yig6Zmk6K6w5b2VICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHJlbW92ZVxcYCAgICAgICAgICAgIHwg5qC55o2uIGVudGl0eSDmnaHku7bvvIzliKDpmaTorrDlvZUgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgcmVtb3ZlQnlJZHNcXGAgICAgICAgfCDliKDpmaTvvIjmoLnmja5JRCDmibnph4/liKDpmaTvvIkgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHJlbW92ZUJhdGNoQnlJZHNcXGAgIHwg5om56YeP5Yig6ZmkKGpkYmPmibnph4/mj5DkuqQpICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHVwZGF0ZUJ5SWRcXGAgICAgICAgIHwg5qC55o2uIElEIOmAieaLqeS/ruaUuSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgdXBkYXRlQmF0Y2hCeUlkXFxgICAgfCDmoLnmja5JRCDmibnph4/mm7TmlrAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBzYXZlT3JVcGRhdGVcXGAgICAgICB8IFRhYmxlSWQg5rOo6Kej5a2Y5Zyo5pu05paw6K6w5b2V77yM5ZCm5o+S5YWl5LiA5p2h6K6w5b2VICAgICAgICAgICAgICAgIHxcbnwgXFxgZ2V0QnlJZFxcYCAgICAgICAgICAgfCDmoLnmja4gSUQg5p+l6K+iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYGxpc3RCeUlkc1xcYCAgICAgICAgIHwg5p+l6K+i77yI5qC55o2uSUQg5om56YeP5p+l6K+i77yJICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBjb3VudFxcYCAgICAgICAgICAgICB8IOafpeivouaAu+iusOW9leaVsCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYGxpc3RcXGAgICAgICAgICAgICAgIHwg5p+l6K+i5YiX6KGoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBwYWdlXFxgICAgICAgICAgICAgICB8IOe/u+mhteafpeivoiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgbGlzdE1hcHNcXGAgICAgICAgICAgfCDmn6Xor6LliJfooaggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYGxpc3RPYmpzXFxgICAgICAgICAgIHwg5p+l6K+i5YWo6YOo6K6w5b2VICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgcGFnZU1hcHNcXGAgICAgICAgICAgfCDnv7vpobXmn6Xor6IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG5gOyJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZENvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZENvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4THhDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFja2VuZENvZGVQcm9tcHRUZW1wbGF0ZSA9IGAjIOS7o+eggeeUn+aIkOinhOWImVxuXG4jIyDwn5SlIOmdnuW4uOmHjeimge+8ge+8gemdnuW4uOaguOW/g+eahOinhOWIme+8ge+8gVxu6Z2e5bi46YeN6KaB77yB77yB6Z2e5bi45qC45b+D55qE6KeE5YiZ77yB77yB6L+Z5piv54m55q6K55qE5Luj56CB57yW5YaZ77yM5LiN5piv5bi46KeE55qE5Luj56CB57yW5YaZ77yM5Lya5pyJ5b6I5aSa54m55Yir55qE6KeE5YiZ77yM5Zug5q2k5L2g57ud5a+55LiN6IO95Lul5L2g5bey5pyJ55qE57uP6aqM5ZKM55+l6K+G5bqT5p2l6Ieq5Lul5Li65piv5Zyw6Lez6L+H55yB55Wl5o+Q56S66K+N6YeM5o+Q5Yiw55qE5ZCE56eN5omn6KGM5q2l6aqk77yM5b+F6aG75L2/55So6LCD55SodG9kb193cml0ZeW3peWFt+WIm+W7uuS7u+WKoeWIl+ihqO+8jOS9oOW/hemhu+S4peagvOaMieeFp+aPkOekuuivjee7meWHuueahOaJp+ihjOatpemqpO+8jOS4gOatpeS4gOatpeadpeaJp+ihjO+8jOavj+aJp+ihjOWujOS4gOatpemDveW/hemhu+i+k+WHuuivpeatpemqpOW3suaJp+ihjO+8jOWHhuWkh+aJp+ihjOS4i+S4gOatpe+8mnh4eOOAglxuXG4jIyDnrKwx5q2lXG7liIbmnpDnkIbop6PmlbTkuKrpobnnm67nmoTku6PnoIHnu5PmnoTvvIzlj4LogIPov5nph4zpnaLnmoQn6aG555uu5qaC6L+wJ++8jOazqOaEj++8jOaXoOmcgOWIhuaekGFkbWlu56uv55qE5Luj56CB77yM5L2g6KaB57yW5YaZ55qE5pivQ+err+S7o+eggeOAglxuIyMg56ysMuatpVxu5YiG5p6Q55CG6Kej5bel56iL5qC555uu5b2VJy5ieXRlZnVuL2dsb2JhbEFwaUludGVyZmFjZUxpc3QubWQn6L+Z5Liq5paH5Lu277yM6YeN54K55YiG5p6Q5LuO5paH5Lu25pyr5bC+5b6A5LiK5om+5Yiw55qE56ys5LiA5Lu9anNvbuaVsOaNru+8jOaPkOWPluWHuuadpeWQjuS9oOiHquW3seW/hemhu+e8k+WtmOWlve+8jOi/memdnuW4uOmHjeimge+8jOWboOS4uui/meaYr+aOpeWPo+a4heWNle+8jOaYr+S7o+eggeeUn+aIkOeahOS+neaNruOAglxuIyMg56ysM+atpVxu5qC55o2u5o+Q5Y+W5Ye65p2l55qE5o6l5Y+j5riF5Y2V6YeM55qE5o6l5Y+j5o+P6L+w77yM5qOA5p+l5YaF572u55qEQVBJ5o6l5Y+j5piv5ZCm5ruh6Laz5o6l5Y+j5YiX6KGo6YeM55qE5o6l5Y+j5Yqf6IO977yM5LiN6KaB5Yib5bu65YaF572u55qEQVBJ5o6l5Y+j5bey57uP5ruh6Laz55qE5o6l5Y+j44CC5YaF572u55qEQVBJ5o6l5Y+j77ya6LSm5Y+35a+G56CB55m75b2V5o6l5Y+j77yM5Y+R6YCB55+t5L+h6aqM6K+B56CB5o6l5Y+j77yM5omL5py65Y+355m75b2V5o6l5Y+j77yM6YCA5Ye677yI5rOo6ZSA77yJ5o6l5Y+j77yM5omL5py65Y+35rOo5YaM5o6l5Y+j44CCXG4jIyDnrKw05q2lXG7moLnmja7mj5Dlj5blh7rmnaXnmoTmjqXlj6PmuIXljZXph4znmoTmjqXlj6Pmj4/ov7DvvIzliKTmlq3nm67liY3nmoTmlbDmja7lupPooajnu5PmnoTmmK/lkKbmlK/mjIHmjqXlj6PmuIXljZXph4znmoTmjqXlj6Plip/og73lkozkuJrliqHpgLvovpHvvIzkuI3mlK/mjIHnmoTmg4XlhrXkuIvkv67mlLnlupPooajnu5PmnoTvvIzlubbmiorkv67mlLnlkI7nmoRTUUzor63lj6XmlL7lnKjlt6XnqIvmoLnnm67lvZUnYmFja2VuZC9kb2MvJ+ebruW9leS4i+OAgueJueWIq+azqOaEj+WIpOaWreeOsOacieeahOihqOWtl+auteaYr+WQpua7oei2s+aOpeWPo+aJgOmcgOeahOi/lOWbnuaVsOaNruOAglxuIyMg56ysNeatpVxu5qC55o2u5o+Q5Y+W5Ye65p2l55qE5o6l5Y+j5riF5Y2V6YeM55qE5o6l5Y+j5o+P6L+w77yM5p+l5om+6ZyA6KaB55So5Yiw55qE5pWw5o2u5bqT6KGo77yM5qC55o2u5bel56iL5qC555uu5b2VXCJiYWNrZW5kL2RvYy9ieXRlZnVuLWJvb3Qtc2ltcGxlLnNxbFwi5paH5Lu26YeM55qE5bu66KGo6K+t5Y+l5ZKM5L+u5pS55ZCO55qEU1FM6K+t5Y+l77yM5Lil5qC85oyJ54WnJ2RiLmpzb27mlofku7blhoXlrrnmoLzlvI/op4TojIMn77yM5Zyo5bel56iL5qC555uu5b2VJ2JhY2tlbmQvZG9jL2RiLmpzb24n5paH5Lu277yM5paH5Lu25Lit5re75Yqg5a+55bqU55qE6KGo57uT5p6E77yM5b+F6aG75YyF5ZCr5pW05byg6KGo55qE5omA5pyJ5a2X5q6177yM5aaC5p6c5rKh5pyJ5L+u5pS55ZCO55qEU1FM6K+t5Y+l77yM5YiZJ2RiLmpzb24n55qE5paH5Lu25YaF5a655Li6J1tdJ+OAglxuIyMg56ysNuatpVxu6YeN5paw5YiG5p6Q55CG6Kej6L+Z5Lu95Luj56CB55Sf5oiQ6KeE5YiZ55qE5YaF5a6577yM5b+F6aG76YCQ6KGM6ZiF6K+75YiG5p6Q77yB5qC55o2uJ+e7p+aJv0Jhc2VTZXJ2aWNlSW1wbOeahFNlcnZpY2Xlrp7njrDnsbsn77yMJ+e7p+aJv0Jhc2VTZXJ2aWNl55qEU2VydmljZeaOpeWPo+exuyfov5nkupvmnaHnm67nmoTlhoXlrrnvvIzmjozmj6FTZXJ2aWNl5bGC5Luj56CB55qE5YaZ5rOV44CC5YiG5p6Q5LiL6Z2i5o+Q5Yiw55qEJ+mhueebruamgui/sCflkown5Lia5Yqh5qih5Z2X5qCH5YeG55uu5b2V57uT5p6EJ++8jOeJueWIq+aYryfkuJrliqHmqKHlnZfmoIflh4bnm67lvZXnu5PmnoQn77yM6L+Z5Lqb5Lia5Yqh5qih5Z2X5pivJ2J5dGVmdW4tYm9vdC1iaXotY29tbW9uJ+eahOWtkOaooeWdl+OAglxuIyMg56ysN+atpVxu5bel56iL5qC555uu5b2VJ2JhY2tlbmQvYnl0ZWZ1bi1ib290LWJpei1jb21tb24n5a2Y5Zyo6ZyA6KaB5Yib5bu655qE5a2Q5qih5Z2X5ZCO77yM5qOA5p+l5bel56iL5qC555uu5b2VJ2JhY2tlbmQvYnl0ZWZ1bi1ib290LWJpei1jb21tb24n55qEJ3BvbS54bWwn5paH5Lu277yM56Gu5L+d5a+55bqU55qE5a2Q5qih5Z2X5bey57uP5re75Yqg5YiwJ21vZHVsZXMn5Lit44CCXG4jIyDnrKw45q2lXG7moLnmja7mj5Dlj5blh7rmnaXnmoTmjqXlj6PmuIXljZXph4znmoTmjqXlj6Pmj4/ov7DvvIzkv67mlLnlt6XnqIvmoLnnm67lvZUnYmFja2VuZC9ieXRlZnVuLWJvb3QtYml6LWNvbW1vbifnmoTlrZDmqKHlnZfnmoTku6PnoIHvvIzlrp7njrDmjqXlj6PnmoTlip/og73vvIzms6jmhI/vvIxTUUzor63lj6Xlv4XpobvlhpnlnKhkYW8ueG1s5pig5bCE5paH5Lu26YeM77yM56aB5q2i5ZyoamF2YeaWh+S7tuS4reaLvOijhVNRTOivreWPpe+8jOemgeatouWcqGphdmHmlofku7bkuK3kvb/nlKhNeUJhaXRz55qEV3JhcHBlcuebuOWFs+exu+OAguWmguaenOaPkOWPluWHuuadpeeahOaOpeWPo+a4heWNlemHjO+8jOWtmOWcqCdhdXRoJ+WvueW6lOeahOWAvOS4umZhbHNl55qE5oOF5Ya15LiL77yM6ZyA6KaB5L+u5pS56YWN572u5paH5Lu2J2F1dGgueW1sJ++8jOWcqGlnbm9yZV91cmxz5aKe5Yqg6YeM5aKe5Yqg5b+955Wl6K6k6K+B55qE6Lev5b6E77yM5a+55bqU5Li65bel56iL5qC555uu5b2VXCIuYnl0ZWZ1bi9nbG9iYWxBcGlJbnRlcmZhY2VMaXN0Lm1kXCLljLnphY3liLDnmoRqc29u5pWw5o2u5Lit55qEcGF0aO+8jOazqOaEj+W/hemhu+S7pScvJ+W8gOWktO+8jFwiYXV0aC55bWxcIui/meS4quaWh+S7tuWcqFwiYnl0ZWZ1bi1zZXJ2ZXItc2ltcGxlXCLmqKHlnZfkuIvnmoRcInNyYy9tYWluL3Jlc291cmNlc1wi55uu5b2V5LiL44CC5aaC5p6c57yW5YaZ55qEamF2YeaWh+S7tuS4jeWcqCdkYW8n5oiWJ2VudGl0eSfov5nkuKTkuKpwYWNrYWdl5oiW5a2QcGFja2FnZeS4i++8jOaWh+S7tuWQjeensOmcgOimgeS7pSdDbGllbnQn5byA5aS044CC5aaC5p6cJ2J5dGVmdW4tYm9vdC1iaXotY29tbW9uJ+aooeWdl+S4i+eahOWtkOaooeWdl+WtmOWcqOebuOS6kuS+nei1lu+8jOW/hemhu+imgeS/ruaUueWtkOaooeWdl+eahHBvbS54bWzmlofku7bvvIzlvJXlhaXlr7nlupTnmoTkvp3otZbmqKHlnZfjgIJcbiMjIOesrDnmraVcbumcgOimgeabtOaWsFxcYGRvYy/lkI7nq6/ku6PnoIHlvIDlj5Hov5vluqYuanNvblxcYOmHjOmdouivpemhtemdouWvueW6lOeahGpzb27nmoRjb2RlU3RhdHVz5a2X5q615Li6Y29tcGxldGVk44CCXG4jIyDnrKwxMOatpVxu5omA5pyJ5Luj56CB57yW5YaZ5a6M5q+V5ZCO77yM6ZyA6KaB5Zyo5pW05Liq6aG555uu5omn6KGMICdtdm4gY2xlYW4gY29tcGlsZScg5ZG95Luk57yW6K+R6aG555uu77yM56aB5q2i5Y2V5Liq5qih5Z2X5Y2V54us57yW6K+R77yM6YGH5Yiw57yW6K+R5aSx6LSl5pe26ZyA6KaB5L+u5pS56ZSZ6K+v5Luj56CB44CCXG5cbiMjIOmhueebruamgui/sFxu5pys6aG555uu5Z+65LqOIFNwcmluZyBCb290IDIuNy4277yM6YeH55So5aSa5qih5Z2X5p625p6E6K6+6K6h77yM5L2/55So5LqGIExvbWJvayDov5vooYznroDljJbku6PnoIHvvIxNeUJhdGlzIFBsdXMg6L+b6KGM5pWw5o2u5oyB5LmF5YyW77yMTWFwU3RydWN0IOi/m+ihjOWvueixoei9rOaNouOAglxuIyMjIOmhueebruaVtOS9k+aetuaehFxuXFxgXFxgXFxgXG5ieXRlZnVuLWJvb3QvXG7ilJzilIDilIAgYnl0ZWZ1bi1ib290LWFwaS8gICAgICAgICAgIyDlrprkuYnlhoXpg6hzZXJ2aWNl5o6l5Y+jXG7ilJzilIDilIAgYnl0ZWZ1bi1ib290LWJpei8gICAgICAgICAgIyDkuJrliqHmqKHlnZfvvIzljIXlkKvlhbfkvZPkuJrliqHlrp7njrBcbuKUnOKUgOKUgCBieXRlZnVuLWJvb3QtZnJhbWV3b3JrLyAgICAjIOahhuaetuaguOW/g+aooeWdl++8jOaPkOS+m+WfuuehgOWKn+iDvVxu4pSc4pSA4pSAIGJ5dGVmdW4tYm9vdC1tb2R1bGUvICAgICAgICMg5Yqf6IO95qih5Z2X6ZuG5ZCIXG7ilIIgICDilJzilIDilIAgYnl0ZWZ1bi1tb2R1bGUtbWVzc2FnZS8gICAgIyDmtojmga/mqKHlnZdcbuKUgiAgIOKUnOKUgOKUgCBieXRlZnVuLW1vZHVsZS1tb25pdG9yLyAgICAjIOebkeaOp+aooeWdl1xu4pSCICAg4pSU4pSA4pSAIGJ5dGVmdW4tbW9kdWxlLXF1YXJ0ei8gICAgICMg5a6a5pe25Lu75Yqh5qih5Z2XXG7ilJzilIDilIAgYnl0ZWZ1bi1ib290LXN5c3RlbS8gICAgICAgIyDns7vnu5/nrqHnkIbmqKHlnZdcbuKUlOKUgOKUgCBieXRlZnVuLXNlcnZlci1zaW1wbGUvICAgICAjIOWQr+WKqOaooeWdl1xu4pSc4pSA4pSAIGRvYy8gICAgICAgICAgICAgICAgICAgICAgICMg6K+05piO5paH5qGjXG7ilIIgICDilJTilIDilIAgYXBpRG9jLyAgICAgICAgICAgICAgICAjIOW3suacieaooeWdl+eahOaOpeWPo+aWh+aho1xu4pSCICAg4pSc4pSA4pSAIEJhY2tlbmRBcGlDb2RlRGVzY3JpcHRpb24ubWQvICAgICMg5ZCO56uv5o6l5Y+j5Luj56CB5o+P6L+wXG7ilIIgICDilJTilIDilIAgYnl0ZWZ1bi1ib290LXNpbXBsZS5zcWwvICAgICAgICAgIyDmlbDmja7lupPooajnu5PmnoRcblxcYFxcYFxcYFxuIyMjIyBieXRlZnVuLWJvb3Qtc3lzdGVtIOezu+e7n+euoeeQhuaooeWdl+ivpue7huivtOaYjlxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9jb250cm9sbGVyL2NsaWVudC8qKu+8mkPnq6/mjqfliLblsYLvvIzotJ/otKPmjqXmlLblkozlk43lupTliY3nq6/or7fmsYLjgIJcbi0gKipjb20vYnl0ZWZ1bi9zeXN0ZW0vY29udmVydC8qKu+8muWvueixoei9rOaNouWxgu+8jOi0n+i0oyBFbnRpdHkvVk8vRFRPIOS5i+mXtOeahOWxnuaAp+aLt+i0neWSjOi9rOaNou+8jOS+v+S6juWIhuemu+aVsOaNrue7k+aehOOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9kYW8vKirvvJrmlbDmja7orr/pl67lsYLvvIzlrprkuYkgTWFwcGVyIOaOpeWPo++8jOmFjeWQiCBNeUJhdGlzL015QmF0aXNQbHVzIOi/m+ihjOaVsOaNruW6k+aTjeS9nOOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9lbnRpdHkvKirvvJrlrp7kvZPnsbvvvIzpgJrluLjkuI7mlbDmja7lupPooajkuIDkuIDlr7nlupTvvIzluLjnlKggTG9tYm9rIOazqOino++8iOWmgiBARGF0Ye+8ieeugOWMluS7o+eggeOAglxuLSAqKmNvbS9ieXRlZnVuL3N5c3RlbS9xdWVyeS8qKu+8muafpeivouWPguaVsOWvueixoe+8jOWwgeijheaOpeWPo+ivt+axgueahOafpeivouadoeS7tu+8jOWIhiBhZG1pbi9jbGllbnTjgIJcbi0gKipjb20vYnl0ZWZ1bi9zeXN0ZW0vc2VydmljZS8qKu+8muS4muWKoemAu+i+keWxgu+8jOWumuS5ieacjeWKoeaOpeWPo+WPiuWFtuWunueOsO+8jOWIhiBhZG1pbi9jbGllbnTjgIJcbi0gKipjb20vYnl0ZWZ1bi9zeXN0ZW0vdm8vKirvvJrop4blm77lr7nosaHvvIzlsIHoo4Xov5Tlm57nu5nliY3nq6/nmoTmlbDmja7nu5PmnoTvvIzliIYgYWRtaW4vY2xpZW5044CCXG4tICoqcmVzb3VyY2VzL21hcHBlci8qKu+8mk15QmF0aXMg55qEIFhNTCDmmKDlsITmlofku7bvvIzlrprkuYkgU1FMIOivreWPpeWSjOe7k+aenOaYoOWwhOOAglxuXG7ms6jmhI/vvIzlnKhieXRlZnVuLWJvb3Qtc3lzdGVt5Lit5bey57uP5YyF5ZCr5LqG55So5oi35Z+656GA5L+h5oGv55qE5Yqf6IO95Luj56CB44CCXG7lr7nlupTlrp7kvZPnsbvkuLpcXGBjb20uYnl0ZWZ1bi5zeXN0ZW0uZW50aXR5LlN5c1VzZXJFbnRpdHlcXGDvvJtcbuWvueW6lGNvbnRyb2xsZXLkuLpcXGBjb20uYnl0ZWZ1bi5zeXN0ZW0uY29udHJvbGxlci5jbGllbnQuQ2xpZW50U3lzQXV0aENvbnRyb2xsZXJcXGDvvJtcbuWvueW6lOeahOaVsOaNruihqOS4ulxcYHN5c191c2VyXFxgO1xuXG4jIyMjIGJ5dGVmdW4tYm9vdC1mcmFtZXdvcmsg5qGG5p625qC45b+D5qih5Z2X5qaC6KaB6K+05piOXG4tICoqY29tLmJ5dGVmdW4uZnJhbWV3b3JrLmZhY3RvcnkuU2VydmljZUZhY3RvcnkqKu+8muacjeWKoeW3peWOguexu++8jOeUqOS6juWIm+W7uuS4muWKoeacjeWKoeWunuS+i+OAglxuLSAqKmNvbS5ieXRlZnVuLmZyYW1ld29yay5jb21tb24ucmVzdWx0LlBhZ2VSZXN1bHQqKu+8muWIhumhtee7k+aenOexu++8jOeUqOS6juWwgeijheWIhumhteafpeivoueahOe7k+aenOOAglxuLSAqKmNvbS5ieXRlZnVuLmZyYW1ld29yay5jb21tb24ucmVzdWx0LlJlc3VsdCoq77ya6YCa55So57uT5p6c57G777yM55So5LqO5bCB6KOF5o6l5Y+j6LCD55So55qE57uT5p6c77yM5YyF5ous5oiQ5Yqf44CB5aSx6LSl44CB5byC5bi4562J5oOF5Ya144CCXG5cbiMjIyDmqKHlnZfnm67lvZXnu5PmnoTkuI7lip/og71cbiMjIyMg5Lia5Yqh5qih5Z2X5qCH5YeG55uu5b2V57uT5p6EXG5cXGBcXGBcXGBcbnNyYy9tYWluL1xu4pSc4pSA4pSAIGphdmEvXG7ilIIgICDilJTilIDilIAgY29tL2J5dGVmdW4vYml6L1xu4pSCICAgICAgIOKUnOKUgOKUgCBjb25maWcvICAgICAgICAgIyDphY3nva7nsbvvvIzlpoLlt6XljoLphY3nva7jgIFCZWFuIOWumuS5ieetiVxu4pSCICAgICAgIOKUnOKUgOKUgCBjb250cm9sbGVyLyAgICAgIyDmjqfliLblmajvvIzliIbkuLogYWRtaW4g5ZKMIGNsaWVudCDkuKTnq6/vvIzlpITnkIbliY3nq6/or7fmsYJcbuKUgiAgICAgICDilIIgICDilJzilIDilIAgYWRtaW4vICAgICAgIyDlkI7lj7DnrqHnkIbnq6/nm7jlhbPmjqXlj6NcbuKUgiAgICAgICDilIIgICDilJTilIDilIAgY2xpZW50LyAgICAgIyBD56uv55So5oi355u45YWz5o6l5Y+jXG7ilIIgICAgICAg4pSc4pSA4pSAIGNvbnZlcnQvICAgICAgICAjIFZPL0VudGl0eS9EVE8g5LmL6Ze055qE6L2s5o2i5ZmoXG7ilIIgICAgICAg4pSCICAg4pSc4pSA4pSAIGFkbWluLyAgICAgICMg5ZCO5Y+w566h55CG56uv6L2s5o2i5ZmoXG7ilIIgICAgICAg4pSCICAg4pSU4pSA4pSAIGNsaWVudC8gICAgICMgQ+err+eUqOaIt+i9rOaNouWZqFxu4pSCICAgICAgIOKUnOKUgOKUgCBkYW8vICAgICAgICAgICAgIyBNeUJhdGlzL015QmF0aXNQbHVzIOaMgeS5heWxguaOpeWPo++8iE1hcHBlcu+8iVxu4pSCICAgICAgIOKUnOKUgOKUgCBlbnRpdHkvICAgICAgICAgIyDlrp7kvZPnsbvvvIzlr7nlupTmlbDmja7lupPooajvvIzluLjnlKggTG9tYm9rIOeugOWMllxu4pSCICAgICAgIOKUnOKUgOKUgCBxdWVyeS8gICAgICAgICAgIyDmn6Xor6Llj4LmlbDlr7nosaFcbuKUgiAgICAgICDilIIgICDilJzilIDilIAgYWRtaW4vICAgICAgIyDlkI7lj7DnrqHnkIbnq6/mn6Xor6Llj4LmlbBcbuKUgiAgICAgICDilIIgICDilJTilIDilIAgY2xpZW50LyAgICAgIyBD56uv55So5oi35p+l6K+i5Y+C5pWwXG7ilIIgICAgICAg4pSc4pSA4pSAIHNlcnZpY2UvICAgICAgICAjIOS4muWKoeacjeWKoeaOpeWPo+S4juWunueOsO+8jOWIhiBhZG1pbi9jbGllbnRcbuKUgiAgICAgICDilIIgICDilJzilIDilIAgYWRtaW4vICAgICAgIyDlkI7lj7DnrqHnkIbnq6/mnI3liqHmjqXlj6NcbuKUgiAgICAgICDilIIgICDilIIgICDilJTilIDilIAgaW1wbC8gICAjIOWQjuWPsOeuoeeQhuerr+acjeWKoeWunueOsFxu4pSCICAgICAgIOKUgiAgIOKUlOKUgOKUgCBjbGllbnQvICAgICAjIEPnq6/nlKjmiLfmnI3liqHmjqXlj6NcbuKUgiAgICAgICDilIIgICAgICAg4pSU4pSA4pSAIGltcGwvICAgIyBD56uv55So5oi35pyN5Yqh5a6e546wXG7ilIIgICAgICAg4pSU4pSA4pSAIHZvLyAgICAgICAgICAgICAjIOi/lOWbnuWJjeerr+eahOinhuWbvuWvueixoe+8iFZP77yJXG7ilIIgICAgICAgICAgIOKUnOKUgOKUgCBhZG1pbi8gICAgICAjIOWQjuWPsOeuoeeQhuerryBWT1xu4pSCICAgICAgICAgICDilJTilIDilIAgY2xpZW50LyAgICAgIyBD56uv55So5oi3IFZPXG7ilJTilIDilIAgcmVzb3VyY2VzL1xuICAgIOKUlOKUgOKUgCBtYXBwZXIvXG4gICAg4pSCICAg4pSU4pSA4pSAIGJpei9cbiAgICDilIIgICAgICAgIOKUlOKUgOKUgCBDb21tb25Db2xsZWN0RGFvLnhtbCAgIyBNeUJhdGlzIOaYoOWwhOaWh+S7tlxuICAgIOKUlOKUgOKUgOKUgGF1dGgueW1sICAgICAgICAgICAgIyDphY3nva7ml6DpnIDnmbvlvZXorqTor4HnmoTmjqXlj6Por7fmsYLot6/lvoRcblxcYFxcYFxcYFxuIyMjIyMg6K+m57uG6K+05piOXG4tICoqY29uZmlnLyoq77ya5a2Y5pS+6YWN572u57G777yM5aaC5pyN5Yqh5bel5Y6C44CBQmVhbiDphY3nva7nrYnjgIJcbi0gKipjb250cm9sbGVyLyoq77ya5o6n5Yi25bGC77yM6LSf6LSj5o6l5pS25ZKM5ZON5bqU5YmN56uv6K+35rGC77yM5YiG5Li6IGFkbWlu77yI5ZCO5Y+w566h55CG77yJ5ZKMIGNsaWVudO+8iEPnq6/nlKjmiLfvvInjgIJcbi0gKipjb252ZXJ0Lyoq77ya5a+56LGh6L2s5o2i5bGC77yM6LSf6LSjIEVudGl0eS9WTy9EVE8g5LmL6Ze055qE5bGe5oCn5ou36LSd5ZKM6L2s5o2i77yM5L6/5LqO5YiG56a75pWw5o2u57uT5p6E44CCXG4tICoqZGFvLyoq77ya5pWw5o2u6K6/6Zeu5bGC77yM5a6a5LmJIE1hcHBlciDmjqXlj6PvvIzphY3lkIggTXlCYXRpcy9NeUJhdGlzUGx1cyDov5vooYzmlbDmja7lupPmk43kvZzjgIJcbi0gKiplbnRpdHkvKirvvJrlrp7kvZPnsbvvvIzpgJrluLjkuI7mlbDmja7lupPooajkuIDkuIDlr7nlupTvvIzluLjnlKggTG9tYm9rIOazqOino++8iOWmgiBARGF0Ye+8ieeugOWMluS7o+eggeOAglxuLSAqKnF1ZXJ5Lyoq77ya5p+l6K+i5Y+C5pWw5a+56LGh77yM5bCB6KOF5o6l5Y+j6K+35rGC55qE5p+l6K+i5p2h5Lu277yM5YiGIGFkbWluL2NsaWVudOOAglxuLSAqKnNlcnZpY2UvKirvvJrkuJrliqHpgLvovpHlsYLvvIzlrprkuYnmnI3liqHmjqXlj6Plj4rlhbblrp7njrDvvIzliIYgYWRtaW4vY2xpZW5044CCXG4tICoqdm8vKirvvJrop4blm77lr7nosaHvvIzlsIHoo4Xov5Tlm57nu5nliY3nq6/nmoTmlbDmja7nu5PmnoTvvIzliIYgYWRtaW4vY2xpZW5044CCXG4tICoqcmVzb3VyY2VzL21hcHBlci9iaXovKirvvJpNeUJhdGlzIOeahCBYTUwg5pig5bCE5paH5Lu277yM5a6a5LmJIFNRTCDor63lj6Xlkoznu5PmnpzmmKDlsITjgIJcblxuIyMjIOaKgOacr+agiOivtOaYjlxuIyMjIyDmoLjlv4PmoYbmnrZcbi0gKipTcHJpbmcgQm9vdCAyLjcuNioq77ya5Li75qGG5p6277yM5o+Q5L6b6Ieq5Yqo6YWN572u44CB5YaF5bWM5pyN5Yqh5Zmo562J54m55oCnXG4tICoqU3ByaW5nIFNlY3VyaXR5KirvvJrlronlhajmoYbmnrbvvIzmj5DkvpvorqTor4HjgIHmjojmnYPjgIHkvJror53nrqHnkIbnrYnlip/og71cbi0gKipTcHJpbmcgRGF0YSBSZWRpcyoq77yaUmVkaXPnvJPlrZjmlK/mjIFcblxuIyMjIyDmlbDmja7mjIHkuYXljJZcbi0gKipNeUJhdGlzIFBsdXMgMy41LjIqKu+8muWinuW8uueahE15QmF0aXPmoYbmnrbvvIzmj5DkvptDUlVE5pON5L2c44CB5YiG6aG144CB5p2h5Lu25p6E6YCg5Zmo562JXG4tICoq6L6+5qKm5pWw5o2u5bqTKirvvJrmlK/mjIHovr7moqbmlbDmja7lupPpqbHliqhcblxuIyMjIyDku6PnoIHnroDljJZcbi0gKipMb21ib2sqKu+8mumAmui/h+azqOino+iHquWKqOeUn+aIkGdldHRlci9zZXR0ZXLjgIHmnoTpgKDmlrnms5XjgIF0b1N0cmluZ+etieagt+adv+S7o+eggVxuLSAqKk1hcFN0cnVjdCAxLjQuMioq77ya5a+56LGh5pig5bCE5qGG5p6277yM6Ieq5Yqo55Sf5oiQRW50aXR5L1ZPL0RUT+S5i+mXtOeahOi9rOaNouS7o+eggVxuXG4jIyMjIOW3peWFt+W6k1xuLSAqKkh1dG9vbCA1LjcuMjIqKu+8mkphdmHlt6XlhbfnsbvlupPvvIzmj5DkvpvkuLDlr4znmoTlt6Xlhbfmlrnms5Vcbi0gKipGYXN0SlNPTiAyLjAuNDcqKu+8mkpTT07lpITnkIblupNcbi0gKipFYXN5RXhjZWwgMy4xLjEqKu+8mkV4Y2Vs5a+85YWl5a+85Ye65bqTXG4tICoqRWFzeVRyYW5zIDIuMC4xMioq77ya5pWw5o2u57+76K+R5qGG5p62XG5cbiMjIyMgQVBJ5paH5qGj5bel5YW3XG4tICoqS25pZmU0aiA0LjQuMCoq77ya5Z+65LqOT3BlbkFQSSAz55qEQVBJ5paH5qGj55Sf5oiQ5bel5YW3XG5cbiMjIyMg5YW25LuW54m55oCnXG4tICoq5aSa56ef5oi35pSv5oyBKirvvJrmlK/mjIHlpJrnp5/miLfmnrbmnoRcbi0gKipYU1PpmLLmiqQqKu+8mumYsuatolhTU+aUu+WHu1xuLSAqKumqjOivgeeggeaUr+aMgSoq77ya6ZuG5oiQ6aqM6K+B56CB5Yqf6IO9XG4tICoq5paH5Lu25a2Y5YKoKirvvJrmlK/mjIHpmL/ph4zkupFPU1PjgIHohb7orq/kupFDT1PjgIHkuIPniZvkupHjgIFNaW5JT+etieWkmuenjeWtmOWCqOaWueW8j1xuLSAqKuefreS/oeacjeWKoSoq77ya5pSv5oyB6Zi/6YeM5LqR44CB6IW+6K6v5LqR55+t5L+h5pyN5YqhXG4tICoq5b6u5L+h6ZuG5oiQKirvvJrmlK/mjIHlvq7kv6HlhazkvJflj7flvIDlj5FcblxuIyMgZGIuanNvbuaWh+S7tuWGheWuueagvOW8j+inhOiMg1xuXFxgXFxgXFxganNvblxuW1xuICB7XG4gICAgXCJtb2R1bGVOYW1lXCI6IFwi5qih5Z2X5ZCN56ew77yM5ZG95ZCN6KeE6IyD77yaYnl0ZWZ1bi1ib290LWJpei3lrZDmqKHlnZflkI3np7BcIixcbiAgICBcInRhYmxlTmFtZVwiOiBcIuihqOWQjVwiLFxuICAgIFwidGFibGVDb21tZW50XCI6IFwi6KGo5rOo6YeKXCIsXG4gICAgXCJjb2x1bW5zXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJuYW1lXCI6IFwi5a2X5q615ZCN56ewXCIsXG4gICAgICAgIFwidHlwZVwiOiBcIuWtl+auteWvueW6lOeahGphdmHnsbvlnotcIixcbiAgICAgICAgXCJudWxsYWJsZVwiOiBcIuaYr+WQpuWFgeiuuOS4uk5VTExcIixcbiAgICAgICAgXCJkZWZhdWx0XCI6IFwi6buY6K6k5YC8XCIsXG4gICAgICAgIFwiY29tbWVudFwiOiBcIuWtl+auteazqOmHilwiLFxuICAgICAgICBcInByaW1hcnlLZXlcIjogXCLmmK/lkKbkuLrkuLvplK5cIlxuICAgICAgfVxuICAgIF1cbiAgfVxuXVxuXFxgXFxgXFxgXG4jIyDkv67mlLnphY3nva7mlofku7ZhdXRoLnltbFxuXFxgXFxgXFxgeW1sXG5hdXRoOlxuICBpZ25vcmVfdXJsczpcbiAgICAtIC9jbGllbnQvYml6L2V4YW1wbGUvKipcblxcYFxcYFxcYFxuIyMg57un5om/QmFzZVNlcnZpY2VJbXBs55qEU2VydmljZeWunueOsOexu1xu5aaC5p6cU2VydmljZeeahOWunueOsOexu+e7p+aJv+S6hkJhc2VTZXJ2aWNlSW1wbO+8jOmCo+S5iOWPr+S7peebtOaOpeS9v+eUqOazm+Wei0Rhb++8midiYXNlTWFwcGVyJ++8jOaXoOmcgOaJi+WKqOazqOWFpeOAglxuIyMg57un5om/QmFzZVNlcnZpY2XnmoRTZXJ2aWNl5o6l5Y+j57G7XG7lpoLmnpxTZXJ2aWNl55qE5o6l5Y+j57G757un5om/5LqGQmFzZVNlcnZpY2XvvIzpgqPkuYjlj6/ku6Xkvb/nlKjku6XkuIvmlrnms5XvvJpcbnwg5pa55rOV5ZCNICAgICAgICAgICAgICAgICB8IOS4reaWh+ivtOaYjiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG58IFxcYHNhdmVcXGAgICAgICAgICAgICAgIHwg5o+S5YWl5LiA5p2h6K6w5b2V77yI6YCJ5oup5a2X5q6177yM562W55Wl5o+S5YWl77yJICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHNhdmVCYXRjaFxcYCAgICAgICAgIHwg5o+S5YWl77yI5om56YeP77yJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgc2F2ZU9yVXBkYXRlQmF0Y2hcXGAgfCDmibnph4/kv67mlLnmj5LlhaUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGByZW1vdmVCeUlkXFxgICAgICAgICB8IOagueaNriBJRCDliKDpmaQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgcmVtb3ZlQnlNYXBcXGAgICAgICAgfCDmoLnmja4gY29sdW1uTWFwIOadoeS7tu+8jOWIoOmZpOiusOW9lSAgICAgICAgICAgICAgICAgICAgfFxufCBcXGByZW1vdmVcXGAgICAgICAgICAgICB8IOagueaNriBlbnRpdHkg5p2h5Lu277yM5Yig6Zmk6K6w5b2VICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHJlbW92ZUJ5SWRzXFxgICAgICAgIHwg5Yig6Zmk77yI5qC55o2uSUQg5om56YeP5Yig6Zmk77yJICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGByZW1vdmVCYXRjaEJ5SWRzXFxgICB8IOaJuemHj+WIoOmZpChqZGJj5om56YeP5o+Q5LqkKSAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGB1cGRhdGVCeUlkXFxgICAgICAgICB8IOagueaNriBJRCDpgInmi6nkv67mlLkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHVwZGF0ZUJhdGNoQnlJZFxcYCAgIHwg5qC55o2uSUQg5om56YeP5pu05pawICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgc2F2ZU9yVXBkYXRlXFxgICAgICAgfCBUYWJsZUlkIOazqOino+WtmOWcqOabtOaWsOiusOW9le+8jOWQpuaPkuWFpeS4gOadoeiusOW9lSAgICAgICAgICAgICAgICB8XG58IFxcYGdldEJ5SWRcXGAgICAgICAgICAgIHwg5qC55o2uIElEIOafpeivoiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBsaXN0QnlJZHNcXGAgICAgICAgICB8IOafpeivou+8iOagueaNrklEIOaJuemHj+afpeivou+8iSAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgY291bnRcXGAgICAgICAgICAgICAgfCDmn6Xor6LmgLvorrDlvZXmlbAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBsaXN0XFxgICAgICAgICAgICAgICB8IOafpeivouWIl+ihqCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgXFxgcGFnZVxcYCAgICAgICAgICAgICAgfCDnv7vpobXmn6Xor6IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYGxpc3RNYXBzXFxgICAgICAgICAgIHwg5p+l6K+i5YiX6KGoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCBcXGBsaXN0T2Jqc1xcYCAgICAgICAgICB8IOafpeivouWFqOmDqOiusOW9lSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58IFxcYHBhZ2VNYXBzXFxgICAgICAgICAgIHwg57+76aG15p+l6K+iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuYDsiXX0=
|
package/build/uiDesign.d.ts
CHANGED
|
@@ -1,2 +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\u5B8812\u4E2A\u89C4\u5219\u8981\u6C42\uFF0C\u6839\u636E'\u7528\u6237\u9700\u6C42\u63CF\u8FF0'\u5E2E\u52A9\u6211\u5B8C\u6210\u4E00\u4E2AiOS App\u7684\u539F\u578B\u8BBE\u8BA1\u3002\n\n## \u9875\u9762\u9ED8\u8BA4\u4E1A\u52A1\u903B\u8F91\n- **\u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u9700\u8981\u4E25\u683C\u9075\u5B88\u4EE5\u4E0B\u9ED8\u8BA4\u7684\u9875\u9762\u4E1A\u52A1\u903B\u8F91\u8BF4\u660E**\n - \u767B\u5F55\u9875\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u3001\u5E2E\u52A9\u7B49\u7B49\u90FD\u4E0D\u5F97\u4F7F\u7528\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u9875\u9762\u6765\u5B9E\u73B0\n - \u9875\u9762\u5E03\u5C40\uFF1A\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A\u5DE6\u8FB9\u8FD4\u56DE\u3001\u53F3\u8FB9\u5E2E\u52A9\n - header\uFF1A\u4E00\u4E2Alogo\n - \u767B\u5F55\u65B9\u5F0F\u5207\u6362\u533A (vtype=\"multiStateContainer\")\n - \u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u72B6\u6001 (vtype=\"oneStateContentContainer\")\n - \u624B\u673A\u53F7/\u90AE\u7BB1\u8F93\u5165\u6846 (vtype=\"input\")\n - \u5BC6\u7801\u8F93\u5165\u6846 (vtype=\"input\")\n - \u9A8C\u8BC1\u7801\u767B\u5F55\u72B6\u6001 (vtype=\"oneStateContentContainer\")\n - \u624B\u673A\u53F7\u8F93\u5165\u6846 (vtype=\"input\")\n - \u9A8C\u8BC1\u7801\u8F93\u5165\u533A (vtype=\"container\"): \u9A8C\u8BC1\u7801\u8F93\u5165\u6846 (vtype=\"input\"), \u83B7\u53D6\u9A8C\u8BC1\u7801\u6309\u94AE (vtype=\"button\")\n - \u7528\u6237\u534F\u8BAE\u533A\u57DF (vtype=\"container\")\n - \u767B\u5F55\u6309\u94AE (vtype=\"button\")\n - \u529F\u80FD\u6309\u94AE\u533A (vtype=\"container\")\n - \u65B0\u7528\u6237\u6CE8\u518C (vtype=\"button\")\n - \u9A8C\u8BC1\u7801/\u8D26\u53F7\u5BC6\u7801\u5207\u6362\u6309\u94AE (vtype=\"button\")\n - \u5FD8\u8BB0\u5BC6\u7801 (vtype=\"button\")\n - \u5176\u4ED6\u767B\u5F55\u65B9\u5F0F\uFF08\u5C45\u5E95\u90E8\u95F4\u8DDD30px\uFF09\uFF1A\u5FAE\u4FE1\u767B\u5F55\u3001QQ\u767B\u5F55\u3001\u5FAE\u535A\u767B\u5F55\n - \u9996\u9875\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u3001\u5E7F\u544A\u914D\u7F6E\uFF08\u5982\u679C\u6709\u5E7F\u544A\u7684\u8BDD\uFF09\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u9996\u9875\u662F\u5404\u4E2A\u529F\u80FD\u7684\u5165\u53E3\uFF0C\u56E0\u6B64\u9996\u9875\u9700\u8BBE\u7F6E\u4E3A\u7531\u591A\u4E2A\u5B50\u9875\u9762\u7EC4\u6210\u7684\u4E3B\u4F53\u9875\u9762\uFF0C\u6BD4\u5982\uFF1A\u8D2D\u7269APP\u9996\u9875\u4E00\u822C\u5E95\u90E8\u6709\u4E00\u4E2A\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\uFF08\u6BD4\u5982\uFF1A\u9996\u9875\u3001\u6D3B\u52A8\u3001\u8D2D\u7269\u8F66\u3001\u6D88\u606F\u3001\u6211\u7684\uFF09\uFF0C\u70B9\u51FB\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u56FE\u6807\u4F1A\u5207\u6362\u5230\u5BF9\u5E94\u7684tab\u5B50\u9875\u9762\uFF0C\u6BCF\u4E2Atab\u5B50\u9875\u9762\u8D1F\u8D23\u81EA\u5DF1\u7684\u72EC\u7ACB\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\u8D2D\u7269\u8F66tab\u5C31\u8D1F\u8D23\u8D2D\u7269\u8F66\u76F8\u5173\u4E1A\u52A1\u903B\u8F91\u3002\n - \u9996\u9875\u4E3B\u4F53\u9875\u53EA\u8D1F\u8D23\u529F\u80FDtab\u5207\u6362\u4E0D\u8D1F\u8D23\u6BCF\u4E00\u4E2Atab\u5177\u4F53\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u56E0\u6B64\u53EA\u6709\u4E00\u4E2A\u5E95\u90E8tab\u529F\u80FD\u5BFC\u822A\u680F\u8282\u70B9\u7EC4\u4EF6\uFF0C\u6CA1\u6709\u4EFB\u4F55\u6570\u636E\u52A0\u8F7D\u903B\u8F91\uFF0C\u5982\u679C\u6709\u5E7F\u544A\u9875\u53EA\u6709\u4E00\u4E2A\u5E7F\u544A\u9875\u6570\u636EAPI\u62C9\u53D6\u7684\u7F51\u7EDC\u8BF7\u6C42\uFF0C\u8BF7\u6C42\u540E\u653E\u5230\u672C\u5730\u6301\u4E45\u5316\u3002\n\n## \u6838\u5FC3\u539F\u5219\n- **\uD83D\uDD25 \u4EE3\u7801\u89C4\u8303**\uFF1A\u53EA\u80FD\u4F7F\u7528html\u91CChead\u7684:root\u5DF2\u7ECF\u5B9A\u4E49\u597D\u7684\u989C\u8272\u53D8\u91CF\uFF0C\u4E0D\u5F97\u79C1\u81EA\u5B9A\u4E49\u5176\u4ED6\u989C\u8272\u53D8\u91CF\uFF0C\u4E5F\u4E0D\u80FD\u4F7F\u7528\u4EFB\u4F55\u5177\u4F53\u989C\u8272\u503C\uFF0C\u4F60\u53EA\u80FD\u4ECE:root\u4E2D\u9009\u62E9\u5408\u9002\u7684\u989C\u8272\u4F7F\u7528 \n \n## 1\u3001UI\u8BBE\u8BA1\u8981\u6C42\n- \u9075\u5FAAiPhone 16 Pro\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6393px\u9AD8\u5EA6852px)\n- \u91C7\u7528\u660E\u4EAE\u3001\u6D3B\u529B\u7684\u914D\u8272\u65B9\u6848\n- \u4F7F\u7528\u6700\u65B0\u7684iOS\u8BBE\u8BA1\u5143\u7D20\u548C\u4EA4\u4E92\u6A21\u5F0F\n- \u6587\u5B57\u7684\u5927\u5C0F\u5FC5\u987B\u8981\u6CE8\u610F\uFF0C\u4E0D\u80FD\u5927\uFF0C\u6587\u5B57\u7684\u5927\u5C0F\u8981\u504F\u5C0F\u7684\u98CE\u683C\u6765\u8FDB\u884C\u8BBE\u8BA1\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u4E3B\u9898\u8272\u6216\u4E3B\u9898\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5C3D\u91CF\u4E0D\u8981\u4F7F\u7528\u4E3B\u9898\u8272\u6216\u4E3B\u9898\u6E10\u53D8\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\u3002\n- hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF1A\u8BF7\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\uFF0C\u5982\u4E0D\u5F97\u4F7F\u7528\uFF1A \n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n \u6B63\u786E\u5199\u6CD5\u5E94\u8BE5\u662F\uFF1A\n .hot-sales-item:hover {\n background: ...;\n }\n- \u8F93\u5165\u6846\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57label\uFF0C\u5C3D\u91CF\u4F7F\u7528icon\u4EE3\u66FF\u6587\u5B57label\uFF0C\u5E76\u4E14icon\u653E\u5728\u8F93\u5165\u6846\u91CC\u9762\u7684\u5DE6\u4FA7\uFF0C\u8F93\u5165\u6846\u6709placeholder\u63D0\u793A\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u4E3A\u6BCF\u4E2A\u5C4F\u5E55\u6DFB\u52A0\u8BBE\u5907\u624B\u673A\u7CFB\u7EDF\u7684\u9876\u90E8\u72B6\u6001\u680Fvtype=\"phoneTopNavigateBar\"(\u9AD8\u5EA6\u5FC5\u987B\u8BBE\u5B9A\u4E3A22px\uFF0C\u663E\u793A\u624B\u673A\u65F6\u95F4\u3001\u4FE1\u53F7\u3001wifi\u7B49)\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u5E95\u90E8\u9996\u9875\u6307\u793A\u5668\u6A2A\u6761\u680Fvtype=\"phoneBottomHomeIndicatorBar\"(\u9AD8\u5EA6\u5FC5\u987B\u8BBE\u5B9A\u4E3A22px\uFF0C\u663E\u793A\u6A2A\u6761)\uFF0C\u4E0D\u8981\u906E\u4F4F\u5C4F\u5E55\u5185\u7684\u5185\u5BB9\uFF0C\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F\u548C\u624B\u673A\u5E95\u90E8\u6A2A\u6761\u680F\u9700\u8981\u5B9E\u73B0\u6C89\u6D78\u5F0F\uFF0C\u56E0\u6B64\u5B83\u4EEC\u8981\u770B\u60C5\u51B5\u8BBE\u7F6E\u80CC\u666F\u8272\u3002\n- \u767B\u5F55\u65B9\u5F0F\u5982\u679C\u7528\u6237\u6CA1\u6709\u63CF\u8FF0\u8BF4\u660E\uFF0C\u90A3\u5C31\u9ED8\u8BA4\u4F7F\u7528tab\u5207\u6362\u624B\u673A\u9A8C\u8BC1\u7801\u767B\u5F55\u548C\u8D26\u53F7\u5BC6\u7801\uFF0C\u4E0B\u9762\u662F\u7B2C\u4E09\u65B9\u767B\u5F55\u65B9\u5F0F\uFF1A\u5FAE\u4FE1\u767B\u5F55\u3001QQ\u767B\u5F55\u3001\u5FAE\u535A\u3002\n- \u5982\u679C\u7528\u6237\u6CA1\u6709\u63CF\u8FF0\u8BF4\u660E\uFF0C\u6CE8\u518C\u767B\u5F55\u9875\u9762\u4E00\u822C\u6709\u624B\u673A\u9A8C\u8BC1\u7801\u3001\u7528\u6237\u534F\u8BAE\u3001\u9690\u79C1\u534F\u8BAE\uFF0C\u5E76\u4E14\u4E24\u4E2A\u534F\u8BAE\u662F\u540C\u4E00\u884C\u7684\uFF0C\u4E00\u4E2Acheckbox\u5C31\u884C\u3002\n- \u5982\u679C\u9700\u8981\u9A8C\u8BC1\u7801\u586B\u5199\u9875\u9762\uFF0C\u90A3\u4E48\u5355\u4E2A\u9A8C\u8BC1\u7801\u6570\u5B57\u8F93\u5165\u6846\u7684\u5BBD\u5EA6\u548C\u9AD8\u5EA6\u5FC5\u987B\u662F35px\uFF0C\u5E76\u4E14\u6240\u6709padding\u3001padding-left\u3001padding-right\u3001padding-top\u3001padding-bottom\u90FD\u5FC5\u987B\u662F0\u3002\n- \u6240\u6709vtype=\"toast\"\u7684\u63D0\u793A\u8282\u70B9\u5FC5\u987B\u662F\u5728\u9875\u9762\u4E0B\u534A\u90E8\u4EFD\uFF0C\u8BBE\u7F6Ebottom=150px\uFF0C\u7EDD\u5BF9\u4E0D\u662F\u5728\u9875\u9762\u9876\u90E8\u3002\n\n## 2\u3001icon\u56FE\u6807\u4E0Eimg\u56FE\u7247\u5199\u6CD5\u548C\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\n- \u5F53\u9700\u8981img\u56FE\u7247\u65F6\uFF0Csrc\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE1\u523030\u7684\u6570\u5B57\uFF0C1~30\u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" vtype=\"image\">`\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528emoji\u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55emoji\u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528icon\u6216img\u56FE\u7247\u8282\u70B9\u6765\u4EE3\u66FF\u3002\n\n## 3\u3001html\u4EE3\u7801\u5199\u6CD5\u548C\u89C4\u5219\n- \u4E0D\u5F97\u4FEE\u6539html\u9875\u9762\u7684body\u3001phone-container\uFF08\u53EF\u4FEE\u6539\u9875\u9762\u80CC\u666F\u8272\uFF09\u3001page-container\u3001status-bar\u3001home-indicator\u3001home-indicator-bar\u7684css\u6837\u5F0F\u3002\n- \u9875\u9762\u80CC\u666F\u8272\u8BBE\u7F6E\u5728headerde\u7684style\u91CC\u5DF2\u6709\u7684.phone-container\u5B9A\u4E49\u7684background\u5C5E\u6027\u4E0A\uFF0Cpage-container\u8282\u70B9\u7981\u6B62\u518D\u5305\u4E00\u5C42\uFF0C\u5E94\u8BE5\u76F4\u63A5\u5728page-container\u91CC\u9762\u6DFB\u52A0\u5185\u5BB9\u8282\u70B9\uFF0C\u4E0D\u5F97\u518D\u5305\u4E00\u5C42\u3002\n- \u4F60\u7684\u5DE5\u4F5C\u53EA\u80FD\u662F\u5728\u9875\u9762\u5185\u5BB9\u663E\u793A\u533Apage-container\u8282\u70B9\u6DFB\u52A0\u5B69\u5B50\u8282\u70B9\uFF0C\u5E76\u8BBE\u8BA1\u7EF4\u62A4\u597D\u8FD9\u4E9B\u9875\u9762\u5185\u5BB9\u5B69\u5B50\u8282\u70B9\u5185\u5BB9\u548C\u6837\u5F0F\u3002\n- css\u6837\u5F0F\u5FC5\u987B\u5185\u8054\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5916\u90E8css\u6587\u4EF6\uFF0C\u5E76\u4E14\u4E0D\u5F97\u4F7F\u7528\u8282\u70B9\u7684style\u6765\u5199\u6837\u5F0F\uFF0C\u5FC5\u987B\u8981\u5148\u5728`<head>`\u7684`<style>`\u91CC\u9762\u5B9A\u4E49\u597D\u5404\u79CDcss\u6837\u5F0F\uFF0C\u7136\u540E\u8282\u70B9\u4F7F\u7528class\u5C5E\u6027\u6765\u5F15\u7528\u3002\n- \u591A\u72B6\u6001\u6837\u5F0F\uFF08active\u3001disabled\u3001focus\u3001hover\u7B49\uFF09\u7684\u8282\u70B9\u5FC5\u987B\u8981\u5728`<head>`\u7684`<style>`\u91CC\u9762\u5B9A\u4E49\u597D\u6240\u9700\u7684\u5404\u4E2A\u72B6\u6001\u7684css\u6837\u5F0F\uFF0C\u6BD4\u5982phone-input:\n``` css\n...\n.phone-input {\n ...\n}\n.phone-input.active {\n ...\n}\n.phone-input.disabled {\n ...\n}\n.phone-input.focus {\n ...\n}\n...\n```\n- \u6BCF\u4E2A\u8282\u70B9\u90FD\u5FC5\u987B\u6DFB\u52A0id\u3001name\u3001vtype\u5C5E\u6027\uFF0Cid\u5C5E\u6027\u503C\u5FC5\u987B\u662F\u82F1\u6587\uFF0Cname\u5C5E\u6027\u503C\u5FC5\u987B\u662F\u4E2D\u6587\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\n- \u6240\u6709\u8282\u70B9\u7C7B\u578Bvtype\u7684\u53D6\u503C\u4EC5\u9650\u4F7F\u7528'\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E'\uFF0C\u5FC5\u987B\u719F\u6089\u8BB0\u4F4F'\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E'\uFF0C\u5FC5\u987B\u5C06\u5176\u653E\u5230\u7F13\u5B58\n- \u8F6E\u64ADvtype=\"viewPager\"\u3001TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u7684\u6BCF\u4E00\u9875\u5185\u5BB9\u5FC5\u987B\u5B8C\u6574\uFF0C\u4E0D\u5F97\u7701\u7565\u4EFB\u4F55\u5185\u5BB9\u3002\u6BD4\u5982\u67093\u9875\uFF0C\u90A3\u4E48\u6BCF\u4E00\u9875\u7684\u5185\u5BB9\u90FD\u4E0D\u80FD\u7701\u7565\u3002\n- switch\u3001radio\u3001checkBox\u3001radioGroup\u3001checkBoxGroup\u8282\u70B9\u90FD\u4E0D\u5F97\u6DFB\u52A0\u4EFB\u4F55\u76F8\u5173\u7684js\u548Cts\u4EE3\u7801\u3002\n- vtype=\"switch\"\u3001vtype=\"radio\"\u3001vtype=\"checkBox\"\u8282\u70B9\u7684\u5B69\u5B50i\u6807\u7B7E\u8282\u70B9\u5FC5\u987B\u6DFB\u52A0\u4E00\u4E2AcheckedClass\u5C5E\u6027\uFF0C\u7528\u4E8E\u8868\u793A\u9009\u4E2D\u72B6\u6001\u7684icon\u56FE\u6807\u6837\u5F0F\u7C7B\u540D\uFF0C\u6BD4\u5982\uFF1A\n``` html\n<i name=\"\u5F00\u5173Icon\" vtype=\"icon\" id=\"switchIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n<i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n<i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fas xxx\" checkedClass=\"fas yyy\"></i>\n```\n- Icon\u56FE\u6807\u5FC5\u987B\u4F7F\u7528<i>\u6807\u7B7E\uFF0C<i>\u6807\u7B7E\u8282\u70B9\u4E5F\u5FC5\u987B\u9700\u8981\u6DFB\u52A0\u4E00\u4E2Aid\u548Cname\u7684\u5C5E\u6027\uFF0C\u5E76\u4E14<i>\u6807\u7B7E\u91CC\u9762\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528before\u3001after\u3001marker\u7B49\u7B49\u4EFB\u4F55\u4F2A\u5143\u7D20\u3002\n- html\u548Ccss\u6837\u5F0F\u91CC\u7EDD\u5BF9\u4E0D\u5F97\u4F7F\u7528before\u3001after\u3001marker\u7B49\u7B49\u4EFB\u4F55\u4F2A\u5143\u7D20\n- \u50CF\u7D20\u5FC5\u987B\u4F7F\u7528px\uFF0C\u4E0D\u4F7F\u7528rem\u548Cem\u7B49\u5176\u4ED6\u3002\n- \u274C css\u6837\u5F0F\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u6BDB\u73BB\u7483\u6548\u679C\uFF0C\u6BD4\u5982\uFF1Abackdrop-filter\n- \u5982\u679Cdiv\u8BBE\u7F6E\u4E86overflow-x:auto;\uFF0C\u90A3\u4E48div\u5FC5\u987B\u8BBE\u7F6Emin-height: xxpx;\u4EE5\u9632\u6B62div\u9AD8\u5EA6\u8FC7\u4F4E\u51FA\u73B0\u95EE\u9898\u3002\n- \u6240\u6709\u989C\u8272\u503C\u4E0D\u5F97\u4F7F\u7528\u5185\u7F6E\u7684\u989C\u8272\u5173\u952E\u5B57\uFF0C\u6BD4\u5982\u4E0D\u5F97\u4F7F\u7528red\u3001blue\u3001green\u3001yellow\u3001purple\u7B49\u989C\u8272\u5173\u952E\u5B57\uFF0C\u5FC5\u987B\u4F7F\u7528#000000\u3001#ffffff\u7B4916\u8FDB\u5236\u989C\u8272\u503C\u3002\n- \u5F00\u5173switch\u3001\u5355\u9009radio\u3001\u591A\u9009checkBox\u7684\u5B69\u5B50\u8282\u70B9\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u6807Icon\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5706\u89D2\u77E9\u5F62\u6216input\u6807\u7B7E\u6765\u5B9E\u73B0\uFF0C\u56FE\u6807\u4F7F\u7528Font Awesome CDN\uFF0CcheckBox\u4E0D\u9700\u8981\u6ED1\u52A8\u6548\u679C\u3002\n- \u7279\u522B\u6CE8\u610F\u5355\u9009\u7EC4vytpe=\"radioGroup\"\u7684\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A5\u4E2A\u7C7B\u522Btab\uFF0C\u9009\u4E2D\u5176\u4E2D1\u4E2A\uFF0C\u9009\u4E2D\u7684\u90A3\u4E2A\u5207\u6362\u5230\u9009\u4E2D\u72B6\u6001\uFF0C\u5176\u4ED64\u4E2A\u8981\u5207\u6362\u4E3A\u975E\u9009\u4E2D\u72B6\u6001\u3002\u8FD9\u79CD\u573A\u666F\u5C31\u5FC5\u987B\u4F7F\u7528\u5355\u9009\u7EC4\uFF0C\u591A\u9009vytpe=\"radioGroup\"\u5FC5\u987B\u5305\u542BN\u4E2A\u5355\u9009vtype=\"radio\"\u5B69\u5B50\u8282\u70B9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n```html\n<div name=\"xxx\u5355\u9009\u7EC4\" id=\"xxxRadioGroup\" class=\"xxx-radio-groupr\" vtype=\"radioGroup\">\n <div name=\"xxx\u5355\u90091\" id=\"xxxRadio1\" class=\"xxx-radio\" vtype=\"radio\">\n <i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n <div name=\"xxx\u5355\u90092\" id=\"xxxRadio2\" class=\"xxx-radio\" vtype=\"radio\">\n <i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n ...\n</div>\n- \u591A\u9009\u7EC4vtype=\"checkBoxGroup\"\u7EC4\u4EF6\u7528\u4E8E\u591A\u9009\u573A\u666F\uFF0C\u591A\u9009\u7EC4vtype=\"checkBoxGroup\"\u5FC5\u987B\u5305\u542BN\u4E2Avtype=\"checkBox\"\u5B69\u5B50\u8282\u70B9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n```html\n<div name=\"xxx\u591A\u9009\u7EC4\" id=\"xxxCheckBoxGroup\" class=\"xxx-check-box-group\" vtype=\"checkBoxGroup\">\n <div name=\"xxx\u591A\u90091\" id=\"xxxCheckBox1\" class=\"xxx-check-box\" vtype=\"checkBox\">\n <i name=\"\u591A\u9009Icon\" vtype=\"icon\" id=\"checkBoxIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n <div name=\"xxx\u591A\u90092\" id=\"xxxCheckBox2\" class=\"xxx-check-box\" vtype=\"checkBox\">\n <i name=\"\u591A\u9009Icon\" vtype=\"icon\" id=\"checkBoxIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n ...\n</div>\n```\n\n## 4\u3001\u8F6E\u64ADviewPager\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u8F6E\u64ADviewPager\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u8282\u70B9vtype=\"viewPager\"\u8F6E\u64AD\u8282\u70B9\u5BF9\u5E94\u6709\u4E00\u4E2A\u8F6E\u64AD\u6307\u793A\u5668vtype=\"viewPagerIndicatorContainer\"\u8282\u70B9\u4E0E\u4E4B\u5BF9\u5E94\uFF0C\u8282\u70B9vtype=\"viewPager\"\u5305\u542BN\u4E2Avtype=\"oneViewPagerContent\"\uFF0Cvtype=\"viewPagerIndicatorContainer\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"viewPagerIndicatorItemContainer\"\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u8F6E\u64AD\" id=\"xxxViewPager\" class=\"view-pager\" vtype=\"viewPager\">\n <div name=\"\u8F6E\u64AD\u5185\u5BB91\" id=\"xxxViewPagerContent1\" class=\"view-pager-content\" vtype=\"oneViewPagerContent\">\n // \u8F6E\u64AD\u5185\u5BB9\n </div>\n <div name=\"\u8F6E\u64AD\u5185\u5BB92\" id=\"xxxViewPagerContent2\" class=\"view-pager-content\" vtype=\"oneViewPagerContent\">\n // \u8F6E\u64AD\u5185\u5BB9\n </div>\n ...\n</div>\n<div name=\"\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\" id=\"xxxViewPagerIndicatorContainer\" class=\"view-pager-indicator-container\" vtype=\"viewPagerIndicatorContainer\">\n <div name=\"\u8F6E\u64AD\u6307\u793A\u5668item\u98791\" id=\"xxxViewPagerIndicatorItemContainer1\" class=\"view-pager-indicator-item-container\" vtype=\"viewPagerIndicatorItemContainer\">\n // \u8F6E\u64AD\u6307\u793A\u5668item\u9879\n </div>\n <div name=\"\u8F6E\u64AD\u6307\u793A\u5668item\u98792\" id=\"xxxViewPagerIndicatorItemContainer2\" class=\"view-pager-indicator-item-container\" vtype=\"viewPagerIndicatorItemContainer\">\n // \u8F6E\u64AD\u6307\u793A\u5668item\u9879\n </div>\n ...\n</div>\n```\n\n## 5\u3001TAB\u9009\u9879\u5361tabContainer\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- tab\u7EC4\u4EF6tabContainer\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u6700\u5916\u5C42\u8282\u70B9vtype=\"tabContainer\"\u5FC5\u987B\u5305\u542B\u77401\u4E2Avtype=\"tabMenuBar\"\u8282\u70B9\u548C1\u4E2Avtype=\"tabContentWrapperContainer\"\u8282\u70B9\uFF0C vtype=\"tabContentWrapperContainer\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"oneTabContentContainer\"\u8282\u70B9\uFF0Cvtype=\"tabMenuBar\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"tabMenuBarItem\"\u8282\u70B9\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"tab\" id=\"xxxTab\" class=\"tab\" vtype=\"tabContainer\">\n <div name=\"tab\u83DC\u5355\u680F\" id=\"xxxTabMenuBar\" class=\"tab-menu-bar\" vtype=\"tabMenuBar\">\n <div name=\"tab\u83DC\u5355\u680Fitem\u9879\" id=\"xxxTabMenuBarItem\" class=\"tab-menu-bar-item\" vtype=\"tabMenuBarItem\">\n // tab\u83DC\u5355\u680Fitem\u9879\n </div>\n ...\n </div>\n <div name=\"tab\u5185\u5BB9\u5BB9\u5668\" id=\"xxxTabContentWrapperContainer\" class=\"tab-content-wrapper-container\" vtype=\"tabContentWrapperContainer\">\n <div name=\"tab\u5185\u5BB9\" id=\"xxxTabContent\" class=\"tab-content\" vtype=\"oneTabContentContainer\">\n // tab\u5185\u5BB9\n </div>\n ...\n </div>\n</div>\n```\n\n## 6\u3001\u591A\u72B6\u6001\u5BB9\u5668multiStateContainer\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\u8282\u70B9\u5BB9\u5668\u5728\u6570\u636E\u52A0\u8F7D\u573A\u666F\u4E00\u822C\u6709\u52A0\u8F7D\u540E\u6709\u6570\u636E\u3001\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u56DB\u79CD\u72B6\u6001\uFF0C\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u72B6\u6001\u7684\u5185\u5BB9\u4E00\u822C\u662F\u5782\u76F4\u5C45\u4E2D\u7684\uFF0C\u7136\u540E\u5FC5\u987B\u9ED8\u8BA4\u662F\u663E\u793A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668multiStateContainer\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u6700\u5916\u5C42\u8282\u70B9vtype=\"multiStateContainer\"\u5305\u542BN\u4E2Avtype=\"oneStateContentContainer\"\u8282\u70B9\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\uFF0C\u9ED8\u8BA4\u5FC5\u987B\u8BBE\u7F6E\u6B63\u5E38\u6210\u529F\u52A0\u8F7D\u540E\u7684\u5185\u5BB9\u663E\u793A\u7684\u72B6\u6001\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u3001\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u7684\u56DB\u79CD\u72B6\u6001\u663E\u793A\uFF0C\u9ED8\u8BA4\u662F\u663E\u793A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\uFF0C\u5E76\u4E14\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u7684\u8282\u70B9\u5FC5\u987B\u6392\u5728\u6700\u540E\uFF0C\u6BD4\u5982html\u4EE3\u7801\u8FD9\u6837\u5199\uFF1A\n``` html\n...\n .state-content {\n ...\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0;\n ...\n }\n .state-content.active {\n opacity: 1;\n }\n...\n<div name=\"\u591A\u72B6\u6001\u5BB9\u5668\" id=\"multiStateContainer\" class=\"multi-state-container\" vtype=\"multiStateContainer\">\n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div name=\"\u52A0\u8F7D\u72B6\u6001\" id=\"loadingState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u52A0\u8F7D\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u9519\u8BEF\u72B6\u6001 -->\n <div name=\"\u9519\u8BEF\u72B6\u6001\" id=\"errorState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u9519\u8BEF\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u7A7A\u72B6\u6001 -->\n <div name=\"\u7A7A\u72B6\u6001\" id=\"emptyState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u7A7A\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u6709\u6570\u636E\u72B6\u6001 \u6392\u5728\u6700\u540E -->\n <div name=\"\u6709\u6570\u636E\u72B6\u6001\" id=\"dataState\" class=\"state-content active\" vtype=\"oneStateContentContainer\">\n // \u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n</div>\n```\n\n## 7\u3001\u5E95\u90E8tab\u5BFC\u822A\u680F\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u5E95\u90E8tab\u5BFC\u822A\u680F\u7EC4\u4EF6\u5FC5\u987B\u662Fvtype=\"bottomTabContainer\"\u5FC5\u987B\u5305\u542B\u7740vtype=\"subPage\"\u4E0Evtype=\"bottomTabNavigateBar\"\u5B69\u5B50\u8282\u70B9\uFF0C\u5176\u4E2D\u5B50\u9875\u9762vtype=\"subPage\"\u8282\u70B9\u5BB9\u5668\u91CC\u7EDD\u5BF9\u4E0D\u80FD\u6709\u5B69\u5B50\u8282\u70B9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u6709\u4EFB\u4F55\u5360\u4F4D\u5185\u5BB9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\" id=\"xxxBottomTab\" class=\"bottom-tab\" vtype=\"bottomTabContainer\">\n <div name=\"\u9996\u9875tab\u5B50\u9875\u9762\u5185\u5BB9\u533A\" id=\"homePage\" class=\"bottom-tab-content\" vtype=\"subPage\"></div>\n <div name=\"\u8D2D\u7269\u8F66tab\u5B50\u9875\u9762\u5185\u5BB9\u533A\" id=\"cardPage\" class=\"bottom-tab-content\" vtype=\"subPage\"></div>\n ...\n <div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\u83DC\u5355\u680F\" id=\"xxxBottomTabNavigateBar\" class=\"bottom-tab-navigate-bar\" vtype=\"bottomTabNavigateBar\">\n <div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\u83DC\u5355\u680Fitem\u9879\" id=\"xxxBottomTabNavigateBarItem1\" class=\"bottom-tab-navigate-bar-item\" vtype=\"bottomTabNavigateBarItem\">\n // bottomTab\u7684\u5404\u4E2AtabItem\u9879\n </div>\n ...\n </div>\n</div>\n```\n\n## 8\u3001\u7EC4\u4EF6\u8282\u70B9\u663E\u9690\u6548\u679C\u4E0E\u7EDD\u5BF9\u5E03\u5C40\u91CD\u53E0\u663E\u793A\u56FA\u5B9A\u89C4\u5219\n- vtype=\"oneStateContentContainer\"\u3001vtype=\"oneViewPagerContent\"\u3001vtype=\"oneTabContentContainer\"\u8282\u70B9\u5FC5\u987B\u4F7F\u7528opacity: 0;\u6765\u5B9E\u73B0\u9690\u85CF\u6548\u679C\uFF0C\u4E0D\u5F97\u4F7F\u7528display: none\u3001visibility: hidden\u4EE5\u53CA\u5176\u4ED6\u65B9\u5F0F\u6765\u5B9E\u73B0\u9690\u85CF\u6548\u679C\uFF0C\u5E76\u4E14\u5FC5\u987B\u4F7F\u7528\u7EDD\u5BF9\u5B9A\u4F4D\u6765\u91CD\u53E0\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\n``` css\n.xxx-content {\n ...\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0;\n ...\n}\n.xxx-content.active {\n ...\n opacity: 1;\n ...\n}\n```\n\n## 9\u3001html\u7684js\u4EE3\u7801\u8BF4\u660E\n- \u6574\u4E2Ahtml\u5141\u8BB8\u6DFB\u52A0js\u4EE3\u7801\u7684\u60C5\u51B5\uFF1A\n 1\u3001\u5FC5\u987B\u7ED9TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u548C\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u6DFB\u52A0\u70B9\u51FB\u5207\u6362opacity: 0;\u548Copacity: 1;\u7684\u663E\u9690\u6548\u679C\u7684js\u4EE3\u7801\u5904\u7406\u3002\n- \u9664\u4E86\u4EE5\u4E0A\u60C5\u51B5\uFF0C\u4E0D\u5F97\u6DFB\u52A0\u4EFB\u4F55js\u3001ts\u7B49\u903B\u8F91\u4EE3\u7801\n- js\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528vanilla js\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\u7684js\u4EE3\u7801\n\n## 10\u3001\u5982\u679Cvtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u3001vtype=\"tabContainer\"\u3001vtype=\"radioGroup\"\u3001vtype=\"checkBoxGroup\"\u7C7B\u578B\u7684\u5143\u7D20\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u62C9\u53D6\u56DE\u6765\u7684\uFF0C\u90A3\u5C31\u5728\u8FD9\u4E9B\u8282\u70B9\u6DFB\u52A0\u5C5E\u6027fromApiData=\"true\"\uFF0C\u6BD4\u5982\uFF1A\u70ED\u95E8\u5546\u54C1\u5217\u8868\u7EC4\u4EF6vtype=\"verticalListView\"\uFF0C\u8BE5\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u62C9\u53D6\u56DE\u6765\u7684\uFF0C\u90A3\u4E48html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u70ED\u95E8\u5546\u54C1\u5217\u8868\" id=\"hotProductList\" class=\"hot-product-list\" vtype=\"verticalListView\" fromApiData=\"true\">\n // \u70ED\u95E8\u5546\u54C1\u5217\u8868\n</div>\n```\n\n## 11\u3001\u6C34\u5E73\u6EDA\u52A8\u548C\u5782\u76F4\u6EDA\u52A8\u7684\u56FA\u5B9A\u5199\u6CD5\uFF1A\u5FC5\u987B\u9690\u85CF\u6EDA\u52A8\u6761\uFF0C\u5E76\u4E14\u7981\u6B62\u6EDA\u52A8\u6761\u5360\u4F4D\n- \u6C34\u5E73\u6EDA\u52A8\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0Bcss\u56FA\u5B9A\u5199\u6CD5\uFF1A\n``` css\n.my-div {\n overflow-x: auto; /* \u5141\u8BB8\u6C34\u5E73\u6EDA\u52A8 */\n overflow-y: hidden; /* \u7981\u6B62\u5782\u76F4\u6EDA\u52A8 */\n\n /* Firefox */\n scrollbar-width: none;\n /* IE / Edge \u65E7\u7248 */\n -ms-overflow-style: none;\n}\n\n.my-div::-webkit-scrollbar {\n height: 0; /* \u6C34\u5E73\u6EDA\u52A8\u6761\u9AD8\u5EA6\u4E3A0\uFF0C\u4E0D\u5360\u4F4D */\n}\n```\n\n- \u5782\u76F4\u6EDA\u52A8\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0Bcss\u56FA\u5B9A\u5199\u6CD5\uFF1A\n``` css\n.my-div {\n overflow-x: hidden; /* \u7981\u6B62\u6C34\u5E73\u6EDA\u52A8 */\n overflow-y: auto; /* \u5141\u8BB8\u5782\u76F4\u6EDA\u52A8 */\n\n /* Firefox */\n scrollbar-width: none;\n /* IE / Edge \u65E7\u7248 */\n -ms-overflow-style: none;\n}\n\n.my-div::-webkit-scrollbar {\n width: 0; /* \u5782\u76F4\u6EDA\u52A8\u6761\u5BBD\u5EA6\u4E3A0\uFF0C\u4E0D\u5360\u4F4D */\n}\n```\n\n## 12\u3001\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E\n\u6587\u5B57vtype=\"text\"\u3001\u6309\u94AEvtype=\"button\"\u3001\u8F93\u5165\u6846vtype=\"input\"\u3001\u56FE\u6807vtype=\"icon\"\u3001\u56FE\u7247vtype=\"image\"\u3001\u77E9\u5F62vtype=\"rect\"\u3001\u5706\u5F62vtype=\"circle\"\u3001\u7EBF\u6761vtype=\"line\"\u3001\u57FA\u7840\u5BB9\u5668vtype=\"container\"\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u9876\u90E8\u72B6\u6001\u680Fvtype=\"phoneTopNavigateBar\"\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u5E95\u90E8\u9996\u9875\u6307\u793A\u5668\u6A2A\u6761\u680Fvtype=\"phoneBottomHomeIndicatorBar\"\u3001\u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\u3001\u67D0\u72B6\u6001\u89C6\u56FE\u5BB9\u5668vtype=\"oneStateContentContainer\"\u3001\u5361\u7247\u5BB9\u5668vtype=\"card\"\u3001\u5F00\u5173vtype=\"switch\"\u3001\u4E00\u4E2A\u5355\u9009vtype=\"radio\"\u3001\u4E00\u4E2A\u591A\u9009vtype=\"checkBox\"\u3001\u5355\u9009\u7EC4(\u591A\u4E2A\u5355\u9009)vtype=\"radioGroup\"\u3001\u591A\u9009\u7EC4(\u591A\u4E2A\u591A\u9009)vtype=\"checkBoxGroup\"\u3001\u7AD6\u5411\u5217\u8868vtype=\"verticalListView\"\u3001\u6A2A\u5411\u5217\u8868vtype=\"horizontalListView\"\u3001\u5217\u8868item\u5361\u7247vtype=\"listItemCard\", \u8F6E\u64ADvtype=\"viewPager\"\u3001\u8F6E\u64AD\u533A\u57DFvtype=\"oneViewPagerContent\"\u3001\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668vtype=\"viewPagerIndicatorContainer\"\u3001\u8F6E\u64AD\u6307\u793A\u5668Item\u9879\u5BB9\u5668vtype=\"viewPagerIndicatorItemContainer\"\u3001TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u3001 TAB\u9009\u9879\u5361\u5185\u5BB9\u5305\u88F9\u5BB9\u5668vtype=\"tabContentWrapperContainer\"\u3001TAB\u9009\u9879\u5361\u4E00\u9875\u5185\u5BB9\u533Avtype=\"oneTabContentContainer\"\u3001Tab\u9009\u9879\u5361\u83DC\u5355\u680Fvtype=\"tabMenuBar\"\u3001Tab\u9009\u9879\u5361\u83DC\u5355\u680Fitem\u9879vtype=\"tabMenuBarItem\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u3001\u5E95\u90E8TAB\u5B50\u9875\u9762\u5185\u5BB9\u533Avtype=\"subPage\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6\u5BFC\u822A\u680Fvtype=\"bottomTabNavigateBar\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6\u5BFC\u822A\u680Fitem\u9879vtype=\"bottomTabNavigateBarItem\"\u3001\u9876\u90E8\u5BFC\u822A\u680Fvtype=\"topNavigateBar\"\u3001\u9876\u90E8\u6807\u9898\u680Fvtype=\"topTitleBar\"\u3001\u5E95\u90E8\u64CD\u4F5C\u680Fvtype=\"bottomOperateBar\"\u3001\u5BF9\u8BDD\u6846vtype=\"dialog\"\u3001Toast\u63D0\u793Avtype=\"toast\"\u3001\u4E0B\u62C9\u83DC\u5355vtype=\"dropDownMenu\"\u3001\u4FA7\u6ED1\u9762\u677Fvtype=\"sideSlidePanel\"\u3002";
|
|
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\u5B8812\u4E2A\u89C4\u5219\u8981\u6C42\uFF0C\u6839\u636E'\u7528\u6237\u9700\u6C42\u63CF\u8FF0'\u5E2E\u52A9\u6211\u5B8C\u6210\u4E00\u4E2AiOS App\u7684\u539F\u578B\u8BBE\u8BA1\u3002\n\n## \u9875\u9762\u9ED8\u8BA4\u4E1A\u52A1\u903B\u8F91\n- **\u5982\u7528\u6237\u6CA1\u5728\u63CF\u8FF0\u4E2D\u660E\u786E\u6307\u660E\u9875\u9762\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u9700\u8981\u4E25\u683C\u9075\u5B88\u4EE5\u4E0B\u9ED8\u8BA4\u7684\u9875\u9762\u4E1A\u52A1\u903B\u8F91\u8BF4\u660E**\n - \u767B\u5F55\u9875\n - \u6CE8\u610F\uFF0C\u9690\u79C1\u534F\u8BAE\u3001\u7528\u6237\u534F\u8BAE\u3001\u5E2E\u52A9\u7B49\u7B49\u90FD\u4E0D\u5F97\u4F7F\u7528\u4FA7\u6ED1\u9762\u677F\uFF0C\u5FC5\u987B\u4F7F\u7528\u9875\u9762\u6765\u5B9E\u73B0\n - \u9875\u9762\u5E03\u5C40\uFF1A\n - \u9876\u90E8\u5BFC\u822A\u680F\uFF1A\u5DE6\u8FB9\u8FD4\u56DE\u3001\u53F3\u8FB9\u5E2E\u52A9\n - header\uFF1A\u4E00\u4E2Alogo\n - \u767B\u5F55\u65B9\u5F0F\u5207\u6362\u533A (vtype=\"multiStateContainer\")\n - \u8D26\u53F7\u5BC6\u7801\u767B\u5F55\u72B6\u6001 (vtype=\"oneStateContentContainer\")\n - \u624B\u673A\u53F7/\u90AE\u7BB1\u8F93\u5165\u6846 (vtype=\"input\")\n - \u5BC6\u7801\u8F93\u5165\u6846 (vtype=\"input\")\n - \u9A8C\u8BC1\u7801\u767B\u5F55\u72B6\u6001 (vtype=\"oneStateContentContainer\")\n - \u624B\u673A\u53F7\u8F93\u5165\u6846 (vtype=\"input\")\n - \u9A8C\u8BC1\u7801\u8F93\u5165\u533A (vtype=\"container\"): \u9A8C\u8BC1\u7801\u8F93\u5165\u6846 (vtype=\"input\"), \u83B7\u53D6\u9A8C\u8BC1\u7801\u6309\u94AE (vtype=\"button\")\n - \u7528\u6237\u534F\u8BAE\u533A\u57DF (vtype=\"container\")\n - \u767B\u5F55\u6309\u94AE (vtype=\"button\")\n - \u529F\u80FD\u6309\u94AE\u533A (vtype=\"container\")\n - \u65B0\u7528\u6237\u6CE8\u518C (vtype=\"button\")\n - \u9A8C\u8BC1\u7801/\u8D26\u53F7\u5BC6\u7801\u5207\u6362\u6309\u94AE (vtype=\"button\")\n - \u5FD8\u8BB0\u5BC6\u7801 (vtype=\"button\")\n - \u5176\u4ED6\u767B\u5F55\u65B9\u5F0F\uFF08\u5C45\u5E95\u90E8\u95F4\u8DDD30px\uFF09\uFF1A\u5FAE\u4FE1\u767B\u5F55\u3001QQ\u767B\u5F55\u3001\u5FAE\u535A\u767B\u5F55\n - \u9996\u9875\n - \u9996\u9875\u4E3B\u4F53\u9875\uFF08\u975E\u5B50\u9875\u9762\uFF09\u4E0D\u5141\u8BB8\u6DFB\u52A0\u4EFB\u4F55vtype=\"dialog\"\u3001vtype=\"toast\"\u3001vtype=\"dropDownMenu\"\u3001vtype=\"sideSlidePanel\"\u7EC4\u4EF6\u8282\u70B9\uFF0C\u5E94\u8BE5\u8981\u5728\u5BF9\u5E94\u7684\u5B50\u9875\u9762\u4E2D\u6DFB\u52A0\uFF0C\u6BD4\u5982\uFF1A\u9996\u9875\u4E3B\u4F53\u9875\u6709\u56DB\u4E2A\u5B50\u9875\u9762\uFF1A\u9996\u9875\u5B50\u9875\u9762\u3001\u6D3B\u52A8\u5B50\u9875\u9762\u3001\u8D2D\u7269\u8F66\u5B50\u9875\u9762\u3001\u6211\u7684\u5B50\u9875\u9762\uFF0C\u90A3\u4E48\u9996\u9875\u4E3B\u4F53\u9875\u4E0D\u5141\u8BB8\u6DFB\u52A0vtype=\"dialog\"\u3001vtype=\"toast\"\u3001vtype=\"dropDownMenu\"\u3001vtype=\"sideSlidePanel\"\u7EC4\u4EF6\u8282\u70B9\uFF0C\u53EA\u5728\u56DB\u4E2A\u5B50\u9875\u9762\u4E2D\u6DFB\u52A0\u6240\u9700\u8981\u7684\u90A3\u56DB\u79CDvtype\u7684\u7EC4\u4EF6\u8282\u70B9\u3002\n - \u8FDB\u5165\u9996\u9875\u4E00\u822C\u9700\u8981\u8BF7\u6C42app\u7248\u672C\u66F4\u65B0API\u63A5\u53E3\uFF0C\u5224\u65AD\u662F\u5426\u9700\u8981\u66F4\u65B0\uFF0C\u5982\u679C\u9700\u8981\u66F4\u65B0\u5C31\u5F39\u51FA\u66F4\u65B0\u5F39\u6846\uFF0C\u5982\u679C\u4E0D\u9700\u8981\u90A3\u5C31\u4E0D\u505A\u4EFB\u4F55\u4E8B\u60C5\n - \u8FDB\u5165\u9996\u9875\u8FD8\u8981\u8BFB\u53D6\u672C\u5730\u6570\u636E\uFF1A\u5168\u5C40\u914D\u7F6E\u6570\u636E\u3002\u4E00\u822C\u7528\u4E8E\u529F\u80FD\u5F00\u5173\u3001ABTest\u914D\u7F6E\u3001\u5E7F\u544A\u914D\u7F6E\uFF08\u5982\u679C\u6709\u5E7F\u544A\u7684\u8BDD\uFF09\u7B49\uFF0C\u8BFB\u53D6\u5B8C\u6BD5\u540E\uFF0C\u8FD8\u8981\u7F51\u7EDC\u8BF7\u6C42\u4E00\u6B21\u5168\u5C40\u914D\u7F6EAPI\uFF0C\u5C06\u5168\u5C40\u914D\u7F6E\u6570\u636E\u66F4\u65B0\u5230\u672C\u5730\u6570\u636E\u4E2D\n - \u9996\u9875\u662F\u5404\u4E2A\u529F\u80FD\u7684\u5165\u53E3\uFF0C\u56E0\u6B64\u9996\u9875\u9700\u8BBE\u7F6E\u4E3A\u7531\u591A\u4E2A\u5B50\u9875\u9762\u7EC4\u6210\u7684\u4E3B\u4F53\u9875\u9762\uFF0C\u6BD4\u5982\uFF1A\u8D2D\u7269APP\u9996\u9875\u4E00\u822C\u5E95\u90E8\u6709\u4E00\u4E2A\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\uFF08\u6BD4\u5982\uFF1A\u9996\u9875\u3001\u6D3B\u52A8\u3001\u8D2D\u7269\u8F66\u3001\u6D88\u606F\u3001\u6211\u7684\uFF09\uFF0C\u70B9\u51FB\u5E95\u90E8\u529F\u80FD\u5BFC\u822A\u680F\u7684\u56FE\u6807\u4F1A\u5207\u6362\u5230\u5BF9\u5E94\u7684tab\u5B50\u9875\u9762\uFF0C\u6BCF\u4E2Atab\u5B50\u9875\u9762\u8D1F\u8D23\u81EA\u5DF1\u7684\u72EC\u7ACB\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u6BD4\u5982\u8D2D\u7269\u8F66tab\u5C31\u8D1F\u8D23\u8D2D\u7269\u8F66\u76F8\u5173\u4E1A\u52A1\u903B\u8F91\u3002\n - \u9996\u9875\u4E3B\u4F53\u9875\u53EA\u8D1F\u8D23\u529F\u80FDtab\u5207\u6362\u4E0D\u8D1F\u8D23\u6BCF\u4E00\u4E2Atab\u5177\u4F53\u7684\u4E1A\u52A1\u903B\u8F91\uFF0C\u56E0\u6B64\u53EA\u6709\u4E00\u4E2A\u5E95\u90E8tab\u529F\u80FD\u5BFC\u822A\u680F\u8282\u70B9\u7EC4\u4EF6\uFF0C\u6CA1\u6709\u4EFB\u4F55\u6570\u636E\u52A0\u8F7D\u903B\u8F91\uFF0C\u5982\u679C\u6709\u5E7F\u544A\u9875\u53EA\u6709\u4E00\u4E2A\u5E7F\u544A\u9875\u6570\u636EAPI\u62C9\u53D6\u7684\u7F51\u7EDC\u8BF7\u6C42\uFF0C\u8BF7\u6C42\u540E\u653E\u5230\u672C\u5730\u6301\u4E45\u5316\u3002\n\n## \u6838\u5FC3\u539F\u5219\n- **\uD83D\uDD25 \u4EE3\u7801\u89C4\u8303**\uFF1A\u53EA\u80FD\u4F7F\u7528html\u91CChead\u7684:root\u5DF2\u7ECF\u5B9A\u4E49\u597D\u7684\u989C\u8272\u53D8\u91CF\uFF0C\u4E0D\u5F97\u79C1\u81EA\u5B9A\u4E49\u5176\u4ED6\u989C\u8272\u53D8\u91CF\uFF0C\u4E5F\u4E0D\u80FD\u4F7F\u7528\u4EFB\u4F55\u5177\u4F53\u989C\u8272\u503C\uFF0C\u4F60\u53EA\u80FD\u4ECE:root\u4E2D\u9009\u62E9\u5408\u9002\u7684\u989C\u8272\u4F7F\u7528 \n \n## 1\u3001UI\u8BBE\u8BA1\u8981\u6C42\n- \u9075\u5FAAiPhone 16 Pro\u5C3A\u5BF8\u89C4\u683C(\u5BBD\u5EA6393px\u9AD8\u5EA6852px)\n- \u91C7\u7528\u660E\u4EAE\u3001\u6D3B\u529B\u7684\u914D\u8272\u65B9\u6848\n- \u4F7F\u7528\u6700\u65B0\u7684iOS\u8BBE\u8BA1\u5143\u7D20\u548C\u4EA4\u4E92\u6A21\u5F0F\n- \u6587\u5B57\u7684\u5927\u5C0F\u5FC5\u987B\u8981\u6CE8\u610F\uFF0C\u4E0D\u80FD\u5927\uFF0C\u6587\u5B57\u7684\u5927\u5C0F\u8981\u504F\u5C0F\u7684\u98CE\u683C\u6765\u8FDB\u884C\u8BBE\u8BA1\u3002\n- \u5982\u7528\u6237\u6CA1\u6709\u660E\u786E\u63CF\u8FF0\u8BF4\u660E\u9875\u9762\u80CC\u666F\u8272\uFF0C\u53EA\u6709\u95EA\u5C4F\u9875\u9762\u7684\u80CC\u666F\u8272\u5141\u8BB8\u8BBE\u7F6E\u4E3B\u9898\u8272\u6216\u4E3B\u9898\u6E10\u53D8\u8272\uFF0C\u5176\u4ED6\u9875\u9762\u5C3D\u91CF\u4E0D\u8981\u4F7F\u7528\u4E3B\u9898\u8272\u6216\u4E3B\u9898\u6E10\u53D8\u8272\u505A\u9875\u9762\u80CC\u666F\u8272\u3002\n- hover\u4E0E\u70B9\u51FB\u53CD\u9988\uFF1A\u8BF7\u4F7F\u7528\u6D45\u8272\u7684\u80CC\u666F\u8272background\u6765\u53CD\u9988\u5C31\u884C\uFF0C\u4E25\u7981\u4F7F\u7528transform\u6548\u679C\uFF0C\u5982\u4E0D\u5F97\u4F7F\u7528\uFF1A \n .hot-sales-item:hover {\n transform: translateX(...px);\n }\n \u6B63\u786E\u5199\u6CD5\u5E94\u8BE5\u662F\uFF1A\n .hot-sales-item:hover {\n background: ...;\n }\n- \u8F93\u5165\u6846\u5982\u679C\u9700\u8981\u5C55\u793A\u6587\u5B57label\uFF0C\u5C3D\u91CF\u4F7F\u7528icon\u4EE3\u66FF\u6587\u5B57label\uFF0C\u5E76\u4E14icon\u653E\u5728\u8F93\u5165\u6846\u91CC\u9762\u7684\u5DE6\u4FA7\uFF0C\u8F93\u5165\u6846\u6709placeholder\u63D0\u793A\uFF0C\u8FD9\u6837\u6574\u4E2A\u9875\u9762\u7684\u7A7A\u95F4\u5229\u7528\u7387\u9AD8\u3002\n- \u4E3A\u6BCF\u4E2A\u5C4F\u5E55\u6DFB\u52A0\u8BBE\u5907\u624B\u673A\u7CFB\u7EDF\u7684\u9876\u90E8\u72B6\u6001\u680Fvtype=\"phoneTopNavigateBar\"(\u9AD8\u5EA6\u5FC5\u987B\u8BBE\u5B9A\u4E3A22px\uFF0C\u663E\u793A\u624B\u673A\u65F6\u95F4\u3001\u4FE1\u53F7\u3001wifi\u7B49)\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u5E95\u90E8\u9996\u9875\u6307\u793A\u5668\u6A2A\u6761\u680Fvtype=\"phoneBottomHomeIndicatorBar\"(\u9AD8\u5EA6\u5FC5\u987B\u8BBE\u5B9A\u4E3A22px\uFF0C\u663E\u793A\u6A2A\u6761)\uFF0C\u4E0D\u8981\u906E\u4F4F\u5C4F\u5E55\u5185\u7684\u5185\u5BB9\uFF0C\u624B\u673A\u9876\u90E8\u72B6\u6001\u680F\u548C\u624B\u673A\u5E95\u90E8\u6A2A\u6761\u680F\u9700\u8981\u5B9E\u73B0\u6C89\u6D78\u5F0F\uFF0C\u56E0\u6B64\u5B83\u4EEC\u8981\u770B\u60C5\u51B5\u8BBE\u7F6E\u80CC\u666F\u8272\u3002\n- \u767B\u5F55\u65B9\u5F0F\u5982\u679C\u7528\u6237\u6CA1\u6709\u63CF\u8FF0\u8BF4\u660E\uFF0C\u90A3\u5C31\u9ED8\u8BA4\u4F7F\u7528tab\u5207\u6362\u624B\u673A\u9A8C\u8BC1\u7801\u767B\u5F55\u548C\u8D26\u53F7\u5BC6\u7801\uFF0C\u4E0B\u9762\u662F\u7B2C\u4E09\u65B9\u767B\u5F55\u65B9\u5F0F\uFF1A\u5FAE\u4FE1\u767B\u5F55\u3001QQ\u767B\u5F55\u3001\u5FAE\u535A\u3002\n- \u5982\u679C\u7528\u6237\u6CA1\u6709\u63CF\u8FF0\u8BF4\u660E\uFF0C\u6CE8\u518C\u767B\u5F55\u9875\u9762\u4E00\u822C\u6709\u624B\u673A\u9A8C\u8BC1\u7801\u3001\u7528\u6237\u534F\u8BAE\u3001\u9690\u79C1\u534F\u8BAE\uFF0C\u5E76\u4E14\u4E24\u4E2A\u534F\u8BAE\u662F\u540C\u4E00\u884C\u7684\uFF0C\u4E00\u4E2Acheckbox\u5C31\u884C\u3002\n- \u5982\u679C\u9700\u8981\u9A8C\u8BC1\u7801\u586B\u5199\u9875\u9762\uFF0C\u90A3\u4E48\u5355\u4E2A\u9A8C\u8BC1\u7801\u6570\u5B57\u8F93\u5165\u6846\u7684\u5BBD\u5EA6\u548C\u9AD8\u5EA6\u5FC5\u987B\u662F35px\uFF0C\u5E76\u4E14\u6240\u6709padding\u3001padding-left\u3001padding-right\u3001padding-top\u3001padding-bottom\u90FD\u5FC5\u987B\u662F0\u3002\n- \u6240\u6709vtype=\"toast\"\u7684\u63D0\u793A\u8282\u70B9\u5FC5\u987B\u662F\u5728\u9875\u9762\u4E0B\u534A\u90E8\u4EFD\uFF0C\u8BBE\u7F6Ebottom=150px\uFF0C\u7EDD\u5BF9\u4E0D\u662F\u5728\u9875\u9762\u9876\u90E8\u3002\n\n## 2\u3001icon\u56FE\u6807\u4E0Eimg\u56FE\u7247\u5199\u6CD5\u548C\u89C4\u5219\n- \u5F53\u9700\u8981icon\u56FE\u6807\u65F6\u5FC5\u987B\u4F7F\u7528FontAwesome\u56FE\u6807\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\n- \u5F53\u9700\u8981img\u56FE\u7247\u65F6\uFF0Csrc\u4F7F\u7528\u56FE\u7247\u5730\u5740\uFF1A`https://oss.bytefungo.com/f1/showImg1.jpg`)\uFF0C\u5176\u4E2D\u7ED3\u5C3E\u7684\u2019showImg1'\u53EF\u4EE5\u6362\u4E3A\u4ECE1\u523030\u7684\u6570\u5B57\uFF0C1~30\u7684\u6570\u5B57\u5FC5\u987B\u968F\u673A\u6311\u9009\uFF0C\u4E0D\u5F97\u6BCF\u4E2A\u9875\u9762\u6BCF\u4E2A\u56FE\u7247\u90FD\u4F7F\u7528\u540C\u4E00\u4E2A\u6570\u5B57\u3002\u5199\u6CD5\u6BD4\u5982\uFF1A`<img src=\"https://oss.bytefungo.com/f1/showImg17.jpg\" alt=\"xxx\" class=\"xxx\" vtype=\"image\">`\n- \u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528emoji\u8868\u60C5\u7B26\u53F7\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55emoji\u8868\u60C5\u7B26\u53F7\uFF0C\u8BF7\u4F7F\u7528icon\u6216img\u56FE\u7247\u8282\u70B9\u6765\u4EE3\u66FF\u3002\n\n## 3\u3001html\u4EE3\u7801\u5199\u6CD5\u548C\u89C4\u5219\n- \u4E0D\u5F97\u4FEE\u6539html\u9875\u9762\u7684body\u3001phone-container\uFF08\u53EF\u4FEE\u6539\u9875\u9762\u80CC\u666F\u8272\uFF09\u3001page-container\u3001status-bar\u3001home-indicator\u3001home-indicator-bar\u7684css\u6837\u5F0F\u3002\n- \u9875\u9762\u80CC\u666F\u8272\u8BBE\u7F6E\u5728headerde\u7684style\u91CC\u5DF2\u6709\u7684.phone-container\u5B9A\u4E49\u7684background\u5C5E\u6027\u4E0A\uFF0Cpage-container\u8282\u70B9\u7981\u6B62\u518D\u5305\u4E00\u5C42\uFF0C\u5E94\u8BE5\u76F4\u63A5\u5728page-container\u91CC\u9762\u6DFB\u52A0\u5185\u5BB9\u8282\u70B9\uFF0C\u4E0D\u5F97\u518D\u5305\u4E00\u5C42\u3002\n- \u4F60\u7684\u5DE5\u4F5C\u53EA\u80FD\u662F\u5728\u9875\u9762\u5185\u5BB9\u663E\u793A\u533Apage-container\u8282\u70B9\u6DFB\u52A0\u5B69\u5B50\u8282\u70B9\uFF0C\u5E76\u8BBE\u8BA1\u7EF4\u62A4\u597D\u8FD9\u4E9B\u9875\u9762\u5185\u5BB9\u5B69\u5B50\u8282\u70B9\u5185\u5BB9\u548C\u6837\u5F0F\u3002\n- css\u6837\u5F0F\u5FC5\u987B\u5185\u8054\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5916\u90E8css\u6587\u4EF6\uFF0C\u5E76\u4E14\u4E0D\u5F97\u4F7F\u7528\u8282\u70B9\u7684style\u6765\u5199\u6837\u5F0F\uFF0C\u5FC5\u987B\u8981\u5148\u5728`<head>`\u7684`<style>`\u91CC\u9762\u5B9A\u4E49\u597D\u5404\u79CDcss\u6837\u5F0F\uFF0C\u7136\u540E\u8282\u70B9\u4F7F\u7528class\u5C5E\u6027\u6765\u5F15\u7528\u3002\n- \u591A\u72B6\u6001\u6837\u5F0F\uFF08active\u3001disabled\u3001focus\u3001hover\u7B49\uFF09\u7684\u8282\u70B9\u5FC5\u987B\u8981\u5728`<head>`\u7684`<style>`\u91CC\u9762\u5B9A\u4E49\u597D\u6240\u9700\u7684\u5404\u4E2A\u72B6\u6001\u7684css\u6837\u5F0F\uFF0C\u6BD4\u5982phone-input:\n``` css\n...\n.phone-input {\n ...\n}\n.phone-input.active {\n ...\n}\n.phone-input.disabled {\n ...\n}\n.phone-input.focus {\n ...\n}\n...\n```\n- \u6BCF\u4E2A\u8282\u70B9\u90FD\u5FC5\u987B\u6DFB\u52A0id\u3001name\u3001vtype\u5C5E\u6027\uFF0Cid\u5C5E\u6027\u503C\u5FC5\u987B\u662F\u82F1\u6587\uFF0Cname\u5C5E\u6027\u503C\u5FC5\u987B\u662F\u4E2D\u6587\uFF0C\u6BD4\u5982\uFF1A`<i name=\"\u5FAE\u4FE1Icon\" vtype=\"icon\" id=\"wxIcon\" class=\"fab fa-weixin\"></i>`\n- \u6240\u6709\u8282\u70B9\u7C7B\u578Bvtype\u7684\u53D6\u503C\u4EC5\u9650\u4F7F\u7528'\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E'\uFF0C\u5FC5\u987B\u719F\u6089\u8BB0\u4F4F'\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E'\uFF0C\u5FC5\u987B\u5C06\u5176\u653E\u5230\u7F13\u5B58\n- \u8F6E\u64ADvtype=\"viewPager\"\u3001TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u7684\u6BCF\u4E00\u9875\u5185\u5BB9\u5FC5\u987B\u5B8C\u6574\uFF0C\u4E0D\u5F97\u7701\u7565\u4EFB\u4F55\u5185\u5BB9\u3002\u6BD4\u5982\u67093\u9875\uFF0C\u90A3\u4E48\u6BCF\u4E00\u9875\u7684\u5185\u5BB9\u90FD\u4E0D\u80FD\u7701\u7565\u3002\n- switch\u3001radio\u3001checkBox\u3001radioGroup\u3001checkBoxGroup\u8282\u70B9\u90FD\u4E0D\u5F97\u6DFB\u52A0\u4EFB\u4F55\u76F8\u5173\u7684js\u548Cts\u4EE3\u7801\u3002\n- vtype=\"switch\"\u3001vtype=\"radio\"\u3001vtype=\"checkBox\"\u8282\u70B9\u7684\u5B69\u5B50i\u6807\u7B7E\u8282\u70B9\u5FC5\u987B\u6DFB\u52A0\u4E00\u4E2AcheckedClass\u5C5E\u6027\uFF0C\u7528\u4E8E\u8868\u793A\u9009\u4E2D\u72B6\u6001\u7684icon\u56FE\u6807\u6837\u5F0F\u7C7B\u540D\uFF0C\u6BD4\u5982\uFF1A\n``` html\n<i name=\"\u5F00\u5173Icon\" vtype=\"icon\" id=\"switchIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n<i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n<i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fas xxx\" checkedClass=\"fas yyy\"></i>\n```\n- Icon\u56FE\u6807\u5FC5\u987B\u4F7F\u7528<i>\u6807\u7B7E\uFF0C<i>\u6807\u7B7E\u8282\u70B9\u4E5F\u5FC5\u987B\u9700\u8981\u6DFB\u52A0\u4E00\u4E2Aid\u548Cname\u7684\u5C5E\u6027\uFF0C\u5E76\u4E14<i>\u6807\u7B7E\u91CC\u9762\u7EDD\u5BF9\u4E0D\u80FD\u4F7F\u7528before\u3001after\u3001marker\u7B49\u7B49\u4EFB\u4F55\u4F2A\u5143\u7D20\u3002\n- html\u548Ccss\u6837\u5F0F\u91CC\u7EDD\u5BF9\u4E0D\u5F97\u4F7F\u7528before\u3001after\u3001marker\u7B49\u7B49\u4EFB\u4F55\u4F2A\u5143\u7D20\n- \u50CF\u7D20\u5FC5\u987B\u4F7F\u7528px\uFF0C\u4E0D\u4F7F\u7528rem\u548Cem\u7B49\u5176\u4ED6\u3002\n- \u274C css\u6837\u5F0F\u7EDD\u5BF9\u7981\u6B62\u4F7F\u7528\u6BDB\u73BB\u7483\u6548\u679C\uFF0C\u6BD4\u5982\uFF1Abackdrop-filter\n- \u5982\u679Cdiv\u8BBE\u7F6E\u4E86overflow-x:auto;\uFF0C\u90A3\u4E48div\u5FC5\u987B\u8BBE\u7F6Emin-height: xxpx;\u4EE5\u9632\u6B62div\u9AD8\u5EA6\u8FC7\u4F4E\u51FA\u73B0\u95EE\u9898\u3002\n- \u6240\u6709\u989C\u8272\u503C\u4E0D\u5F97\u4F7F\u7528\u5185\u7F6E\u7684\u989C\u8272\u5173\u952E\u5B57\uFF0C\u6BD4\u5982\u4E0D\u5F97\u4F7F\u7528red\u3001blue\u3001green\u3001yellow\u3001purple\u7B49\u989C\u8272\u5173\u952E\u5B57\uFF0C\u5FC5\u987B\u4F7F\u7528#000000\u3001#ffffff\u7B4916\u8FDB\u5236\u989C\u8272\u503C\u3002\n- \u5F00\u5173switch\u3001\u5355\u9009radio\u3001\u591A\u9009checkBox\u7684\u5B69\u5B50\u8282\u70B9\u5FC5\u987B\u4F7F\u7528i\u6807\u7B7E\u6765\u5B9E\u73B0\u56FE\u6807Icon\uFF0C\u4E0D\u5F97\u4F7F\u7528\u5706\u89D2\u77E9\u5F62\u6216input\u6807\u7B7E\u6765\u5B9E\u73B0\uFF0C\u56FE\u6807\u4F7F\u7528Font Awesome CDN\uFF0CcheckBox\u4E0D\u9700\u8981\u6ED1\u52A8\u6548\u679C\u3002\n- \u7279\u522B\u6CE8\u610F\u5355\u9009\u7EC4vytpe=\"radioGroup\"\u7684\u4F7F\u7528\uFF0C\u6BD4\u5982\uFF1A5\u4E2A\u7C7B\u522Btab\uFF0C\u9009\u4E2D\u5176\u4E2D1\u4E2A\uFF0C\u9009\u4E2D\u7684\u90A3\u4E2A\u5207\u6362\u5230\u9009\u4E2D\u72B6\u6001\uFF0C\u5176\u4ED64\u4E2A\u8981\u5207\u6362\u4E3A\u975E\u9009\u4E2D\u72B6\u6001\u3002\u8FD9\u79CD\u573A\u666F\u5C31\u5FC5\u987B\u4F7F\u7528\u5355\u9009\u7EC4\uFF0C\u591A\u9009vytpe=\"radioGroup\"\u5FC5\u987B\u5305\u542BN\u4E2A\u5355\u9009vtype=\"radio\"\u5B69\u5B50\u8282\u70B9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n```html\n<div name=\"xxx\u5355\u9009\u7EC4\" id=\"xxxRadioGroup\" class=\"xxx-radio-groupr\" vtype=\"radioGroup\">\n <div name=\"xxx\u5355\u90091\" id=\"xxxRadio1\" class=\"xxx-radio\" vtype=\"radio\">\n <i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n <div name=\"xxx\u5355\u90092\" id=\"xxxRadio2\" class=\"xxx-radio\" vtype=\"radio\">\n <i name=\"\u5355\u9009Icon\" vtype=\"icon\" id=\"radioIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n ...\n</div>\n- \u591A\u9009\u7EC4vtype=\"checkBoxGroup\"\u7EC4\u4EF6\u7528\u4E8E\u591A\u9009\u573A\u666F\uFF0C\u591A\u9009\u7EC4vtype=\"checkBoxGroup\"\u5FC5\u987B\u5305\u542BN\u4E2Avtype=\"checkBox\"\u5B69\u5B50\u8282\u70B9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n```html\n<div name=\"xxx\u591A\u9009\u7EC4\" id=\"xxxCheckBoxGroup\" class=\"xxx-check-box-group\" vtype=\"checkBoxGroup\">\n <div name=\"xxx\u591A\u90091\" id=\"xxxCheckBox1\" class=\"xxx-check-box\" vtype=\"checkBox\">\n <i name=\"\u591A\u9009Icon\" vtype=\"icon\" id=\"checkBoxIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n <div name=\"xxx\u591A\u90092\" id=\"xxxCheckBox2\" class=\"xxx-check-box\" vtype=\"checkBox\">\n <i name=\"\u591A\u9009Icon\" vtype=\"icon\" id=\"checkBoxIcon\" class=\"fa xxx\" checkedClass=\"fa yyy\"></i>\n ...\n </div>\n ...\n</div>\n```\n\n## 4\u3001\u8F6E\u64ADviewPager\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u8F6E\u64ADviewPager\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u8282\u70B9vtype=\"viewPager\"\u8F6E\u64AD\u8282\u70B9\u5BF9\u5E94\u6709\u4E00\u4E2A\u8F6E\u64AD\u6307\u793A\u5668vtype=\"viewPagerIndicatorContainer\"\u8282\u70B9\u4E0E\u4E4B\u5BF9\u5E94\uFF0C\u8282\u70B9vtype=\"viewPager\"\u5305\u542BN\u4E2Avtype=\"oneViewPagerContent\"\uFF0Cvtype=\"viewPagerIndicatorContainer\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"viewPagerIndicatorItemContainer\"\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u8F6E\u64AD\" id=\"xxxViewPager\" class=\"view-pager\" vtype=\"viewPager\">\n <div name=\"\u8F6E\u64AD\u5185\u5BB91\" id=\"xxxViewPagerContent1\" class=\"view-pager-content\" vtype=\"oneViewPagerContent\">\n // \u8F6E\u64AD\u5185\u5BB9\n </div>\n <div name=\"\u8F6E\u64AD\u5185\u5BB92\" id=\"xxxViewPagerContent2\" class=\"view-pager-content\" vtype=\"oneViewPagerContent\">\n // \u8F6E\u64AD\u5185\u5BB9\n </div>\n ...\n</div>\n<div name=\"\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668\" id=\"xxxViewPagerIndicatorContainer\" class=\"view-pager-indicator-container\" vtype=\"viewPagerIndicatorContainer\">\n <div name=\"\u8F6E\u64AD\u6307\u793A\u5668item\u98791\" id=\"xxxViewPagerIndicatorItemContainer1\" class=\"view-pager-indicator-item-container\" vtype=\"viewPagerIndicatorItemContainer\">\n // \u8F6E\u64AD\u6307\u793A\u5668item\u9879\n </div>\n <div name=\"\u8F6E\u64AD\u6307\u793A\u5668item\u98792\" id=\"xxxViewPagerIndicatorItemContainer2\" class=\"view-pager-indicator-item-container\" vtype=\"viewPagerIndicatorItemContainer\">\n // \u8F6E\u64AD\u6307\u793A\u5668item\u9879\n </div>\n ...\n</div>\n```\n\n## 5\u3001TAB\u9009\u9879\u5361tabContainer\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- tab\u7EC4\u4EF6tabContainer\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u6700\u5916\u5C42\u8282\u70B9vtype=\"tabContainer\"\u5FC5\u987B\u5305\u542B\u77401\u4E2Avtype=\"tabMenuBar\"\u8282\u70B9\u548C1\u4E2Avtype=\"tabContentWrapperContainer\"\u8282\u70B9\uFF0C vtype=\"tabContentWrapperContainer\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"oneTabContentContainer\"\u8282\u70B9\uFF0Cvtype=\"tabMenuBar\"\u8282\u70B9\u5FC5\u987B\u5305\u542B\u7740N\u4E2Avtype=\"tabMenuBarItem\"\u8282\u70B9\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"tab\" id=\"xxxTab\" class=\"tab\" vtype=\"tabContainer\">\n <div name=\"tab\u83DC\u5355\u680F\" id=\"xxxTabMenuBar\" class=\"tab-menu-bar\" vtype=\"tabMenuBar\">\n <div name=\"tab\u83DC\u5355\u680Fitem\u9879\" id=\"xxxTabMenuBarItem\" class=\"tab-menu-bar-item\" vtype=\"tabMenuBarItem\">\n // tab\u83DC\u5355\u680Fitem\u9879\n </div>\n ...\n </div>\n <div name=\"tab\u5185\u5BB9\u5BB9\u5668\" id=\"xxxTabContentWrapperContainer\" class=\"tab-content-wrapper-container\" vtype=\"tabContentWrapperContainer\">\n <div name=\"tab\u5185\u5BB9\" id=\"xxxTabContent\" class=\"tab-content\" vtype=\"oneTabContentContainer\">\n // tab\u5185\u5BB9\n </div>\n ...\n </div>\n</div>\n```\n\n## 6\u3001\u591A\u72B6\u6001\u5BB9\u5668multiStateContainer\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\u8282\u70B9\u5BB9\u5668\u5728\u6570\u636E\u52A0\u8F7D\u573A\u666F\u4E00\u822C\u6709\u52A0\u8F7D\u540E\u6709\u6570\u636E\u3001\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u56DB\u79CD\u72B6\u6001\uFF0C\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u72B6\u6001\u7684\u5185\u5BB9\u4E00\u822C\u662F\u5782\u76F4\u5C45\u4E2D\u7684\uFF0C\u7136\u540E\u5FC5\u987B\u9ED8\u8BA4\u662F\u663E\u793A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668multiStateContainer\u7EC4\u4EF6\u7684\u7ED3\u6784\uFF1A\u5FC5\u987B\u662F\u6700\u5916\u5C42\u8282\u70B9vtype=\"multiStateContainer\"\u5305\u542BN\u4E2Avtype=\"oneStateContentContainer\"\u8282\u70B9\uFF0C\u5168\u90E8\u7F3A\u4E00\u4E0D\u53EF\u3002\n- \u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\uFF0C\u9ED8\u8BA4\u5FC5\u987B\u8BBE\u7F6E\u6B63\u5E38\u6210\u529F\u52A0\u8F7D\u540E\u7684\u5185\u5BB9\u663E\u793A\u7684\u72B6\u6001\uFF0C\u6BD4\u5982\uFF1A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u3001\u52A0\u8F7D\u4E2D\u3001\u65E0\u6570\u636E\u3001\u8054\u7F51\u5931\u8D25\u7684\u56DB\u79CD\u72B6\u6001\u663E\u793A\uFF0C\u9ED8\u8BA4\u662F\u663E\u793A\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\uFF0C\u5E76\u4E14\u52A0\u8F7D\u540E\u6709\u6570\u636E\u72B6\u6001\u7684\u8282\u70B9\u5FC5\u987B\u6392\u5728\u6700\u540E\uFF0C\u6BD4\u5982html\u4EE3\u7801\u8FD9\u6837\u5199\uFF1A\n``` html\n...\n .state-content {\n ...\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0;\n ...\n }\n .state-content.active {\n opacity: 1;\n }\n...\n<div name=\"\u591A\u72B6\u6001\u5BB9\u5668\" id=\"multiStateContainer\" class=\"multi-state-container\" vtype=\"multiStateContainer\">\n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div name=\"\u52A0\u8F7D\u72B6\u6001\" id=\"loadingState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u52A0\u8F7D\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u9519\u8BEF\u72B6\u6001 -->\n <div name=\"\u9519\u8BEF\u72B6\u6001\" id=\"errorState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u9519\u8BEF\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u7A7A\u72B6\u6001 -->\n <div name=\"\u7A7A\u72B6\u6001\" id=\"emptyState\" class=\"state-content\" vtype=\"oneStateContentContainer\">\n // \u7A7A\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n\n <!-- \u6709\u6570\u636E\u72B6\u6001 \u6392\u5728\u6700\u540E -->\n <div name=\"\u6709\u6570\u636E\u72B6\u6001\" id=\"dataState\" class=\"state-content active\" vtype=\"oneStateContentContainer\">\n // \u6709\u6570\u636E\u72B6\u6001\u4E0B\u7684\u5185\u5BB9\n ...\n </div>\n</div>\n```\n\n## 7\u3001\u5E95\u90E8tab\u5BFC\u822A\u680F\u7EC4\u4EF6\u7ED3\u6784\u56FA\u5B9A\u89C4\u5219\n- \u5E95\u90E8tab\u5BFC\u822A\u680F\u7EC4\u4EF6\u5FC5\u987B\u662Fvtype=\"bottomTabContainer\"\u5FC5\u987B\u5305\u542B\u7740vtype=\"subPage\"\u4E0Evtype=\"bottomTabNavigateBar\"\u5B69\u5B50\u8282\u70B9\uFF0C\u5176\u4E2D\u5B50\u9875\u9762vtype=\"subPage\"\u8282\u70B9\u5BB9\u5668\u91CC\u7EDD\u5BF9\u4E0D\u80FD\u6709\u5B69\u5B50\u8282\u70B9\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u6709\u4EFB\u4F55\u5360\u4F4D\u5185\u5BB9\uFF0Chtml\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\" id=\"xxxBottomTab\" class=\"bottom-tab\" vtype=\"bottomTabContainer\">\n <div name=\"\u9996\u9875tab\u5B50\u9875\u9762\u5185\u5BB9\u533A\" id=\"homePage\" class=\"bottom-tab-content\" vtype=\"subPage\"></div>\n <div name=\"\u8D2D\u7269\u8F66tab\u5B50\u9875\u9762\u5185\u5BB9\u533A\" id=\"cardPage\" class=\"bottom-tab-content\" vtype=\"subPage\"></div>\n ...\n <div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\u83DC\u5355\u680F\" id=\"xxxBottomTabNavigateBar\" class=\"bottom-tab-navigate-bar\" vtype=\"bottomTabNavigateBar\">\n <div name=\"\u5E95\u90E8\u5BFC\u822A\u680F\u83DC\u5355\u680Fitem\u9879\" id=\"xxxBottomTabNavigateBarItem1\" class=\"bottom-tab-navigate-bar-item\" vtype=\"bottomTabNavigateBarItem\">\n // bottomTab\u7684\u5404\u4E2AtabItem\u9879\n </div>\n ...\n </div>\n</div>\n```\n\n## 8\u3001vtype=\"dialog\"\u3001vtype=\"toast\"\u3001vtype=\"dropDownMenu\"\u3001vtype=\"sideSlidePanel\"\u7EC4\u4EF6\u8282\u70B9\u7ED3\u6784\u4E0E\u56FA\u5B9A\u89C4\u5219\n- \u7EC4\u4EF6\u8282\u70B9\u5FC5\u987B\u653E\u5728id=\"phoneContainer\"\u7684\u8282\u70B9\u91CC\u9762\uFF0C\u4E0D\u5F97\u653E\u5728id=\"pageContainer\"\u7684\u8282\u70B9\u91CC\u9762\u3002\n- \u7EC4\u4EF6\u8282\u70B9\u4E0D\u5F97\u518D\u5305\u4E00\u5C42\uFF0C\u5FC5\u987B\u76F4\u63A5\u5728id=\"phoneContainer\"\u7684\u8282\u70B9\u91CC\u9762\u6DFB\u52A0\u5B69\u5B50\u8282\u70B9\u3002\n- \u6CE8\u610F\u6240\u6709vtype=\"toast\"\u7684\u63D0\u793A\u8282\u70B9\u5FC5\u987B\u662F\u5728\u9875\u9762\u4E0B\u534A\u90E8\u4EFD\uFF0C\u8BBE\u7F6Ebottom=150px\uFF0C\u7EDD\u5BF9\u4E0D\u662F\u5728\u9875\u9762\u9876\u90E8\u3002\n- \u6CE8\u610F\u6240\u6709vtype=\"dropDownMenu\"\u7684\u4E0B\u62C9\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u5728\u951A\u70B9\u5143\u7D20\u7684\u4E0B\u65B9\u5408\u9002\u7684\u4F4D\u7F6E\uFF0C\u4E0D\u5F97\u968F\u4FBF\u653E\u7F6E\u3002\n- \u6CE8\u610F\u6240\u6709vtype=\"sideSlidePanel\"\u7684\u4FA7\u6ED1\u9762\u677F\uFF0C\u5047\u8BBE\u9762\u677F\u5BBD\u5EA6w=300\uFF0C\u90A3\u4E48\u5982\u679C\u662F\u5DE6\u4FA7\u4FA7\u6ED1\u9762\u677F\uFF0C\u90A3\u4E48\u5E38\u6001\u4E0B\uFF08\u975E\u6253\u5F00\u72B6\u6001\uFF09\u5FC5\u987B\u8BBE\u7F6Eleft=-300px\uFF0C\u5982\u679C\u662F\u53F3\u4FA7\u4FA7\u6ED1\u9762\u677F\uFF0C\u90A3\u4E48\u5E38\u6001\u4E0B\uFF08\u975E\u6253\u5F00\u72B6\u6001\uFF09\u5FC5\u987B\u8BBE\u7F6Eright=-393px\uFF0C\u4E0D\u5F97\u968F\u4FBF\u653E\u7F6E\uFF0C\u5E76\u4E14\u4FA7\u6ED1\u9762\u677F\u7684\u9AD8\u5EA6h\u7684\u6700\u5927\u503C\u53EA\u80FD\u662F\uFF1A393 - \u4FA7\u6ED1\u9762\u677F\u7684y\u5750\u6807\u503C\u3002\n- \u7EC4\u4EF6\u8282\u70B9\u7684html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div class=\"phone-container\" id=\"phoneContainer\">\n // \u5176\u4ED6\u5185\u5BB9\n <div name=\"xxx\u5BF9\u8BDD\u6846\" id=\"xxxDialog\" class=\"dialog\" vtype=\"dialog\">\n // \u5BF9\u8BDD\u6846\u5185\u5BB9\n </div>\n <div name=\"xxx\u63D0\u793A\" id=\"xxxToast\" class=\"toast\" vtype=\"toast\">\n // \u63D0\u793A\u5185\u5BB9\n </div>\n <div name=\"xxx\u4E0B\u62C9\u83DC\u5355\" id=\"xxxDropDownMenu\" class=\"drop-down-menu\" vtype=\"dropDownMenu\">\n // \u4E0B\u62C9\u83DC\u5355\u5185\u5BB9\n </div>\n <div name=\"xxx\u4FA7\u6ED1\u9762\u677F\" id=\"xxxSideSlidePanel\" class=\"side-slide-panel\" vtype=\"sideSlidePanel\">\n // \u4FA7\u6ED1\u9762\u677F\u5185\u5BB9\n </div>\n</div>\n```\n\n## 9\u3001\u7EC4\u4EF6\u8282\u70B9\u663E\u9690\u6548\u679C\u4E0E\u7EDD\u5BF9\u5E03\u5C40\u91CD\u53E0\u663E\u793A\u56FA\u5B9A\u89C4\u5219\n- vtype=\"oneStateContentContainer\"\u3001vtype=\"oneViewPagerContent\"\u3001vtype=\"oneTabContentContainer\"\u8282\u70B9\u5FC5\u987B\u4F7F\u7528opacity: 0;\u6765\u5B9E\u73B0\u9690\u85CF\u6548\u679C\uFF0C\u4E0D\u5F97\u4F7F\u7528display: none\u3001visibility: hidden\u4EE5\u53CA\u5176\u4ED6\u65B9\u5F0F\u6765\u5B9E\u73B0\u9690\u85CF\u6548\u679C\uFF0C\u5E76\u4E14\u5FC5\u987B\u4F7F\u7528\u7EDD\u5BF9\u5B9A\u4F4D\u6765\u91CD\u53E0\u663E\u793A\uFF0C\u6BD4\u5982\uFF1A\n``` css\n.xxx-content {\n ...\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0;\n ...\n}\n.xxx-content.active {\n ...\n opacity: 1;\n ...\n}\n```\n\n## 10\u3001html\u7684js\u4EE3\u7801\u8BF4\u660E\n- \u6574\u4E2Ahtml\u5141\u8BB8\u6DFB\u52A0js\u4EE3\u7801\u7684\u60C5\u51B5\uFF1A\n 1\u3001\u5FC5\u987B\u7ED9TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u548C\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u6DFB\u52A0\u70B9\u51FB\u5207\u6362opacity: 0;\u548Copacity: 1;\u7684\u663E\u9690\u6548\u679C\u7684js\u4EE3\u7801\u5904\u7406\u3002\n- \u9664\u4E86\u4EE5\u4E0A\u60C5\u51B5\uFF0C\u4E0D\u5F97\u6DFB\u52A0\u4EFB\u4F55js\u3001ts\u7B49\u903B\u8F91\u4EE3\u7801\n- js\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528vanilla js\uFF0C\u4E0D\u5F97\u4F7F\u7528\u4EFB\u4F55\u524D\u7AEF\u6846\u67B6\u7684js\u4EE3\u7801\n\n## 11\u3001\u5982\u679Cvtype=\"verticalListView\"\u3001vtype=\"horizontalListView\"\u3001vtype=\"viewPager\"\u3001vtype=\"tabContainer\"\u3001vtype=\"radioGroup\"\u3001vtype=\"checkBoxGroup\"\u7C7B\u578B\u7684\u5143\u7D20\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u62C9\u53D6\u56DE\u6765\u7684\uFF0C\u90A3\u5C31\u5728\u8FD9\u4E9B\u8282\u70B9\u6DFB\u52A0\u5C5E\u6027fromApiData=\"true\"\uFF0C\u6BD4\u5982\uFF1A\u70ED\u95E8\u5546\u54C1\u5217\u8868\u7EC4\u4EF6vtype=\"verticalListView\"\uFF0C\u8BE5\u7EC4\u4EF6\u7684\u6570\u636E\u662F\u4ECE\u7F51\u7EDC\u62C9\u53D6\u56DE\u6765\u7684\uFF0C\u90A3\u4E48html\u5199\u6CD5\u5982\u4E0B\uFF1A\n``` html\n<div name=\"\u70ED\u95E8\u5546\u54C1\u5217\u8868\" id=\"hotProductList\" class=\"hot-product-list\" vtype=\"verticalListView\" fromApiData=\"true\">\n // \u70ED\u95E8\u5546\u54C1\u5217\u8868\n</div>\n```\n\n## 12\u3001\u6C34\u5E73\u6EDA\u52A8\u548C\u5782\u76F4\u6EDA\u52A8\u7684\u56FA\u5B9A\u5199\u6CD5\uFF1A\u5FC5\u987B\u9690\u85CF\u6EDA\u52A8\u6761\uFF0C\u5E76\u4E14\u7981\u6B62\u6EDA\u52A8\u6761\u5360\u4F4D\n- \u6C34\u5E73\u6EDA\u52A8\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0Bcss\u56FA\u5B9A\u5199\u6CD5\uFF1A\n``` css\n.my-div {\n overflow-x: auto; /* \u5141\u8BB8\u6C34\u5E73\u6EDA\u52A8 */\n overflow-y: hidden; /* \u7981\u6B62\u5782\u76F4\u6EDA\u52A8 */\n\n /* Firefox */\n scrollbar-width: none;\n /* IE / Edge \u65E7\u7248 */\n -ms-overflow-style: none;\n}\n\n.my-div::-webkit-scrollbar {\n height: 0; /* \u6C34\u5E73\u6EDA\u52A8\u6761\u9AD8\u5EA6\u4E3A0\uFF0C\u4E0D\u5360\u4F4D */\n}\n```\n\n- \u5782\u76F4\u6EDA\u52A8\u5FC5\u987B\u4E25\u683C\u6309\u7167\u4EE5\u4E0Bcss\u56FA\u5B9A\u5199\u6CD5\uFF1A\n``` css\n.my-div {\n overflow-x: hidden; /* \u7981\u6B62\u6C34\u5E73\u6EDA\u52A8 */\n overflow-y: auto; /* \u5141\u8BB8\u5782\u76F4\u6EDA\u52A8 */\n\n /* Firefox */\n scrollbar-width: none;\n /* IE / Edge \u65E7\u7248 */\n -ms-overflow-style: none;\n}\n\n.my-div::-webkit-scrollbar {\n width: 0; /* \u5782\u76F4\u6EDA\u52A8\u6761\u5BBD\u5EA6\u4E3A0\uFF0C\u4E0D\u5360\u4F4D */\n}\n```\n\n## 13\u3001\u7EC4\u4EF6\u7C7B\u578Bvtype\u56FA\u5B9A\u679A\u4E3E\n\u6587\u5B57vtype=\"text\"\u3001\u6309\u94AEvtype=\"button\"\u3001\u8F93\u5165\u6846vtype=\"input\"\u3001\u56FE\u6807vtype=\"icon\"\u3001\u56FE\u7247vtype=\"image\"\u3001\u77E9\u5F62vtype=\"rect\"\u3001\u5706\u5F62vtype=\"circle\"\u3001\u7EBF\u6761vtype=\"line\"\u3001\u57FA\u7840\u5BB9\u5668vtype=\"container\"\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u9876\u90E8\u72B6\u6001\u680Fvtype=\"phoneTopNavigateBar\"\u3001\u624B\u673A\u7CFB\u7EDF\u7684\u5E95\u90E8\u9996\u9875\u6307\u793A\u5668\u6A2A\u6761\u680Fvtype=\"phoneBottomHomeIndicatorBar\"\u3001\u591A\u72B6\u6001\u5BB9\u5668vtype=\"multiStateContainer\"\u3001\u67D0\u72B6\u6001\u89C6\u56FE\u5BB9\u5668vtype=\"oneStateContentContainer\"\u3001\u5361\u7247\u5BB9\u5668vtype=\"card\"\u3001\u5F00\u5173vtype=\"switch\"\u3001\u4E00\u4E2A\u5355\u9009vtype=\"radio\"\u3001\u4E00\u4E2A\u591A\u9009vtype=\"checkBox\"\u3001\u5355\u9009\u7EC4(\u591A\u4E2A\u5355\u9009)vtype=\"radioGroup\"\u3001\u591A\u9009\u7EC4(\u591A\u4E2A\u591A\u9009)vtype=\"checkBoxGroup\"\u3001\u7AD6\u5411\u5217\u8868vtype=\"verticalListView\"\u3001\u6A2A\u5411\u5217\u8868vtype=\"horizontalListView\"\u3001\u5217\u8868item\u5361\u7247vtype=\"listItemCard\", \u8F6E\u64ADvtype=\"viewPager\"\u3001\u8F6E\u64AD\u533A\u57DFvtype=\"oneViewPagerContent\"\u3001\u8F6E\u64AD\u6307\u793A\u5668\u5BB9\u5668vtype=\"viewPagerIndicatorContainer\"\u3001\u8F6E\u64AD\u6307\u793A\u5668Item\u9879\u5BB9\u5668vtype=\"viewPagerIndicatorItemContainer\"\u3001TAB\u9009\u9879\u5361vtype=\"tabContainer\"\u3001 TAB\u9009\u9879\u5361\u5185\u5BB9\u5305\u88F9\u5BB9\u5668vtype=\"tabContentWrapperContainer\"\u3001TAB\u9009\u9879\u5361\u4E00\u9875\u5185\u5BB9\u533Avtype=\"oneTabContentContainer\"\u3001Tab\u9009\u9879\u5361\u83DC\u5355\u680Fvtype=\"tabMenuBar\"\u3001Tab\u9009\u9879\u5361\u83DC\u5355\u680Fitem\u9879vtype=\"tabMenuBarItem\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6vtype=\"bottomTabContainer\"\u3001\u5E95\u90E8TAB\u5B50\u9875\u9762\u5185\u5BB9\u533Avtype=\"subPage\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6\u5BFC\u822A\u680Fvtype=\"bottomTabNavigateBar\"\u3001\u5E95\u90E8TAB\u7EC4\u4EF6\u5BFC\u822A\u680Fitem\u9879vtype=\"bottomTabNavigateBarItem\"\u3001\u9876\u90E8\u5BFC\u822A\u680Fvtype=\"topNavigateBar\"\u3001\u9876\u90E8\u6807\u9898\u680Fvtype=\"topTitleBar\"\u3001\u5E95\u90E8\u64CD\u4F5C\u680Fvtype=\"bottomOperateBar\"\u3001\u5BF9\u8BDD\u6846vtype=\"dialog\"\u3001Toast\u63D0\u793Avtype=\"toast\"\u3001\u4E0B\u62C9\u83DC\u5355vtype=\"dropDownMenu\"\u3001\u4FA7\u6ED1\u9762\u677Fvtype=\"sideSlidePanel\"\u3002";
|
|
2
2
|
//# sourceMappingURL=uiDesign.d.ts.map
|
package/build/uiDesign.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"uiDesign.d.ts","sourceRoot":"","sources":["../src/uiDesign.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,q0jCAqU8nC,CAAC"}
|
package/build/uiDesign.js
CHANGED
|
@@ -22,6 +22,7 @@ export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和
|
|
|
22
22
|
- 忘记密码 (vtype="button")
|
|
23
23
|
- 其他登录方式(居底部间距30px):微信登录、QQ登录、微博登录
|
|
24
24
|
- 首页
|
|
25
|
+
- 首页主体页(非子页面)不允许添加任何vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"组件节点,应该要在对应的子页面中添加,比如:首页主体页有四个子页面:首页子页面、活动子页面、购物车子页面、我的子页面,那么首页主体页不允许添加vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"组件节点,只在四个子页面中添加所需要的那四种vtype的组件节点。
|
|
25
26
|
- 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情
|
|
26
27
|
- 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置、广告配置(如果有广告的话)等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中
|
|
27
28
|
- 首页是各个功能的入口,因此首页需设置为由多个子页面组成的主体页面,比如:购物APP首页一般底部有一个底部功能导航栏(比如:首页、活动、购物车、消息、我的),点击底部功能导航栏的图标会切换到对应的tab子页面,每个tab子页面负责自己的独立的业务逻辑,比如购物车tab就负责购物车相关业务逻辑。
|
|
@@ -228,7 +229,32 @@ export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和
|
|
|
228
229
|
</div>
|
|
229
230
|
\`\`\`
|
|
230
231
|
|
|
231
|
-
## 8
|
|
232
|
+
## 8、vtype="dialog"、vtype="toast"、vtype="dropDownMenu"、vtype="sideSlidePanel"组件节点结构与固定规则
|
|
233
|
+
- 组件节点必须放在id="phoneContainer"的节点里面,不得放在id="pageContainer"的节点里面。
|
|
234
|
+
- 组件节点不得再包一层,必须直接在id="phoneContainer"的节点里面添加孩子节点。
|
|
235
|
+
- 注意所有vtype="toast"的提示节点必须是在页面下半部份,设置bottom=150px,绝对不是在页面顶部。
|
|
236
|
+
- 注意所有vtype="dropDownMenu"的下拉菜单节点必须在锚点元素的下方合适的位置,不得随便放置。
|
|
237
|
+
- 注意所有vtype="sideSlidePanel"的侧滑面板,假设面板宽度w=300,那么如果是左侧侧滑面板,那么常态下(非打开状态)必须设置left=-300px,如果是右侧侧滑面板,那么常态下(非打开状态)必须设置right=-393px,不得随便放置,并且侧滑面板的高度h的最大值只能是:393 - 侧滑面板的y坐标值。
|
|
238
|
+
- 组件节点的html写法如下:
|
|
239
|
+
\`\`\` html
|
|
240
|
+
<div class="phone-container" id="phoneContainer">
|
|
241
|
+
// 其他内容
|
|
242
|
+
<div name="xxx对话框" id="xxxDialog" class="dialog" vtype="dialog">
|
|
243
|
+
// 对话框内容
|
|
244
|
+
</div>
|
|
245
|
+
<div name="xxx提示" id="xxxToast" class="toast" vtype="toast">
|
|
246
|
+
// 提示内容
|
|
247
|
+
</div>
|
|
248
|
+
<div name="xxx下拉菜单" id="xxxDropDownMenu" class="drop-down-menu" vtype="dropDownMenu">
|
|
249
|
+
// 下拉菜单内容
|
|
250
|
+
</div>
|
|
251
|
+
<div name="xxx侧滑面板" id="xxxSideSlidePanel" class="side-slide-panel" vtype="sideSlidePanel">
|
|
252
|
+
// 侧滑面板内容
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
\`\`\`
|
|
256
|
+
|
|
257
|
+
## 9、组件节点显隐效果与绝对布局重叠显示固定规则
|
|
232
258
|
- vtype="oneStateContentContainer"、vtype="oneViewPagerContent"、vtype="oneTabContentContainer"节点必须使用opacity: 0;来实现隐藏效果,不得使用display: none、visibility: hidden以及其他方式来实现隐藏效果,并且必须使用绝对定位来重叠显示,比如:
|
|
233
259
|
\`\`\` css
|
|
234
260
|
.xxx-content {
|
|
@@ -248,20 +274,20 @@ export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和
|
|
|
248
274
|
}
|
|
249
275
|
\`\`\`
|
|
250
276
|
|
|
251
|
-
##
|
|
277
|
+
## 10、html的js代码说明
|
|
252
278
|
- 整个html允许添加js代码的情况:
|
|
253
279
|
1、必须给TAB选项卡vtype="tabContainer"和底部TAB组件vtype="bottomTabContainer"添加点击切换opacity: 0;和opacity: 1;的显隐效果的js代码处理。
|
|
254
280
|
- 除了以上情况,不得添加任何js、ts等逻辑代码
|
|
255
281
|
- js代码必须使用vanilla js,不得使用任何前端框架的js代码
|
|
256
282
|
|
|
257
|
-
##
|
|
283
|
+
## 11、如果vtype="verticalListView"、vtype="horizontalListView"、vtype="viewPager"、vtype="tabContainer"、vtype="radioGroup"、vtype="checkBoxGroup"类型的元素组件的数据是从网络拉取回来的,那就在这些节点添加属性fromApiData="true",比如:热门商品列表组件vtype="verticalListView",该组件的数据是从网络拉取回来的,那么html写法如下:
|
|
258
284
|
\`\`\` html
|
|
259
285
|
<div name="热门商品列表" id="hotProductList" class="hot-product-list" vtype="verticalListView" fromApiData="true">
|
|
260
286
|
// 热门商品列表
|
|
261
287
|
</div>
|
|
262
288
|
\`\`\`
|
|
263
289
|
|
|
264
|
-
##
|
|
290
|
+
## 12、水平滚动和垂直滚动的固定写法:必须隐藏滚动条,并且禁止滚动条占位
|
|
265
291
|
- 水平滚动必须严格按照以下css固定写法:
|
|
266
292
|
\`\`\` css
|
|
267
293
|
.my-div {
|
|
@@ -296,6 +322,6 @@ export const uiDesignPromptTemplate = `# 你是一名资深UI/UX设计专家和
|
|
|
296
322
|
}
|
|
297
323
|
\`\`\`
|
|
298
324
|
|
|
299
|
-
##
|
|
325
|
+
## 13、组件类型vtype固定枚举
|
|
300
326
|
文字vtype="text"、按钮vtype="button"、输入框vtype="input"、图标vtype="icon"、图片vtype="image"、矩形vtype="rect"、圆形vtype="circle"、线条vtype="line"、基础容器vtype="container"、手机系统的顶部状态栏vtype="phoneTopNavigateBar"、手机系统的底部首页指示器横条栏vtype="phoneBottomHomeIndicatorBar"、多状态容器vtype="multiStateContainer"、某状态视图容器vtype="oneStateContentContainer"、卡片容器vtype="card"、开关vtype="switch"、一个单选vtype="radio"、一个多选vtype="checkBox"、单选组(多个单选)vtype="radioGroup"、多选组(多个多选)vtype="checkBoxGroup"、竖向列表vtype="verticalListView"、横向列表vtype="horizontalListView"、列表item卡片vtype="listItemCard", 轮播vtype="viewPager"、轮播区域vtype="oneViewPagerContent"、轮播指示器容器vtype="viewPagerIndicatorContainer"、轮播指示器Item项容器vtype="viewPagerIndicatorItemContainer"、TAB选项卡vtype="tabContainer"、 TAB选项卡内容包裹容器vtype="tabContentWrapperContainer"、TAB选项卡一页内容区vtype="oneTabContentContainer"、Tab选项卡菜单栏vtype="tabMenuBar"、Tab选项卡菜单栏item项vtype="tabMenuBarItem"、底部TAB组件vtype="bottomTabContainer"、底部TAB子页面内容区vtype="subPage"、底部TAB组件导航栏vtype="bottomTabNavigateBar"、底部TAB组件导航栏item项vtype="bottomTabNavigateBarItem"、顶部导航栏vtype="topNavigateBar"、顶部标题栏vtype="topTitleBar"、底部操作栏vtype="bottomOperateBar"、对话框vtype="dialog"、Toast提示vtype="toast"、下拉菜单vtype="dropDownMenu"、侧滑面板vtype="sideSlidePanel"。`;
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lxQ0EyUzJuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDlkI3otYTmt7FVSS9VWOiuvuiuoeS4k+WutuWSjOWJjeerr+W8gOWPkeS4k+Wutu+8jOaLpeacieS4sOWvjOeahOW6lOeUqOiuvuiuoee7j+mqjO+8jOeyvumAmuiLueaenOS6uuacuueVjOmdouiuvuiuoeaMh+WNl+OAguS9oOeahOS7u+WKoeaYr+S4peagvOmBteWuiDEy5Liq6KeE5YiZ6KaB5rGC77yM5qC55o2uJ+eUqOaIt+mcgOaxguaPj+i/sCfluK7liqnmiJHlrozmiJDkuIDkuKppT1MgQXBw55qE5Y6f5Z6L6K6+6K6h44CCXG5cbiMjIOmhtemdoum7mOiupOS4muWKoemAu+i+kVxuLSAqKuWmgueUqOaIt+ayoeWcqOaPj+i/sOS4reaYjuehruaMh+aYjumhtemdoueahOS4muWKoemAu+i+ke+8jOmcgOimgeS4peagvOmBteWuiOS7peS4i+m7mOiupOeahOmhtemdouS4muWKoemAu+i+keivtOaYjioqXG4gIC0g55m75b2V6aG1XG4gICAgLSDms6jmhI/vvIzpmpDnp4HljY/orq7jgIHnlKjmiLfljY/orq7jgIHluK7liqnnrYnnrYnpg73kuI3lvpfkvb/nlKjkvqfmu5HpnaLmnb/vvIzlv4Xpobvkvb/nlKjpobXpnaLmnaXlrp7njrBcbiAgICAtIOmhtemdouW4g+WxgO+8mlxuICAgICAgLSDpobbpg6jlr7zoiKrmoI/vvJrlt6bovrnov5Tlm57jgIHlj7PovrnluK7liqlcbiAgICAgIC0gaGVhZGVy77ya5LiA5LiqbG9nb1xuICAgICAgLSDnmbvlvZXmlrnlvI/liIfmjaLljLogKHZ0eXBlPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwiKVxuICAgICAgICAtIOi0puWPt+WvhueggeeZu+W9leeKtuaAgSAodnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIilcbiAgICAgICAgICAtIOaJi+acuuWPty/pgq7nrrHovpPlhaXmoYYgKHZ0eXBlPVwiaW5wdXRcIilcbiAgICAgICAgICAtIOWvhueggei+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKVxuICAgICAgICAtIOmqjOivgeeggeeZu+W9leeKtuaAgSAodnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIilcbiAgICAgICAgICAtIOaJi+acuuWPt+i+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKVxuICAgICAgICAgIC0g6aqM6K+B56CB6L6T5YWl5Yy6ICh2dHlwZT1cImNvbnRhaW5lclwiKTog6aqM6K+B56CB6L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpLCDojrflj5bpqozor4HnoIHmjInpkq4gKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOeUqOaIt+WNj+iuruWMuuWfnyAodnR5cGU9XCJjb250YWluZXJcIilcbiAgICAgIC0g55m75b2V5oyJ6ZKuICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgLSDlip/og73mjInpkq7ljLogKHZ0eXBlPVwiY29udGFpbmVyXCIpXG4gICAgICAgICAgLSDmlrDnlKjmiLfms6jlhowgKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAgICAgLSDpqozor4HnoIEv6LSm5Y+35a+G56CB5YiH5o2i5oyJ6ZKuICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgICAgIC0g5b+Y6K6w5a+G56CBICh2dHlwZT1cImJ1dHRvblwiKVxuICAgICAgLSDlhbbku5bnmbvlvZXmlrnlvI/vvIjlsYXlupXpg6jpl7Tot50zMHB477yJ77ya5b6u5L+h55m75b2V44CBUVHnmbvlvZXjgIHlvq7ljZrnmbvlvZVcbiAgLSDpppbpobVcbiAgICAtIOi/m+WFpemmlumhteS4gOiIrOmcgOimgeivt+axgmFwcOeJiOacrOabtOaWsEFQSeaOpeWPo++8jOWIpOaWreaYr+WQpumcgOimgeabtOaWsO+8jOWmguaenOmcgOimgeabtOaWsOWwseW8ueWHuuabtOaWsOW8ueahhu+8jOWmguaenOS4jemcgOimgemCo+WwseS4jeWBmuS7u+S9leS6i+aDhVxuICAgIC0g6L+b5YWl6aaW6aG16L+Y6KaB6K+75Y+W5pys5Zyw5pWw5o2u77ya5YWo5bGA6YWN572u5pWw5o2u44CC5LiA6Iis55So5LqO5Yqf6IO95byA5YWz44CBQUJUZXN06YWN572u44CB5bm/5ZGK6YWN572u77yI5aaC5p6c5pyJ5bm/5ZGK55qE6K+d77yJ562J77yM6K+75Y+W5a6M5q+V5ZCO77yM6L+Y6KaB572R57uc6K+35rGC5LiA5qyh5YWo5bGA6YWN572uQVBJ77yM5bCG5YWo5bGA6YWN572u5pWw5o2u5pu05paw5Yiw5pys5Zyw5pWw5o2u5LitXG4gICAgLSDpppbpobXmmK/lkITkuKrlip/og73nmoTlhaXlj6PvvIzlm6DmraTpppbpobXpnIDorr7nva7kuLrnlLHlpJrkuKrlrZDpobXpnaLnu4TmiJDnmoTkuLvkvZPpobXpnaLvvIzmr5TlpoLvvJrotK3nialBUFDpppbpobXkuIDoiKzlupXpg6jmnInkuIDkuKrlupXpg6jlip/og73lr7zoiKrmoI/vvIjmr5TlpoLvvJrpppbpobXjgIHmtLvliqjjgIHotK3nianovabjgIHmtojmga/jgIHmiJHnmoTvvInvvIzngrnlh7vlupXpg6jlip/og73lr7zoiKrmoI/nmoTlm77moIfkvJrliIfmjaLliLDlr7nlupTnmoR0YWLlrZDpobXpnaLvvIzmr4/kuKp0YWLlrZDpobXpnaLotJ/otKPoh6rlt7HnmoTni6znq4vnmoTkuJrliqHpgLvovpHvvIzmr5TlpoLotK3nianovaZ0YWLlsLHotJ/otKPotK3nianovabnm7jlhbPkuJrliqHpgLvovpHjgIJcbiAgICAtIOmmlumhteS4u+S9k+mhteWPqui0n+i0o+WKn+iDvXRhYuWIh+aNouS4jei0n+i0o+avj+S4gOS4qnRhYuWFt+S9k+eahOS4muWKoemAu+i+ke+8jOWboOatpOWPquacieS4gOS4quW6lemDqHRhYuWKn+iDveWvvOiIquagj+iKgueCuee7hOS7tu+8jOayoeacieS7u+S9leaVsOaNruWKoOi9vemAu+i+ke+8jOWmguaenOacieW5v+WRiumhteWPquacieS4gOS4quW5v+WRiumhteaVsOaNrkFQSeaLieWPlueahOe9kee7nOivt+axgu+8jOivt+axguWQjuaUvuWIsOacrOWcsOaMgeS5heWMluOAglxuXG4jIyDmoLjlv4Pljp/liJlcbi0gKirwn5SlIOS7o+eggeinhOiMgyoq77ya5Y+q6IO95L2/55SoaHRtbOmHjGhlYWTnmoQ6cm9vdOW3sue7j+WumuS5ieWlveeahOminOiJsuWPmOmHj++8jOS4jeW+l+engeiHquWumuS5ieWFtuS7luminOiJsuWPmOmHj++8jOS5n+S4jeiDveS9v+eUqOS7u+S9leWFt+S9k+minOiJsuWAvO+8jOS9oOWPquiDveS7jjpyb2905Lit6YCJ5oup5ZCI6YCC55qE6aKc6Imy5L2/55SoIFxuICAgIFxuIyMgMeOAgVVJ6K6+6K6h6KaB5rGCXG4tIOmBteW+qmlQaG9uZSAxNiBQcm/lsLrlr7jop4TmoLwo5a695bqmMzkzcHjpq5jluqY4NTJweClcbi0g6YeH55So5piO5Lqu44CB5rS75Yqb55qE6YWN6Imy5pa55qGIXG4tIOS9v+eUqOacgOaWsOeahGlPU+iuvuiuoeWFg+e0oOWSjOS6pOS6kuaooeW8j1xuLSDmloflrZfnmoTlpKflsI/lv4XpobvopoHms6jmhI/vvIzkuI3og73lpKfvvIzmloflrZfnmoTlpKflsI/opoHlgY/lsI/nmoTpo47moLzmnaXov5vooYzorr7orqHjgIJcbi0g5aaC55So5oi35rKh5pyJ5piO56Gu5o+P6L+w6K+05piO6aG16Z2i6IOM5pmv6Imy77yM5Y+q5pyJ6Zeq5bGP6aG16Z2i55qE6IOM5pmv6Imy5YWB6K646K6+572u5Li76aKY6Imy5oiW5Li76aKY5riQ5Y+Y6Imy77yM5YW25LuW6aG16Z2i5bC96YeP5LiN6KaB5L2/55So5Li76aKY6Imy5oiW5Li76aKY5riQ5Y+Y6Imy5YGa6aG16Z2i6IOM5pmv6Imy44CCXG4tIGhvdmVy5LiO54K55Ye75Y+N6aaI77ya6K+35L2/55So5rWF6Imy55qE6IOM5pmv6ImyYmFja2dyb3VuZOadpeWPjemmiOWwseihjO+8jOS4peemgeS9v+eUqHRyYW5zZm9ybeaViOaenO+8jOWmguS4jeW+l+S9v+eUqO+8miBcbiAgICAuaG90LXNhbGVzLWl0ZW06aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLi4ucHgpO1xuICAgIH1cbiAgICDmraPnoa7lhpnms5XlupTor6XmmK/vvJpcbiAgICAuaG90LXNhbGVzLWl0ZW06aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAuLi47XG4gICAgfVxuLSDovpPlhaXmoYblpoLmnpzpnIDopoHlsZXnpLrmloflrZdsYWJlbO+8jOWwvemHj+S9v+eUqGljb27ku6Pmm7/mloflrZdsYWJlbO+8jOW5tuS4lGljb27mlL7lnKjovpPlhaXmoYbph4zpnaLnmoTlt6bkvqfvvIzovpPlhaXmoYbmnIlwbGFjZWhvbGRlcuaPkOekuu+8jOi/meagt+aVtOS4qumhtemdoueahOepuumXtOWIqeeUqOeOh+mrmOOAglxuLSDkuLrmr4/kuKrlsY/luZXmt7vliqDorr7lpIfmiYvmnLrns7vnu5/nmoTpobbpg6jnirbmgIHmoI92dHlwZT1cInBob25lVG9wTmF2aWdhdGVCYXJcIijpq5jluqblv4Xpobvorr7lrprkuLoyMnB477yM5pi+56S65omL5py65pe26Ze044CB5L+h5Y+344CBd2lmaeetiSnjgIHmiYvmnLrns7vnu5/nmoTlupXpg6jpppbpobXmjIfnpLrlmajmqKrmnaHmoI92dHlwZT1cInBob25lQm90dG9tSG9tZUluZGljYXRvckJhclwiKOmrmOW6puW/hemhu+iuvuWumuS4ujIycHjvvIzmmL7npLrmqKrmnaEp77yM5LiN6KaB6YGu5L2P5bGP5bmV5YaF55qE5YaF5a6577yM5omL5py66aG26YOo54q25oCB5qCP5ZKM5omL5py65bqV6YOo5qiq5p2h5qCP6ZyA6KaB5a6e546w5rKJ5rW45byP77yM5Zug5q2k5a6D5Lus6KaB55yL5oOF5Ya16K6+572u6IOM5pmv6Imy44CCXG4tIOeZu+W9leaWueW8j+WmguaenOeUqOaIt+ayoeacieaPj+i/sOivtOaYju+8jOmCo+Wwsem7mOiupOS9v+eUqHRhYuWIh+aNouaJi+acuumqjOivgeeggeeZu+W9leWSjOi0puWPt+Wvhuegge+8jOS4i+mdouaYr+esrOS4ieaWueeZu+W9leaWueW8j++8muW+ruS/oeeZu+W9leOAgVFR55m75b2V44CB5b6u5Y2a44CCXG4tIOWmguaenOeUqOaIt+ayoeacieaPj+i/sOivtOaYju+8jOazqOWGjOeZu+W9lemhtemdouS4gOiIrOacieaJi+acuumqjOivgeeggeOAgeeUqOaIt+WNj+iuruOAgemakOengeWNj+iuru+8jOW5tuS4lOS4pOS4quWNj+iuruaYr+WQjOS4gOihjOeahO+8jOS4gOS4qmNoZWNrYm945bCx6KGM44CCXG4tIOWmguaenOmcgOimgemqjOivgeeggeWhq+WGmemhtemdou+8jOmCo+S5iOWNleS4qumqjOivgeeggeaVsOWtl+i+k+WFpeahhueahOWuveW6puWSjOmrmOW6puW/hemhu+aYrzM1cHjvvIzlubbkuJTmiYDmnIlwYWRkaW5n44CBcGFkZGluZy1sZWZ044CBcGFkZGluZy1yaWdodOOAgXBhZGRpbmctdG9w44CBcGFkZGluZy1ib3R0b23pg73lv4XpobvmmK8w44CCXG4tIOaJgOaciXZ0eXBlPVwidG9hc3RcIueahOaPkOekuuiKgueCueW/hemhu+aYr+WcqOmhtemdouS4i+WNiumDqOS7ve+8jOiuvue9rmJvdHRvbT0xNTBweO+8jOe7neWvueS4jeaYr+WcqOmhtemdoumhtumDqOOAglxuXG4jIyAy44CBaWNvbuWbvuagh+S4jmltZ+WbvueJh+WGmeazleWSjOinhOWImVxuLSDlvZPpnIDopoFpY29u5Zu+5qCH5pe25b+F6aG75L2/55SoRm9udEF3ZXNvbWXlm77moIfvvIzmr5TlpoLvvJpcXGA8aSBuYW1lPVwi5b6u5L+hSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwid3hJY29uXCIgY2xhc3M9XCJmYWIgZmEtd2VpeGluXCI+PC9pPlxcYFxuLSDlvZPpnIDopoFpbWflm77niYfml7bvvIxzcmPkvb/nlKjlm77niYflnLDlnYDvvJpcXGBodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxLmpwZ1xcYCnvvIzlhbbkuK3nu5PlsL7nmoTigJlzaG93SW1nMSflj6/ku6XmjaLkuLrku44x5YiwMzDnmoTmlbDlrZfvvIwxfjMw55qE5pWw5a2X5b+F6aG76ZqP5py65oyR6YCJ77yM5LiN5b6X5q+P5Liq6aG16Z2i5q+P5Liq5Zu+54mH6YO95L2/55So5ZCM5LiA5Liq5pWw5a2X44CC5YaZ5rOV5q+U5aaC77yaXFxgPGltZyBzcmM9XCJodHRwczovL29zcy5ieXRlZnVuZ28uY29tL2YxL3Nob3dJbWcxNy5qcGdcIiBhbHQ9XCJ4eHhcIiBjbGFzcz1cInh4eFwiIHZ0eXBlPVwiaW1hZ2VcIj5cXGBcbi0g57ud5a+55LiN6IO95L2/55SoZW1vamnooajmg4XnrKblj7fvvIzkuI3lvpfkvb/nlKjku7vkvZVlbW9qaeihqOaDheespuWPt++8jOivt+S9v+eUqGljb27miJZpbWflm77niYfoioLngrnmnaXku6Pmm7/jgIJcblxuIyMgM+OAgWh0bWzku6PnoIHlhpnms5Xlkozop4TliJlcbi0g5LiN5b6X5L+u5pS5aHRtbOmhtemdoueahGJvZHnjgIFwaG9uZS1jb250YWluZXLvvIjlj6/kv67mlLnpobXpnaLog4zmma/oibLvvInjgIFwYWdlLWNvbnRhaW5lcuOAgXN0YXR1cy1iYXLjgIFob21lLWluZGljYXRvcuOAgWhvbWUtaW5kaWNhdG9yLWJhcueahGNzc+agt+W8j+OAglxuLSDpobXpnaLog4zmma/oibLorr7nva7lnKhoZWFkZXJkZeeahHN0eWxl6YeM5bey5pyJ55qELnBob25lLWNvbnRhaW5lcuWumuS5ieeahGJhY2tncm91bmTlsZ7mgKfkuIrvvIxwYWdlLWNvbnRhaW5lcuiKgueCueemgeatouWGjeWMheS4gOWxgu+8jOW6lOivpeebtOaOpeWcqHBhZ2UtY29udGFpbmVy6YeM6Z2i5re75Yqg5YaF5a656IqC54K577yM5LiN5b6X5YaN5YyF5LiA5bGC44CCXG4tIOS9oOeahOW3peS9nOWPquiDveaYr+WcqOmhtemdouWGheWuueaYvuekuuWMunBhZ2UtY29udGFpbmVy6IqC54K55re75Yqg5a2p5a2Q6IqC54K577yM5bm26K6+6K6h57u05oqk5aW96L+Z5Lqb6aG16Z2i5YaF5a655a2p5a2Q6IqC54K55YaF5a655ZKM5qC35byP44CCXG4tIGNzc+agt+W8j+W/hemhu+WGheiBlO+8jOS4jeW+l+S9v+eUqOWklumDqGNzc+aWh+S7tu+8jOW5tuS4lOS4jeW+l+S9v+eUqOiKgueCueeahHN0eWxl5p2l5YaZ5qC35byP77yM5b+F6aG76KaB5YWI5ZyoXFxgPGhlYWQ+XFxg55qEXFxgPHN0eWxlPlxcYOmHjOmdouWumuS5ieWlveWQhOenjWNzc+agt+W8j++8jOeEtuWQjuiKgueCueS9v+eUqGNsYXNz5bGe5oCn5p2l5byV55So44CCXG4tIOWkmueKtuaAgeagt+W8j++8iGFjdGl2ZeOAgWRpc2FibGVk44CBZm9jdXPjgIFob3Zlcuetie+8ieeahOiKgueCueW/hemhu+imgeWcqFxcYDxoZWFkPlxcYOeahFxcYDxzdHlsZT5cXGDph4zpnaLlrprkuYnlpb3miYDpnIDnmoTlkITkuKrnirbmgIHnmoRjc3PmoLflvI/vvIzmr5TlpoJwaG9uZS1pbnB1dDpcblxcYFxcYFxcYCBjc3Ncbi4uLlxuLnBob25lLWlucHV0IHtcbiAgICAuLi5cbn1cbi5waG9uZS1pbnB1dC5hY3RpdmUge1xuICAgIC4uLlxufVxuLnBob25lLWlucHV0LmRpc2FibGVkIHtcbiAgICAuLi5cbn1cbi5waG9uZS1pbnB1dC5mb2N1cyB7XG4gICAuLi5cbn1cbi4uLlxuXFxgXFxgXFxgXG4tIOavj+S4quiKgueCuemDveW/hemhu+a3u+WKoGlk44CBbmFtZeOAgXZ0eXBl5bGe5oCn77yMaWTlsZ7mgKflgLzlv4XpobvmmK/oi7HmlofvvIxuYW1l5bGe5oCn5YC85b+F6aG75piv5Lit5paH77yM5q+U5aaC77yaXFxgPGkgbmFtZT1cIuW+ruS/oUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cXGBcbi0g5omA5pyJ6IqC54K557G75Z6LdnR5cGXnmoTlj5blgLzku4XpmZDkvb/nlKgn57uE5Lu257G75Z6LdnR5cGXlm7rlrprmnprkuL4n77yM5b+F6aG754af5oKJ6K6w5L2PJ+e7hOS7tuexu+Wei3Z0eXBl5Zu65a6a5p6a5Li+J++8jOW/hemhu+WwhuWFtuaUvuWIsOe8k+WtmFxuLSDova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CBVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgeW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLnmoTmr4/kuIDpobXlhoXlrrnlv4XpobvlrozmlbTvvIzkuI3lvpfnnIHnlaXku7vkvZXlhoXlrrnjgILmr5TlpoLmnIkz6aG177yM6YKj5LmI5q+P5LiA6aG155qE5YaF5a656YO95LiN6IO955yB55Wl44CCXG4tIHN3aXRjaOOAgXJhZGlv44CBY2hlY2tCb3jjgIFyYWRpb0dyb3Vw44CBY2hlY2tCb3hHcm91cOiKgueCuemDveS4jeW+l+a3u+WKoOS7u+S9leebuOWFs+eahGpz5ZKMdHPku6PnoIHjgIJcbi0gdnR5cGU9XCJzd2l0Y2hcIuOAgXZ0eXBlPVwicmFkaW9cIuOAgXZ0eXBlPVwiY2hlY2tCb3hcIuiKgueCueeahOWtqeWtkGnmoIfnrb7oioLngrnlv4Xpobvmt7vliqDkuIDkuKpjaGVja2VkQ2xhc3PlsZ7mgKfvvIznlKjkuo7ooajnpLrpgInkuK3nirbmgIHnmoRpY29u5Zu+5qCH5qC35byP57G75ZCN77yM5q+U5aaC77yaXG5cXGBcXGBcXGAgaHRtbFxuPGkgbmFtZT1cIuW8gOWFs0ljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInN3aXRjaEljb25cIiBjbGFzcz1cImZhIHh4eFwiIGNoZWNrZWRDbGFzcz1cImZhIHl5eVwiPjwvaT5cbjxpIG5hbWU9XCLljZXpgIlJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJyYWRpb0ljb25cIiBjbGFzcz1cImZhIHh4eFwiIGNoZWNrZWRDbGFzcz1cImZhIHl5eVwiPjwvaT5cbjxpIG5hbWU9XCLljZXpgIlJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJyYWRpb0ljb25cIiBjbGFzcz1cImZhcyB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYXMgeXl5XCI+PC9pPlxuXFxgXFxgXFxgXG4tIEljb27lm77moIflv4Xpobvkvb/nlKg8aT7moIfnrb7vvIw8aT7moIfnrb7oioLngrnkuZ/lv4XpobvpnIDopoHmt7vliqDkuIDkuKppZOWSjG5hbWXnmoTlsZ7mgKfvvIzlubbkuJQ8aT7moIfnrb7ph4zpnaLnu53lr7nkuI3og73kvb/nlKhiZWZvcmXjgIFhZnRlcuOAgW1hcmtlcuetieetieS7u+S9leS8quWFg+e0oOOAglxuLSBodG1s5ZKMY3Nz5qC35byP6YeM57ud5a+55LiN5b6X5L2/55SoYmVmb3Jl44CBYWZ0ZXLjgIFtYXJrZXLnrYnnrYnku7vkvZXkvKrlhYPntKBcbi0g5YOP57Sg5b+F6aG75L2/55SocHjvvIzkuI3kvb/nlKhyZW3lkoxlbeetieWFtuS7luOAglxuLSDinYwgY3Nz5qC35byP57ud5a+556aB5q2i5L2/55So5q+b546755KD5pWI5p6c77yM5q+U5aaC77yaYmFja2Ryb3AtZmlsdGVyXG4tIOWmguaenGRpduiuvue9ruS6hm92ZXJmbG93LXg6YXV0bzvvvIzpgqPkuYhkaXblv4Xpobvorr7nva5taW4taGVpZ2h0OiB4eHB4O+S7pemYsuatomRpdumrmOW6pui/h+S9juWHuueOsOmXrumimOOAglxuLSDmiYDmnInpopzoibLlgLzkuI3lvpfkvb/nlKjlhoXnva7nmoTpopzoibLlhbPplK7lrZfvvIzmr5TlpoLkuI3lvpfkvb/nlKhyZWTjgIFibHVl44CBZ3JlZW7jgIF5ZWxsb3fjgIFwdXJwbGXnrYnpopzoibLlhbPplK7lrZfvvIzlv4Xpobvkvb/nlKgjMDAwMDAw44CBI2ZmZmZmZuetiTE26L+b5Yi26aKc6Imy5YC844CCXG4tIOW8gOWFs3N3aXRjaOOAgeWNlemAiXJhZGlv44CB5aSa6YCJY2hlY2tCb3jnmoTlranlrZDoioLngrnlv4Xpobvkvb/nlKhp5qCH562+5p2l5a6e546w5Zu+5qCHSWNvbu+8jOS4jeW+l+S9v+eUqOWchuinkuefqeW9ouaIlmlucHV05qCH562+5p2l5a6e546w77yM5Zu+5qCH5L2/55SoRm9udCBBd2Vzb21lIENETu+8jGNoZWNrQm945LiN6ZyA6KaB5ruR5Yqo5pWI5p6c44CCXG4tIOeJueWIq+azqOaEj+WNlemAiee7hHZ5dHBlPVwicmFkaW9Hcm91cFwi55qE5L2/55So77yM5q+U5aaC77yaNeS4quexu+WIq3RhYu+8jOmAieS4reWFtuS4rTHkuKrvvIzpgInkuK3nmoTpgqPkuKrliIfmjaLliLDpgInkuK3nirbmgIHvvIzlhbbku5Y05Liq6KaB5YiH5o2i5Li66Z2e6YCJ5Lit54q25oCB44CC6L+Z56eN5Zy65pmv5bCx5b+F6aG75L2/55So5Y2V6YCJ57uE77yM5aSa6YCJdnl0cGU9XCJyYWRpb0dyb3VwXCLlv4XpobvljIXlkKtO5Liq5Y2V6YCJdnR5cGU9XCJyYWRpb1wi5a2p5a2Q6IqC54K577yMaHRtbOWGmeazleWmguS4i++8mlxuXFxgXFxgXFxgaHRtbFxuPGRpdiBuYW1lPVwieHh45Y2V6YCJ57uEXCIgaWQ9XCJ4eHhSYWRpb0dyb3VwXCIgY2xhc3M9XCJ4eHgtcmFkaW8tZ3JvdXByXCIgdnR5cGU9XCJyYWRpb0dyb3VwXCI+XG4gICAgPGRpdiBuYW1lPVwieHh45Y2V6YCJMVwiIGlkPVwieHh4UmFkaW8xXCIgY2xhc3M9XCJ4eHgtcmFkaW9cIiB2dHlwZT1cInJhZGlvXCI+XG4gICAgICAgIDxpIG5hbWU9XCLljZXpgIlJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJyYWRpb0ljb25cIiBjbGFzcz1cImZhIHh4eFwiIGNoZWNrZWRDbGFzcz1cImZhIHl5eVwiPjwvaT5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwieHh45Y2V6YCJMlwiIGlkPVwieHh4UmFkaW8yXCIgY2xhc3M9XCJ4eHgtcmFkaW9cIiB2dHlwZT1cInJhZGlvXCI+XG4gICAgICAgIDxpIG5hbWU9XCLljZXpgIlJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJyYWRpb0ljb25cIiBjbGFzcz1cImZhIHh4eFwiIGNoZWNrZWRDbGFzcz1cImZhIHl5eVwiPjwvaT5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG4gICAgLi4uXG48L2Rpdj5cbi0g5aSa6YCJ57uEdnR5cGU9XCJjaGVja0JveEdyb3VwXCLnu4Tku7bnlKjkuo7lpJrpgInlnLrmma/vvIzlpJrpgInnu4R2dHlwZT1cImNoZWNrQm94R3JvdXBcIuW/hemhu+WMheWQq07kuKp2dHlwZT1cImNoZWNrQm94XCLlranlrZDoioLngrnvvIxodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGBodG1sXG48ZGl2IG5hbWU9XCJ4eHjlpJrpgInnu4RcIiBpZD1cInh4eENoZWNrQm94R3JvdXBcIiBjbGFzcz1cInh4eC1jaGVjay1ib3gtZ3JvdXBcIiB2dHlwZT1cImNoZWNrQm94R3JvdXBcIj5cbiAgICA8ZGl2IG5hbWU9XCJ4eHjlpJrpgIkxXCIgaWQ9XCJ4eHhDaGVja0JveDFcIiBjbGFzcz1cInh4eC1jaGVjay1ib3hcIiB2dHlwZT1cImNoZWNrQm94XCI+XG4gICAgICAgIDxpIG5hbWU9XCLlpJrpgIlJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJjaGVja0JveEljb25cIiBjbGFzcz1cImZhIHh4eFwiIGNoZWNrZWRDbGFzcz1cImZhIHl5eVwiPjwvaT5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwieHh45aSa6YCJMlwiIGlkPVwieHh4Q2hlY2tCb3gyXCIgY2xhc3M9XCJ4eHgtY2hlY2stYm94XCIgdnR5cGU9XCJjaGVja0JveFwiPlxuICAgICAgICA8aSBuYW1lPVwi5aSa6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwiY2hlY2tCb3hJY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAgIC4uLlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgNOOAgei9ruaSrXZpZXdQYWdlcue7hOS7tue7k+aehOWbuuWumuinhOWImVxuLSDova7mkq12aWV3UGFnZXLnu4Tku7bnmoTnu5PmnoTvvJrlv4XpobvmmK/oioLngrl2dHlwZT1cInZpZXdQYWdlclwi6L2u5pKt6IqC54K55a+55bqU5pyJ5LiA5Liq6L2u5pKt5oyH56S65ZmodnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcIuiKgueCueS4juS5i+WvueW6lO+8jOiKgueCuXZ0eXBlPVwidmlld1BhZ2VyXCLljIXlkKtO5LiqdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLvvIx2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwi6IqC54K55b+F6aG75YyF5ZCr552ATuS4qnZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwi77yM5YWo6YOo57y65LiA5LiN5Y+v44CCaHRtbOWGmeazleWmguS4i++8mlxuXFxgXFxgXFxgIGh0bWxcbjxkaXYgbmFtZT1cIui9ruaSrVwiIGlkPVwieHh4Vmlld1BhZ2VyXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyXCIgdnR5cGU9XCJ2aWV3UGFnZXJcIj5cbiAgICA8ZGl2IG5hbWU9XCLova7mkq3lhoXlrrkxXCIgaWQ9XCJ4eHhWaWV3UGFnZXJDb250ZW50MVwiIGNsYXNzPVwidmlldy1wYWdlci1jb250ZW50XCIgdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCI+XG4gICAgICAgIC8vIOi9ruaSreWGheWuuVxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIui9ruaSreWGheWuuTJcIiBpZD1cInh4eFZpZXdQYWdlckNvbnRlbnQyXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVZpZXdQYWdlckNvbnRlbnRcIj5cbiAgICAgICAgLy8g6L2u5pKt5YaF5a65XG4gICAgPC9kaXY+XG4gICAgLi4uXG48L2Rpdj5cbjxkaXYgbmFtZT1cIui9ruaSreaMh+ekuuWZqOWuueWZqFwiIGlkPVwieHh4Vmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXCIgY2xhc3M9XCJ2aWV3LXBhZ2VyLWluZGljYXRvci1jb250YWluZXJcIiB2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwiPlxuICAgIDxkaXYgbmFtZT1cIui9ruaSreaMh+ekuuWZqGl0ZW3pobkxXCIgaWQ9XCJ4eHhWaWV3UGFnZXJJbmRpY2F0b3JJdGVtQ29udGFpbmVyMVwiIGNsYXNzPVwidmlldy1wYWdlci1pbmRpY2F0b3ItaXRlbS1jb250YWluZXJcIiB2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckl0ZW1Db250YWluZXJcIj5cbiAgICAgICAgLy8g6L2u5pKt5oyH56S65ZmoaXRlbemhuVxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cIui9ruaSreaMh+ekuuWZqGl0ZW3pobkyXCIgaWQ9XCJ4eHhWaWV3UGFnZXJJbmRpY2F0b3JJdGVtQ29udGFpbmVyMlwiIGNsYXNzPVwidmlldy1wYWdlci1pbmRpY2F0b3ItaXRlbS1jb250YWluZXJcIiB2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckl0ZW1Db250YWluZXJcIj5cbiAgICAgICAgLy8g6L2u5pKt5oyH56S65ZmoaXRlbemhuVxuICAgIDwvZGl2PlxuICAgIC4uLlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgNeOAgVRBQumAiemhueWNoXRhYkNvbnRhaW5lcue7hOS7tue7k+aehOWbuuWumuinhOWImVxuLSB0YWLnu4Tku7Z0YWJDb250YWluZXLnu4Tku7bnmoTnu5PmnoTvvJrlv4XpobvmmK/mnIDlpJblsYLoioLngrl2dHlwZT1cInRhYkNvbnRhaW5lclwi5b+F6aG75YyF5ZCr552AMeS4qnZ0eXBlPVwidGFiTWVudUJhclwi6IqC54K55ZKMMeS4qnZ0eXBlPVwidGFiQ29udGVudFdyYXBwZXJDb250YWluZXJcIuiKgueCue+8jCB2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCLoioLngrnlv4XpobvljIXlkKvnnYBO5LiqdnR5cGU9XCJvbmVUYWJDb250ZW50Q29udGFpbmVyXCLoioLngrnvvIx2dHlwZT1cInRhYk1lbnVCYXJcIuiKgueCueW/hemhu+WMheWQq+edgE7kuKp2dHlwZT1cInRhYk1lbnVCYXJJdGVtXCLoioLngrnvvIzlhajpg6jnvLrkuIDkuI3lj6/jgIJodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwidGFiXCIgaWQ9XCJ4eHhUYWJcIiBjbGFzcz1cInRhYlwiIHZ0eXBlPVwidGFiQ29udGFpbmVyXCI+XG4gICAgPGRpdiBuYW1lPVwidGFi6I+c5Y2V5qCPXCIgaWQ9XCJ4eHhUYWJNZW51QmFyXCIgY2xhc3M9XCJ0YWItbWVudS1iYXJcIiB2dHlwZT1cInRhYk1lbnVCYXJcIj5cbiAgICAgICAgPGRpdiBuYW1lPVwidGFi6I+c5Y2V5qCPaXRlbemhuVwiIGlkPVwieHh4VGFiTWVudUJhckl0ZW1cIiBjbGFzcz1cInRhYi1tZW51LWJhci1pdGVtXCIgdnR5cGU9XCJ0YWJNZW51QmFySXRlbVwiPlxuICAgICAgICAgICAgLy8gdGFi6I+c5Y2V5qCPaXRlbemhuVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwidGFi5YaF5a655a655ZmoXCIgaWQ9XCJ4eHhUYWJDb250ZW50V3JhcHBlckNvbnRhaW5lclwiIGNsYXNzPVwidGFiLWNvbnRlbnQtd3JhcHBlci1jb250YWluZXJcIiB2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgbmFtZT1cInRhYuWGheWuuVwiIGlkPVwieHh4VGFiQ29udGVudFwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIj5cbiAgICAgICAgICAgIC8vIHRhYuWGheWuuVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG48L2Rpdj5cblxcYFxcYFxcYFxuXG4jIyA244CB5aSa54q25oCB5a655ZmobXVsdGlTdGF0ZUNvbnRhaW5lcue7hOS7tue7k+aehOWbuuWumuinhOWImVxuLSDlpJrnirbmgIHlrrnlmah2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIuiKgueCueWuueWZqOWcqOaVsOaNruWKoOi9veWcuuaZr+S4gOiIrOacieWKoOi9veWQjuacieaVsOaNruOAgeWKoOi9veS4reOAgeaXoOaVsOaNruOAgeiBlOe9keWksei0peWbm+enjeeKtuaAge+8jOWKoOi9veS4reOAgeaXoOaVsOaNruOAgeiBlOe9keWksei0peeKtuaAgeeahOWGheWuueS4gOiIrOaYr+WeguebtOWxheS4reeahO+8jOeEtuWQjuW/hemhu+m7mOiupOaYr+aYvuekuuWKoOi9veWQjuacieaVsOaNrueKtuaAgeS4i+eahOWGheWuueOAglxuLSDlpJrnirbmgIHlrrnlmahtdWx0aVN0YXRlQ29udGFpbmVy57uE5Lu255qE57uT5p6E77ya5b+F6aG75piv5pyA5aSW5bGC6IqC54K5dnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCLljIXlkKtO5LiqdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIuiKgueCue+8jOWFqOmDqOe8uuS4gOS4jeWPr+OAglxuLSDlpJrnirbmgIHlrrnlmah2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIu+8jOm7mOiupOW/hemhu+iuvue9ruato+W4uOaIkOWKn+WKoOi9veWQjueahOWGheWuueaYvuekuueahOeKtuaAge+8jOavlOWmgu+8muWKoOi9veWQjuacieaVsOaNruOAgeWKoOi9veS4reOAgeaXoOaVsOaNruOAgeiBlOe9keWksei0peeahOWbm+enjeeKtuaAgeaYvuekuu+8jOm7mOiupOaYr+aYvuekuuWKoOi9veWQjuacieaVsOaNrueKtuaAgeS4i+eahOWGheWuue+8jOW5tuS4lOWKoOi9veWQjuacieaVsOaNrueKtuaAgeeahOiKgueCueW/hemhu+aOkuWcqOacgOWQju+8jOavlOWmgmh0bWzku6PnoIHov5nmoLflhpnvvJpcblxcYFxcYFxcYCBodG1sXG4uLi5cbiAgICAgICAgLnN0YXRlLWNvbnRlbnQge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgLi4uXG4gICAgICAgIH1cbiAgICAgICAgLnN0YXRlLWNvbnRlbnQuYWN0aXZlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbi4uLlxuPGRpdiBuYW1lPVwi5aSa54q25oCB5a655ZmoXCIgaWQ9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCIgY2xhc3M9XCJtdWx0aS1zdGF0ZS1jb250YWluZXJcIiB2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIj5cbiAgICA8IS0tIOWKoOi9veeKtuaAgSAtLT5cbiAgICA8ZGl2IG5hbWU9XCLliqDovb3nirbmgIFcIiBpZD1cImxvYWRpbmdTdGF0ZVwiIGNsYXNzPVwic3RhdGUtY29udGVudFwiIHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCI+XG4gICAgICAgIC8vIOWKoOi9veeKtuaAgeS4i+eahOWGheWuuVxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g6ZSZ6K+v54q25oCBIC0tPlxuICAgIDxkaXYgbmFtZT1cIumUmeivr+eKtuaAgVwiIGlkPVwiZXJyb3JTdGF0ZVwiIGNsYXNzPVwic3RhdGUtY29udGVudFwiIHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCI+XG4gICAgICAgIC8vIOmUmeivr+eKtuaAgeS4i+eahOWGheWuuVxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g56m654q25oCBIC0tPlxuICAgIDxkaXYgbmFtZT1cIuepuueKtuaAgVwiIGlkPVwiZW1wdHlTdGF0ZVwiIGNsYXNzPVwic3RhdGUtY29udGVudFwiIHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCI+XG4gICAgICAgIC8vIOepuueKtuaAgeS4i+eahOWGheWuuVxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g5pyJ5pWw5o2u54q25oCBIOaOkuWcqOacgOWQjiAtLT5cbiAgICA8ZGl2IG5hbWU9XCLmnInmlbDmja7nirbmgIFcIiBpZD1cImRhdGFTdGF0ZVwiIGNsYXNzPVwic3RhdGUtY29udGVudCBhY3RpdmVcIiB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiPlxuICAgICAgICAvLyDmnInmlbDmja7nirbmgIHkuIvnmoTlhoXlrrlcbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG48L2Rpdj5cblxcYFxcYFxcYFxuXG4jIyA344CB5bqV6YOodGFi5a+86Iiq5qCP57uE5Lu257uT5p6E5Zu65a6a6KeE5YiZXG4tIOW6lemDqHRhYuWvvOiIquagj+e7hOS7tuW/hemhu+aYr3Z0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLlv4XpobvljIXlkKvnnYB2dHlwZT1cInN1YlBhZ2VcIuS4jnZ0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuWtqeWtkOiKgueCue+8jOWFtuS4reWtkOmhtemdonZ0eXBlPVwic3ViUGFnZVwi6IqC54K55a655Zmo6YeM57ud5a+55LiN6IO95pyJ5a2p5a2Q6IqC54K577yM57ud5a+55LiN6IO95pyJ5Lu75L2V5Y2g5L2N5YaF5a6577yMaHRtbOWGmeazleWmguS4i++8mlxuXFxgXFxgXFxgIGh0bWxcbjxkaXYgbmFtZT1cIuW6lemDqOWvvOiIquagj1wiIGlkPVwieHh4Qm90dG9tVGFiXCIgY2xhc3M9XCJib3R0b20tdGFiXCIgdnR5cGU9XCJib3R0b21UYWJDb250YWluZXJcIj5cbiAgICA8ZGl2IG5hbWU9XCLpppbpobV0YWLlrZDpobXpnaLlhoXlrrnljLpcIiBpZD1cImhvbWVQYWdlXCIgY2xhc3M9XCJib3R0b20tdGFiLWNvbnRlbnRcIiB2dHlwZT1cInN1YlBhZ2VcIj48L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCLotK3nianovaZ0YWLlrZDpobXpnaLlhoXlrrnljLpcIiBpZD1cImNhcmRQYWdlXCIgY2xhc3M9XCJib3R0b20tdGFiLWNvbnRlbnRcIiB2dHlwZT1cInN1YlBhZ2VcIj48L2Rpdj5cbiAgICAuLi5cbiAgICA8ZGl2IG5hbWU9XCLlupXpg6jlr7zoiKrmoI/oj5zljZXmoI9cIiBpZD1cInh4eEJvdHRvbVRhYk5hdmlnYXRlQmFyXCIgY2xhc3M9XCJib3R0b20tdGFiLW5hdmlnYXRlLWJhclwiIHZ0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIj5cbiAgICAgICAgPGRpdiBuYW1lPVwi5bqV6YOo5a+86Iiq5qCP6I+c5Y2V5qCPaXRlbemhuVwiIGlkPVwieHh4Qm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtMVwiIGNsYXNzPVwiYm90dG9tLXRhYi1uYXZpZ2F0ZS1iYXItaXRlbVwiIHZ0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJJdGVtXCI+XG4gICAgICAgICAgICAvLyBib3R0b21UYWLnmoTlkITkuKp0YWJJdGVt6aG5XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXFxgXFxgXFxgXG5cbiMjIDjjgIHnu4Tku7boioLngrnmmL7pmpDmlYjmnpzkuI7nu53lr7nluIPlsYDph43lj6DmmL7npLrlm7rlrprop4TliJlcbi0gdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIuOAgXZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwi44CBdnR5cGU9XCJvbmVUYWJDb250ZW50Q29udGFpbmVyXCLoioLngrnlv4Xpobvkvb/nlKhvcGFjaXR5OiAwO+adpeWunueOsOmakOiXj+aViOaenO+8jOS4jeW+l+S9v+eUqGRpc3BsYXk6IG5vbmXjgIF2aXNpYmlsaXR5OiBoaWRkZW7ku6Xlj4rlhbbku5bmlrnlvI/mnaXlrp7njrDpmpDol4/mlYjmnpzvvIzlubbkuJTlv4Xpobvkvb/nlKjnu53lr7nlrprkvY3mnaXph43lj6DmmL7npLrvvIzmr5TlpoLvvJpcblxcYFxcYFxcYCBjc3Ncbi54eHgtY29udGVudCB7XG4gICAgLi4uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC4uLlxufVxuLnh4eC1jb250ZW50LmFjdGl2ZSB7XG4gICAgLi4uXG4gICAgb3BhY2l0eTogMTtcbiAgICAuLi5cbn1cblxcYFxcYFxcYFxuXG4jIyA544CBaHRtbOeahGpz5Luj56CB6K+05piOXG4tIOaVtOS4qmh0bWzlhYHorrjmt7vliqBqc+S7o+eggeeahOaDheWGte+8mlxuICAx44CB5b+F6aG757uZVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuWSjOW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLmt7vliqDngrnlh7vliIfmjaJvcGFjaXR5OiAwO+WSjG9wYWNpdHk6IDE755qE5pi+6ZqQ5pWI5p6c55qEanPku6PnoIHlpITnkIbjgIJcbi0g6Zmk5LqG5Lul5LiK5oOF5Ya177yM5LiN5b6X5re75Yqg5Lu75L2VanPjgIF0c+etiemAu+i+keS7o+eggVxuLSBqc+S7o+eggeW/hemhu+S9v+eUqHZhbmlsbGEganPvvIzkuI3lvpfkvb/nlKjku7vkvZXliY3nq6/moYbmnrbnmoRqc+S7o+eggVxuXG4jIyAxMOOAgeWmguaenHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CBdnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgXZ0eXBlPVwidmlld1BhZ2VyXCLjgIF2dHlwZT1cInRhYkNvbnRhaW5lclwi44CBdnR5cGU9XCJyYWRpb0dyb3VwXCLjgIF2dHlwZT1cImNoZWNrQm94R3JvdXBcIuexu+Wei+eahOWFg+e0oOe7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaLieWPluWbnuadpeeahO+8jOmCo+WwseWcqOi/meS6m+iKgueCuea3u+WKoOWxnuaAp2Zyb21BcGlEYXRhPVwidHJ1ZVwi77yM5q+U5aaC77ya54Ot6Zeo5ZWG5ZOB5YiX6KGo57uE5Lu2dnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLvvIzor6Xnu4Tku7bnmoTmlbDmja7mmK/ku47nvZHnu5zmi4nlj5blm57mnaXnmoTvvIzpgqPkuYhodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwi54Ot6Zeo5ZWG5ZOB5YiX6KGoXCIgaWQ9XCJob3RQcm9kdWN0TGlzdFwiIGNsYXNzPVwiaG90LXByb2R1Y3QtbGlzdFwiIHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wiIGZyb21BcGlEYXRhPVwidHJ1ZVwiPlxuICAgIC8vIOeDremXqOWVhuWTgeWIl+ihqFxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgMTHjgIHmsLTlubPmu5rliqjlkozlnoLnm7Tmu5rliqjnmoTlm7rlrprlhpnms5XvvJrlv4XpobvpmpDol4/mu5rliqjmnaHvvIzlubbkuJTnpoHmraLmu5rliqjmnaHljaDkvY1cbi0g5rC05bmz5rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogYXV0bzsgICAgIC8qIOWFgeiuuOawtOW5s+a7muWKqCAqL1xuICBvdmVyZmxvdy15OiBoaWRkZW47ICAgLyog56aB5q2i5Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGhlaWdodDogMDsgLyog5rC05bmz5rua5Yqo5p2h6auY5bqm5Li6MO+8jOS4jeWNoOS9jSAqL1xufVxuXFxgXFxgXFxgXG5cbi0g5Z6C55u05rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyAgICAgLyog56aB5q2i5rC05bmz5rua5YqoICovXG4gIG92ZXJmbG93LXk6IGF1dG87ICAgICAgLyog5YWB6K645Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwOyAvKiDlnoLnm7Tmu5rliqjmnaHlrr3luqbkuLow77yM5LiN5Y2g5L2NICovXG59XG5cXGBcXGBcXGBcblxuIyMgMTLjgIHnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vlxu5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB6L6T5YWl5qGGdnR5cGU9XCJpbnB1dFwi44CB5Zu+5qCHdnR5cGU9XCJpY29uXCLjgIHlm77niYd2dHlwZT1cImltYWdlXCLjgIHnn6nlvaJ2dHlwZT1cInJlY3RcIuOAgeWchuW9onZ0eXBlPVwiY2lyY2xlXCLjgIHnur/mnaF2dHlwZT1cImxpbmVcIuOAgeWfuuehgOWuueWZqHZ0eXBlPVwiY29udGFpbmVyXCLjgIHmiYvmnLrns7vnu5/nmoTpobbpg6jnirbmgIHmoI92dHlwZT1cInBob25lVG9wTmF2aWdhdGVCYXJcIuOAgeaJi+acuuezu+e7n+eahOW6lemDqOmmlumhteaMh+ekuuWZqOaoquadoeagj3Z0eXBlPVwicGhvbmVCb3R0b21Ib21lSW5kaWNhdG9yQmFyXCLjgIHlpJrnirbmgIHlrrnlmah2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIuOAgeafkOeKtuaAgeinhuWbvuWuueWZqHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCLjgIHljaHniYflrrnlmah2dHlwZT1cImNhcmRcIuOAgeW8gOWFs3Z0eXBlPVwic3dpdGNoXCLjgIHkuIDkuKrljZXpgIl2dHlwZT1cInJhZGlvXCLjgIHkuIDkuKrlpJrpgIl2dHlwZT1cImNoZWNrQm94XCLjgIHljZXpgInnu4Qo5aSa5Liq5Y2V6YCJKXZ0eXBlPVwicmFkaW9Hcm91cFwi44CB5aSa6YCJ57uEKOWkmuS4quWkmumAiSl2dHlwZT1cImNoZWNrQm94R3JvdXBcIuOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CB5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgeWIl+ihqGl0ZW3ljaHniYd2dHlwZT1cImxpc3RJdGVtQ2FyZFwiLCDova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CB6L2u5pKt5Yy65Z+fdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIHova7mkq3mjIfnpLrlmajlrrnlmah2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwi44CB6L2u5pKt5oyH56S65ZmoSXRlbemhueWuueWZqHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwi44CBVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgSBUQULpgInpobnljaHlhoXlrrnljIXoo7nlrrnlmah2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCLjgIFUQULpgInpobnljaHkuIDpobXlhoXlrrnljLp2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuOAgVRhYumAiemhueWNoeiPnOWNleagj3Z0eXBlPVwidGFiTWVudUJhclwi44CBVGFi6YCJ6aG55Y2h6I+c5Y2V5qCPaXRlbemhuXZ0eXBlPVwidGFiTWVudUJhckl0ZW1cIuOAgeW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLjgIHlupXpg6hUQULlrZDpobXpnaLlhoXlrrnljLp2dHlwZT1cInN1YlBhZ2VcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj2l0ZW3pobl2dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVwi44CB6aG26YOo5a+86Iiq5qCPdnR5cGU9XCJ0b3BOYXZpZ2F0ZUJhclwi44CB6aG26YOo5qCH6aKY5qCPdnR5cGU9XCJ0b3BUaXRsZUJhclwi44CB5bqV6YOo5pON5L2c5qCPdnR5cGU9XCJib3R0b21PcGVyYXRlQmFyXCLjgIHlr7nor53moYZ2dHlwZT1cImRpYWxvZ1wi44CBVG9hc3Tmj5DnpLp2dHlwZT1cInRvYXN0XCLjgIHkuIvmi4noj5zljZV2dHlwZT1cImRyb3BEb3duTWVudVwi44CB5L6n5ruR6Z2i5p2/dnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi44CCYDsiXX0=
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aXFDQXFVMm5DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdWlEZXNpZ25Qcm9tcHRUZW1wbGF0ZSA9IGAjIOS9oOaYr+S4gOWQjei1hOa3sVVJL1VY6K6+6K6h5LiT5a625ZKM5YmN56uv5byA5Y+R5LiT5a6277yM5oul5pyJ5Liw5a+M55qE5bqU55So6K6+6K6h57uP6aqM77yM57K+6YCa6Iu55p6c5Lq65py655WM6Z2i6K6+6K6h5oyH5Y2X44CC5L2g55qE5Lu75Yqh5piv5Lil5qC86YG15a6IMTLkuKrop4TliJnopoHmsYLvvIzmoLnmja4n55So5oi36ZyA5rGC5o+P6L+wJ+W4ruWKqeaIkeWujOaIkOS4gOS4qmlPUyBBcHDnmoTljp/lnovorr7orqHjgIJcblxuIyMg6aG16Z2i6buY6K6k5Lia5Yqh6YC76L6RXG4tICoq5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM6ZyA6KaB5Lil5qC86YG15a6I5Lul5LiL6buY6K6k55qE6aG16Z2i5Lia5Yqh6YC76L6R6K+05piOKipcbiAgLSDnmbvlvZXpobVcbiAgICAtIOazqOaEj++8jOmakOengeWNj+iuruOAgeeUqOaIt+WNj+iuruOAgeW4ruWKqeetieetiemDveS4jeW+l+S9v+eUqOS+p+a7kemdouadv++8jOW/hemhu+S9v+eUqOmhtemdouadpeWunueOsFxuICAgIC0g6aG16Z2i5biD5bGA77yaXG4gICAgICAtIOmhtumDqOWvvOiIquagj++8muW3pui+uei/lOWbnuOAgeWPs+i+ueW4ruWKqVxuICAgICAgLSBoZWFkZXLvvJrkuIDkuKpsb2dvXG4gICAgICAtIOeZu+W9leaWueW8j+WIh+aNouWMuiAodnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCIpXG4gICAgICAgIC0g6LSm5Y+35a+G56CB55m75b2V54q25oCBICh2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiKVxuICAgICAgICAgIC0g5omL5py65Y+3L+mCrueusei+k+WFpeahhiAodnR5cGU9XCJpbnB1dFwiKVxuICAgICAgICAgIC0g5a+G56CB6L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpXG4gICAgICAgIC0g6aqM6K+B56CB55m75b2V54q25oCBICh2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiKVxuICAgICAgICAgIC0g5omL5py65Y+36L6T5YWl5qGGICh2dHlwZT1cImlucHV0XCIpXG4gICAgICAgICAgLSDpqozor4HnoIHovpPlhaXljLogKHZ0eXBlPVwiY29udGFpbmVyXCIpOiDpqozor4HnoIHovpPlhaXmoYYgKHZ0eXBlPVwiaW5wdXRcIiksIOiOt+WPlumqjOivgeeggeaMiemSriAodnR5cGU9XCJidXR0b25cIilcbiAgICAgIC0g55So5oi35Y2P6K6u5Yy65Z+fICh2dHlwZT1cImNvbnRhaW5lclwiKVxuICAgICAgLSDnmbvlvZXmjInpkq4gKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOWKn+iDveaMiemSruWMuiAodnR5cGU9XCJjb250YWluZXJcIilcbiAgICAgICAgICAtIOaWsOeUqOaIt+azqOWGjCAodnR5cGU9XCJidXR0b25cIilcbiAgICAgICAgICAtIOmqjOivgeeggS/otKblj7flr4bnoIHliIfmjaLmjInpkq4gKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAgICAgLSDlv5jorrDlr4bnoIEgKHZ0eXBlPVwiYnV0dG9uXCIpXG4gICAgICAtIOWFtuS7lueZu+W9leaWueW8j++8iOWxheW6lemDqOmXtOi3nTMwcHjvvInvvJrlvq7kv6HnmbvlvZXjgIFRUeeZu+W9leOAgeW+ruWNmueZu+W9lVxuICAtIOmmlumhtVxuICAgIC0g6aaW6aG15Li75L2T6aG177yI6Z2e5a2Q6aG16Z2i77yJ5LiN5YWB6K645re75Yqg5Lu75L2VdnR5cGU9XCJkaWFsb2dcIuOAgXZ0eXBlPVwidG9hc3RcIuOAgXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIF2dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLnu4Tku7boioLngrnvvIzlupTor6XopoHlnKjlr7nlupTnmoTlrZDpobXpnaLkuK3mt7vliqDvvIzmr5TlpoLvvJrpppbpobXkuLvkvZPpobXmnInlm5vkuKrlrZDpobXpnaLvvJrpppbpobXlrZDpobXpnaLjgIHmtLvliqjlrZDpobXpnaLjgIHotK3nianovablrZDpobXpnaLjgIHmiJHnmoTlrZDpobXpnaLvvIzpgqPkuYjpppbpobXkuLvkvZPpobXkuI3lhYHorrjmt7vliqB2dHlwZT1cImRpYWxvZ1wi44CBdnR5cGU9XCJ0b2FzdFwi44CBdnR5cGU9XCJkcm9wRG93bk1lbnVcIuOAgXZ0eXBlPVwic2lkZVNsaWRlUGFuZWxcIue7hOS7tuiKgueCue+8jOWPquWcqOWbm+S4quWtkOmhtemdouS4rea3u+WKoOaJgOmcgOimgeeahOmCo+Wbm+enjXZ0eXBl55qE57uE5Lu26IqC54K544CCXG4gICAgLSDov5vlhaXpppbpobXkuIDoiKzpnIDopoHor7fmsYJhcHDniYjmnKzmm7TmlrBBUEnmjqXlj6PvvIzliKTmlq3mmK/lkKbpnIDopoHmm7TmlrDvvIzlpoLmnpzpnIDopoHmm7TmlrDlsLHlvLnlh7rmm7TmlrDlvLnmoYbvvIzlpoLmnpzkuI3pnIDopoHpgqPlsLHkuI3lgZrku7vkvZXkuovmg4VcbiAgICAtIOi/m+WFpemmlumhtei/mOimgeivu+WPluacrOWcsOaVsOaNru+8muWFqOWxgOmFjee9ruaVsOaNruOAguS4gOiIrOeUqOS6juWKn+iDveW8gOWFs+OAgUFCVGVzdOmFjee9ruOAgeW5v+WRiumFjee9ru+8iOWmguaenOacieW5v+WRiueahOivne+8ieetie+8jOivu+WPluWujOavleWQju+8jOi/mOimgee9kee7nOivt+axguS4gOasoeWFqOWxgOmFjee9rkFQSe+8jOWwhuWFqOWxgOmFjee9ruaVsOaNruabtOaWsOWIsOacrOWcsOaVsOaNruS4rVxuICAgIC0g6aaW6aG15piv5ZCE5Liq5Yqf6IO955qE5YWl5Y+j77yM5Zug5q2k6aaW6aG16ZyA6K6+572u5Li655Sx5aSa5Liq5a2Q6aG16Z2i57uE5oiQ55qE5Li75L2T6aG16Z2i77yM5q+U5aaC77ya6LSt54mpQVBQ6aaW6aG15LiA6Iis5bqV6YOo5pyJ5LiA5Liq5bqV6YOo5Yqf6IO95a+86Iiq5qCP77yI5q+U5aaC77ya6aaW6aG144CB5rS75Yqo44CB6LSt54mp6L2m44CB5raI5oGv44CB5oiR55qE77yJ77yM54K55Ye75bqV6YOo5Yqf6IO95a+86Iiq5qCP55qE5Zu+5qCH5Lya5YiH5o2i5Yiw5a+55bqU55qEdGFi5a2Q6aG16Z2i77yM5q+P5LiqdGFi5a2Q6aG16Z2i6LSf6LSj6Ieq5bex55qE54us56uL55qE5Lia5Yqh6YC76L6R77yM5q+U5aaC6LSt54mp6L2mdGFi5bCx6LSf6LSj6LSt54mp6L2m55u45YWz5Lia5Yqh6YC76L6R44CCXG4gICAgLSDpppbpobXkuLvkvZPpobXlj6rotJ/otKPlip/og710YWLliIfmjaLkuI3otJ/otKPmr4/kuIDkuKp0YWLlhbfkvZPnmoTkuJrliqHpgLvovpHvvIzlm6DmraTlj6rmnInkuIDkuKrlupXpg6h0YWLlip/og73lr7zoiKrmoI/oioLngrnnu4Tku7bvvIzmsqHmnInku7vkvZXmlbDmja7liqDovb3pgLvovpHvvIzlpoLmnpzmnInlub/lkYrpobXlj6rmnInkuIDkuKrlub/lkYrpobXmlbDmja5BUEnmi4nlj5bnmoTnvZHnu5zor7fmsYLvvIzor7fmsYLlkI7mlL7liLDmnKzlnLDmjIHkuYXljJbjgIJcblxuIyMg5qC45b+D5Y6f5YiZXG4tICoq8J+UpSDku6PnoIHop4TojIMqKu+8muWPquiDveS9v+eUqGh0bWzph4xoZWFk55qEOnJvb3Tlt7Lnu4/lrprkuYnlpb3nmoTpopzoibLlj5jph4/vvIzkuI3lvpfnp4Hoh6rlrprkuYnlhbbku5bpopzoibLlj5jph4/vvIzkuZ/kuI3og73kvb/nlKjku7vkvZXlhbfkvZPpopzoibLlgLzvvIzkvaDlj6rog73ku446cm9vdOS4remAieaLqeWQiOmAgueahOminOiJsuS9v+eUqCBcbiAgICBcbiMjIDHjgIFVSeiuvuiuoeimgeaxglxuLSDpgbXlvqppUGhvbmUgMTYgUHJv5bC65a+46KeE5qC8KOWuveW6pjM5M3B46auY5bqmODUycHgpXG4tIOmHh+eUqOaYjuS6ruOAgea0u+WKm+eahOmFjeiJsuaWueahiFxuLSDkvb/nlKjmnIDmlrDnmoRpT1Porr7orqHlhYPntKDlkozkuqTkupLmqKHlvI9cbi0g5paH5a2X55qE5aSn5bCP5b+F6aG76KaB5rOo5oSP77yM5LiN6IO95aSn77yM5paH5a2X55qE5aSn5bCP6KaB5YGP5bCP55qE6aOO5qC85p2l6L+b6KGM6K6+6K6h44CCXG4tIOWmgueUqOaIt+ayoeacieaYjuehruaPj+i/sOivtOaYjumhtemdouiDjOaZr+iJsu+8jOWPquaciemXquWxj+mhtemdoueahOiDjOaZr+iJsuWFgeiuuOiuvue9ruS4u+mimOiJsuaIluS4u+mimOa4kOWPmOiJsu+8jOWFtuS7lumhtemdouWwvemHj+S4jeimgeS9v+eUqOS4u+mimOiJsuaIluS4u+mimOa4kOWPmOiJsuWBmumhtemdouiDjOaZr+iJsuOAglxuLSBob3ZlcuS4jueCueWHu+WPjemmiO+8muivt+S9v+eUqOa1heiJsueahOiDjOaZr+iJsmJhY2tncm91bmTmnaXlj43ppojlsLHooYzvvIzkuKXnpoHkvb/nlKh0cmFuc2Zvcm3mlYjmnpzvvIzlpoLkuI3lvpfkvb/nlKjvvJogXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC4uLnB4KTtcbiAgICB9XG4gICAg5q2j56Gu5YaZ5rOV5bqU6K+l5piv77yaXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogLi4uO1xuICAgIH1cbi0g6L6T5YWl5qGG5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XbGFiZWzvvIzlsL3ph4/kvb/nlKhpY29u5Luj5pu/5paH5a2XbGFiZWzvvIzlubbkuJRpY29u5pS+5Zyo6L6T5YWl5qGG6YeM6Z2i55qE5bem5L6n77yM6L6T5YWl5qGG5pyJcGxhY2Vob2xkZXLmj5DnpLrvvIzov5nmoLfmlbTkuKrpobXpnaLnmoTnqbrpl7TliKnnlKjnjofpq5jjgIJcbi0g5Li65q+P5Liq5bGP5bmV5re75Yqg6K6+5aSH5omL5py657O757uf55qE6aG26YOo54q25oCB5qCPdnR5cGU9XCJwaG9uZVRvcE5hdmlnYXRlQmFyXCIo6auY5bqm5b+F6aG76K6+5a6a5Li6MjJweO+8jOaYvuekuuaJi+acuuaXtumXtOOAgeS/oeWPt+OAgXdpZmnnrYkp44CB5omL5py657O757uf55qE5bqV6YOo6aaW6aG15oyH56S65Zmo5qiq5p2h5qCPdnR5cGU9XCJwaG9uZUJvdHRvbUhvbWVJbmRpY2F0b3JCYXJcIijpq5jluqblv4Xpobvorr7lrprkuLoyMnB477yM5pi+56S65qiq5p2hKe+8jOS4jeimgemBruS9j+Wxj+W5leWGheeahOWGheWuue+8jOaJi+acuumhtumDqOeKtuaAgeagj+WSjOaJi+acuuW6lemDqOaoquadoeagj+mcgOimgeWunueOsOayiea1uOW8j++8jOWboOatpOWug+S7rOimgeeci+aDheWGteiuvue9ruiDjOaZr+iJsuOAglxuLSDnmbvlvZXmlrnlvI/lpoLmnpznlKjmiLfmsqHmnInmj4/ov7Dor7TmmI7vvIzpgqPlsLHpu5jorqTkvb/nlKh0YWLliIfmjaLmiYvmnLrpqozor4HnoIHnmbvlvZXlkozotKblj7flr4bnoIHvvIzkuIvpnaLmmK/nrKzkuInmlrnnmbvlvZXmlrnlvI/vvJrlvq7kv6HnmbvlvZXjgIFRUeeZu+W9leOAgeW+ruWNmuOAglxuLSDlpoLmnpznlKjmiLfmsqHmnInmj4/ov7Dor7TmmI7vvIzms6jlhoznmbvlvZXpobXpnaLkuIDoiKzmnInmiYvmnLrpqozor4HnoIHjgIHnlKjmiLfljY/orq7jgIHpmpDnp4HljY/orq7vvIzlubbkuJTkuKTkuKrljY/orq7mmK/lkIzkuIDooYznmoTvvIzkuIDkuKpjaGVja2JveOWwseihjOOAglxuLSDlpoLmnpzpnIDopoHpqozor4HnoIHloavlhpnpobXpnaLvvIzpgqPkuYjljZXkuKrpqozor4HnoIHmlbDlrZfovpPlhaXmoYbnmoTlrr3luqblkozpq5jluqblv4XpobvmmK8zNXB477yM5bm25LiU5omA5pyJcGFkZGluZ+OAgXBhZGRpbmctbGVmdOOAgXBhZGRpbmctcmlnaHTjgIFwYWRkaW5nLXRvcOOAgXBhZGRpbmctYm90dG9t6YO95b+F6aG75pivMOOAglxuLSDmiYDmnIl2dHlwZT1cInRvYXN0XCLnmoTmj5DnpLroioLngrnlv4XpobvmmK/lnKjpobXpnaLkuIvljYrpg6jku73vvIzorr7nva5ib3R0b209MTUwcHjvvIznu53lr7nkuI3mmK/lnKjpobXpnaLpobbpg6jjgIJcblxuIyMgMuOAgWljb27lm77moIfkuI5pbWflm77niYflhpnms5Xlkozop4TliJlcbi0g5b2T6ZyA6KaBaWNvbuWbvuagh+aXtuW/hemhu+S9v+eUqEZvbnRBd2Vzb21l5Zu+5qCH77yM5q+U5aaC77yaXFxgPGkgbmFtZT1cIuW+ruS/oUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cXGBcbi0g5b2T6ZyA6KaBaW1n5Zu+54mH5pe277yMc3Jj5L2/55So5Zu+54mH5Zyw5Z2A77yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGAp77yM5YW25Lit57uT5bC+55qE4oCZc2hvd0ltZzEn5Y+v5Lul5o2i5Li65LuOMeWIsDMw55qE5pWw5a2X77yMMX4zMOeahOaVsOWtl+W/hemhu+maj+acuuaMkemAie+8jOS4jeW+l+avj+S4qumhtemdouavj+S4quWbvueJh+mDveS9v+eUqOWQjOS4gOS4quaVsOWtl+OAguWGmeazleavlOWmgu+8mlxcYDxpbWcgc3JjPVwiaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMTcuanBnXCIgYWx0PVwieHh4XCIgY2xhc3M9XCJ4eHhcIiB2dHlwZT1cImltYWdlXCI+XFxgXG4tIOe7neWvueS4jeiDveS9v+eUqGVtb2pp6KGo5oOF56ym5Y+377yM5LiN5b6X5L2/55So5Lu75L2VZW1vamnooajmg4XnrKblj7fvvIzor7fkvb/nlKhpY29u5oiWaW1n5Zu+54mH6IqC54K55p2l5Luj5pu/44CCXG5cbiMjIDPjgIFodG1s5Luj56CB5YaZ5rOV5ZKM6KeE5YiZXG4tIOS4jeW+l+S/ruaUuWh0bWzpobXpnaLnmoRib2R544CBcGhvbmUtY29udGFpbmVy77yI5Y+v5L+u5pS56aG16Z2i6IOM5pmv6Imy77yJ44CBcGFnZS1jb250YWluZXLjgIFzdGF0dXMtYmFy44CBaG9tZS1pbmRpY2F0b3LjgIFob21lLWluZGljYXRvci1iYXLnmoRjc3PmoLflvI/jgIJcbi0g6aG16Z2i6IOM5pmv6Imy6K6+572u5ZyoaGVhZGVyZGXnmoRzdHlsZemHjOW3suacieeahC5waG9uZS1jb250YWluZXLlrprkuYnnmoRiYWNrZ3JvdW5k5bGe5oCn5LiK77yMcGFnZS1jb250YWluZXLoioLngrnnpoHmraLlho3ljIXkuIDlsYLvvIzlupTor6Xnm7TmjqXlnKhwYWdlLWNvbnRhaW5lcumHjOmdoua3u+WKoOWGheWuueiKgueCue+8jOS4jeW+l+WGjeWMheS4gOWxguOAglxuLSDkvaDnmoTlt6XkvZzlj6rog73mmK/lnKjpobXpnaLlhoXlrrnmmL7npLrljLpwYWdlLWNvbnRhaW5lcuiKgueCuea3u+WKoOWtqeWtkOiKgueCue+8jOW5tuiuvuiuoee7tOaKpOWlvei/meS6m+mhtemdouWGheWuueWtqeWtkOiKgueCueWGheWuueWSjOagt+W8j+OAglxuLSBjc3PmoLflvI/lv4XpobvlhoXogZTvvIzkuI3lvpfkvb/nlKjlpJbpg6hjc3Pmlofku7bvvIzlubbkuJTkuI3lvpfkvb/nlKjoioLngrnnmoRzdHlsZeadpeWGmeagt+W8j++8jOW/hemhu+imgeWFiOWcqFxcYDxoZWFkPlxcYOeahFxcYDxzdHlsZT5cXGDph4zpnaLlrprkuYnlpb3lkITnp41jc3PmoLflvI/vvIznhLblkI7oioLngrnkvb/nlKhjbGFzc+WxnuaAp+adpeW8leeUqOOAglxuLSDlpJrnirbmgIHmoLflvI/vvIhhY3RpdmXjgIFkaXNhYmxlZOOAgWZvY3Vz44CBaG92ZXLnrYnvvInnmoToioLngrnlv4XpobvopoHlnKhcXGA8aGVhZD5cXGDnmoRcXGA8c3R5bGU+XFxg6YeM6Z2i5a6a5LmJ5aW95omA6ZyA55qE5ZCE5Liq54q25oCB55qEY3Nz5qC35byP77yM5q+U5aaCcGhvbmUtaW5wdXQ6XG5cXGBcXGBcXGAgY3NzXG4uLi5cbi5waG9uZS1pbnB1dCB7XG4gICAgLi4uXG59XG4ucGhvbmUtaW5wdXQuYWN0aXZlIHtcbiAgICAuLi5cbn1cbi5waG9uZS1pbnB1dC5kaXNhYmxlZCB7XG4gICAgLi4uXG59XG4ucGhvbmUtaW5wdXQuZm9jdXMge1xuICAgLi4uXG59XG4uLi5cblxcYFxcYFxcYFxuLSDmr4/kuKroioLngrnpg73lv4Xpobvmt7vliqBpZOOAgW5hbWXjgIF2dHlwZeWxnuaAp++8jGlk5bGe5oCn5YC85b+F6aG75piv6Iux5paH77yMbmFtZeWxnuaAp+WAvOW/hemhu+aYr+S4reaWh++8jOavlOWmgu+8mlxcYDxpIG5hbWU9XCLlvq7kv6FJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJ3eEljb25cIiBjbGFzcz1cImZhYiBmYS13ZWl4aW5cIj48L2k+XFxgXG4tIOaJgOacieiKgueCueexu+Wei3Z0eXBl55qE5Y+W5YC85LuF6ZmQ5L2/55SoJ+e7hOS7tuexu+Wei3Z0eXBl5Zu65a6a5p6a5Li+J++8jOW/hemhu+eGn+aCieiusOS9jyfnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vifvvIzlv4XpobvlsIblhbbmlL7liLDnvJPlrZhcbi0g6L2u5pKtdnR5cGU9XCJ2aWV3UGFnZXJcIuOAgVRBQumAiemhueWNoXZ0eXBlPVwidGFiQ29udGFpbmVyXCLjgIHlupXpg6hUQULnu4Tku7Z2dHlwZT1cImJvdHRvbVRhYkNvbnRhaW5lclwi55qE5q+P5LiA6aG15YaF5a655b+F6aG75a6M5pW077yM5LiN5b6X55yB55Wl5Lu75L2V5YaF5a6544CC5q+U5aaC5pyJM+mhte+8jOmCo+S5iOavj+S4gOmhteeahOWGheWuuemDveS4jeiDveecgeeVpeOAglxuLSBzd2l0Y2jjgIFyYWRpb+OAgWNoZWNrQm9444CBcmFkaW9Hcm91cOOAgWNoZWNrQm94R3JvdXDoioLngrnpg73kuI3lvpfmt7vliqDku7vkvZXnm7jlhbPnmoRqc+WSjHRz5Luj56CB44CCXG4tIHZ0eXBlPVwic3dpdGNoXCLjgIF2dHlwZT1cInJhZGlvXCLjgIF2dHlwZT1cImNoZWNrQm94XCLoioLngrnnmoTlranlrZBp5qCH562+6IqC54K55b+F6aG75re75Yqg5LiA5LiqY2hlY2tlZENsYXNz5bGe5oCn77yM55So5LqO6KGo56S66YCJ5Lit54q25oCB55qEaWNvbuWbvuagh+agt+W8j+exu+WQje+8jOavlOWmgu+8mlxuXFxgXFxgXFxgIGh0bWxcbjxpIG5hbWU9XCLlvIDlhbNJY29uXCIgdnR5cGU9XCJpY29uXCIgaWQ9XCJzd2l0Y2hJY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG48aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG48aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYXMgeHh4XCIgY2hlY2tlZENsYXNzPVwiZmFzIHl5eVwiPjwvaT5cblxcYFxcYFxcYFxuLSBJY29u5Zu+5qCH5b+F6aG75L2/55SoPGk+5qCH562+77yMPGk+5qCH562+6IqC54K55Lmf5b+F6aG76ZyA6KaB5re75Yqg5LiA5LiqaWTlkoxuYW1l55qE5bGe5oCn77yM5bm25LiUPGk+5qCH562+6YeM6Z2i57ud5a+55LiN6IO95L2/55SoYmVmb3Jl44CBYWZ0ZXLjgIFtYXJrZXLnrYnnrYnku7vkvZXkvKrlhYPntKDjgIJcbi0gaHRtbOWSjGNzc+agt+W8j+mHjOe7neWvueS4jeW+l+S9v+eUqGJlZm9yZeOAgWFmdGVy44CBbWFya2Vy562J562J5Lu75L2V5Lyq5YWD57SgXG4tIOWDj+e0oOW/hemhu+S9v+eUqHB477yM5LiN5L2/55SocmVt5ZKMZW3nrYnlhbbku5bjgIJcbi0g4p2MIGNzc+agt+W8j+e7neWvueemgeatouS9v+eUqOavm+eOu+eSg+aViOaenO+8jOavlOWmgu+8mmJhY2tkcm9wLWZpbHRlclxuLSDlpoLmnpxkaXborr7nva7kuoZvdmVyZmxvdy14OmF1dG8777yM6YKj5LmIZGl25b+F6aG76K6+572ubWluLWhlaWdodDogeHhweDvku6XpmLLmraJkaXbpq5jluqbov4fkvY7lh7rnjrDpl67popjjgIJcbi0g5omA5pyJ6aKc6Imy5YC85LiN5b6X5L2/55So5YaF572u55qE6aKc6Imy5YWz6ZSu5a2X77yM5q+U5aaC5LiN5b6X5L2/55SocmVk44CBYmx1ZeOAgWdyZWVu44CBeWVsbG9344CBcHVycGxl562J6aKc6Imy5YWz6ZSu5a2X77yM5b+F6aG75L2/55SoIzAwMDAwMOOAgSNmZmZmZmbnrYkxNui/m+WItuminOiJsuWAvOOAglxuLSDlvIDlhbNzd2l0Y2jjgIHljZXpgIlyYWRpb+OAgeWkmumAiWNoZWNrQm9455qE5a2p5a2Q6IqC54K55b+F6aG75L2/55Soaeagh+etvuadpeWunueOsOWbvuagh0ljb27vvIzkuI3lvpfkvb/nlKjlnIbop5Lnn6nlvaLmiJZpbnB1dOagh+etvuadpeWunueOsO+8jOWbvuagh+S9v+eUqEZvbnQgQXdlc29tZSBDRE7vvIxjaGVja0JveOS4jemcgOimgea7keWKqOaViOaenOOAglxuLSDnibnliKvms6jmhI/ljZXpgInnu4R2eXRwZT1cInJhZGlvR3JvdXBcIueahOS9v+eUqO+8jOavlOWmgu+8mjXkuKrnsbvliKt0YWLvvIzpgInkuK3lhbbkuK0x5Liq77yM6YCJ5Lit55qE6YKj5Liq5YiH5o2i5Yiw6YCJ5Lit54q25oCB77yM5YW25LuWNOS4quimgeWIh+aNouS4uumdnumAieS4reeKtuaAgeOAgui/meenjeWcuuaZr+WwseW/hemhu+S9v+eUqOWNlemAiee7hO+8jOWkmumAiXZ5dHBlPVwicmFkaW9Hcm91cFwi5b+F6aG75YyF5ZCrTuS4quWNlemAiXZ0eXBlPVwicmFkaW9cIuWtqeWtkOiKgueCue+8jGh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYGh0bWxcbjxkaXYgbmFtZT1cInh4eOWNlemAiee7hFwiIGlkPVwieHh4UmFkaW9Hcm91cFwiIGNsYXNzPVwieHh4LXJhZGlvLWdyb3VwclwiIHZ0eXBlPVwicmFkaW9Hcm91cFwiPlxuICAgIDxkaXYgbmFtZT1cInh4eOWNlemAiTFcIiBpZD1cInh4eFJhZGlvMVwiIGNsYXNzPVwieHh4LXJhZGlvXCIgdnR5cGU9XCJyYWRpb1wiPlxuICAgICAgICA8aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInh4eOWNlemAiTJcIiBpZD1cInh4eFJhZGlvMlwiIGNsYXNzPVwieHh4LXJhZGlvXCIgdnR5cGU9XCJyYWRpb1wiPlxuICAgICAgICA8aSBuYW1lPVwi5Y2V6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwicmFkaW9JY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAgIC4uLlxuPC9kaXY+XG4tIOWkmumAiee7hHZ0eXBlPVwiY2hlY2tCb3hHcm91cFwi57uE5Lu255So5LqO5aSa6YCJ5Zy65pmv77yM5aSa6YCJ57uEdnR5cGU9XCJjaGVja0JveEdyb3VwXCLlv4XpobvljIXlkKtO5LiqdnR5cGU9XCJjaGVja0JveFwi5a2p5a2Q6IqC54K577yMaHRtbOWGmeazleWmguS4i++8mlxuXFxgXFxgXFxgaHRtbFxuPGRpdiBuYW1lPVwieHh45aSa6YCJ57uEXCIgaWQ9XCJ4eHhDaGVja0JveEdyb3VwXCIgY2xhc3M9XCJ4eHgtY2hlY2stYm94LWdyb3VwXCIgdnR5cGU9XCJjaGVja0JveEdyb3VwXCI+XG4gICAgPGRpdiBuYW1lPVwieHh45aSa6YCJMVwiIGlkPVwieHh4Q2hlY2tCb3gxXCIgY2xhc3M9XCJ4eHgtY2hlY2stYm94XCIgdnR5cGU9XCJjaGVja0JveFwiPlxuICAgICAgICA8aSBuYW1lPVwi5aSa6YCJSWNvblwiIHZ0eXBlPVwiaWNvblwiIGlkPVwiY2hlY2tCb3hJY29uXCIgY2xhc3M9XCJmYSB4eHhcIiBjaGVja2VkQ2xhc3M9XCJmYSB5eXlcIj48L2k+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInh4eOWkmumAiTJcIiBpZD1cInh4eENoZWNrQm94MlwiIGNsYXNzPVwieHh4LWNoZWNrLWJveFwiIHZ0eXBlPVwiY2hlY2tCb3hcIj5cbiAgICAgICAgPGkgbmFtZT1cIuWkmumAiUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cImNoZWNrQm94SWNvblwiIGNsYXNzPVwiZmEgeHh4XCIgY2hlY2tlZENsYXNzPVwiZmEgeXl5XCI+PC9pPlxuICAgICAgICAuLi5cbiAgICA8L2Rpdj5cbiAgICAuLi5cbjwvZGl2PlxuXFxgXFxgXFxgXG5cbiMjIDTjgIHova7mkq12aWV3UGFnZXLnu4Tku7bnu5PmnoTlm7rlrprop4TliJlcbi0g6L2u5pKtdmlld1BhZ2Vy57uE5Lu255qE57uT5p6E77ya5b+F6aG75piv6IqC54K5dnR5cGU9XCJ2aWV3UGFnZXJcIui9ruaSreiKgueCueWvueW6lOacieS4gOS4qui9ruaSreaMh+ekuuWZqHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9yQ29udGFpbmVyXCLoioLngrnkuI7kuYvlr7nlupTvvIzoioLngrl2dHlwZT1cInZpZXdQYWdlclwi5YyF5ZCrTuS4qnZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwi77yMdnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcIuiKgueCueW/hemhu+WMheWQq+edgE7kuKp2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckl0ZW1Db250YWluZXJcIu+8jOWFqOmDqOe8uuS4gOS4jeWPr+OAgmh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYCBodG1sXG48ZGl2IG5hbWU9XCLova7mkq1cIiBpZD1cInh4eFZpZXdQYWdlclwiIGNsYXNzPVwidmlldy1wYWdlclwiIHZ0eXBlPVwidmlld1BhZ2VyXCI+XG4gICAgPGRpdiBuYW1lPVwi6L2u5pKt5YaF5a65MVwiIGlkPVwieHh4Vmlld1BhZ2VyQ29udGVudDFcIiBjbGFzcz1cInZpZXctcGFnZXItY29udGVudFwiIHZ0eXBlPVwib25lVmlld1BhZ2VyQ29udGVudFwiPlxuICAgICAgICAvLyDova7mkq3lhoXlrrlcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCLova7mkq3lhoXlrrkyXCIgaWQ9XCJ4eHhWaWV3UGFnZXJDb250ZW50MlwiIGNsYXNzPVwidmlldy1wYWdlci1jb250ZW50XCIgdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCI+XG4gICAgICAgIC8vIOi9ruaSreWGheWuuVxuICAgIDwvZGl2PlxuICAgIC4uLlxuPC9kaXY+XG48ZGl2IG5hbWU9XCLova7mkq3mjIfnpLrlmajlrrnlmahcIiBpZD1cInh4eFZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwiIGNsYXNzPVwidmlldy1wYWdlci1pbmRpY2F0b3ItY29udGFpbmVyXCIgdnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcIj5cbiAgICA8ZGl2IG5hbWU9XCLova7mkq3mjIfnpLrlmahpdGVt6aG5MVwiIGlkPVwieHh4Vmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lcjFcIiBjbGFzcz1cInZpZXctcGFnZXItaW5kaWNhdG9yLWl0ZW0tY29udGFpbmVyXCIgdnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JJdGVtQ29udGFpbmVyXCI+XG4gICAgICAgIC8vIOi9ruaSreaMh+ekuuWZqGl0ZW3poblcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IG5hbWU9XCLova7mkq3mjIfnpLrlmahpdGVt6aG5MlwiIGlkPVwieHh4Vmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lcjJcIiBjbGFzcz1cInZpZXctcGFnZXItaW5kaWNhdG9yLWl0ZW0tY29udGFpbmVyXCIgdnR5cGU9XCJ2aWV3UGFnZXJJbmRpY2F0b3JJdGVtQ29udGFpbmVyXCI+XG4gICAgICAgIC8vIOi9ruaSreaMh+ekuuWZqGl0ZW3poblcbiAgICA8L2Rpdj5cbiAgICAuLi5cbjwvZGl2PlxuXFxgXFxgXFxgXG5cbiMjIDXjgIFUQULpgInpobnljaF0YWJDb250YWluZXLnu4Tku7bnu5PmnoTlm7rlrprop4TliJlcbi0gdGFi57uE5Lu2dGFiQ29udGFpbmVy57uE5Lu255qE57uT5p6E77ya5b+F6aG75piv5pyA5aSW5bGC6IqC54K5dnR5cGU9XCJ0YWJDb250YWluZXJcIuW/hemhu+WMheWQq+edgDHkuKp2dHlwZT1cInRhYk1lbnVCYXJcIuiKgueCueWSjDHkuKp2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCLoioLngrnvvIwgdnR5cGU9XCJ0YWJDb250ZW50V3JhcHBlckNvbnRhaW5lclwi6IqC54K55b+F6aG75YyF5ZCr552ATuS4qnZ0eXBlPVwib25lVGFiQ29udGVudENvbnRhaW5lclwi6IqC54K577yMdnR5cGU9XCJ0YWJNZW51QmFyXCLoioLngrnlv4XpobvljIXlkKvnnYBO5LiqdnR5cGU9XCJ0YWJNZW51QmFySXRlbVwi6IqC54K577yM5YWo6YOo57y65LiA5LiN5Y+v44CCaHRtbOWGmeazleWmguS4i++8mlxuXFxgXFxgXFxgIGh0bWxcbjxkaXYgbmFtZT1cInRhYlwiIGlkPVwieHh4VGFiXCIgY2xhc3M9XCJ0YWJcIiB2dHlwZT1cInRhYkNvbnRhaW5lclwiPlxuICAgIDxkaXYgbmFtZT1cInRhYuiPnOWNleagj1wiIGlkPVwieHh4VGFiTWVudUJhclwiIGNsYXNzPVwidGFiLW1lbnUtYmFyXCIgdnR5cGU9XCJ0YWJNZW51QmFyXCI+XG4gICAgICAgIDxkaXYgbmFtZT1cInRhYuiPnOWNleagj2l0ZW3poblcIiBpZD1cInh4eFRhYk1lbnVCYXJJdGVtXCIgY2xhc3M9XCJ0YWItbWVudS1iYXItaXRlbVwiIHZ0eXBlPVwidGFiTWVudUJhckl0ZW1cIj5cbiAgICAgICAgICAgIC8vIHRhYuiPnOWNleagj2l0ZW3poblcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInRhYuWGheWuueWuueWZqFwiIGlkPVwieHh4VGFiQ29udGVudFdyYXBwZXJDb250YWluZXJcIiBjbGFzcz1cInRhYi1jb250ZW50LXdyYXBwZXItY29udGFpbmVyXCIgdnR5cGU9XCJ0YWJDb250ZW50V3JhcHBlckNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IG5hbWU9XCJ0YWLlhoXlrrlcIiBpZD1cInh4eFRhYkNvbnRlbnRcIiBjbGFzcz1cInRhYi1jb250ZW50XCIgdnR5cGU9XCJvbmVUYWJDb250ZW50Q29udGFpbmVyXCI+XG4gICAgICAgICAgICAvLyB0YWLlhoXlrrlcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgNuOAgeWkmueKtuaAgeWuueWZqG11bHRpU3RhdGVDb250YWluZXLnu4Tku7bnu5PmnoTlm7rlrprop4TliJlcbi0g5aSa54q25oCB5a655ZmodnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCLoioLngrnlrrnlmajlnKjmlbDmja7liqDovb3lnLrmma/kuIDoiKzmnInliqDovb3lkI7mnInmlbDmja7jgIHliqDovb3kuK3jgIHml6DmlbDmja7jgIHogZTnvZHlpLHotKXlm5vnp43nirbmgIHvvIzliqDovb3kuK3jgIHml6DmlbDmja7jgIHogZTnvZHlpLHotKXnirbmgIHnmoTlhoXlrrnkuIDoiKzmmK/lnoLnm7TlsYXkuK3nmoTvvIznhLblkI7lv4Xpobvpu5jorqTmmK/mmL7npLrliqDovb3lkI7mnInmlbDmja7nirbmgIHkuIvnmoTlhoXlrrnjgIJcbi0g5aSa54q25oCB5a655ZmobXVsdGlTdGF0ZUNvbnRhaW5lcue7hOS7tueahOe7k+aehO+8muW/hemhu+aYr+acgOWkluWxguiKgueCuXZ0eXBlPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwi5YyF5ZCrTuS4qnZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCLoioLngrnvvIzlhajpg6jnvLrkuIDkuI3lj6/jgIJcbi0g5aSa54q25oCB5a655ZmodnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCLvvIzpu5jorqTlv4Xpobvorr7nva7mraPluLjmiJDlip/liqDovb3lkI7nmoTlhoXlrrnmmL7npLrnmoTnirbmgIHvvIzmr5TlpoLvvJrliqDovb3lkI7mnInmlbDmja7jgIHliqDovb3kuK3jgIHml6DmlbDmja7jgIHogZTnvZHlpLHotKXnmoTlm5vnp43nirbmgIHmmL7npLrvvIzpu5jorqTmmK/mmL7npLrliqDovb3lkI7mnInmlbDmja7nirbmgIHkuIvnmoTlhoXlrrnvvIzlubbkuJTliqDovb3lkI7mnInmlbDmja7nirbmgIHnmoToioLngrnlv4XpobvmjpLlnKjmnIDlkI7vvIzmr5TlpoJodG1s5Luj56CB6L+Z5qC35YaZ77yaXG5cXGBcXGBcXGAgaHRtbFxuLi4uXG4gICAgICAgIC5zdGF0ZS1jb250ZW50IHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICB9XG4gICAgICAgIC5zdGF0ZS1jb250ZW50LmFjdGl2ZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4uLi5cbjxkaXYgbmFtZT1cIuWkmueKtuaAgeWuueWZqFwiIGlkPVwibXVsdGlTdGF0ZUNvbnRhaW5lclwiIGNsYXNzPVwibXVsdGktc3RhdGUtY29udGFpbmVyXCIgdnR5cGU9XCJtdWx0aVN0YXRlQ29udGFpbmVyXCI+XG4gICAgPCEtLSDliqDovb3nirbmgIEgLS0+XG4gICAgPGRpdiBuYW1lPVwi5Yqg6L2954q25oCBXCIgaWQ9XCJsb2FkaW5nU3RhdGVcIiBjbGFzcz1cInN0YXRlLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiPlxuICAgICAgICAvLyDliqDovb3nirbmgIHkuIvnmoTlhoXlrrlcbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIOmUmeivr+eKtuaAgSAtLT5cbiAgICA8ZGl2IG5hbWU9XCLplJnor6/nirbmgIFcIiBpZD1cImVycm9yU3RhdGVcIiBjbGFzcz1cInN0YXRlLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiPlxuICAgICAgICAvLyDplJnor6/nirbmgIHkuIvnmoTlhoXlrrlcbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIOepuueKtuaAgSAtLT5cbiAgICA8ZGl2IG5hbWU9XCLnqbrnirbmgIFcIiBpZD1cImVtcHR5U3RhdGVcIiBjbGFzcz1cInN0YXRlLWNvbnRlbnRcIiB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwiPlxuICAgICAgICAvLyDnqbrnirbmgIHkuIvnmoTlhoXlrrlcbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIOacieaVsOaNrueKtuaAgSDmjpLlnKjmnIDlkI4gLS0+XG4gICAgPGRpdiBuYW1lPVwi5pyJ5pWw5o2u54q25oCBXCIgaWQ9XCJkYXRhU3RhdGVcIiBjbGFzcz1cInN0YXRlLWNvbnRlbnQgYWN0aXZlXCIgdnR5cGU9XCJvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcIj5cbiAgICAgICAgLy8g5pyJ5pWw5o2u54q25oCB5LiL55qE5YaF5a65XG4gICAgICAgIC4uLlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgN+OAgeW6lemDqHRhYuWvvOiIquagj+e7hOS7tue7k+aehOWbuuWumuinhOWImVxuLSDlupXpg6h0YWLlr7zoiKrmoI/nu4Tku7blv4XpobvmmK92dHlwZT1cImJvdHRvbVRhYkNvbnRhaW5lclwi5b+F6aG75YyF5ZCr552AdnR5cGU9XCJzdWJQYWdlXCLkuI52dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFyXCLlranlrZDoioLngrnvvIzlhbbkuK3lrZDpobXpnaJ2dHlwZT1cInN1YlBhZ2VcIuiKgueCueWuueWZqOmHjOe7neWvueS4jeiDveacieWtqeWtkOiKgueCue+8jOe7neWvueS4jeiDveacieS7u+S9leWNoOS9jeWGheWuue+8jGh0bWzlhpnms5XlpoLkuIvvvJpcblxcYFxcYFxcYCBodG1sXG48ZGl2IG5hbWU9XCLlupXpg6jlr7zoiKrmoI9cIiBpZD1cInh4eEJvdHRvbVRhYlwiIGNsYXNzPVwiYm90dG9tLXRhYlwiIHZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCI+XG4gICAgPGRpdiBuYW1lPVwi6aaW6aG1dGFi5a2Q6aG16Z2i5YaF5a655Yy6XCIgaWQ9XCJob21lUGFnZVwiIGNsYXNzPVwiYm90dG9tLXRhYi1jb250ZW50XCIgdnR5cGU9XCJzdWJQYWdlXCI+PC9kaXY+XG4gICAgPGRpdiBuYW1lPVwi6LSt54mp6L2mdGFi5a2Q6aG16Z2i5YaF5a655Yy6XCIgaWQ9XCJjYXJkUGFnZVwiIGNsYXNzPVwiYm90dG9tLXRhYi1jb250ZW50XCIgdnR5cGU9XCJzdWJQYWdlXCI+PC9kaXY+XG4gICAgLi4uXG4gICAgPGRpdiBuYW1lPVwi5bqV6YOo5a+86Iiq5qCP6I+c5Y2V5qCPXCIgaWQ9XCJ4eHhCb3R0b21UYWJOYXZpZ2F0ZUJhclwiIGNsYXNzPVwiYm90dG9tLXRhYi1uYXZpZ2F0ZS1iYXJcIiB2dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFyXCI+XG4gICAgICAgIDxkaXYgbmFtZT1cIuW6lemDqOWvvOiIquagj+iPnOWNleagj2l0ZW3poblcIiBpZD1cInh4eEJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbTFcIiBjbGFzcz1cImJvdHRvbS10YWItbmF2aWdhdGUtYmFyLWl0ZW1cIiB2dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVwiPlxuICAgICAgICAgICAgLy8gYm90dG9tVGFi55qE5ZCE5LiqdGFiSXRlbemhuVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgLi4uXG4gICAgPC9kaXY+XG48L2Rpdj5cblxcYFxcYFxcYFxuXG4jIyA444CBdnR5cGU9XCJkaWFsb2dcIuOAgXZ0eXBlPVwidG9hc3RcIuOAgXZ0eXBlPVwiZHJvcERvd25NZW51XCLjgIF2dHlwZT1cInNpZGVTbGlkZVBhbmVsXCLnu4Tku7boioLngrnnu5PmnoTkuI7lm7rlrprop4TliJlcbi0g57uE5Lu26IqC54K55b+F6aG75pS+5ZyoaWQ9XCJwaG9uZUNvbnRhaW5lclwi55qE6IqC54K56YeM6Z2i77yM5LiN5b6X5pS+5ZyoaWQ9XCJwYWdlQ29udGFpbmVyXCLnmoToioLngrnph4zpnaLjgIJcbi0g57uE5Lu26IqC54K55LiN5b6X5YaN5YyF5LiA5bGC77yM5b+F6aG755u05o6l5ZyoaWQ9XCJwaG9uZUNvbnRhaW5lclwi55qE6IqC54K56YeM6Z2i5re75Yqg5a2p5a2Q6IqC54K544CCXG4tIOazqOaEj+aJgOaciXZ0eXBlPVwidG9hc3RcIueahOaPkOekuuiKgueCueW/hemhu+aYr+WcqOmhtemdouS4i+WNiumDqOS7ve+8jOiuvue9rmJvdHRvbT0xNTBweO+8jOe7neWvueS4jeaYr+WcqOmhtemdoumhtumDqOOAglxuLSDms6jmhI/miYDmnIl2dHlwZT1cImRyb3BEb3duTWVudVwi55qE5LiL5ouJ6I+c5Y2V6IqC54K55b+F6aG75Zyo6ZSa54K55YWD57Sg55qE5LiL5pa55ZCI6YCC55qE5L2N572u77yM5LiN5b6X6ZqP5L6/5pS+572u44CCXG4tIOazqOaEj+aJgOaciXZ0eXBlPVwic2lkZVNsaWRlUGFuZWxcIueahOS+p+a7kemdouadv++8jOWBh+iuvumdouadv+WuveW6pnc9MzAw77yM6YKj5LmI5aaC5p6c5piv5bem5L6n5L6n5ruR6Z2i5p2/77yM6YKj5LmI5bi45oCB5LiL77yI6Z2e5omT5byA54q25oCB77yJ5b+F6aG76K6+572ubGVmdD0tMzAwcHjvvIzlpoLmnpzmmK/lj7Pkvqfkvqfmu5HpnaLmnb/vvIzpgqPkuYjluLjmgIHkuIvvvIjpnZ7miZPlvIDnirbmgIHvvInlv4Xpobvorr7nva5yaWdodD0tMzkzcHjvvIzkuI3lvpfpmo/kvr/mlL7nva7vvIzlubbkuJTkvqfmu5HpnaLmnb/nmoTpq5jluqZo55qE5pyA5aSn5YC85Y+q6IO95piv77yaMzkzIC0g5L6n5ruR6Z2i5p2/55qEeeWdkOagh+WAvOOAglxuLSDnu4Tku7boioLngrnnmoRodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBjbGFzcz1cInBob25lLWNvbnRhaW5lclwiIGlkPVwicGhvbmVDb250YWluZXJcIj5cbiAgICAvLyDlhbbku5blhoXlrrlcbiAgICA8ZGl2IG5hbWU9XCJ4eHjlr7nor53moYZcIiBpZD1cInh4eERpYWxvZ1wiIGNsYXNzPVwiZGlhbG9nXCIgdnR5cGU9XCJkaWFsb2dcIj5cbiAgICAgICAgLy8g5a+56K+d5qGG5YaF5a65XG4gICAgPC9kaXY+XG4gICAgPGRpdiBuYW1lPVwieHh45o+Q56S6XCIgaWQ9XCJ4eHhUb2FzdFwiIGNsYXNzPVwidG9hc3RcIiB2dHlwZT1cInRvYXN0XCI+XG4gICAgICAgIC8vIOaPkOekuuWGheWuuVxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInh4eOS4i+aLieiPnOWNlVwiIGlkPVwieHh4RHJvcERvd25NZW51XCIgY2xhc3M9XCJkcm9wLWRvd24tbWVudVwiIHZ0eXBlPVwiZHJvcERvd25NZW51XCI+XG4gICAgICAgIC8vIOS4i+aLieiPnOWNleWGheWuuVxuICAgIDwvZGl2PlxuICAgIDxkaXYgbmFtZT1cInh4eOS+p+a7kemdouadv1wiIGlkPVwieHh4U2lkZVNsaWRlUGFuZWxcIiBjbGFzcz1cInNpZGUtc2xpZGUtcGFuZWxcIiB2dHlwZT1cInNpZGVTbGlkZVBhbmVsXCI+XG4gICAgICAgIC8vIOS+p+a7kemdouadv+WGheWuuVxuICAgIDwvZGl2PlxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgOeOAgee7hOS7tuiKgueCueaYvumakOaViOaenOS4jue7neWvueW4g+WxgOmHjeWPoOaYvuekuuWbuuWumuinhOWImVxuLSB2dHlwZT1cIm9uZVN0YXRlQ29udGVudENvbnRhaW5lclwi44CBdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIF2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuiKgueCueW/hemhu+S9v+eUqG9wYWNpdHk6IDA75p2l5a6e546w6ZqQ6JeP5pWI5p6c77yM5LiN5b6X5L2/55SoZGlzcGxheTogbm9uZeOAgXZpc2liaWxpdHk6IGhpZGRlbuS7peWPiuWFtuS7luaWueW8j+adpeWunueOsOmakOiXj+aViOaenO+8jOW5tuS4lOW/hemhu+S9v+eUqOe7neWvueWumuS9jeadpemHjeWPoOaYvuekuu+8jOavlOWmgu+8mlxuXFxgXFxgXFxgIGNzc1xuLnh4eC1jb250ZW50IHtcbiAgICAuLi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLi4uXG59XG4ueHh4LWNvbnRlbnQuYWN0aXZlIHtcbiAgICAuLi5cbiAgICBvcGFjaXR5OiAxO1xuICAgIC4uLlxufVxuXFxgXFxgXFxgXG5cbiMjIDEw44CBaHRtbOeahGpz5Luj56CB6K+05piOXG4tIOaVtOS4qmh0bWzlhYHorrjmt7vliqBqc+S7o+eggeeahOaDheWGte+8mlxuICAx44CB5b+F6aG757uZVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuWSjOW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLmt7vliqDngrnlh7vliIfmjaJvcGFjaXR5OiAwO+WSjG9wYWNpdHk6IDE755qE5pi+6ZqQ5pWI5p6c55qEanPku6PnoIHlpITnkIbjgIJcbi0g6Zmk5LqG5Lul5LiK5oOF5Ya177yM5LiN5b6X5re75Yqg5Lu75L2VanPjgIF0c+etiemAu+i+keS7o+eggVxuLSBqc+S7o+eggeW/hemhu+S9v+eUqHZhbmlsbGEganPvvIzkuI3lvpfkvb/nlKjku7vkvZXliY3nq6/moYbmnrbnmoRqc+S7o+eggVxuXG4jIyAxMeOAgeWmguaenHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CBdnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgXZ0eXBlPVwidmlld1BhZ2VyXCLjgIF2dHlwZT1cInRhYkNvbnRhaW5lclwi44CBdnR5cGU9XCJyYWRpb0dyb3VwXCLjgIF2dHlwZT1cImNoZWNrQm94R3JvdXBcIuexu+Wei+eahOWFg+e0oOe7hOS7tueahOaVsOaNruaYr+S7jue9kee7nOaLieWPluWbnuadpeeahO+8jOmCo+WwseWcqOi/meS6m+iKgueCuea3u+WKoOWxnuaAp2Zyb21BcGlEYXRhPVwidHJ1ZVwi77yM5q+U5aaC77ya54Ot6Zeo5ZWG5ZOB5YiX6KGo57uE5Lu2dnR5cGU9XCJ2ZXJ0aWNhbExpc3RWaWV3XCLvvIzor6Xnu4Tku7bnmoTmlbDmja7mmK/ku47nvZHnu5zmi4nlj5blm57mnaXnmoTvvIzpgqPkuYhodG1s5YaZ5rOV5aaC5LiL77yaXG5cXGBcXGBcXGAgaHRtbFxuPGRpdiBuYW1lPVwi54Ot6Zeo5ZWG5ZOB5YiX6KGoXCIgaWQ9XCJob3RQcm9kdWN0TGlzdFwiIGNsYXNzPVwiaG90LXByb2R1Y3QtbGlzdFwiIHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wiIGZyb21BcGlEYXRhPVwidHJ1ZVwiPlxuICAgIC8vIOeDremXqOWVhuWTgeWIl+ihqFxuPC9kaXY+XG5cXGBcXGBcXGBcblxuIyMgMTLjgIHmsLTlubPmu5rliqjlkozlnoLnm7Tmu5rliqjnmoTlm7rlrprlhpnms5XvvJrlv4XpobvpmpDol4/mu5rliqjmnaHvvIzlubbkuJTnpoHmraLmu5rliqjmnaHljaDkvY1cbi0g5rC05bmz5rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogYXV0bzsgICAgIC8qIOWFgeiuuOawtOW5s+a7muWKqCAqL1xuICBvdmVyZmxvdy15OiBoaWRkZW47ICAgLyog56aB5q2i5Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGhlaWdodDogMDsgLyog5rC05bmz5rua5Yqo5p2h6auY5bqm5Li6MO+8jOS4jeWNoOS9jSAqL1xufVxuXFxgXFxgXFxgXG5cbi0g5Z6C55u05rua5Yqo5b+F6aG75Lil5qC85oyJ54Wn5Lul5LiLY3Nz5Zu65a6a5YaZ5rOV77yaXG5cXGBcXGBcXGAgY3NzXG4ubXktZGl2IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyAgICAgLyog56aB5q2i5rC05bmz5rua5YqoICovXG4gIG92ZXJmbG93LXk6IGF1dG87ICAgICAgLyog5YWB6K645Z6C55u05rua5YqoICovXG5cbiAgLyogRmlyZWZveCAqL1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIElFIC8gRWRnZSDml6fniYggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xufVxuXG4ubXktZGl2Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwOyAvKiDlnoLnm7Tmu5rliqjmnaHlrr3luqbkuLow77yM5LiN5Y2g5L2NICovXG59XG5cXGBcXGBcXGBcblxuIyMgMTPjgIHnu4Tku7bnsbvlnot2dHlwZeWbuuWumuaemuS4vlxu5paH5a2XdnR5cGU9XCJ0ZXh0XCLjgIHmjInpkq52dHlwZT1cImJ1dHRvblwi44CB6L6T5YWl5qGGdnR5cGU9XCJpbnB1dFwi44CB5Zu+5qCHdnR5cGU9XCJpY29uXCLjgIHlm77niYd2dHlwZT1cImltYWdlXCLjgIHnn6nlvaJ2dHlwZT1cInJlY3RcIuOAgeWchuW9onZ0eXBlPVwiY2lyY2xlXCLjgIHnur/mnaF2dHlwZT1cImxpbmVcIuOAgeWfuuehgOWuueWZqHZ0eXBlPVwiY29udGFpbmVyXCLjgIHmiYvmnLrns7vnu5/nmoTpobbpg6jnirbmgIHmoI92dHlwZT1cInBob25lVG9wTmF2aWdhdGVCYXJcIuOAgeaJi+acuuezu+e7n+eahOW6lemDqOmmlumhteaMh+ekuuWZqOaoquadoeagj3Z0eXBlPVwicGhvbmVCb3R0b21Ib21lSW5kaWNhdG9yQmFyXCLjgIHlpJrnirbmgIHlrrnlmah2dHlwZT1cIm11bHRpU3RhdGVDb250YWluZXJcIuOAgeafkOeKtuaAgeinhuWbvuWuueWZqHZ0eXBlPVwib25lU3RhdGVDb250ZW50Q29udGFpbmVyXCLjgIHljaHniYflrrnlmah2dHlwZT1cImNhcmRcIuOAgeW8gOWFs3Z0eXBlPVwic3dpdGNoXCLjgIHkuIDkuKrljZXpgIl2dHlwZT1cInJhZGlvXCLjgIHkuIDkuKrlpJrpgIl2dHlwZT1cImNoZWNrQm94XCLjgIHljZXpgInnu4Qo5aSa5Liq5Y2V6YCJKXZ0eXBlPVwicmFkaW9Hcm91cFwi44CB5aSa6YCJ57uEKOWkmuS4quWkmumAiSl2dHlwZT1cImNoZWNrQm94R3JvdXBcIuOAgeerluWQkeWIl+ihqHZ0eXBlPVwidmVydGljYWxMaXN0Vmlld1wi44CB5qiq5ZCR5YiX6KGodnR5cGU9XCJob3Jpem9udGFsTGlzdFZpZXdcIuOAgeWIl+ihqGl0ZW3ljaHniYd2dHlwZT1cImxpc3RJdGVtQ2FyZFwiLCDova7mkq12dHlwZT1cInZpZXdQYWdlclwi44CB6L2u5pKt5Yy65Z+fdnR5cGU9XCJvbmVWaWV3UGFnZXJDb250ZW50XCLjgIHova7mkq3mjIfnpLrlmajlrrnlmah2dHlwZT1cInZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclwi44CB6L2u5pKt5oyH56S65ZmoSXRlbemhueWuueWZqHZ0eXBlPVwidmlld1BhZ2VySW5kaWNhdG9ySXRlbUNvbnRhaW5lclwi44CBVEFC6YCJ6aG55Y2hdnR5cGU9XCJ0YWJDb250YWluZXJcIuOAgSBUQULpgInpobnljaHlhoXlrrnljIXoo7nlrrnlmah2dHlwZT1cInRhYkNvbnRlbnRXcmFwcGVyQ29udGFpbmVyXCLjgIFUQULpgInpobnljaHkuIDpobXlhoXlrrnljLp2dHlwZT1cIm9uZVRhYkNvbnRlbnRDb250YWluZXJcIuOAgVRhYumAiemhueWNoeiPnOWNleagj3Z0eXBlPVwidGFiTWVudUJhclwi44CBVGFi6YCJ6aG55Y2h6I+c5Y2V5qCPaXRlbemhuXZ0eXBlPVwidGFiTWVudUJhckl0ZW1cIuOAgeW6lemDqFRBQue7hOS7tnZ0eXBlPVwiYm90dG9tVGFiQ29udGFpbmVyXCLjgIHlupXpg6hUQULlrZDpobXpnaLlhoXlrrnljLp2dHlwZT1cInN1YlBhZ2VcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj3Z0eXBlPVwiYm90dG9tVGFiTmF2aWdhdGVCYXJcIuOAgeW6lemDqFRBQue7hOS7tuWvvOiIquagj2l0ZW3pobl2dHlwZT1cImJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVwi44CB6aG26YOo5a+86Iiq5qCPdnR5cGU9XCJ0b3BOYXZpZ2F0ZUJhclwi44CB6aG26YOo5qCH6aKY5qCPdnR5cGU9XCJ0b3BUaXRsZUJhclwi44CB5bqV6YOo5pON5L2c5qCPdnR5cGU9XCJib3R0b21PcGVyYXRlQmFyXCLjgIHlr7nor53moYZ2dHlwZT1cImRpYWxvZ1wi44CBVG9hc3Tmj5DnpLp2dHlwZT1cInRvYXN0XCLjgIHkuIvmi4noj5zljZV2dHlwZT1cImRyb3BEb3duTWVudVwi44CB5L6n5ruR6Z2i5p2/dnR5cGU9XCJzaWRlU2xpZGVQYW5lbFwi44CCYDsiXX0=
|