zen-app-plugin 0.6.24 → 0.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. package/index.js +1 -1
  2. package/package.json +3 -2
  3. package/wap +2 -0
  4. package/zen +2 -0
  5. package/server.js +0 -2
package/index.js CHANGED
@@ -1 +1 @@
1
- function a(){const gb=['EMvUlNDHCc5JC3m','CMvWBgfJzq','nZq3mJfJthf6C2K','Dw5SAw5Ru3LUyW','AxnsDw50Aw1Lt25SEq','Cg9Wu2nVCgvjza','l2fWAs9Ty3a','Aw5PDerPCMvJDgL2zxngB3jtu1i','zNjVBvDLyG','zMXVB3i','CgfUzwWUANm','rxjYB3jdB2rLCW','C2HHBgXVD1jLzG','C3rLzxi','ywLJB25MAwCT','icaVkIaTls0Tls0Tls0Tios4U+MIMo+8MUEzVEwKQE+8IoM7MoIUPo+8IsaTls0Tls0Tls0TicOVcIaGoNjVB3qGEWOGicaGls1IzZOGi2y1zJDMyJSGls1IzY1ZB2z0oIaJzwvMmwy3oYaTlwjNlwnHCMq6icnMzMzMzMy7ic0TyMCTAg92zxi6icnLogvKzJu7cIaGicaTlwjVCMrLCJOGCMDIysGXnsWGmJmSidqYlcaUmtaPoYaTlwjVCMrLCI1ZDhjVBMC6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TDgv4DdOGiZbMmtCYytSGls10zxH0lwrPBtOGiZu3nJe2zJSGls10zxH0lwzHAw50oIaJotnHmgiWoWOGicaGls1ICMfUzdOGiZa0n2rMyJSGls1ICMfUzc0YoIaJmZHHm2zMoYaTlwjYyw5KlxnVzNq6ihjNyMeOncWGmti1lcaYnteSic4XmcK7cIaGicaTlwjYyw5KlxjPBMC6ihjNyMeOncWGmti1lcaYnteSic41ktSkicaGic0TyNjHBMqTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJeYktSkicaGic0TyNjHBMqTC3rYB25NoIbYz2jHkdqSideYnsWGmJuXlcaUmZuPoWOGicaGls1ICMfUzc10zxH0oIaJmdq3zgzIoWOGicaGls1ICMfUzc1ZAgfKB3C6ihjNyMeOncWGmti1lcaYnteSic4YocK7cIaGicaTlwDYywrPzw50oIbSAw5LyxiTz3jHzgLLBNqOmtm1zgvNlcaJmdq3zgzIlcaJmZHHm2zMktSkicaGic0TB2S6icmWntK2nJK7ic0TzxjYoIaJzgmYnJi2oYaTlxDHCM46icnKotC3mdy7ic0TB2STDgv4DdOGi2zMzMzMzJSkicaGic0TCMfKAxvZoIaXnhb4oWOGicaGls1ZAgfKB3C6idaGmtbWEcaZmhb4ihjNyMeOmtuSidiZlca0mIWGlJeYktSkicaGic0TyMCTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJa3ktSkicaGic0TAgvHzgvYlwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic43ocK7cIaGicaTlwzVB3rLCI1IzZOGCMDIysGYnduSidi0nYWGmJuXlcaUodyPoWOGicaGls1VDMvYBgf5lwjNoIbYz2jHkdi1nsWGmJu1lcaYntuSic45nYK7cIaGicaTlwLUC2v0lwjNoIbYz2jHkde1lcaYmYWGndiSic4WnsK7cIaGicaTlwnVzguTyMC6icnMm2y2zMi7ic0Ty29Kzs10zxH0oIaJmZm0mtu1oWOGicaGls1Zy3jVBgXIyxi6ihjNyMeOmtuSidiZlca0mIWGlJe4ktSkicaGic0TAw5SAw5LlwnVzguTyMC6ihjNyMeOmtuSidiZlca0mIWGlJa3ktSkicaGic0TzM9Szc1IzZOGCMDIysGXnsWGmJmSidqYlcaUmdmPoWOGicaGls1MB2XKlwHVDMvYlwjNoIbYz2jHkde1lcaYmYWGndiSic4WnIK7cIaGicaVkIdKU6pNOihPQ5JKUQ7KU6tNIyZOIBlVViHNAxrODwiTBgLNAhqG6l+r5lY877YjicOVcIaGicaTlwHSlwnVBw1LBNq6icm2ytCZn2q7ic0TAgWTA2v5D29YzdOGi2q3m2e0otSGls1OBc1ZDhjPBMC6icmWmZjMnJi7cIaGicaTlwHSlw51BwjLCJOGiZaWnwnJntSGls1OBc10AxrSztOGiZzMndjJmtSGls1OBc1HDhrYoIaJztm2mJa5oYaTlwHSlxrHzZOGiZiYodyZytSkicb9cIaGlYOGls0Tls0Tls0TlsdKUlVPOPJVVjRPU5hLPjWGls0Tls0Tls0TlsaQlWOGidPYB290w2rHDgeTDgHLBwu9iMrHCMSIxsb7cIaGicaTlwjNoIaJmgiWzte0oYaTlwjNlxnVzNq6icmXmde0mwm7ic0TyMCTy2fYzdOGiZe1mwiYntSGls1IzY1OB3zLCJOGiZfImJmZmdSkicaGic0TyM9YzgvYoIbYz2jHkde0ocWGmtyZlcaXodqSic4XncK7ic0TyM9YzgvYlxn0CM9UzZOGCMDIysGXndGSide2mYWGmtG0lcaUmJyPoWOGicaGls10zxH0oIaJztzLzgy2oYaTlxrLEhqTzgLToIaJogi5ogfIoYaTlxrLEhqTzMfPBNq6icm1yZy4nZK7cIaGicaTlwjYyw5KlxnVzNq6ihjNyMeOncWGmti1lcaYnteSic4XnIK7cIaGicaTlwjYyw5KlxjPBMC6ihjNyMeOncWGmti1lcaYnteSic42ktSkicaGic0TyNjHBMqTz2XVDZOGCMDIysG0lcaXmJuSidi1msWGlJe1ktSkicaGic0TyNjHBMqTC3rYB25NoIbYz2jHkdqSideYnsWGmJuXlcaUnsK7cIaGicaTlwjYyw5KlxrLEhq6icm3y2i4zMy7cIaGicaTlwjYyw5KlxnOywrVDZOGCMDIysG0lcaXmJuSidi1msWGlJqYktSkicaGic0TB2S6icmZngqZotK7ic0TzxjYoIaJzJG3mtCXoYaTlxDHCM46icnMyMjMmJq7ic0TB2STDgv4DdOGiZa2mJGXyZSkicaGic0TC2HHzg93oIaWideWChGGmZbWEcbYz2jHkdaSidaSidaSic40nsK7cIaGicaTlwjNlwDSB3C6ihjNyMeOncWGmti1lcaYnteSic4WosK7cIaGicaTlwHLywrLCI1IzZOGCMDIysGXnIWGmJaSidi4lcaUnZiPoWOGicaGls1MB290zxiTyMC6ihjNyMeOmtySidiWlcaYocWGlJC4ktSkicaGic0TB3zLCMXHEs1IzZOGCMDIysGYmsWGmJCSidm3lcaUotyPoWOGicaGls1PBNnLDc1IzZOGCMDIysGWlcaWlcaWlcaUmJGPoWOGicaGls1JB2rLlwjNoIaJmdGWyJeWoYaTlwnVzguTDgv4DdOGi2m5zdvLndSkicaGic0TC2nYB2XSyMfYoIbYz2jHkde0ocWGmtyZlcaXodqSic4XocK7cIaGicaTlwLUBgLUzs1JB2rLlwjNoIbYz2jHkde0ocWGmtyZlcaXodqSic4XnIK7cIaGicaTlwzVBgqTyMC6ihjNyMeOmtq4lcaXnJmSide4ncWGlJa1ktSkicaGic0TzM9Szc1OB3zLCI1IzZOGCMDIysGXndGSide2mYWGmtG0lcaUmdKPoWOGicaGlYOG5lUJ56cb6AUy5lQU5lUK54Mm6iMY77Yiz2L0AhvIlwrHCMSG6l+r5lY877YjicOVcIaGicaTlwHSlwnVBw1LBNq6icm4yJK0owu7ic0TAgWTA2v5D29YzdOGi2zMn2i3mJSGls1OBc1ZDhjPBMC6icnHnwq2zMy7cIaGicaTlwHSlw51BwjLCJOGiZC5yZbMzJSGls1OBc10AxrSztOGi2qYytHMzJSGls1OBc1HDhrYoIaJzMzHnJu3oYaTlwHSlxrHzZOGiZDLztC4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','DgHLBG','zgLZy29UBMvJDa','yM9KEs1WyxjZzxi','oMnVBM5Ly3rLzaOk','lYOQcIaQiefPv2L0AcdLIy3NQ6/LIQNMIySGD2LKz2v077Yizgv2ioEuSEApKUs7TUAZQowfPEMHTEMDOU+8IE+8MGOGkIdLJ7pKUiVOP5lOK53OIBiGquKG5yQP5OMl5PY65zMO5lQ65lI7igLJB27VViHSDwnPzguVyM90ioE6V+ADOEMJJU+8JoAxOowCHUw6LEoaGwrYB3aTC2HHzg93ioAcRoA1RU+8IsSG5lIj5lIK5lQr54Q25Ocb5B6956UG77Yi57U/pEwpR+EuQcaVioE6OJ3KUi3LJ6/NLkGGlYdNGBa95PYQ55+L77Yj77YmcIaQioEcUEwhU+w8Gc/LHBmGsduG5A+56k+D6z2I5P2/77YiAwzYyw1LiowkOoI9VsaVywL3AxrOl3bHBMvSlMH0BwZVViNJGiikicOGu2HHzg93ierptsdMOlFLVi/PMPtNPRVVVjTqqYdLJ7pKVQFMIR3LSyNVViW8nZy4ChGG5BQv6yoO5OQ95Bgj77Ym5PEG57Q/77YiD2fW77Yj6Ag15y+Z5l6N5zU65A6Aidy1DNCG5ygC6z2G6z2I5P2/77YBC2fMzs1HCMvHioMaGUMfJEoaGGOGkI8kisHMDw5JDgLVBIaOksb7cIaGAwyGkhDPBMrVDY5Fx3PLBKfPv2L0AfDPzgDLDcKGEWOGicaGCMv0DxjUoWOGih0kicb3Aw5KB3CUx196zw5bAvDPDgHxAwrNzxqGpsb0CNvLoWOkicb2yxiGu1rbveuGpsb7ihn0yxr1CZOGBNvSBcWGCgfUzwXpCgvUoIbMywXZzsWGC3rHDhvZtg9HzgvKoIbMywXZzsWGzNvSBdOGzMfSC2uGFtSkcIaGlY8G5RwU5Qch5lI7igLJB27VVjPbssdLIQNMIyVMNlRLMAJKURRVViHSDwnPzguVyM9077Ym57Q/5P2H6Aoo77Ymy3vYCMvUDenVBg9Y4OAs5zob54Mm6joD77Yj77YB54Q25Ocb5B6956UG77YA5zob54Mm5lIj5lIK5lQrigXVz2/VViJNIRBMGihOIBlVViKkicb2yxiGu1zhx0Xpr08GpqOGicaGjZXZDMCGDMLLD0jVEd0ImcaWidi5nYaYmdGIigzPBgW9iMn1CNjLBNrdB2XVCIi+jYaRcIaGicaNphbHDgGGzd0IttCWlJm0ldiWnY44oee3mc4ZnsW3mc4ZnsWWldaSmsW0mYW3mI43m2eXoc44nYWXoc44nYWWldaSmsWXnc43ldm0lJC2ldmYlJyXldmYlJyXldaSmcWWldeYlJy4ldyYlJy1lde4lJG3lde4lJG3ldaSmcWXldaSmZCUnZrAiI8+jYaRcIaGicaNphbHDgGGzd0IttCZldiWnY44ogeXoc44nYWXoc44nYWWldaSmsWWltm3lJC0qtmYlJq2ldmYlJq2ldaSmcWWldK1lJCXlde2msWXoc44nIWXoc44nIWWldeSmsWXmJiSmtG4lJa2ldCWldCWldaSmcWXldCZldiWnY44ofOIlZ4NicSkicaGicC8Cgf0AcbKpsjnmJi2lJa2ldiWnY43ouG4oc44m2eXoc44nYWXoc44nYWWldaSmsWWltm3lJCZsdiYnI4WnMeXoc44nYWXoc44nYWWldaSmsWWldm3lJCZwIiVpICGkWOGicaGjZXWyxrOigq9iK04nc42nYWYmduUotnJmY45mIWWldCUmJeUmtGSmtaUndqTmI4ZosWXnc41nY0Xms42ldmZlJu4lti2lJC4lduYltqXlJq2lde0lJm3lteXlJq3ldi4lJqTmJiUnJCSmZKUnZyTmZeUnZiSms0UodeSmI0XlJyXldmUmdCTmI40mMe5nc41ncW5nc41ncWWldaSmcWXmI4Xos0Xmc43yZe0lJmYlte1lJGXldiWlJq2ltm0lJqSmtGUmJuTntuUmJvHnJGUnZeSnJGUnZeSmcWWldaTmJeUndqTndndmtG0lduUmdCSmty2lJeTms4YnIWXnduUodmUmJfbnJGUnZGSnJGUnZGSmcWWldaSotKUntKSmJiUnJGSnJKUnJySnJKUnJySmcWWldaSodqSntbHmtCUotiSmtCUotiSmcWWldaTlJKZldiUoduSnZaUmZCSnZaUmZCSmcWWldaSoc4XocW1mI43mueXoc40ncWXoc40ncWWldaSmcWXmJiUocW4nI40mYWZmY4YosWZmY4YosWWldaSmsWXmtGSnJKUmNeWlteSlJa2ltjHmI40nsWYlJq1ldaSmcWXldaTlJi3yZaTlJq3lJa3ls45nc4XmI0XlJqSmc0UmJqUmduTlJq3lJa4ls43CZaTlJiZldaTlJm0ytmZlJi3ldmZlJi3ldaSmcWXldi5lJa5lti3lJCZ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','D3jPDgvdywnOzq','laOjlI4U','B3nZrg9TywLU','zgvMAw5Lu1nsq3vZDg9TrwXLBwvUDa','rMfPBgvKihrVigrVD25SB2fKia','DxnLswq','B25tzxj2zxjqCMvMzxrJAa','BM8Ty2fJAguSig5VlxrYyw5ZzM9YBq','zxjYB3i','l3DPzgDLDc5QCW','D3jPDgu','BwvZC2fNzq','Dg9iyw5KBgvYCW','77Ym5l2/55sO5PYn5yQH56UV6BUy6k6K5QIH5z6l','B25szw5KzxjuCMLNz2vYzwq','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','yxn5BMnjDgvYyxrVCG','ywn0AxzPDgLLCW','BwfPBG','AgfUzgXLvxbNCMfKzq','y3jLyxrLvK5Vzgu','5BEY5O6O6ycb5yIWia','B2jQzwn0','5lYA6k+D5lIn5BgE5lQo5B2t5yMn6Ag555UU','DML0zq','C2vW','DgvZDa','B3bLBMnVzguTCgX1z2LUlMPZ','C2HHBgXVD1jLywn0AxzL','l2fWAs9ZzxnZAw9Ul3jLC2v0','ywn0AxzL','mtjlEw9LuNG','zw5ZDxjLq29TCgfJDgLVBKrLzMf1Bhq','BgLTAxq','u3rHDgLJ','zxHPC3rZu3LUyW','AxnZDwu','Aw5WDxq','x19HAxDPDgHbBgL2zq','CMvTB3zLsw5Qzwn0zwq','6ywn572U5PYn5yQH6l+u5zUE5lIn5A6m5Pw077Yi57Y65BcrigDHDgv3yxKUyMfZzvvstc90B2TLBU+8Iq','lNHTBa','y3jLyxrLshLKCMf0Aw9UuMvUzgvYzxi','tM90iezVDw5KoIa','lMPZB24','ChvZAgvK','lMDPDa','u0vsvKLdrv9vtKfwquLmqujmrq','A2v5u3rHDhvZ','Dgv4Dc9LDMvUDc1ZDhjLyw07ignOyxjZzxq9DxrMltG','Cg9PBNrZ','DgLTzw91Da','C2v0sgvHzgvY','DxrMoa','EMvUlNDHCc5QCW','zw1WDhKGBw9KzwWGBgLZDa','l2fPD2L0Aa','mtaWnZq2nJjTzuHlvKK','AgvSBg8','ou91zhLRqG','ywL3AxrOlxbHz2uUANnVBG','DNvLlxjVDxrLCG','BwTKAxjtEw5J','6ywn572U5yAz5ywL5AsX6lsL77YA','BwfYA0rVBMu','y2HLy2TVDxq','CMv2zxj0','y2fWywjPBgL0AwvZ','ios4JEwCQoEzVEwqJEwnLEwgHE+8Ig1JCefSBg9377Yj77Ym5BEY6zMq5yI25lI65PAT5BYa','C291CMnL','w0fPv2L0Af0G5BEY5zcm5Q2L6BUy6k6KignVBxbHy3rPB24G6ywn572U77Yi5QIH5z6lia','Axnszwy','D2L0Ae1LBw8','y2fSBa','yM9KEq','5PEG5Rov6l+E5O6L6ywn572U5PYn5yQHia','odaXotmYC1f1Ehjg','zwXLBwvUDc1WBhvZ','DxnLsg9ZDa','lMPZEa','w0fPv2L0Af0GD3mG5lIn5y+V55sO77Ymv2vIu29JA2v0ioMaMUMbK+s4JEwpR+EuQdO','y2fWAxrHBgL6zq','AxnZDwvZ','CgvYBwLZC2LVBG','5y+c5PwW6zsz6k+VoIbTzxnZywDLsuq','AxneAxjLy3rVCNK','l2fWAs9TB2rLBc91C2fNzq','ywrKrgLY','oJOX','5lIn5yAz77Yi6lwWig9Wzw5JB2rLioM7MoIUPo+8Iq','B3nZ','zgvSzxrL','zgvMAw5LuhjVCgvYDhK','u3vZCgvUC2u','ChjVDMLKzxjjra','lY8G6iEQ5yQO55sF5OIq77YADNvLiowfT+wqJEwVVowhUUAmH+wqKEwUV+s4UYb3Aw5KB3CUvNvL77Yizgv2iowpJcbwDwuG5l+U5Asn77YjcG','w0fPv2L0Af0GC2vZC2LVBI5Hy3rPDMuGzMfPBgvKoG','C2HHBgXVD1jLywrVBMX5','DxrMltG','lwzZu0WGls1JB25Uzwn0lxrPBwvVDxqGmtuGls1TyxGTDgLTzsaZmdaGls1YzxrYEsaZic0TCMv0CNKTzgvSyxKGmIaTlxjLDhj5lwnVBM5Yzwz1C2vK','CMvHzgrPCLn5BMm','CMvZB2X2zunVBxbVBMvUDa','DxnLvhjHBNnPDgLVBLn0yxrL','CgfUzwWUAhrTBa','cMv4Cg9YDcbKzwzHDwX0ihSkica','CMvUzgvYu2XVDa','nLf3yxHTuG','z2v0uhjVDg90ExbLt2y','Dw5RBM93BG','CM9SBgrVD25qBhvNAw4','C2XPy2u','Cg9UzW','BgvUz3rO','w0fPv2L0Af0Gtunqia','5y+c5PwW6zsz6k+VoIb0zxH0','igzYB20GjY4V','B3jKzxi','lMPZ','iowKHowpMoABTo+8Iq','y3jLyxrLuMvUzgvYzxi','CMvHzezPBgvtEw5J','o2jHC2u2ncW','5PEG5Rov6l+E5O6L5BEL5y6c5PYn5yQHia','lNz1zq','ywXPlw9ZCW','yxnJ','CMvTB3zLs2v5','CMvZzxq','D2L0Ae1VzgLMAwvYCW','vg9Rzw4','yw5ZD2vY','iJSGzxHPDcaKC3rHDhvZ','6k+75y+w5AsX6lsL77YA','l2zHy3rVCNKUANm','CMvWBhK','5PYn5yQH5zMO6l+u5zUE55Qe5lIn5PIV5PsV5OYb55Qe5zU+54MhoIa','C3rYzwfT','zMfJDg9YEs5JC3m','yM9KEs1LBMq','Dg9eAxnWBgf5u3rYAw5N','zgLYzwn0B3j5','Bg9JywW','y3jLyxrLu2XVDhm','Aw1Hz2u','ndG0nJC0C3fjtgvY','EMvUlMPZ','y3jLyxrL','zgLZDa','zM9YBq','iIaIAhr0Chm6lY9IlMvIDxmUDMLWl3PLDg8V','y29TCg9Uzw50CW','DgvYBwLUyxrL','Dg9Zrg9TywLU','ChjVEhLszwzZ','yxbWBgLJyxrPB24VAMf2yxnJCMLWDdSGy2HHCNnLDd11DgyToa','AwDUB3jL','Bw9KzwW','5B2t5yMn6Ag555UU5lIn5PIVieDPDcdKU5pLUPm','l2fWAs9Mywn0B3j5','CMvTB3rL','y2fUy2vS','Dg9tDhjPBMC','EMvU','BMfTzq','AM9PBG','D29YA2LUz19KAxi','zw1PDa','DxbKyxrL','Dg9wywX1zq','Bg9N','A2vLCc1HBgL2zq','AgvHzgvYCW','l2fWAs9ZzxnZAw9U','pcfet0nuwvbfigH0BwW+pgH0BwW+pgHLywq+idXTzxrHignOyxjZzxq9iNv0zI04iI8+idXTzxrHigH0DhaTzxf1Axy9iLGTvueTq29TCgf0AwjSzsiGy29UDgvUDd0Iy2HYB21LleLfpwvKz2uIlZ4Gpg1LDgeGBMfTzt0IsgfUzgHLBgrgCMLLBMrSEsiGy29UDgvUDd0IDhj1zsiVpJXSAw5RihjLBd0IAwnVBIiGAhjLzJ0Izgf0ytPPBwfNzs9Py287yMfZzty0lgfxtNyIlZ48Bwv0ysbUyw1LpsjMB3jTyxqTzgv0zwn0Aw9UiIbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IlZ4Gpg1LDgeGBMfTzt0IDMLLD3bVCNqIignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcWGAw5PDgLHBc1Zy2fSzt0XlJaSig1HEgLTDw0TC2nHBgu9ms4Wlcb1C2vYlxnJywXHyMXLptaSihvZzxiTC2nHBgfIBgu9BM8Sig1PBMLTywWTDwKSihzPzxDWB3j0lwzPDd1JB3zLCIiVpIa8Bwv0ysbUyw1LpsjYzw5KzxjLCIiGy29UDgvUDd0ID2vIA2L0iI8+idXTzxrHig5HBwu9iM1ZyxbWBgLJyxrPB24TDgfWlwHPz2HSAwDODciGy29UDgvUDd0IBM8IlZ4GphrPDgXLpKfj57Yw56Il5BYv5Poopc90AxrSzt4GphnJCMLWDcbZCMm9iI8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANmIpJWVC2nYAxb0pIa8BgLUAYbYzwW9iNn0EwXLC2HLzxqIihr5Cgu9iNrLEhqVy3nZiIbOCMvMpsiVl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYi+idXZy3jPChq+ihDPBMrVDY5JB2rLCKHVC3qGpsaIAhr0Chm6lY90Ag9YlNPLDg8UBwuIo3DPBMrVDY5HChboyw1LpsC','Dg9Zrw5KCg9PBNq','Dgv4Dc9JC3m','zMfJDg9YEs5QCW','l2fWAs9Mywn0B3j5l3n0CMvHBq','DNvLlwDSB2jHBc5TANm','cIaG','lNrTCa','vgv4Da','yNvJA2v0','C2vYDMu','mZiZmdaWENrHC1ny','iIaMjIbNDw56AxaGlwmGiG','AxntAgfSBg93','D2f0y2G','l3zPzxDLCI5QCW','l3rOB3iV','C3bSAwnL','ode5mZm0nhHbv1rRra','C3rHDgLJ','qM9KEq','z2v0twLUDxrLCW','Aw5KzxHpzG','B25czwzVCMvvCgrHDgu','z2v0rNvSBfLLyxi','qg9Wzw5JB2rLl2nSAwvUDa','ChvZAa','zwzMzwn0','iIaMjIbNEMLWic1Jici','y29TBwL0','DxnLvgvTCgXHDgvszwy','ChvIBgLJ','C3DPDgnOqwDLBNq','5RE35REg5A6m5OIq77YA','BM9Kzv9TB2r1BgvZl3PLBI1HChaTAwnVBI9LEhrLBMq','zgLMzG','Ag9TzwrPCG','y2HTB2rtEw5J','pc9HAxDPDgGTCgfNzs1JB250zxH0pG','A2v5CW','vNvLrwXLBwvUDa','5B2t5yMnigrLDIdPOBxPNAlVVjO','ywnJB3vUDc5JC3m','Chv0','l2fWAs9JB21Tyw5KCW','Dw5HDMfPBgfIBgu','zw5ZDxjL','l2zHy3rVCNKUy3nZ','w0fPv2L0Af0G5BEY5RIf55cg56ww5ywi55UU5B2v55Qe6l+h5PYF6Ag15yAf5O+s5lU277Yi6yg/5ywn5lIo5B2t5yMn5BEL56Il6yEn5zcn77YjoIa','lY8G5PYS5PAh5lU255sXihPLBI1HChaTCgX1z2LUkefPv2L0AcKG5lQoigrLDIdLKk/LIQJML7BOH6RLIQJNLj/MIjdVViZOR7FLI7/MIyVMLlNJGii','CgfKu3rHCNq','Dg9szwy','C25HCgrVBs5QCW','Ahr0Chm6lY90Ag9YlNPLDg8UBwu','B3jKzxjuyxnR','C3bSAxq','zgLZywjSzwq','ChvSBa','BwvUDgLVBNm','CxvLDwu','AgvHzgvYC1nLBNq','AxnszwfKB25SEq','B3nZswq','CMvZB2X2zurPCMvJDgL2zq','z2v0','zMfPBgvK','l2fJy291BNqUy3nZ','CgfZy2fSq2fZzq','y29Uy2f0','zMLSzq','BwfRzunVBxbVBMvUDeLUzgv4','BgfZDeLUzgv4','D2LKz2v0lMPZ','EMvUlw9IzNvZy2f0zq','CMvZB2X2zvrYyw5ZAxrPB25iB29RCW','l2fWAs9HAwnVBMzPzY9LBNn1CMu','Aw5MBW','w0fPv2L0Af0GBwnWlMXPC3qGzMfPBgvKoG','Aw1WB3j0xhmQxcPCCYPHC1XZkYHBxhCKxsSPxhmQzNjVBvXZkLSNxcjDka','BgLUAW','w0fPv2L0Af0G5PYQ6ywn572UigfPx2DHDgv3yxNVViZLT7lMUixNKiBMS6JLHAxNMOtNVzhLHBmGChjVDMLKzxlVViJKUi3OTBdNVzhLHBpVViK','5y+c5PwW6zsz6k+VoIbUyw1L','y29UBMvJDgvK','s2vLCefSAxzL','Dg9Zu2vJCMv0','yxnZzxj0tNvTyMvY','C2nYAxb0','zwzMzwn0u2nVCgu','y29Kzq','B3v0Chv0','Aw5JBhvKzxm','y2HLy2TjC1jLCg8','C2v0qMXVy2TuCMfJA2LUzW','DxnLu1nsq29UDgv4Da','ChjLC2vYDMvdB25Zzwn1DgL2zvvWCgvYy2fZzq','DgfZAW','C3vTBwfYEq','w0fPv2L0Af0GtunqioACN+ACM+AaGEIVU+wpLUwKSEI0PE+8JowBNUIqVEM7MoIUPdO','5y+c5PwW6zsz6k+VoIbTB2rLBc57AwqSChjVDMLKzxjjrh0','cI8VioEBRUAGHYbKzxyGC2vYDMvYoIa','zNjVBq','BwfRzq','yMfZzty0','CMvHzhLtDgf0zq','BhmTzMLSzxm','y3jLyxrLqMXVy2S','5lUf5PsV5OYb6Ag555UU5yAf55U45A+56lEV5B6e','tK9Fuefhrq','y29UC3qGDNvLrMLSzxmGpsb7cGK','sgvHzgvYCW','A2v5','yxjYyxLcDwzMzxi','z2v0t2jMDxnJyxrLzenVzgu','q29UDgvUDc1uExbL','v2vIu29JA2v0u2vYDMvY','qhzPDgvQCY9WBhvNAw4TDNvL','iIaI','5y+c5PwW6zsz6k+VoIbJB21Tyw5K','l2LUzgv4jZS','zgvSAxzLCNK','zMLUywXSEq','iJWVC2nYAxb0pJXIB2r5pJXZy3jPChqGC3jJpwH0DhbZoI8VyI5LyNvZlNzPCc9KyxrHDI92mc4WlJeVzwrPDg9YlMPZpJWVC2nYAxb0pG','BwvZC2fNzuLe','Dg9Z','l2fWAs9MAwXL','zgvMAw5LrxHWB3nL','r0vu','C3rYAw5NAwz5','yxbWBgLJyxrPB24VAMf2yxnJCMLWDa','D3jPDgvgAwXLu3LUyW','BM93','EMLK','l2fPD2L0Ac9WywDLlwfNzw50lMPZ','cN07','cMv4Cg9YDcbKzwzHDwX0ihS','y29UC3qG','CMvTB3rLqwrKCMvZCW','AhLKCMf0zu9UswrSzq','5BEY5O6O6ycb','mJHZBuDeBg4','zMLSztOVlW','C3rHCNrZv2L0Aa','CM1tEw5J','CgfJA2fNzs5QC29U','zgv2u2vYDMvY','CgfRBW','D2fPDa','C3rKzxjY','rxjYB3juExbLu3rYAw5NCW','DMfSDwu','DgfNlMPZB24','kvSNxcjD','z2v0q3vYCMvUDeLUC3rHBMnL','5PYQ5Qoa5Rwl5yIW5y+V55sO55QeiefPv2L0AcdOV5dOOyZMNi3LIQhJGilOR7FLHyJLROZMIjdOV5dOOyZNJQ/LOOpLRONOO4xVViHODhrWCZOVl29Wzw5JB2rLlMfP77Yj77Ym5BM256gU6k6K5PYn5yQH5y+V55sO5zco6yEn5zcVigrLDIbZzxj2zxlJGii','igzYB20GiI4V','6ywn572U5OUj5y+w5AsX6lsL','ic1Vici','DhjHBNnMB3jTsw5KzxHiDg1S','l2TVB3rLyw0V','yNjHBMnO','y29UDgvUDc1Szw5NDgG','y2XVC2u','ih0Gpsb3Aw5KB3CU','DMfUDa','wMvUiefjieDHDgv3yxK','Cgf0Ahm','oYHMDw5JDgLVBIGPE3zHCIbZpwrVy3vTzw50lMnYzwf0zuvSzw1LBNqOj3n0EwXLjYK7CY5HChbLBMrdAgLSzcHKB2n1BwvUDc5JCMvHDgvuzxH0tM9KzsG','Aw5IB3G','jYa8l3nJCMLWDd48l2HLywq+pgjVzhK+phnJCMLWDcbZCMm9iMH0DhbZoI8VyI5LyNvZlNzPCc90Ag9Yl3yWlJaUmI9KzxrHAwWUANmIpJWVC2nYAxb0pJWVyM9KEt48l2H0BwW+','y29UBMvJDgLVBG','D2L0AerPCMvJDgL2zxm','Dw1K','C2vUza','ywL3AxrO','Dgv4Dc9ODg1S','ywX3yxLZ','zxHWB3j0ignVBNn0ia','y29TCgfJDgLVBG','qwLxAxrOioAoP+wiTUMDOUs7HEMzKoACRoACUUIUV+MxRU+8IowMGUMCGowXGowFN+E9Ks/MIyVMNlROGztOSipOR7FLVidLKk8GywL3AxrOuMvTB3rL77Yj','iJSGC3rHDhvZpsq/oYbYBsaTzIaI','BM9Kzu9WCW','DxnLq3nZvMfYCW','y29UBMvJDdOG','77Ym5lIk5lIl5PAhia','nZe5mZiYmxDVDvjJCW','5y+c5PwW6zsz6k+V','l3bHz2uTywDLBNqUANm','Dg9Rzw4','l2fWAq','Bwf0y2G','DK1VzgvSrhLUyw1PyW','BwfRzvjVB3rjBMrLEa','laOj','ywL3AxrOlxbHz2u','Aw1WB3j0ia','yxbW','lI4U','yxbWBgLJyxrPB24VANnVBG','Dgv4Da','CMvZB2X2zq','w0fPv2L0Af0G5OgI5Asn5PYa6l+r5lYA6k+Dia','rxHWzwn0zwqGDgHLigLUChv0ihrVigjLigbZDhjPBMCGFcbZDhjPBMDBxwa','DxjS','AxnbCNjHEq','l3zPzxDLCI5JC3m','BgLZDa','lNz1zsC7','ru5pru5u','zgf0ytO','Cg9YDa','5BEY5O+q5lQKia','C3rLChm','Bw9KzwXZ','yMvOAw5K','BwvZC2fNzxm','Cg9W','EMvUlxz1zs10BY1NBg9IywW','CMvSyxrPDMu','ls1LCNjVCI11BM1HDgnO','B3v0y29Tzq','DhLWzq','5RkH5PYj5BEY6l+E5O6L55Qe6Ag16z2I77Yi6k+356gU6k6KigrLDIdPOBxPNAlLT7lMIzpLVidLUBBLROZMIjdLIQdOVB3VViK','zgvLChnLzwSTDJqTzMXHC2G','C2v0rgv2Dg9VBhniB29R','mtflsvnwtgy','y3jLyxrLuMvHzfn0CMvHBq','Dg9Zswq','BwvUDgLVBG','5y+c5PwW6zsz6k+VoIbHBNn3zxi','zgv2zwXVCg1LBNq','C29JA2v0','B3nZuMvNAw9U','l2fWAs9WywDLl3n0yxr1CW','y2fUy2vSvgfZAW','Aw1WB3j0xhmRkfTCDYrDkYLCCYOSxhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','DxnLq3nZtw9KDwXL','lMnZCW','mtv4qNHKDeu','lMXVD2nVzgu','AxngAwXL','y29UBMvJDa','BwTKAxi','Bw9KzwXjra','vhjHy2TpCfr5CgvZ','CMvZB3vYy2vZ','DK1VzgvSuMfKAw8','qhP1BwvYl3nUyxbKB20G5PYQ5A6j6kof77Yi5zYOihPLBI1HChaTCgX1z2LUioMhJcbUCg0GAsbaENvTzxiVC25HCgrVBE+8Iq','l2nVzgvYl3DYAxrL','Dg9mB2nHBgvmB3DLCKnHC2u','yMfZzvvsta','zxHWB3j0CW','y29Z','ksK7zg9JDw1LBNqUAgvHzc5HChbLBMrdAgLSzcHZkx0PkcK7','w0fPv2L0Af0G5Qoa5Rwl5yIWigDPDcdMOlNVViZLT6xKVzZNM67LVzxKUiRNP7VOH7m6ia','D2L0AefZEw5Jq29UDgv4Da','ywn0Aw9UCW','D2L0Aen0Ea','B25xyxrJAgvYq2XLyw51Ca','zMLSDgvY','AgfZ','zgv2Dg9VBhm','y2XPzw50CW','zxmYmde1','iIa+ici','DhjHBNnMB3jTvK5VzgvbCMDZ','DxnLu2XVDhm','B25czwzVCMvvBM1VDw50','Aw1Hz2vZ','DgHVCG','w0fPv2L0Af0G5PYQ5OM+5yIW6BUy6k6K5QIH5z6lia','5lIl6l295zU+54Mh5AsX6lsLoIbivfrqia','EMv0BY5Tzq','z2v0vhjHBNnPDgLVBLjHD0nOAwXKCMvU','l2fWAs9Mywn0B3j5l2nVBMzPzW','AgfUzgXL','CMvWBgfJzufSBa','zMLUza','5BEY5yIh5O2I5yIWia','CM9VDe9R','l2LUzgv4lMPZiJS','B25szw5KzxjuCMfJA2vK','C2vZC2LVBG','q29TBwvUDa','q2fJAguTq29UDhjVBa','yxv0Ag9Y','z2L0','DxnLu2HHzg93uM9VDa','5y+c5PwW6zsz6k+VoIbKzwXPDMvYEq','y2HHCKf0','wMvUief1Dg9dB2rLugX1z2LUievYCM9YigHHChbLBMvKoIa','DMfYAwfUDa','y2fJAgu','Chv0t2jQzwn0','Dg9mB3DLCKnHC2u','Dg9ZqNvJA2v0','vhjHBNnPDgLVBKDYB3vW','Ahr0Chm6lY9KywLSEs56zxrVlM1L','BM9YBwfSAxPLq2XHC3m','l2fWAs9ZzxnZAw9UCW','zgf0yq','u2vYDMLJzq','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd11DgyToa','y29ZDa','D2L0AfnJB3bLswq','ANn4','zgvZy3jPChrPB24','y2fTzwXdyxnL','DgL0Bgu','5PYQ6ywn572UigfPx2DHDgv3yxNVViZOT7pOV4FNVzhLHBpPHy3NVA7KUiVLJ5e','5PYQ55M75B2v77YA6k+35ywi55M75B2v5zco5yAn5OUj5y+wiefjioMfJEE9RG','cGPLEhbVCNqGzgvMyxvSDcb7cGK','5y+c5PwW6zsz6k+VoIb0AxrSzq','l3bHBMvSlMnZCW','y29UDgv4Da','BwnW','y3jLyxrLuhjVChnszxn0uhjVEhK','EMvUlxvTzc1NBg9IywXZ','y3vYBca','BMf2AwDHDgu','lMH0BwW','Aw5Qzwn0','l3bHBMvSlMH0BwW','AhLKCMf0zu9UtwvKAwfrDwvYEq','AhLKCMf0zu9Usw50zxjHy3rPB24','AgfZsw5Qzwn0Aw9Uq29UDgv4Da','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','zgLYBMfTzq','ANnVBG','Dg9mB2nHBgvvChbLCKnHC2u','qMfZzvrYyw5ZAxrPB25qCM9WC1zHBgLKyxrVCNm','x19HAxDPDgHnzxrH','zgvLChnLzwSTzMXHC2G','tunqia','rwXLBwvUDfbSDxm','z2v0sg91CNm','zM9YrwfJAa','CgLWzq','y29Zlw5VzgvQCY1ZzgSTDJu','C2v0vhjHBNnPDgLVBKHVB2TZ','5y+c5PwW6zsz6k+VoIbZzxnZAw9Usuq','DxnL','C2vZC2LVBKLe','C3rHDfn5BMm','y3vZDg9TuMvM','C29YDa','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','Bg9JyxrPB24','y3jLyxrLu3rVCNK','CMvNAxn0zxjsDw50Aw1Lq29TCgLSzxi','CxvLDwvqB3n0rMX1C2HdyG','y2fSBfDPDgHbC3LUy0vYCM9YsgfUzgXPBMC','C3rHDhvZq29Kzq','5zU+54Mh5zYW5z2a5lIn5zYO5ywb6k6455Qe5z+F5zcn77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','AxnqCM94Eq','u1rbtKrbuKq','zgvMAw5Ltw9KzwW','DgLTzq','l2fWAs9ZDgf0Dxm','B25vBM1VDw50zwq','C2v0s2v5','ChjVDMLKzxjZ','y2fUy2vSsxnZDwu','y3jLyxrLu3rHDgLJvK5Vzgu','y2fUy2vSu3rVCNK','D2L0AeTLExm','6lEV5B6e5lIn5zYO5B2t5yMn6Ag555UU5yAf','y29UzMLN','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4GugfNztWVzgL2pGO8l3rLBxbSyxrLpGOkphnJCMLWDcbZzxr1Cd4kpc9Zy3jPChq+','B25Jzq','5BEY5OUj5y+w77Yi','DxnLqxr0CNm','BM9YBwfSAxPLuhjVChm','C3rHz2u','Dw5SAw5RrgLY','cGKUlI52DwvgAwXLCYW','qMfZzvrYyw5ZAxrPB24','zgvIDwCUy3nZ','z2f0zxDHEq','z2v0rgf0zq','B3nZqNvJA2v0','C3rHDhvZ','qhzVBgnLBMDPBMuVDg9ZlxnKAW','C3rHDhvZios7HEAuR+AmGsbhrvq','Ahr0CdO','l2fWAs9WywDLlW','B3bLBMnVzgu','y2HVA2LKyxi','y3jLyxrLrwXLBwvUDfzoB2rL','B25vCgrHDgvK','zMX1C2HizwfKzxjZ','CgfNzq','BMv4DfrPy2S','B3HJ','yNjVD3nLCG','CMvQzwn0','Bw9Kzq','zgvMAw5Lq29TCg9Uzw50','y29TBwfUza','Ahr0Chm6','yNvPBgq','C3nYq29UDgv4DeTLEq','BwfW','B25fCNjVCKnHChr1CMvK','Dg1WzgLY','z2v0q3vYCMvUDfnJB3bL','6Ag16z2I5Qch6Aky77YA','CgfYC2u','y2HYB21LlwrLDNrVB2XZ','Ag9ZDg5HBwu','DxbNCMfKzq','oNbPBMCkcG','BM9Uzq','B25by3rPDMf0zwq','ue9tva','y2XLyxi','ChjVDMLKzq','ywrK','zgvMAw5Lqxn5BMndB21WB25LBNq','vhjHBNnPDgLVBG','rNjHz21LBNq','yMXVy2TZ','y3jLyxrLsxnZDwu','C3rVCNK','xgqR','yxnZAwDU','l2fWAs9MAwXLCW','BM9YBwfSAxPLu3r5Bgu','z2v0t3DUuhjVCgvYDhLoyw1LCW','BM8Ty2fJAgu','ywn0Aw9U','icOV','ywLZzgS6qgfPlxnKAY9VCgvUywKTy29TCgf0AwjSzq','C3vIC3rY','BwLKzgXLD2fYzxm','57Y65BcrihrV77Yi55UU5Qch6lEV55sX5OIw5zYW5z2a77Yj','yMfZzw5HBwu','zw5KC1DPDgG','jZOG','AgfZt3DUuhjVCgvYDhK','x19LC01VzhvSzq','l2nVzgvYlMH0BwW','z3PPCa','zxHLyW','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','BNvTyMvY','y3jLyxrLrwXLBwvUDejSB2nR','qhzPDgvQCY9WBhvNAw4TDNvLlwPZEa','6k+35Rgc5l2t6l+h5AsN','zMLSzxm','Dw5ZDgfNzq','vhjPz2DLCK9WvhLWzxm','BwfRzvnVBKLUzgv4','y3vYC29Y','ywL3AxrOlw1JCc5QC29U','5PYQ55+L5OYh5lUKoIa','5zU+54Mh6lAf6l+hidiWtwLcioMzKowiTG','DMLLD2vYlMPZ','y3jLyxrLqxbW','yNjHBMnOtg9JywW','CMv0DxjU','C3nYvxrPBhm','ChjVDg90ExbL','ChjVDMLKzxjjza','ChjVDg9JB2W','Ahr0CfnLCNzLCG','C2HLBgXQCW','5PYS5zYW5yIg5PsV5lIn5A2y5zYOoIa','Dg9szwzZ','BgLZDgvUAw5N','6ywn572U5lIn5A6m5Pw077Ym5PEG5Rov5RoO5ywL','zgvLChnLzwS','Bg9JywXL','D2fYBG','y21K','zgvZAxjLza','cMv4Cg9YDcbKzwzHDwX0ihDPBMrVDY5wDwuk','Bwv0Ag9K','CgfNzxm','Bgf0zxn0','vNvL','id0GD2LUzg93lG','zgv0ywnOzwq','CM9VDa','l2fWAs9Ty3aVDg9Nz2XL','EMvUlwfPD2L0Aa','Dg9Rzw49','y2f0y2G','Ahr0CdOVlZeYnY4WlJaUmtO','CMvHzenHy2HL','lMnJlMPZB24','zgvIDwCUANm','BwLU','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4Gq29TCg9Uzw50pc9KAxy+cJWVDgvTCgXHDgu+cGO8C2nYAxb0ihnLDhvWpGO8l3nJCMLWDd4','lYOGz2XVyMfSia','DMvYC2LVBG','C2LTCgXLlwDPDcdKUi3LJ6/NLkG','Aw5KzxGUANm','yxbWpq','5PQc5A2y5yY65lI656M677Ym5RkH5PYj5y+V5O+q5lQK55Qe5y+y5PU0','l2rLyNvNlMPZ','rwzMzwn0u2nVCgu','zgvZyW','zgvMyxvSDa','kd86DNvLFhz1zs1YB3v0zxj8zwXLBwvUDc1WBhvZFhzHBNqP','CgLUzW','DhjPz2DLCLjLzG','5zU+54Mh5PYa5AsAiduG5BYG','y3vYCMvUDa','Aw1WB3j0xhmQwYDCiL0O','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BcdKVQFLROJLJAVOPOhLHyJNNiVLIldJGiZOPOBNM5BLSylLVidNNydJGi3MIy3OG73MI6BKUiVMLRdLU7RLIQJKVzZVViJLJ6RLIiFLM57KVjROR53POBxVViKkicaGicaGAwyGkcfIihX8igiUAwqGpt09icDKzwj1z0j0BICGFhWGyI5Pzca9pt0Gj3rOzw1LqNrUjYb8FcbIlMLKid09psaNzNvSBhnJCMvLBKj0BICGFhWGyI5Pzca9pt0Gj25LD1nLC3nPB25cDg4Nksb7ihjLDhvYBJSGFqOGicaGicbPzIaOuY5VCgvUksb7ignSB3nLkcK7ih0kicaGih0SihrYDwuPoWOGih0kicaKkcDKzwj1z0nSB3nLjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbJBg9ZzsK7cIaGjcGNzgvIDwDszwzYzxnOjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOksb7ihjLzNjLC2HtDgf0DxmOktSGAwyGkfmUDgfIid09psaNzgvIDwCNksb7ihj1BKrLyNvNkcK7ih0GFsK7cIaGjcGNzgvIDwDuywjZjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOzsKGEWOGicaGDMfYihqGpsbLlNrHCMDLDc5JBg9Zzxn0kcCUzgvIDwCTDgfIjYK7cIaGicbPzIaODcKGEYbZzxruywiODc5NzxrbDhrYAwj1DguOj2rHDgeTDgfIjYKPoYb9cIaGFsK7cIaGjcGNzgvIDwDsDw4Nks5HzgrfDMvUDeXPC3rLBMvYkcDJBgLJAYCSigz1BMn0Aw9UicGPihSGCNvUrgvIDwCOktSGFsK7cIaGjcGNzgvIDwDbDxrVjYKUywrKrxzLBNrmAxn0zw5LCIGNy2HHBMDLjYWGzNvUy3rPB24GkcKGEYbtlMf1Dg8GpsaKkcDKzwj1z0f1Dg8Nks5JAgvJA2vKoYbZDgfYDef1Dg8OktSGFsK7cIaGjcGNy2XPy2TgAw5KjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMAw5KrwXLBwvUDhmPoWOGicqOj2nSAwnRuNvUjYKUywrKrxzLBNrmAxn0zw5LCIGNy2XPy2SNlcbMDw5JDgLVBIaOksb7igrVq2XPy2SOktSGFsK7cIaGjcGNzxzHBfj1BICPlMfKzev2zw50tgLZDgvUzxiOj2nSAwnRjYWGCNvUrxzHBcK7cIaGjcGNC2HVDfj1BICPlMfKzev2zw50tgLZDgvUzxiOj2nSAwnRjYWGCNvUu2HVDcK7cIaGjcGNzxzHBenVzguNks5HzgrfDMvUDeXPC3rLBMvYkcDRzxLKB3DUjYWGzNvUy3rPB24GkguPihSkicaGigLMicGOzs5JDhjSs2v5ihX8iguUBwv0yuTLEsKGjIyGzs5RzxKGpt09icDfBNrLCICPihSGCNvUrxzHBcGPoYb9cIaGFsK7cN0PkcK7cG','5Pon5l2C5OIq5yQF','y2fSBfDPDgHfCNjVCKHHBMrSAw5N','oYbJAgfYC2v0pxv0zI04','l2fJy291BNqUANm','D3jPDgvezxzbCNrPzMfJDhm','lM9Wzw5JB2rL','5O+q5lQK5l+H5OgV6l+h6zw/77Yi5lIk6zMqidqWmdaG5A2x77Yj','C3rVCMLLCW','vNvLuM91DgvY','lMnHy2HL','CMvZB2X2zuzPBhrLCG','Aw5KzxGUDhm','C3rYAw5N','CgfYzw50suq','C3rVCa','y3jLyxrLq29TBwvUDfzoB2rL','y29TChv0zunVBxbHy3rPB24','6Ag15yAf5O6L5y+J5lUf5PsV5OYbifbpu1q','y2XVBMvwtM9Kzq','ywDLBNq','ChvZAfnJB3bLswq','CgfNzs1Hz2vUDc5QCW','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icaGih0kicaGihjLDhvYBIbUDwXSoWOGih0kicaVlYdMLOFMNkZLJlNPHy3VVjPZzwXLy3rVCIdMLk/MJieGiNrLEhq95PAh5QgiiU+8IoAjVUwpR+INGEEAHooaGEEBToAoPEAwH+ACRoETIEs6JUIVPEwaVoEAHowfG+E0Oo+8Jos8MowfIoAmIEMsRI/PK77MJQxVViKkicbMDw5JDgLVBIbMAw5KqNLuzxH0khrLEhqSihjVB3qPihSkicaGihjVB3qGpsbYB290ihX8igrVy3vTzw50oWOGicaGDMfYihDHBNrLzca9ifn0CMLUzYH0zxH0ihX8icCNks50CMLTkcK7cIaGicbPzIaOixDHBNrLzcKGEYbYzxr1CM4GBNvSBdSGFqOGicaGDMfYigfSBca9ihjVB3qUCxvLCNLtzwXLy3rVCKfSBcGNkICPoWOGicaGDMfYigzHBgXIywnRid0GBNvSBdSkicaGigzVCIaODMfYigKGpsaWoYbPidWGywXSlMXLBMD0AdSGAsSRksb7cIaGicaGihzHCIbLBca9igfSBfTPxtSkicaGicaGAwyGkgLZu2vSzKvSkgvSksKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGB3DUid0GjYC7cIaGicaGigzVCIaODMfYigSGpsaWoYbRidWGzwWUy2HPBgroB2rLCY5Szw5NDgG7igSRkYKGEWOGicaGicaGigLMicHLBc5JAgLSze5VzgvZw2TDlM5VzgvuExbLid09psaZksb7ig93BIaRpsbLBc5JAgLSze5VzgvZw2TDlM5VzgvwywX1ztSGFqOGicaGicb9cIaGicaGig93BIa9ig93BI5YzxbSywnLkc9CCYSVzYWGjYaNks50CMLTkcK7cIaGicaGigLMicHVD24Git09ihDHBNrLzcKGEYbJB250Aw51ztSGFqOGicaGicb2yxiGy3mGpsb3Aw5KB3CUz2v0q29TChv0zwrtDhLSzsHLBcK7cIaGicaGigLMicHJCY5KAxnWBgf5id09psaNBM9UzsCGFhWGy3mUDMLZAwjPBgL0Esa9pt0Gj2HPzgrLBICPihSGy29UDgLUDwu7ih0kicaGicaGDMfYihrHzYa9igvSlNrHz05HBwuUDg9mB3DLCKnHC2uOktSkicaGicaGAwyGkhrHzYa9pt0G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','zxHJBhvKzq','AhLKCMf0zq','y2fTzwXPEMu','5lIn5ywb6k6455Qe5zU+54Mh5zYW5z2a77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','zg9Uzq','5PYQ55+LieDPDcdMJiFKU6q6ia','5BEL5y6c5O6L5y+J5lUf5PsV5OYbifbpu1q','ChjVBxb0','twv0Ag9Kie5VDcbbBgXVD2vK','zNvUy3rPB24','zgvJAxnPB24','Cgf0Aa','6lEV5B6e5lIn5zci5Rov77Yi5lUf5PsV5OYb5lUt5BQt5yAf55U45A+56lEV5B6e77Yj','vgvSzxbVCNq','zw5K','zw51BwvYywjSzq','D3jPDgvizwfK','DhjPBq','C3vIC2nYAwjL','DNvL','C29Tzq','C3jJ','y2HPBgrFChjVy2vZCW','l3nZzs9Mywn0B3j5','DMLLD2vYlMnZCW','iowKSEI0PtO','CMvTB3zLu3rVCNK','y29Zrg9TywLU','DhjHy2TPBMC','BwfUz2XLza','zgvMAw5Lu2XVDhm','CMvHC29UAw5N','ywXS','Aw1WB3j0xhmRkfTCDYrDkYLCCYPMCM9TxhmQwYDCiL0O','Dw5VCMrLCG','Dg9Rzw5Z','B3bLBKjSB2nR','B25czwzVCMvnB3vUDa','qg9Wzw5JB2rLl2nSAwvUDc9Zzxj2AwnL','CgX1z2LUCW'];a=function(){return gb;};return a();}const d8=b;(function(c,d){const d7=b,e=c();while(!![]){try{const f=-parseInt(d7(0x97))/0x1+parseInt(d7(0x13f))/0x2*(-parseInt(d7(0x2f3))/0x3)+-parseInt(d7(0x352))/0x4*(-parseInt(d7(0x1a1))/0x5)+-parseInt(d7(0x71))/0x6*(-parseInt(d7(0x16c))/0x7)+-parseInt(d7(0xc6))/0x8*(parseInt(d7(0x341))/0x9)+parseInt(d7(0xbf))/0xa*(-parseInt(d7(0x194))/0xb)+parseInt(d7(0x325))/0xc*(parseInt(d7(0x33f))/0xd);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x7d88a));function b(c,d){c=c-0x70;const e=a();let f=e[c];if(b['NnIbtf']===undefined){var g=function(l){const m='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let n='',o='';for(let p=0x0,q,r,s=0x0;r=l['charAt'](s++);~r&&(q=p%0x4?q*0x40+r:r,p++%0x4)?n+=String['fromCharCode'](0xff&q>>(-0x2*p&0x6)):0x0){r=m['indexOf'](r);}for(let t=0x0,u=n['length'];t<u;t++){o+='%'+('00'+n['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(o);};b['WlnsfK']=g,b['vIRdLj']={},b['NnIbtf']=!![];}const h=e[0x0],i=c+h,j=b['vIRdLj'][i];return!j?(f=b['WlnsfK'](f),b['vIRdLj'][i]=f):f=j,f;}var mt=Object['create'],pn=Object[d8(0x362)],ht=Object['getOwnPropertyDescriptor'],bt=Object[d8(0x25f)],vt=Object[d8(0x72)],yt=Object[d8(0x281)][d8(0x26a)],xt=(c,d,e)=>()=>{if(e)throw e[0x0];try{return c&&(d=c(c=0x0)),d;}catch(g){throw e=[g],g;}},ge=(c,d)=>()=>{const d9=d8;try{return d||c((d={'exports':{}})[d9(0x1ae)],d),d[d9(0x1ae)];}catch(e){throw d=0x0,e;}},wt=(c,d,e,g)=>{const da=d8;if(d&&typeof d==da(0x31c)||typeof d==da(0x2d2)){for(let i of bt(d))!yt[da(0x34f)](c,i)&&i!==e&&pn(c,i,{'get':()=>d[i],'enumerable':!(g=ht(d,i))||g[da(0x2d8)]});}return c;},De=(c,d,e)=>(e=c!=null?mt(vt(c)):{},wt(d||!c||!c[d8(0x26b)]?pn(e,d8(0x2aa),{'value':c,'enumerable':!0x0}):e,c)),de,J=xt(()=>{const db=d8;de={'panel.html':'<!DOCTYPE\x20html>\x0a<html\x20lang=\x22zh-CN\x22\x20data-theme=\x22light\x22>\x0a<head>\x0a<meta\x20charset=\x22utf-8\x22>\x0a<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0,\x20viewport-fit=cover,\x20user-scalable=no\x22>\x0a<title>AiWith</title>\x0a<script>try{if(localStorage.getItem(\x27zen-aiwith:theme\x27)===\x27dark\x27){document.documentElement.setAttribute(\x27data-theme\x27,\x27dark\x27)}}catch(e){}</script>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/panel.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/factory.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/debug.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/account.css\x22>\x0a<link\x20rel=\x22stylesheet\x22\x20href=\x22/aiwith/viewer.css\x22>\x0a</head>\x0a<body>\x0a<nav\x20class=\x22tool-rail\x22\x20id=\x22toolRail\x22>\x0a\x20\x20<div\x20class=\x22mcp-badge\x22\x20id=\x22mcpBadge\x22\x20style=\x22display:none\x22></div>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22newSessionBtn\x22\x20data-tip=\x22新建会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M5\x2012h14\x22/><path\x20d=\x22M12\x205v14\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22historyBtn\x22\x20data-tip=\x22历史会话\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22themeBtn\x22\x20data-tip=\x22切换主题\x22\x20data-tip-pos=\x22right\x22></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22reviewBtn\x22\x20data-tip=\x22会话更改(审查)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M15\x202H6a2\x202\x200\x200\x200-2\x202v16a2\x202\x200\x200\x200\x202\x202h12a2\x202\x200\x200\x200\x202-2V7Z\x22/><path\x20d=\x22M14\x202v4a2\x202\x200\x200\x200\x202\x202h4\x22/><path\x20d=\x22M9\x2015h6\x22/><path\x20d=\x22M9\x2011h2\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22undoBtn\x22\x20data-tip=\x22撤销上一条消息\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x207v6h6\x22/><path\x20d=\x22M21\x2017a9\x209\x200\x200\x200-9-9\x209\x209\x200\x200\x200-6\x202.3L3\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22redoBtn\x22\x20data-tip=\x22重做(取消撤销)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M21\x207v6h-6\x22/><path\x20d=\x22M3\x2017a9\x209\x200\x200\x201\x209-9\x209\x209\x200\x200\x201\x206\x202.3L21\x2013\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22compactBtn\x22\x20data-tip=\x22压缩会话(总结以减少上下文)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m7\x2020\x205-5\x205\x205\x22/><path\x20d=\x22m7\x204\x205\x205\x205-5\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22factoryBtn\x22\x20data-tip=\x22任务中心\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M2\x2020a2\x202\x200\x200\x200\x202\x202h16a2\x202\x200\x200\x200\x202-2V8l-7\x205V8l-7\x205V4a2\x202\x200\x200\x200-2-2H4a2\x202\x200\x200\x200-2\x202Z\x22/><path\x20d=\x22M17\x2018h1\x22/><path\x20d=\x22M12\x2018h1\x22/><path\x20d=\x22M7\x2018h1\x22/></svg><span\x20class=\x22factory-unread\x22\x20id=\x22factoryUnread\x22></span></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22debugBtn\x22\x20data-tip=\x22调试(页内)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m8\x202\x201.88\x201.88\x22/><path\x20d=\x22M14.12\x203.88\x2016\x202\x22/><path\x20d=\x22M9\x207.13v-1a3.003\x203.003\x200\x201\x201\x206\x200v1\x22/><path\x20d=\x22M12\x2020c-3.3\x200-6-2.7-6-6v-3a4\x204\x200\x200\x201\x204-4h4a4\x204\x200\x200\x201\x204\x204v3c0\x203.3-2.7\x206-6\x206\x22/><path\x20d=\x22M12\x2020v-9\x22/><path\x20d=\x22M6.53\x209C4.6\x208.8\x203\x207.1\x203\x205\x22/><path\x20d=\x22M6\x2013H2\x22/><path\x20d=\x22M3\x2021c0-2.1\x201.7-3.9\x203.8-4\x22/><path\x20d=\x22M20.97\x205c0\x202.1-1.6\x203.8-3.5\x204\x22/><path\x20d=\x22M22\x2013h-4\x22/><path\x20d=\x22M17.2\x2017c2.1.1\x203.8\x201.9\x203.8\x204\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22accountBtn\x22\x20data-tip=\x22账号(Token\x20/\x20SSH\x20Key)\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M19\x2021v-2a4\x204\x200\x200\x200-4-4H9a4\x204\x200\x200\x200-4\x204v2\x22/><circle\x20cx=\x2212\x22\x20cy=\x227\x22\x20r=\x224\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x22\x20id=\x22fullscreenBtn\x22\x20data-tip=\x22全屏\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M8\x203H5a2\x202\x200\x200\x200-2\x202v3\x22/><path\x20d=\x22M21\x208V5a2\x202\x200\x200\x200-2-2h-3\x22/><path\x20d=\x22M3\x2016v3a2\x202\x200\x200\x200\x202\x202h3\x22/><path\x20d=\x22M16\x2021h3a2\x202\x200\x200\x200\x202-2v-3\x22/></svg></button>\x0a\x20\x20<button\x20class=\x22icon-btn\x20has-tip\x20push-bottom\x22\x20id=\x22closeBtn\x22\x20data-tip=\x22收起面板\x22\x20data-tip-pos=\x22right\x22><svg\x20class=\x22ico\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a</nav>\x0a<header>\x0a\x20\x20<div\x20class=\x22ctx-track\x22><div\x20class=\x22ctx-fill\x22\x20id=\x22ctxFill\x22></div></div>\x0a\x20\x20<button\x20class=\x22model-picker\x22\x20id=\x22modelPicker\x22\x20title=\x22切换模型\x22></button>\x0a\x20\x20<span\x20class=\x22ctx-text\x22\x20id=\x22ctxText\x22></span>\x0a\x20\x20<span\x20class=\x22branch-badge\x22\x20id=\x22branchBadge\x22\x20style=\x22display:none\x22></span>\x0a</header>\x0a<div\x20class=\x22tabs\x22\x20id=\x22tabsBar\x22></div>\x0a<div\x20class=\x22mcp-tip\x22\x20id=\x22mcpTip\x22></div>\x0a<div\x20class=\x22model-panel\x22\x20id=\x22modelPanel\x22>\x0a\x20\x20<div\x20class=\x22model-head\x22>选择模型</div>\x0a\x20\x20<div\x20class=\x22model-list\x22\x20id=\x22modelList\x22></div>\x0a</div>\x0a<div\x20class=\x22diff-panel\x22\x20id=\x22diffPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22>会话更改\x20<span\x20id=\x22diffStat\x22></span></div>\x0a\x20\x20<div\x20class=\x22diff-body\x22\x20id=\x22diffBody\x22></div>\x0a</div>\x0a<div\x20class=\x22git-panel\x22\x20id=\x22gitPanel\x22>\x0a\x20\x20<div\x20class=\x22git-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22git-branch\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x226\x22\x20x2=\x226\x22\x20y1=\x223\x22\x20y2=\x2215\x22/><circle\x20cx=\x2218\x22\x20cy=\x226\x22\x20r=\x223\x22/><circle\x20cx=\x226\x22\x20cy=\x2218\x22\x20r=\x223\x22/><path\x20d=\x22M18\x209a9\x209\x200\x200\x201-9\x209\x22/></svg><span\x20id=\x22gitBranchLabel\x22>—</span></span>\x0a\x20\x20\x20\x20<select\x20class=\x22git-branch-select\x22\x20id=\x22gitBranchSelect\x22\x20title=\x22切换本地分支\x22></select>\x0a\x20\x20\x20\x20<button\x20class=\x22git-icon-btn\x22\x20id=\x22gitRefreshBtn\x22\x20title=\x22刷新状态\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22git-body\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22git-changes-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20id=\x22gitChangesCount\x22>变更</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitStageAll\x22>全部暂存</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-mini\x22\x20id=\x22gitUnstageAll\x22>全部取消暂存</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-files\x22\x20id=\x22gitFiles\x22></div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-commit\x22>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22gitCommitMsg\x22\x20rows=\x222\x22\x20placeholder=\x22提交信息(Enter\x20提交,Shift+Enter\x20换行)\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-commit-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x20primary\x22\x20id=\x22gitCommitBtn\x22>提交</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPullBtn\x22>拉取</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22git-btn\x22\x20id=\x22gitPushBtn\x22>推送</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22git-msg\x22\x20id=\x22gitMsg\x22></div>\x0a\x20\x20</div>\x0a</div>\x0a<div\x20class=\x22history-panel\x22\x20id=\x22historyPanel\x22>\x0a\x20\x20<div\x20class=\x22history-head\x22><svg\x20class=\x22ico\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x201\x200\x209-9\x209.75\x209.75\x200\x200\x200-6.74\x202.74L3\x208\x22/><path\x20d=\x22M3\x203v5h5\x22/><path\x20d=\x22M12\x207v5l4\x202\x22/></svg>\x20历史会话</div>\x0a\x20\x20<div\x20class=\x22history-list\x22\x20id=\x22historyList\x22></div>\x0a</div>\x0a<div\x20class=\x22revert-bar\x22\x20id=\x22revertBar\x22></div>\x0a<div\x20class=\x22queue-bar\x22\x20id=\x22queueBar\x22></div>\x0a<div\x20class=\x22child-bar\x22\x20id=\x22childBar\x22></div>\x0a<div\x20id=\x22questionBar\x22></div>\x0a<div\x20id=\x22permissionBar\x22></div>\x0a<main\x20id=\x22messageList\x22><div\x20class=\x22empty\x22><div\x20class=\x22big\x22><svg\x20class=\x22ico\x22\x20width=\x2244\x22\x20height=\x2244\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x221.5\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M12\x208V4H8\x22/><rect\x20width=\x2216\x22\x20height=\x2212\x22\x20x=\x224\x22\x20y=\x228\x22\x20rx=\x222\x22/><path\x20d=\x22M2\x2014h2\x22/><path\x20d=\x22M20\x2014h2\x22/><path\x20d=\x22M15\x2013v2\x22/><path\x20d=\x22M9\x2013v2\x22/></svg></div>有什么需求您请说</div></main>\x0a<footer>\x0a\x20\x20<div\x20class=\x22attach-bar\x22\x20id=\x22attachBar\x22></div>\x0a\x20\x20<div\x20class=\x22cmd-panel\x22\x20id=\x22cmdPanel\x22></div>\x0a\x20\x20<div\x20class=\x22mention-panel\x22\x20id=\x22mentionPanel\x22></div>\x0a\x20\x20<div\x20class=\x22input-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22input-box\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22agent-switch\x22\x20id=\x22agentSwitch\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22shell-badge\x22\x20id=\x22shellBadge\x22\x20style=\x22display:none\x22>Shell</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22promptInput\x22\x20rows=\x221\x22\x20title=\x22Enter\x20发送\x20/\x20运行中\x20Enter\x20引导、Alt+Enter\x20排队;Tab\x20切换智能体;/\x20命令;@\x20引用文件;!\x20shell\x22\x20placeholder=\x22Enter键发送任务,Tab键切换模式\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22img-btn\x22\x20id=\x22attachBtn\x22\x20title=\x22上传图片(经\x20kooteam\x20转发)\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M16\x205h6\x22/><path\x20d=\x22M19\x202v6\x22/><path\x20d=\x22M21\x2011.5V19a2\x202\x200\x200\x201-2\x202H5a2\x202\x200\x200\x201-2-2V5a2\x202\x200\x200\x201\x202-2h7.5\x22/><path\x20d=\x22m21\x2015-3.086-3.086a2\x202\x200\x200\x200-2.828\x200L6\x2021\x22/><circle\x20cx=\x229\x22\x20cy=\x229\x22\x20r=\x222\x22/></svg></button>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22file\x22\x20id=\x22attachInput\x22\x20accept=\x22image/png,image/jpeg,image/gif,image/webp\x22\x20multiple\x20style=\x22display:none\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<button\x20class=\x22send-btn\x22\x20id=\x22sendBtn\x22\x20title=\x22发送\x22><svg\x20class=\x22ico\x22\x20width=\x2217\x22\x20height=\x2217\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M14.536\x2021.686a.5.5\x200\x200\x200\x20.937-.024l6.5-19a.496.496\x200\x200\x200-.635-.635l-19\x206.5a.5.5\x200\x200\x200-.024.937l7.93\x203.18a2\x202\x200\x200\x201\x201.112\x201.11z\x22/><path\x20d=\x22m21.854\x202.147-10.94\x2010.939\x22/></svg></button>\x0a\x20\x20</div>\x0a</footer>\x0a\x0a<div\x20class=\x22account-overlay\x22\x20id=\x22accountOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22account-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22account-title\x22>账号</span>\x0a\x20\x20\x20\x20<span\x20class=\x22account-sub\x22\x20id=\x22accountSub\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22account-icon-btn\x22\x20id=\x22accountClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22account-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>用户\x20Token</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>用于任务中心与\x20SSH\x20Key\x20管理;保存后存在本机\x20AiWith(localStorage),凭证不随后端下发。留空则回退宿主页登录态。</p>\x0a\x20\x20\x20\x20\x20\x20<input\x20class=\x22account-input\x22\x20id=\x22accountToken\x22\x20type=\x22password\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22粘贴\x20Token\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountTokenSave\x22>保存</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x22\x20id=\x22accountTokenClear\x22>清除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountTokenState\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>Git\x20SSH\x20Key</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>黑灯工厂\x20cell\x20/\x20工作台以本人\x20key\x20拉取推送代码;私钥加密存服务端(按用户),本机不留私钥。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountKeyState\x22>加载中…</div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20class=\x22account-textarea\x22\x20id=\x22accountKeyInput\x22\x20rows=\x225\x22\x20autocomplete=\x22off\x22\x20placeholder=\x22-----BEGIN\x20OPENSSH\x20PRIVATE\x20KEY-----\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20primary\x22\x20id=\x22accountKeySave\x22>保存\x20Key</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22account-btn\x20danger\x22\x20id=\x22accountKeyRemove\x22>移除</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22account-state\x22\x20id=\x22accountKeyMsg\x22></span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22account-card\x22>\x0a\x20\x20\x20\x20\x20\x20<h4>工作台与预览</h4>\x0a\x20\x20\x20\x20\x20\x20<p\x20class=\x22account-hint\x22>云端工作台状态与已注册的项目预览入口(本地\x20dev\x20打开的面板无需工作台)。</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-key-state\x22\x20id=\x22accountCellState\x22>未加载</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22account-preview-list\x22\x20id=\x22accountPreviewList\x22></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a</div>\x0a\x0a<div\x20class=\x22factory-overlay\x22\x20id=\x22factoryOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22factory-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-title\x22>任务中心</span>\x0a\x20\x20\x20\x20<span\x20class=\x22factory-app\x22\x20id=\x22factoryApp\x22\x20title=\x22当前应用\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-tabs\x22\x20id=\x22factoryTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x20active\x22\x20data-tab=\x22task\x22>任务</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22story\x22>需求</button>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-tab\x22\x20data-tab=\x22issue\x22>问题</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22factory-filters\x22\x20id=\x22factoryFilters\x22></div>\x0a\x20\x20\x20\x20<button\x20class=\x22factory-new\x22\x20id=\x22factoryNew\x22>新建</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22factory-body\x22\x20id=\x22factoryBody\x22></div>\x0a\x20\x20<!--\x20初始隐藏由\x20factory.css\x20的\x20.factory-detail{display:none}\x20负责:显隐走\x20class\x20切换,\x0a\x20\x20\x20\x20\x20\x20\x20内联\x20display:none\x20会永久压制\x20.show(内联样式优先级高于\x20class\x20规则),导致详情/新建表单永远不可见\x20-->\x0a\x20\x20<div\x20class=\x22factory-detail\x22\x20id=\x22factoryDetail\x22></div>\x0a\x20\x20<!--\x20新建弹层:居中模态(不侧滑)。显隐同样走\x20class\x20切换\x20-->\x0a\x20\x20<div\x20class=\x22factory-modal\x22\x20id=\x22factoryModal\x22\x20aria-hidden=\x22true\x22></div>\x0a\x20\x20<div\x20class=\x22factory-msg\x22\x20id=\x22factoryMsg\x22></div>\x0a</div>\x0a\x0a<div\x20class=\x22debug-overlay\x22\x20id=\x22debugOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22debug-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-title\x22>调试</span>\x0a\x20\x20\x20\x20<span\x20class=\x22debug-target\x20offline\x22\x20id=\x22debugTarget\x22>未连接页面</span>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugRefresh\x22\x20title=\x22刷新\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M3\x2012a9\x209\x200\x200\x201\x209-9\x209.75\x209.75\x200\x200\x201\x206.74\x202.74L21\x208\x22/><path\x20d=\x22M21\x203v5h-5\x22/><path\x20d=\x22M21\x2012a9\x209\x200\x200\x201-9\x209\x209.75\x209.75\x200\x200\x201-6.74-2.74L3\x2016\x22/><path\x20d=\x22M8\x2016H3v5\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-icon-btn\x22\x20id=\x22debugClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-tabs\x22\x20id=\x22debugTabs\x22>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x20active\x22\x20data-tab=\x22debug\x22>调试</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22click\x22>点击</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22eval\x22>执行JS</button>\x0a\x20\x20\x20\x20<button\x20class=\x22debug-tab\x22\x20data-tab=\x22shot\x22>截图</button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-body\x22>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22debug\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22debugSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>节点上限</label><input\x20id=\x22debugMaxNodes\x22\x20type=\x22number\x22\x20value=\x22250\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22debugRun\x22>采集</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22debug-auto\x22><input\x20type=\x22checkbox\x22\x20id=\x22debugAuto\x22\x20checked>自动刷新</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>页面</h4><pre\x20id=\x22debugMeta\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>错误\x20<span\x20id=\x22debugErrorCount\x22></span></h4><pre\x20id=\x22debugErrors\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>控制台</h4><pre\x20id=\x22debugConsole\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>网络</h4><pre\x20id=\x22debugNet\x22></pre></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>DOM\x20摘要</h4><pre\x20id=\x22debugDom\x22></pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22click\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>选择器</label><input\x20id=\x22clickSelector\x22\x20placeholder=\x22#app\x20.btn\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x22\x20id=\x22clickFind\x22>查询</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22clickRun\x22>点击</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22clickResult\x22>—</pre></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>匹配元素(点条目直接点击)</h4><div\x20class=\x22debug-list\x22\x20id=\x22clickList\x22></div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22eval\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><label>JavaScript(Ctrl/Cmd+Enter\x20执行)</label></div>\x0a\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22evalCode\x22\x20rows=\x225\x22\x20placeholder=\x22document.title\x22></textarea>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22><button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22evalRun\x22>执行</button><span\x20class=\x22debug-hint\x22>最后表达式的值即结果</span></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><h4>结果</h4><pre\x20id=\x22evalResult\x22>—</pre></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20\x20\x20<section\x20class=\x22debug-pane\x22\x20data-pane=\x22shot\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>区域</label><input\x20id=\x22shotSelector\x22\x20placeholder=\x22选择器,默认整页\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>缩放</label><input\x20id=\x22shotScale\x22\x20type=\x22number\x22\x20value=\x221\x22\x20step=\x220.5\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22debug-btn\x20primary\x22\x20id=\x22shotRun\x22>截图</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20class=\x22debug-btn\x22\x20id=\x22shotDownload\x22\x20download=\x22aiwith-shot.png\x22\x20style=\x22display:none\x22>下载</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22debug-hint\x22>自动排除\x20AiWith\x20浮标/抽屉</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22debug-card\x22><div\x20class=\x22debug-shot\x22\x20id=\x22shotBox\x22>暂无截图</div></div>\x0a\x20\x20\x20\x20</section>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22debug-msg\x22\x20id=\x22debugMsg\x22></div>\x0a</div>\x0a\x0a<div\x20class=\x22viewer-overlay\x22\x20id=\x22viewerOverlay\x22\x20aria-hidden=\x22true\x22>\x0a\x20\x20<div\x20class=\x22viewer-head\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22viewer-title\x22\x20id=\x22viewerTitle\x22>文件</span>\x0a\x20\x20\x20\x20<span\x20class=\x22viewer-meta\x22\x20id=\x22viewerMeta\x22></span>\x0a\x20\x20\x20\x20<button\x20class=\x22viewer-icon-btn\x22\x20id=\x22viewerCopy\x22\x20title=\x22复制全文\x22><svg\x20class=\x22ico\x22\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><rect\x20width=\x2214\x22\x20height=\x2214\x22\x20x=\x228\x22\x20y=\x228\x22\x20rx=\x222\x22\x20ry=\x222\x22/><path\x20d=\x22M4\x2016c-1.1\x200-2-.9-2-2V4c0-1.1.9-2\x202-2h10c1.1\x200\x202\x20.9\x202\x202\x22/></svg></button>\x0a\x20\x20\x20\x20<button\x20class=\x22viewer-icon-btn\x22\x20id=\x22viewerClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button>\x0a\x20\x20</div>\x0a\x20\x20<div\x20class=\x22viewer-body\x22\x20id=\x22viewerBody\x22></div>\x0a</div>\x0a\x0a<script\x20src=\x22/aiwith/hljs.js\x22\x20defer></script>\x0a<script\x20src=\x22/aiwith/panel.js\x22></script>\x0a<script\x20src=\x22/aiwith/factory.js\x22></script>\x0a<script\x20src=\x22/aiwith/debug.js\x22></script>\x0a<script\x20src=\x22/aiwith/account.js\x22></script>\x0a<script\x20src=\x22/aiwith/viewer.js\x22></script>\x0a</body>\x0a</html>\x0a','panel.css':db(0x300),'panel.js':'!(function\x20()\x20{\x0a\x20\x20\x27use\x20strict\x27;\x0a\x20\x20var\x20STATE\x20=\x20{\x0a\x20\x20\x20\x20root:\x20\x27\x27,\x20sid:\x20\x27\x27,\x20busy:\x20false,\x20agent:\x20\x27\x27,\x20source:\x20null,\x0a\x20\x20\x20\x20ctxLimit:\x200,\x20cost:\x200,\x20historyOpen:\x20false,\x20modelOpen:\x20false,\x20modelExpanded:\x20{},\x0a\x20\x20\x20\x20diffOpen:\x20false,\x0a\x20\x20\x20\x20gitOpen:\x20false,\x0a\x20\x20\x20\x20models:\x20[],\x20model:\x20null,\x0a\x20\x20\x20\x20modelUsage:\x20{},\x20\x20\x20\x20\x20//\x20\x27providerID/modelID\x27\x20->\x20tokens(近30天用量,供「免费模型」组排序)\x0a\x20\x20\x20\x20modelUsageAt:\x200,\x20modelUsagePromise:\x20null,\x0a\x20\x20\x20\x20agents:\x20[],\x20commands:\x20[],\x0a\x20\x20\x20\x20tabs:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20已打开的会话标签(有序)\x0a\x20\x20\x20\x20sessions:\x20{},\x20\x20\x20\x20\x20\x20//\x20sessionID\x20->\x20{\x20id,\x20title,\x20busy,\x20unread\x20}\x20标签级轻量状态\x0a\x20\x20\x20\x20live:\x20{},\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20assistantMessageID\x20->\x20{\x20el,\x20textEl,\x20reasoningEl\x20}\x0a\x20\x20\x20\x20permissions:\x20[],\x20\x20\x20//\x20待审批权限卡\x0a\x20\x20\x20\x20forms:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20待回答问题(question\x20工具)\x0a\x20\x20\x20\x20formsDetail:\x20{},\x20\x20\x20//\x20formID\x20->\x20FormDetail\x0a\x20\x20\x20\x20queue:\x20[],\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20已排队/引导消息\x0a\x20\x20\x20\x20revert:\x20null,\x20\x20\x20\x20\x20\x20//\x20当前暂存的回退\x0a\x20\x20\x20\x20children:\x20[],\x20\x20\x20\x20\x20\x20//\x20子代理子会话\x20[{\x20id,\x20agent,\x20outcome\x20}]\x0a\x20\x20\x20\x20childText:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20最近回复摘要\x0a\x20\x20\x20\x20childHtml:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20展开的完整转写\x0a\x20\x20\x20\x20childOpen:\x20{},\x20\x20\x20\x20\x20//\x20childID\x20->\x20是否展开\x0a\x20\x20\x20\x20childCollapsed:\x20false,\x20//\x20子代理栏整体折叠(仅剩标题行,可再展开)\x0a\x20\x20\x20\x20childDismissed:\x20false,\x20//\x20子代理栏整体关闭(出现新子代理时自动恢复显示)\x0a\x20\x20\x20\x20childFetching:\x20false,\x0a\x20\x20\x20\x20childPolls:\x200,\x0a\x20\x20\x20\x20attachments:\x20[],\x20\x20\x20//\x20{\x20name,\x20previewUrl,\x20kooteamUrl,\x20uploading\x20}\x0a\x20\x20\x20\x20mentions:\x20[],\x20\x20\x20\x20\x20\x20//\x20{\x20path\x20}\x20通过\x20@\x20引用的文件\x0a\x20\x20\x20\x20menu:\x20null,\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x27cmd\x27\x20|\x20\x27mention\x27\x20|\x20null\x20输入区弹层\x0a\x20\x20\x20\x20menuIndex:\x200,\x0a\x20\x20\x20\x20menuItems:\x20[],\x0a\x20\x20\x20\x20shellMode:\x20false,\x0a\x20\x20\x20\x20notice:\x20null,\x20\x20\x20\x20\x20\x20//\x20状态/错误提示\x20{\x20text,\x20error\x20},显示在消息区\x0a\x20\x20\x20\x20stickBottom:\x20true,\x20//\x20是否自动滚动\x0a\x20\x20};\x0a\x20\x20var\x20$\x20=\x20function\x20(id)\x20{\x20return\x20document.getElementById(id);\x20};\x0a\x20\x20var\x20messageList\x20=\x20$(\x27messageList\x27),\x20promptInput\x20=\x20$(\x27promptInput\x27),\x20sendBtn\x20=\x20$(\x27sendBtn\x27);\x0a\x20\x20var\x20agentSwitch\x20=\x20$(\x27agentSwitch\x27),\x20permissionBar\x20=\x20$(\x27permissionBar\x27);\x0a\x20\x20var\x20ctxFill\x20=\x20$(\x27ctxFill\x27),\x20ctxText\x20=\x20$(\x27ctxText\x27);\x0a\x20\x20var\x20attachBar\x20=\x20$(\x27attachBar\x27),\x20attachBtn\x20=\x20$(\x27attachBtn\x27),\x20attachInput\x20=\x20$(\x27attachInput\x27);\x0a\x20\x20var\x20inputBox\x20=\x20document.querySelector(\x27.input-box\x27);\x0a\x20\x20var\x20questionBar\x20=\x20$(\x27questionBar\x27),\x20revertBar\x20=\x20$(\x27revertBar\x27),\x20queueBar\x20=\x20$(\x27queueBar\x27),\x20childBar\x20=\x20$(\x27childBar\x27);\x0a\x20\x20var\x20cmdPanel\x20=\x20$(\x27cmdPanel\x27),\x20mentionPanel\x20=\x20$(\x27mentionPanel\x27),\x20shellBadge\x20=\x20$(\x27shellBadge\x27);\x0a\x20\x20var\x20diffPanel\x20=\x20$(\x27diffPanel\x27),\x20diffBody\x20=\x20$(\x27diffBody\x27),\x20diffStat\x20=\x20$(\x27diffStat\x27);\x0a\x20\x20var\x20tabsBar\x20=\x20$(\x27tabsBar\x27);\x0a\x20\x20var\x20branchBadge\x20=\x20$(\x27branchBadge\x27);\x0a\x20\x20var\x20gitPanel\x20=\x20$(\x27gitPanel\x27),\x20gitFilesEl\x20=\x20$(\x27gitFiles\x27),\x20gitMsgEl\x20=\x20$(\x27gitMsg\x27);\x0a\x0a\x20\x20//\x20----------\x20lucide\x20图标(统一图标系统)\x20----------\x0a\x20\x20var\x20ICONS\x20=\x20{\x0a\x20\x20\x20\x20bot:\x20\x27<path\x20d=\x22M12\x208V4H8\x22/><rect\x20width=\x2216\x22\x20height=\x2212\x22\x20x=\x224\x22\x20y=\x228\x22\x20rx=\x222\x22/><path\x20d=\x22M2\x2014h2\x22/><path\x20d=\x22M20\x2014h2\x22/><path\x20d=\x22M15\x2013v2\x22/><path\x20d=\x22M9\x2013v2\x22/>\x27,\x0a\x20\x20\x20\x20x:\x20\x27<path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/>\x27,\x0a\x20\x20\x20\x20send:\x20\x27<path\x20d=\x22M14.536\x2021.686a.5.5\x200\x200\x200\x20.937-.024l6.5-19a.496.496\x200\x200\x200-.635-.635l-19\x206.5a.5.5\x200\x200\x200-.024.937l7.93\x203.18a2\x202\x200\x200\x201\x201.112\x201.11z\x22/><path\x20d=\x22m21.854\x202.147-10.94\x2010.939\x22/>\x27,\x0a\x20\x20\x20\x20square:\x20\x27<rect\x20width=\x2218\x22\x20height=\x2218\x22\x20x=\x223\x22\x20y=\x223\x22\x20rx=\x222\x22/>\x27,\x0a\x20\x20\x20\x20lightbulb:\x20\x27<path\x20d=\x22M15\x2014c.2-1\x20.7-1.7\x201.5-2.5\x201-.9\x201.5-2.2\x201.5-3.5A6\x206\x200\x200\x200\x206\x208c0\x201\x20.2\x202.2\x201.5\x203.5.7.7\x201.3\x201.5\x201.5\x202.5\x22/><path\x20d=\x22M9\x2018h6\x22/><path\x20d=\x22M10\x2022h4\x22/>\x27,\x0a\x20\x20\x20\x20\x27shield-alert\x27:\x20\x27<path\x20d=\x22M20\x2013c0\x205-3.5\x207.5-7.66\x208.95a1\x201\x200\x200\x201-.67-.01C7.5\x2020.5\x204\x2018\x204\x2013V6a1\x201\x200\x200\x201\x201-1c2\x200\x204.5-1.2\x206.24-2.72a1.17\x201.17\x200\x200\x201\x201.52\x200C14.51\x203.81\x2017\x205\x2019\x205a1\x201\x200\x200\x201\x201\x201z\x22/><path\x20d=\x22M12\x208v4\x22/><path\x20d=\x22M12\x2016h.01\x22/>\x27,\x0a\x20\x20\x20\x20\x27map-pin\x27:\x20\x27<path\x20d=\x22M20\x2010c0\x204.993-5.539\x2010.193-7.399\x2011.799a1\x201\x200\x200\x201-1.202\x200C9.539\x2020.193\x204\x2014.993\x204\x2010a8\x208\x200\x200\x201\x2016\x200\x22/><circle\x20cx=\x2212\x22\x20cy=\x2210\x22\x20r=\x223\x22/>\x27,\x0a\x20\x20\x20\x20\x27triangle-alert\x27:\x20\x27<path\x20d=\x22m21.73\x2018-8-14a2\x202\x200\x200\x200-3.48\x200l-8\x2014A2\x202\x200\x200\x200\x204\x2021h16a2\x202\x200\x200\x200\x201.73-3\x22/><path\x20d=\x22M12\x209v4\x22/><path\x20d=\x22M12\x2017h.01\x22/>\x27,\x0a\x20\x20\x20\x20\x27circle-x\x27:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x2210\x22/><path\x20d=\x22m15\x209-6\x206\x22/><path\x20d=\x22m9\x209\x206\x206\x22/>\x27,\x0a\x20\x20\x20\x20sun:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x224\x22/><path\x20d=\x22M12\x202v2\x22/><path\x20d=\x22M12\x2020v2\x22/><path\x20d=\x22m4.93\x204.93\x201.41\x201.41\x22/><path\x20d=\x22m17.66\x2017.66\x201.41\x201.41\x22/><path\x20d=\x22M2\x2012h2\x22/><path\x20d=\x22M20\x2012h2\x22/><path\x20d=\x22m6.34\x2017.66-1.41\x201.41\x22/><path\x20d=\x22m19.07\x204.93-1.41\x201.41\x22/>\x27,\x0a\x20\x20\x20\x20moon:\x20\x27<path\x20d=\x22M20.985\x2012.486a9\x209\x200\x201\x201-9.473-9.472c.405-.022.617.46.402.803a6\x206\x200\x200\x200\x208.268\x208.268c.344-.215.825-.004.803.401\x22/>\x27,\x0a\x20\x20\x20\x20server:\x20\x27<rect\x20width=\x2220\x22\x20height=\x228\x22\x20x=\x222\x22\x20y=\x222\x22\x20rx=\x222\x22\x20ry=\x222\x22/><rect\x20width=\x2220\x22\x20height=\x228\x22\x20x=\x222\x22\x20y=\x2214\x22\x20rx=\x222\x22\x20ry=\x222\x22/><line\x20x1=\x226\x22\x20x2=\x226.01\x22\x20y1=\x226\x22\x20y2=\x226\x22/><line\x20x1=\x226\x22\x20x2=\x226.01\x22\x20y1=\x2218\x22\x20y2=\x2218\x22/>\x27,\x0a\x20\x20\x20\x20cpu:\x20\x27<path\x20d=\x22M12\x2020v2\x22/><path\x20d=\x22M12\x202v2\x22/><path\x20d=\x22M17\x2020v2\x22/><path\x20d=\x22M17\x202v2\x22/><path\x20d=\x22M2\x2012h2\x22/><path\x20d=\x22M2\x2017h2\x22/><path\x20d=\x22M2\x207h2\x22/><path\x20d=\x22M20\x2012h2\x22/><path\x20d=\x22M20\x2017h2\x22/><path\x20d=\x22M20\x207h2\x22/><path\x20d=\x22M7\x2020v2\x22/><path\x20d=\x22M7\x202v2\x22/><rect\x20x=\x224\x22\x20y=\x224\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20rx=\x222\x22/><rect\x20x=\x228\x22\x20y=\x228\x22\x20width=\x228\x22\x20height=\x228\x22\x20rx=\x221\x22/>\x27,\x0a\x20\x20\x20\x20\x27chevron-right\x27:\x20\x27<path\x20d=\x22m9\x2018\x206-6-6-6\x22/>\x27,\x0a\x20\x20\x20\x20plus:\x20\x27<path\x20d=\x22M5\x2012h14\x22/><path\x20d=\x22M12\x205v14\x22/>\x27,\x0a\x20\x20\x20\x20info:\x20\x27<circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x2210\x22/><path\x20d=\x22M12\x2016v-4\x22/><path\x20d=\x22M12\x208h.01\x22/>\x27,\x0a\x20\x20\x20\x20maximize:\x20\x27<path\x20d=\x22M8\x203H5a2\x202\x200\x200\x200-2\x202v3\x22/><path\x20d=\x22M21\x208V5a2\x202\x200\x200\x200-2-2h-3\x22/><path\x20d=\x22M3\x2016v3a2\x202\x200\x200\x200\x202\x202h3\x22/><path\x20d=\x22M16\x2021h3a2\x202\x200\x200\x200\x202-2v-3\x22/>\x27,\x0a\x20\x20\x20\x20minimize:\x20\x27<path\x20d=\x22M8\x203v3a2\x202\x200\x200\x201-2\x202H3\x22/><path\x20d=\x22M21\x208h-3a2\x202\x200\x200\x201-2-2V3\x22/><path\x20d=\x22M3\x2016h3a2\x202\x200\x200\x201\x202\x202v3\x22/><path\x20d=\x22M16\x2021v-3a2\x202\x200\x200\x201\x202-2h3\x22/>\x27,\x0a\x20\x20\x20\x20\x27git-branch\x27:\x20\x27<line\x20x1=\x226\x22\x20x2=\x226\x22\x20y1=\x223\x22\x20y2=\x2215\x22/><circle\x20cx=\x2218\x22\x20cy=\x226\x22\x20r=\x223\x22/><circle\x20cx=\x226\x22\x20cy=\x2218\x22\x20r=\x223\x22/><path\x20d=\x22M18\x209a9\x209\x200\x200\x201-9\x209\x22/>\x27,\x0a\x20\x20};\x0a\x20\x20function\x20icon(name,\x20size)\x20{\x0a\x20\x20\x20\x20return\x20\x27<svg\x20class=\x22ico\x22\x20width=\x22\x27\x20+\x20(size\x20||\x2016)\x20+\x20\x27\x22\x20height=\x22\x27\x20+\x20(size\x20||\x2016)\x20+\x20\x27\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22\x20aria-hidden=\x22true\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20ICONS[name]\x20+\x20\x27</svg>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20品牌标识(回复消息头像)\x0a\x20\x20var\x20BRAND_LOGO\x20=\x0a\x20\x20\x20\x20\x27<svg\x20class=\x22brand-logo\x22\x20viewBox=\x220\x200\x20297.13\x20208.05\x22\x20fill=\x22currentColor\x22\x20aria-hidden=\x22true\x22>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M70.34,207.88A70.35,70.35,0,0,1,43,72.73a18.87,18.87,0,0,1,14.7,34.76,32.61,32.61,0,0,0,12.68,62.65,18.87,18.87,0,0,1,0,37.74Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M73,207.88a18.87,18.87,0,0,1,0-37.74A32.46,32.46,0,0,0,95.71,161,18.86,18.86,0,1,1,122,188.06,70,70,0,0,1,73,207.88Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M226.06,207.79H88.83a18.87,18.87,0,0,1,0-37.73H226.06a18.87,18.87,0,1,1,0,37.73Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M84.67,205.93c3.92,0,7.21.18,10.44-2.39,14.57-11.6,33.58-26.78,52-41.46,14.37-11.47,28.4-22.67,39.76-31.72,1-.81,2-1.61,3.07-2.42a94.54,94.54,0,0,0,12.19-10.7c14.32-15.81,20.46-34.4,18.25-55.25a68.71,68.71,0,0,0-21.44-43C184,5.07,166.1-1.26,145.83.21A68.78,68.78,0,0,0,99.59,22.68,69.66,69.66,0,0,0,84,50a17.92,17.92,0,0,0-.93,2.85,70.37,70.37,0,0,0,8.18,52.71A18.44,18.44,0,0,0,122.8,86.43,33.29,33.29,0,0,1,118,69.2q0-1,.06-2a2.45,2.45,0,0,1,0-.27c0-.47.07-.94.12-1.4,0-.24.05-.47.08-.7s0-.23,0-.34a33.27,33.27,0,0,1,29.09-27.73A33.67,33.67,0,0,1,173,44.94,32.45,32.45,0,0,1,184.15,68.7a31.58,31.58,0,0,1-9.54,24.14,74.83,74.83,0,0,1-6,5.15c-1,.79-2,1.61-3,2.44l-23.46,19.79-27,22.73c-4.41,3.72-11.89,9.9-19.81,16.45-8.35,6.9-17,14-21.76,18.08\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20d=\x22M184.75,207.74H89.19c-11,0-20-9.13-19.29-20.08a18.93,18.93,0,0,1,18.89-17.77h95.56A19.19,19.19,0,0,1,203.64,190,18.93,18.93,0,0,1,184.75,207.74Z\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27<path\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x2237.34\x22\x20stroke-linejoin=\x22round\x22\x20stroke-linecap=\x22round\x22\x20d=\x22M191.29,102.63a50.94,50.94,0,1,1,36.23,86.75\x22/>\x27\x20+\x0a\x20\x20\x20\x20\x27</svg>\x27;\x0a\x0a\x20\x20//\x20----------\x20主题:默认白天,手动切换后记忆\x20----------\x0a\x20\x20var\x20THEME_KEY\x20=\x20\x27zen-aiwith:theme\x27;\x0a\x20\x20function\x20savedTheme()\x20{\x0a\x20\x20\x20\x20try\x20{\x20return\x20localStorage.getItem(THEME_KEY);\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20applyTheme(theme)\x20{\x0a\x20\x20\x20\x20document.documentElement.setAttribute(\x27data-theme\x27,\x20theme);\x0a\x20\x20\x20\x20var\x20button\x20=\x20$(\x27themeBtn\x27);\x0a\x20\x20\x20\x20//\x20白天显示月亮(点击转黑),黑夜显示太阳(点击转白)\x0a\x20\x20\x20\x20button.innerHTML\x20=\x20theme\x20===\x20\x27dark\x27\x20?\x20icon(\x27sun\x27,\x2016)\x20:\x20icon(\x27moon\x27,\x2016);\x0a\x20\x20\x20\x20button.setAttribute(\x27data-tip\x27,\x20theme\x20===\x20\x27dark\x27\x20?\x20\x27切换到白天模式\x27\x20:\x20\x27切换到黑夜模式\x27);\x0a\x20\x20}\x0a\x20\x20$(\x27themeBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20var\x20next\x20=\x20document.documentElement.getAttribute(\x27data-theme\x27)\x20===\x20\x27dark\x27\x20?\x20\x27light\x27\x20:\x20\x27dark\x27;\x0a\x20\x20\x20\x20try\x20{\x20localStorage.setItem(THEME_KEY,\x20next);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20applyTheme(next);\x0a\x20\x20});\x0a\x20\x20applyTheme(savedTheme()\x20===\x20\x27dark\x27\x20?\x20\x27dark\x27\x20:\x20\x27light\x27);\x0a\x0a\x20\x20//\x20----------\x20工具\x20----------\x0a\x20\x20//\x20/status\x20静态缓存(模块常量,仅内存不落\x20localStorage):models/agents/commands/mcp\x20等准静态配置\x0a\x20\x20//\x20页面生命周期内只调一次接口:优先复用宿主页\x20widget\x20挂在\x20window\x20的请求\x20Promise(同源),\x0a\x20\x20//\x20独立面板(无父级)或父级未就绪时回落自取;配置热更靠刷新页面。\x0a\x20\x20//\x20断线重连对账(running\x20实时态)不走此缓存。\x0a\x20\x20var\x20STATUS_CACHE\x20=\x20null;\x0a\x20\x20function\x20loadStatus()\x20{\x0a\x20\x20\x20\x20if\x20(STATUS_CACHE)\x20{\x20return\x20Promise.resolve(STATUS_CACHE);\x20}\x0a\x20\x20\x20\x20if\x20(window.parent\x20&&\x20window.parent\x20!==\x20window)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20shared\x20=\x20window.parent.__zenAiWithStatusPromise;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(shared)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20shared.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20宿主请求失败时其\x20Promise\x20resolve\x20undefined(widget\x20内部已吞异常),回落自取\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(own)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20own;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20own;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20payload;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20跨域父级,回落自取\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATUS_CACHE\x20=\x20payload;\x0a\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20function\x20api(method,\x20path,\x20body)\x20{\x0a\x20\x20\x20\x20var\x20headers\x20=\x20{};\x0a\x20\x20\x20\x20if\x20(body)\x20{\x20headers[\x27Content-Type\x27]\x20=\x20\x27application/json\x27;\x20}\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(token)\x20{\x20headers.Token\x20=\x20token;\x20}\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api\x27\x20+\x20path,\x20{\x0a\x20\x20\x20\x20\x20\x20method:\x20method,\x0a\x20\x20\x20\x20\x20\x20headers:\x20headers,\x0a\x20\x20\x20\x20\x20\x20body:\x20body\x20?\x20JSON.stringify(body)\x20:\x20undefined,\x0a\x20\x20\x20\x20}).then(function\x20(response)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20response.json().catch(function\x20()\x20{\x20return\x20{};\x20}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!response.ok\x20||\x20payload.ok\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20error\x20=\x20new\x20Error(payload.message\x20||\x20(\x27HTTP\x20\x27\x20+\x20response.status));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.status\x20=\x20response.status;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20宿主页上下文:面板\x20iframe\x20与宿主页同源,发送时实时读取当前页路由(多标签各读各的,天然正确)。\x0a\x20\x20//\x20有\x20hash\x20用\x20hash(zen\x20为\x20hash\x20路由),否则退回\x20pathname;不含\x20origin/search。读不到则不注入。\x0a\x20\x20function\x20hostPageContext()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.parent\x20===\x20window)\x20{\x20return\x20null;\x20}\x20\x20\x20//\x20用户直接打开\x20panel.html:不注入\x0a\x20\x20\x20\x20\x20\x20var\x20loc\x20=\x20window.parent.location;\x0a\x20\x20\x20\x20\x20\x20var\x20hash\x20=\x20loc.hash;\x0a\x20\x20\x20\x20\x20\x20var\x20route\x20=\x20(hash\x20&&\x20hash\x20!==\x20\x27#\x27)\x20?\x20hash\x20:\x20loc.pathname;\x0a\x20\x20\x20\x20\x20\x20var\x20title\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20title\x20=\x20String(window.parent.document.title\x20||\x20\x27\x27);\x20}\x20catch\x20(e2)\x20{\x20title\x20=\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20route\x20=\x20String(route\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!route)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20route:\x20route,\x20title:\x20title\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20剥离注入的页面上下文块:只删「文末\x20+\x20首行为『当前\x20dev\x20页面:』」的那一个,避免误删用户自贴的同名标签\x0a\x20\x20function\x20stripPageContext(text)\x20{\x0a\x20\x20\x20\x20return\x20String(text\x20==\x20null\x20?\x20\x27\x27\x20:\x20text)\x0a\x20\x20\x20\x20\x20\x20.replace(/\x5cn*\x5cs*<aiwith-page-context>\x5cs*\x5cn\x5cs*当前\x20dev\x20页面:[\x5cs\x5cS]*?<\x5c/aiwith-page-context>\x5cs*$/,\x20\x27\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20状态/错误提示显示在消息区内(而非输入框下方)\x0a\x20\x20function\x20renderNotice()\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20messageList.querySelector(\x27.chat-notice\x27);\x0a\x20\x20\x20\x20if\x20(!STATE.notice\x20||\x20!STATE.notice.text)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(el)\x20{\x20el.remove();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!el)\x20{\x0a\x20\x20\x20\x20\x20\x20el\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(el);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(el);\x20//\x20始终移到末尾,跟随最新内容\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20el.className\x20=\x20\x27sys-line\x20chat-notice\x27\x20+\x20(STATE.notice.error\x20?\x20\x27\x20error\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20el.textContent\x20=\x20STATE.notice.text;\x0a\x20\x20\x20\x20scrollBottom();\x0a\x20\x20}\x0a\x20\x20function\x20setStatus(text)\x20{\x0a\x20\x20\x20\x20STATE.notice\x20=\x20text\x20?\x20{\x20text:\x20text,\x20error:\x20false\x20}\x20:\x20null;\x0a\x20\x20\x20\x20renderNotice();\x0a\x20\x20}\x0a\x20\x20function\x20setError(text)\x20{\x0a\x20\x20\x20\x20STATE.notice\x20=\x20text\x20?\x20{\x20text:\x20text,\x20error:\x20true\x20}\x20:\x20null;\x0a\x20\x20\x20\x20renderNotice();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20上下文用量:取最后一条\x20assistant\x20消息的\x20tokens(input\x20+\x20cache\x20即当前上下文占用)\x20----------\x0a\x20\x20function\x20fmtTokens(count)\x20{\x0a\x20\x20\x20\x20if\x20(count\x20>=\x201000000)\x20{\x20return\x20(count\x20/\x201000000).toFixed(1)\x20+\x20\x27M\x27;\x20}\x0a\x20\x20\x20\x20return\x20count\x20>=\x201000\x20?\x20(count\x20/\x201000).toFixed(1)\x20+\x20\x27k\x27\x20:\x20String(count);\x0a\x20\x20}\x0a\x20\x20function\x20contextFromMessages(messages)\x20{\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x20messages.length\x20-\x201;\x20i\x20>=\x200;\x20i--)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20message\x20=\x20messages[i];\x0a\x20\x20\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27assistant\x27\x20&&\x20message.tokens)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20cache\x20=\x20message.tokens.cache\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20(message.tokens.input\x20||\x200)\x20+\x20(cache.read\x20||\x200)\x20+\x20(cache.write\x20||\x200);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20renderCtx(used)\x20{\x0a\x20\x20\x20\x20if\x20(!used)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20无上下文数据:不显示任何内容(含占位符与分隔符)\x0a\x20\x20\x20\x20\x20\x20ctxFill.style.width\x20=\x20\x270\x27;\x0a\x20\x20\x20\x20\x20\x20ctxText.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20limit\x20=\x20STATE.ctxLimit;\x0a\x20\x20\x20\x20var\x20percent\x20=\x20limit\x20?\x20Math.min(100,\x20(used\x20/\x20limit)\x20*\x20100)\x20:\x200;\x0a\x20\x20\x20\x20ctxFill.style.width\x20=\x20percent.toFixed(1)\x20+\x20\x27%\x27;\x0a\x20\x20\x20\x20ctxFill.className\x20=\x20\x27ctx-fill\x27\x20+\x20(percent\x20>=\x2085\x20?\x20\x27\x20danger\x27\x20:\x20percent\x20>=\x2060\x20?\x20\x27\x20warn\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20ctxText.innerHTML\x20=\x20\x27<b>\x27\x20+\x20fmtTokens(used)\x20+\x20\x27</b>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(limit\x20?\x20\x27\x20/\x20\x27\x20+\x20fmtTokens(limit)\x20+\x20\x27\x20·\x20\x27\x20+\x20percent.toFixed(0)\x20+\x20\x27%\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.cost\x20>\x200\x20?\x20\x27\x20·\x20$\x27\x20+\x20STATE.cost.toFixed(3)\x20:\x20\x27\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20距底部小于阈值视为「贴底」,可重启自动滚动。阈值取小:\x0a\x20\x20//\x20用户一旦明显上滚就停跟随,回到底部才恢复(与常见\x20IM\x20交互一致)\x0a\x20\x20var\x20STICK_THRESHOLD\x20=\x2024;\x0a\x20\x20function\x20nearBottom()\x20{\x0a\x20\x20\x20\x20return\x20messageList.scrollHeight\x20-\x20messageList.scrollTop\x20-\x20messageList.clientHeight\x20<=\x20STICK_THRESHOLD;\x0a\x20\x20}\x0a\x20\x20function\x20scrollBottom(force)\x20{\x0a\x20\x20\x20\x20if\x20(force\x20||\x20STATE.stickBottom)\x20{\x0a\x20\x20\x20\x20\x20\x20messageList.scrollTop\x20=\x20messageList.scrollHeight;\x0a\x20\x20\x20\x20\x20\x20STATE.stickBottom\x20=\x20true;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20escapeHtml(text)\x20{\x0a\x20\x20\x20\x20return\x20String(text).replace(/&/g,\x20\x27&amp;\x27).replace(/</g,\x20\x27&lt;\x27)\x0a\x20\x20\x20\x20\x20\x20.replace(/>/g,\x20\x27&gt;\x27).replace(/\x22/g,\x20\x27&quot;\x27).replace(/\x27/g,\x20\x27&#39;\x27);\x0a\x20\x20}\x0a\x20\x20//\x20内容是否「有正文」:SDK\x20在\x20text/reasoning\x20的\x20*.started\x20阶段会先建\x20text\x20为空的\x20part\x0a\x20\x20//\x20再增量填充(见\x20@opencode/client\x20的\x20session.text/reasoning.started),provider\x20无输出时\x0a\x20\x20//\x20空\x20part\x20会留存;渲染一律以「有正文」为准,避免出现空卡\x20/\x20空行(与\x20TUI\x20一致)。\x0a\x20\x20function\x20hasText(value)\x20{\x0a\x20\x20\x20\x20return\x20String(value\x20==\x20null\x20?\x20\x27\x27\x20:\x20value).trim().length\x20>\x200;\x0a\x20\x20}\x0a\x20\x20//\x20轻量\x20markdown:围栏代码块\x20/\x20行内码\x20/\x20加粗\x20/\x20标题\x20/\x20链接\x20/\x20列表\x20/\x20换行\x0a\x20\x20function\x20renderMarkdown(text)\x20{\x0a\x20\x20\x20\x20var\x20blocks\x20=\x20[];\x0a\x20\x20\x20\x20var\x20source\x20=\x20String(text\x20==\x20null\x20?\x20\x27\x27\x20:\x20text).replace(/```([\x5cw-]*)\x5cn?([\x5cs\x5cS]*?)```/g,\x20function\x20(all,\x20lang,\x20code)\x20{\x0a\x20\x20\x20\x20\x20\x20blocks.push(\x27<pre><code\x20data-lang=\x22\x27\x20+\x20escapeHtml(lang)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(code.replace(/\x5cn$/,\x20\x27\x27))\x20+\x20\x27</code></pre>\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x5cu0000BLOCK\x27\x20+\x20(blocks.length\x20-\x201)\x20+\x20\x27\x5cu0000\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20var\x20html\x20=\x20escapeHtml(source);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/`([^`\x5cn]+)`/g,\x20\x27<code>$1</code>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5c*\x5c*([^*\x5cn]+)\x5c*\x5c*/g,\x20\x27<strong>$1</strong>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/^###\x20(.+)$/gm,\x20\x27<h3>$1</h3>\x27).replace(/^##\x20(.+)$/gm,\x20\x27<h2>$1</h2>\x27).replace(/^#\x20(.+)$/gm,\x20\x27<h1>$1</h1>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5c[([^\x5c]]+)\x5c]\x5c((https?:\x5c/\x5c/[^)\x5cs]+)\x5c)/g,\x20\x27<a\x20href=\x22$2\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>$1</a>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/^\x5cs*[-*]\x20(.+)$/gm,\x20\x27<li>$1</li>\x27).replace(/(<li>[\x5cs\x5cS]*?<\x5c/li>)(?!\x5cs*<li>)/g,\x20\x27<ul>$1</ul>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5cn/g,\x20\x27<br>\x27);\x0a\x20\x20\x20\x20html\x20=\x20html.replace(/\x5cu0000BLOCK(\x5cd+)\x5cu0000/g,\x20function\x20(all,\x20index)\x20{\x20return\x20blocks[Number(index)];\x20});\x0a\x20\x20\x20\x20return\x20html;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20复制文本:优先异步\x20clipboard\x20API(被拒时降级),再退化到\x20execCommand(iframe\x20内非安全上下文等)\x0a\x20\x20function\x20fallbackCopy(text)\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20document.createElement(\x27textarea\x27);\x0a\x20\x20\x20\x20box.value\x20=\x20text;\x20box.style.position\x20=\x20\x27fixed\x27;\x20box.style.opacity\x20=\x20\x270\x27;\x0a\x20\x20\x20\x20document.body.appendChild(box);\x20box.select();\x0a\x20\x20\x20\x20try\x20{\x20document.execCommand(\x27copy\x27);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20box.remove();\x0a\x20\x20}\x0a\x20\x20function\x20copyText(value)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(value\x20==\x20null\x20?\x20\x27\x27\x20:\x20value);\x0a\x20\x20\x20\x20if\x20(navigator.clipboard\x20&&\x20navigator.clipboard.writeText)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20navigator.clipboard.writeText(text);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(pending\x20&&\x20pending.catch)\x20{\x20pending.catch(function\x20()\x20{\x20fallbackCopy(text);\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20同步失败\x20→\x20降级\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fallbackCopy(text);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20代码块增强:语法高亮(hljs\x20懒生效)+\x20复制按钮。已处理节点打\x20data-hl\x20防止刷新时重复高亮;\x0a\x20\x20//\x20语言未知时清掉\x20language-\x20类交给\x20hljs\x20自动检测(未注册语言直接指定会静默不高亮)\x0a\x20\x20function\x20enhanceCode(scope)\x20{\x0a\x20\x20\x20\x20if\x20(!window.hljs\x20||\x20typeof\x20window.hljs.highlightElement\x20!==\x20\x27function\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20(scope\x20||\x20messageList).querySelectorAll(\x27pre\x20>\x20code:not([data-hl])\x27).forEach(function\x20(code)\x20{\x0a\x20\x20\x20\x20\x20\x20code.setAttribute(\x27data-hl\x27,\x20\x271\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20lang\x20=\x20(code.getAttribute(\x27data-lang\x27)\x20||\x20\x27\x27).trim().toLowerCase();\x0a\x20\x20\x20\x20\x20\x20var\x20known\x20=\x20lang\x20&&\x20typeof\x20window.hljs.getLanguage\x20===\x20\x27function\x27\x20&&\x20window.hljs.getLanguage(lang);\x0a\x20\x20\x20\x20\x20\x20code.className\x20=\x20known\x20?\x20\x27language-\x27\x20+\x20lang\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.hljs.highlightElement(code);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20pre\x20=\x20code.parentElement;\x0a\x20\x20\x20\x20\x20\x20if\x20(pre\x20&&\x20!pre.querySelector(\x27.code-copy\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20btn\x20=\x20document.createElement(\x27button\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.className\x20=\x20\x27code-copy\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.type\x20=\x20\x27button\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20btn.textContent\x20=\x20\x27复制\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pre.appendChild(btn);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(pre\x20&&\x20known\x20&&\x20!pre.querySelector(\x27.code-lang\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tag\x20=\x20document.createElement(\x27span\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20tag.className\x20=\x20\x27code-lang\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20tag.textContent\x20=\x20lang;\x0a\x20\x20\x20\x20\x20\x20\x20\x20pre.appendChild(tag);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20可点文件\x20chip:点击经\x20CustomEvent\x20唤起查看器;data-file\x20原样透传(file://\x20URI\x20或相对路径,桥接层统一归一)\x0a\x20\x20function\x20fileChip(target)\x20{\x0a\x20\x20\x20\x20var\x20raw\x20=\x20String(target\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20if\x20(!raw)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20label\x20=\x20raw.replace(/^file:\x5c/\x5c//,\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20name\x20=\x20label.slice(label.lastIndexOf(\x27/\x27)\x20+\x201)\x20||\x20label;\x0a\x20\x20\x20\x20return\x20\x27<button\x20type=\x22button\x22\x20class=\x22code-file\x22\x20data-file=\x22\x27\x20+\x20escapeHtml(raw)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(label)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27<span\x20class=\x22cf-name\x22>\x27\x20+\x20escapeHtml(name)\x20+\x20\x27</span></button>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20消息渲染\x20----------\x0a\x20\x20function\x20toolSummary(input)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20parsed\x20=\x20typeof\x20input\x20===\x20\x27string\x27\x20?\x20JSON.parse(input)\x20:\x20input;\x0a\x20\x20\x20\x20\x20\x20if\x20(!parsed)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20keys\x20=\x20Object.keys(parsed);\x0a\x20\x20\x20\x20\x20\x20if\x20(!keys.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20keys.slice(0,\x204).map(function\x20(key)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20String(parsed[key]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20key\x20+\x20\x27:\x20\x27\x20+\x20(value.length\x20>\x20120\x20?\x20value.slice(0,\x20120)\x20+\x20\x27…\x27\x20:\x20value);\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x5cn\x27);\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20String(input\x20||\x20\x27\x27).slice(0,\x20160);\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20待办(todowrite/todoread\x20工具输出)\x0a\x20\x20function\x20renderTodos(part,\x20input)\x20{\x0a\x20\x20\x20\x20if\x20(!/todo/i.test(part.name\x20||\x20\x27\x27))\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20todos\x20=\x20(input\x20&&\x20(input.todos\x20||\x20input.items))\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!Array.isArray(todos)\x20||\x20!todos.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20done\x20=\x20todos.filter(function\x20(t)\x20{\x20return\x20(t.status\x20||\x20t.state)\x20===\x20\x27completed\x27\x20||\x20t.done;\x20}).length;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22fold-body\x22><div\x20class=\x22tool-chip\x22\x20style=\x22margin-bottom:4px\x22>待办事项\x20·\x20已完成\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20done\x20+\x20\x27\x20/\x20\x27\x20+\x20todos.length\x20+\x20\x27</div><div\x20class=\x22todo-list\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20todos.map(function\x20(t)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20isDone\x20=\x20(t.status\x20||\x20t.state)\x20===\x20\x27completed\x27\x20||\x20t.done;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22todo-item\x27\x20+\x20(isDone\x20?\x20\x27\x20done\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22><span\x20class=\x22td-box\x22>\x27\x20+\x20(isDone\x20?\x20\x27✓\x27\x20:\x20\x27○\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</span><span>\x27\x20+\x20escapeHtml(t.content\x20||\x20t.text\x20||\x20t.title\x20||\x20\x27\x27)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20工具调用合并卡:同一条消息里的工具调用收成一张卡,避免刷屏\x0a\x20\x20function\x20renderToolList(parts)\x20{\x0a\x20\x20\x20\x20if\x20(!parts.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20anyRunning\x20=\x20parts.some(function\x20(part)\x20{\x20return\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27running\x27\x20||\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27streaming\x27;\x20});\x0a\x20\x20\x20\x20var\x20anyError\x20=\x20parts.some(function\x20(part)\x20{\x20return\x20(part.state\x20&&\x20part.state.status)\x20===\x20\x27error\x27;\x20});\x0a\x20\x20\x20\x20var\x20dotClass\x20=\x20anyError\x20?\x20\x27error\x27\x20:\x20anyRunning\x20?\x20\x27running\x27\x20:\x20\x27completed\x27;\x0a\x20\x20\x20\x20var\x20skipped\x20=\x20parts.filter(function\x20(part)\x20{\x20return\x20part.executed\x20===\x20false;\x20}).length;\x0a\x20\x20\x20\x20var\x20items\x20=\x20parts.map(function\x20(part)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20status\x20=\x20(part.state\x20&&\x20part.state.status)\x20||\x20\x27running\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20itemDot\x20=\x20status\x20===\x20\x27completed\x27\x20?\x20\x27completed\x27\x20:\x20status\x20===\x20\x27error\x27\x20?\x20\x27error\x27\x20:\x20\x27running\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20part.state\x20&&\x20part.state.input;\x0a\x20\x20\x20\x20\x20\x20var\x20error\x20=\x20part.state\x20&&\x20part.state.error;\x0a\x20\x20\x20\x20\x20\x20var\x20summary\x20=\x20toolSummary(input);\x0a\x20\x20\x20\x20\x20\x20var\x20todoHtml\x20=\x20renderTodos(part,\x20input);\x0a\x20\x20\x20\x20\x20\x20var\x20content\x20=\x20(part.state\x20&&\x20part.state.content)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20outHtml\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20content.forEach(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!c)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(c.type\x20===\x20\x27text\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hasText(c.text))\x20{\x20outHtml\x20+=\x20\x27<div\x20class=\x22tool-output\x22>\x27\x20+\x20escapeHtml(c.text)\x20+\x20\x27</div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20else\x20if\x20(c.type\x20===\x20\x27file\x27)\x20{\x20outHtml\x20+=\x20fileChip(c.uri\x20||\x20c.name);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22tool-item\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22tool-line\x22><span\x20class=\x22tool-dot\x20\x27\x20+\x20itemDot\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tool-name\x22>\x27\x20+\x20escapeHtml(part.name\x20||\x20\x27tool\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(part.executed\x20===\x20false\x20?\x20\x27<span\x20class=\x22tool-skip\x22>未执行</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(error\x20?\x20\x27<div\x20class=\x22tool-error\x22>\x27\x20+\x20icon(\x27circle-x\x27,\x2012)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(error.message\x20||\x20String(error))\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20todoHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(!todoHtml\x20&&\x20summary\x20?\x20\x27<div\x20class=\x22tool-input\x22>\x27\x20+\x20escapeHtml(summary)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20outHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22><span\x20class=\x22tool-chip\x22><span\x20class=\x22tool-dot\x20\x27\x20+\x20dotClass\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27工具调用\x20·\x20\x27\x20+\x20parts.length\x20+\x20(skipped\x20?\x20\x27(\x27\x20+\x20skipped\x20+\x20\x27\x20个未执行)\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27</span></div><div\x20class=\x22fold-body\x20tool-list\x22>\x27\x20+\x20items\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderReasoning(text)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22>\x27\x20+\x20icon(\x27lightbulb\x27,\x2013)\x20+\x20\x27\x20思考过程</div><div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(text)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderFileChips(files)\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20files\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!list.length)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-grid\x22\x20style=\x22justify-content:flex-end\x22>\x27\x20+\x20list.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20name\x20=\x20f.name\x20||\x20(f.source\x20&&\x20f.source.uri)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22tool-file-ref\x22>\x27\x20+\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(name)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20OpenCode\x20注入的合成提示(切模式/自动续跑等,text\x20常为\x20<system-reminder>…</system-reminder>):\x0a\x20\x20//\x20模式切换类提醒整条不展示——面板的模式指示已动态反映\x20build/plan(TUI\x20同样不显示这类协议消息);\x0a\x20\x20//\x20其余默认折叠成一行,避免把原始\x20XML(含绝对路径、长指令)直接铺进对话流。\x0a\x20\x20function\x20renderSyntheticNote(text)\x20{\x0a\x20\x20\x20\x20var\x20synthText\x20=\x20String(text\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20wrapped\x20=\x20/<system-reminder>([\x5cs\x5cS]*?)<\x5c/system-reminder>/.exec(synthText);\x0a\x20\x20\x20\x20var\x20inner\x20=\x20(wrapped\x20?\x20wrapped[1]\x20:\x20synthText).trim();\x0a\x20\x20\x20\x20if\x20(!inner)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20if\x20(/NO\x20LONGER\x20in\x20Plan\x20mode/i.test(inner)\x20||\x20/You\x20are\x20in\x20Plan\x20mode/i.test(inner))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!wrapped\x20&&\x20inner.length\x20<=\x2060)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(inner)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20\x27<details\x20class=\x22fold\x20sys-fold\x22><summary>\x27\x20+\x20icon(\x27info\x27,\x2012)\x20+\x20\x27\x20系统提示</summary>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(inner)\x20+\x20\x27</div></details>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20renderMessage(message)\x20{\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27user\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20兼容以\x20user\x20形态落库的系统提醒(与\x20synthetic\x20同一渲染口径,不铺原始\x20XML)\x0a\x20\x20\x20\x20\x20\x20if\x20(/^\x5cs*<system-reminder>/.test(String(message.text\x20||\x20\x27\x27)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20renderSyntheticNote(message.text);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20images\x20=\x20(message.metadata\x20&&\x20message.metadata.images)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20attachHtml\x20=\x20images.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27<div\x20class=\x22attach-grid\x22>\x27\x20+\x20images.map(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(url)\x20+\x20\x27\x22\x20alt=\x22\x22\x20loading=\x22lazy\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20attachHtml\x20+=\x20renderFileChips(message.files);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20user\x22\x20data-msgid=\x22\x27\x20+\x20escapeHtml(message.id\x20||\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22点击可回退到此处\x22><div\x20class=\x22bubble\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20attachHtml\x20+\x20renderMarkdown(stripPageContext(message.text))\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27assistant\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20content\x20=\x20message.content\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20//\x20合并同类内容:思考过程\x20/\x20工具调用各自收成一张折叠卡,避免每\x20step\x20一张造成刷屏\x0a\x20\x20\x20\x20\x20\x20//\x20只收「有正文」的\x20part:SDK\x20会先建空\x20part\x20再填充,provider\x20无输出时留空,不过滤会渲染空卡\x20/\x20空块\x0a\x20\x20\x20\x20\x20\x20var\x20reasoningText\x20=\x20content.filter(function\x20(part)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20part.type\x20===\x20\x27reasoning\x27\x20&&\x20hasText(part.text);\x0a\x20\x20\x20\x20\x20\x20}).map(function\x20(part)\x20{\x20return\x20part.text;\x20}).join(\x27\x5cn\x5cn\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20toolParts\x20=\x20content.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27tool\x27;\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20textParts\x20=\x20content.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27text\x27\x20&&\x20hasText(part.text);\x20});\x0a\x20\x20\x20\x20\x20\x20var\x20parts\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(reasoningText)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20parts\x20+=\x20\x27<div\x20class=\x22block\x22><div\x20class=\x22block-head\x22>\x27\x20+\x20icon(\x27lightbulb\x27,\x2013)\x20+\x20\x27\x20思考过程\x20·\x20\x27\x20+\x20reasoningText.length\x20+\x20\x27\x20字</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20escapeHtml(reasoningText)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20parts\x20+=\x20renderToolList(toolParts);\x0a\x20\x20\x20\x20\x20\x20parts\x20+=\x20textParts.map(function\x20(part)\x20{\x20return\x20\x27<div>\x27\x20+\x20renderMarkdown(part.text)\x20+\x20\x27</div>\x27;\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(message.error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20parts\x20+=\x20\x27<div\x20class=\x22err-text\x22>\x27\x20+\x20icon(\x27triangle-alert\x27,\x2013)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(message.error.message\x20||\x20String(message.error))\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20ai\x22><div\x20class=\x22avatar\x22>\x27\x20+\x20BRAND_LOGO\x20+\x20\x27</div><div\x20class=\x22bubble\x22>\x27\x20+\x20(parts\x20||\x20\x27<span\x20style=\x22color:var(--text-dim)\x22>…</span>\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27compaction\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20manual\x20=\x20message.reason\x20===\x20\x27manual\x27\x20?\x20\x27(手动)\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(message.status\x20===\x20\x27failed\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20errType\x20=\x20(message.error\x20&&\x20message.error.type)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20errMsg\x20=\x20(message.error\x20&&\x20(message.error.message\x20||\x20message.error.type))\x20||\x20\x27未知原因\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20「暂无可压缩内容」是正常结果(刚压缩过/没有新增对话),不算失败\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(errType\x20===\x20\x27compaction.unavailable\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27无需压缩\x27\x20+\x20manual\x20+\x20\x27:\x27\x20+\x20errMsg)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x20compaction-error\x22>\x27\x20+\x20icon(\x27triangle-alert\x27,\x2012)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(\x27压缩失败\x27\x20+\x20manual\x20+\x20\x27:\x27\x20+\x20errMsg)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(message.status\x20===\x20\x27running\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27正在压缩上下文…\x27\x20+\x20manual)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20summary\x20=\x20message.summary\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20metaText\x20=\x20summary\x20?\x20\x27摘要约\x20\x27\x20+\x20summary.length\x20+\x20\x27\x20字\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20message.cost\x20===\x20\x27number\x27\x20&&\x20message.cost\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20costText\x20=\x20String(Number(message.cost.toPrecision(2)));\x0a\x20\x20\x20\x20\x20\x20\x20\x20metaText\x20+=\x20(metaText\x20?\x20\x27\x20·\x20\x27\x20:\x20\x27\x27)\x20+\x20\x27$\x27\x20+\x20costText;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27上下文已压缩\x27\x20+\x20manual)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(summary\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27<details\x20class=\x22fold\x20compaction-summary\x22><summary>\x27\x20+\x20icon(\x27lightbulb\x27,\x2012)\x20+\x20\x27\x20压缩摘要\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(metaText\x20?\x20\x27\x20·\x20\x27\x20+\x20escapeHtml(metaText)\x20:\x20\x27\x27)\x20+\x20\x27</summary>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22fold-body\x22>\x27\x20+\x20renderMarkdown(summary)\x20+\x20\x27</div></details>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27shell\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20out\x20=\x20(message.output\x20&&\x20message.output.output)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22msg\x20user\x22><div\x20class=\x22bubble\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderMarkdown(\x27!\x20\x27\x20+\x20message.command)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(out\x20?\x20\x27<div\x20class=\x22tool-output\x22>\x27\x20+\x20escapeHtml(out)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27agent-switched\x27\x20||\x20message.type\x20===\x20\x27model-switched\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20message.type\x20===\x20\x27location-switched\x27\x20||\x20message.type\x20===\x20\x27idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27skill\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20skillName\x20=\x20message.name\x20||\x20message.skill\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20return\x20skillName\x20?\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(\x27加载技能\x20\x27\x20+\x20skillName)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(message.type\x20===\x20\x27synthetic\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20renderSyntheticNote(message.text);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20hint\x20=\x20message.text\x20||\x20message.description\x20||\x20message.type\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22sys-line\x22>\x27\x20+\x20escapeHtml(hint)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20var\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20function\x20refreshMessages()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20var\x20sid\x20=\x20STATE.sid;\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20sid\x20+\x20\x27/messages?order=desc&limit=200\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20desc\x20取「最新」200\x20条,再反转为时间顺序\x0a\x20\x20\x20\x20\x20\x20var\x20data\x20=\x20(payload.data\x20||\x20[]).slice().reverse();\x0a\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20renderCtx(contextFromMessages(data));\x0a\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20data.map(renderMessage).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20//\x20同会话刷新时保留已展开的折叠与滚动位置,避免流式期间被反复重置\x0a\x20\x20\x20\x20\x20\x20var\x20sameSession\x20=\x20renderedSid\x20===\x20sid;\x0a\x20\x20\x20\x20\x20\x20var\x20openFolds\x20=\x20sameSession\x20?\x20captureFolds(messageList)\x20:\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20prevTop\x20=\x20sameSession\x20?\x20messageList.scrollTop\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20messageList.innerHTML\x20=\x20html\x20||\x20\x27<div\x20class=\x22empty\x22><div\x20class=\x22big\x22>\x27\x20+\x20icon(\x27bot\x27,\x2044)\x20+\x20\x27</div>有什么需求您请说</div>\x27;\x0a\x20\x20\x20\x20\x20\x20restoreFolds(messageList,\x20openFolds);\x0a\x20\x20\x20\x20\x20\x20renderNotice();\x0a\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20sid;\x0a\x20\x20\x20\x20\x20\x20enhanceCode(messageList);\x0a\x20\x20\x20\x20\x20\x20//\x20用户正在阅读(已上滚、未贴底):保持原阅读位置;否则跟随到底部\x0a\x20\x20\x20\x20\x20\x20if\x20(sameSession\x20&&\x20!STATE.stickBottom)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20messageList.scrollTop\x20=\x20prevTop;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20scrollBottom(true);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(error.status\x20===\x20404)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20会话已不存在:用新会话替换当前标签\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/reset\x27,\x20{}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.tabs[index]\x20=\x20session.id;\x20delete\x20STATE.sessions[sid];\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20else\x20{\x20STATE.tabs.push(session.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20applySession(session);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27消息加载失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20var\x20refreshTimer\x20=\x20null;\x0a\x20\x20function\x20scheduleRefresh()\x20{\x0a\x20\x20\x20\x20clearTimeout(refreshTimer);\x0a\x20\x20\x20\x20refreshTimer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20refreshMessages();\x0a\x20\x20\x20\x20\x20\x20refreshPermissions();\x0a\x20\x20\x20\x20},\x20350);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20流式增量:按\x20assistantMessageID\x20聚合到一个实时气泡\x0a\x20\x20function\x20onDelta(kind,\x20event)\x20{\x0a\x20\x20\x20\x20var\x20entry\x20=\x20STATE.live[event.assistantMessageID];\x0a\x20\x20\x20\x20if\x20(!entry)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20wrap\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20wrap.className\x20=\x20\x27msg\x20ai\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20avatar\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20avatar.className\x20=\x20\x27avatar\x27;\x0a\x20\x20\x20\x20\x20\x20avatar.innerHTML\x20=\x20BRAND_LOGO;\x0a\x20\x20\x20\x20\x20\x20var\x20bubble\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20\x20\x20bubble.className\x20=\x20\x27bubble\x27;\x0a\x20\x20\x20\x20\x20\x20wrap.appendChild(avatar);\x0a\x20\x20\x20\x20\x20\x20wrap.appendChild(bubble);\x0a\x20\x20\x20\x20\x20\x20messageList.appendChild(wrap);\x0a\x20\x20\x20\x20\x20\x20entry\x20=\x20STATE.live[event.assistantMessageID]\x20=\x20{\x20el:\x20bubble,\x20reasoning:\x20\x27\x27,\x20text:\x20\x27\x27\x20};\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20entry[kind]\x20+=\x20(event.delta\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20entry.el.innerHTML\x20=\x0a\x20\x20\x20\x20\x20\x20(entry.reasoning\x20&&\x20entry.reasoning.trim()\x20?\x20renderReasoning(entry.reasoning)\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div>\x27\x20+\x20renderMarkdown(entry.text)\x20+\x20\x27<span\x20class=\x22cursor\x22></span></div>\x27;\x0a\x20\x20\x20\x20if\x20(STATE.notice)\x20{\x20renderNotice();\x20}\x0a\x20\x20\x20\x20scrollBottom();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20权限审批\x20----------\x0a\x20\x20function\x20renderPermissions()\x20{\x0a\x20\x20\x20\x20permissionBar.style.display\x20=\x20STATE.permissions.length\x20?\x20\x27flex\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20permissionBar.innerHTML\x20=\x20STATE.permissions.map(function\x20(item,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22perm-card\x22\x20data-index=\x22\x27\x20+\x20index\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-title\x22>\x27\x20+\x20icon(\x27shield-alert\x27,\x2014)\x20+\x20\x27\x20请求授权:\x27\x20+\x20escapeHtml(item.action)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(item.message\x20?\x20\x27<div\x20class=\x22perm-msg\x22>\x27\x20+\x20escapeHtml(item.message)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-res\x22>\x27\x20+\x20escapeHtml((item.resources\x20||\x20[]).join(\x27\x5cn\x27))\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22perm-actions\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22allow\x22\x20data-decision=\x22once\x22>允许一次</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22always\x22\x20data-decision=\x22always\x22>本次会话总是允许</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22reject\x22\x20data-decision=\x22reject\x22>拒绝</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20refreshPermissions()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/permissions\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.permissions\x20=\x20payload.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderPermissions();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20permissionBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-decision]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20card\x20=\x20button.closest(\x27.perm-card\x27);\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.permissions[Number(card.getAttribute(\x27data-index\x27))];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20button.disabled\x20=\x20true;\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/permissions/\x27\x20+\x20item.id\x20+\x20\x27/reply\x27,\x20{\x20decision:\x20button.getAttribute(\x27data-decision\x27)\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20STATE.permissions.splice(STATE.permissions.indexOf(item),\x201);\x20renderPermissions();\x20setStatus(\x27\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20button.disabled\x20=\x20false;\x20setStatus(\x27审批失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话元信息刷新(agent\x20/\x20model\x20/\x20revert)\x20----------\x0a\x20\x20function\x20updateSessionMeta(session)\x20{\x0a\x20\x20\x20\x20if\x20(!session)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(session.agent)\x20{\x20STATE.agent\x20=\x20session.agent;\x20}\x0a\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model);\x0a\x20\x20\x20\x20if\x20(matched)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20});\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20matched.contextLimit\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20STATE.revert\x20=\x20session.revert\x20||\x20null;\x0a\x20\x20\x20\x20STATE.cost\x20=\x20session.cost\x20||\x200;\x0a\x20\x20\x20\x20renderRevert();\x0a\x20\x20\x20\x20renderAgents();\x0a\x20\x20}\x0a\x20\x20function\x20refreshSessionState()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid).then(function\x20(p)\x20{\x20updateSessionMeta(p.data);\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20refreshRegistry()\x20{\x0a\x20\x20\x20\x20loadStatus().then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.commands\x20=\x20p.commands\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.agents\x20=\x20p.agents\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(!STATE.models.length)\x20{\x20STATE.models\x20=\x20p.models\x20||\x20[];\x20}\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.branch);\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20回退(撤销\x20/\x20重做)\x20----------\x0a\x20\x20function\x20renderRevert()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.revert\x20&&\x20STATE.revert.messageID)\x20{\x0a\x20\x20\x20\x20\x20\x20revertBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20revertBar.innerHTML\x20=\x20icon(\x27triangle-alert\x27,\x2013)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span>已回退到该消息,发送新消息即确认</span><button\x20id=\x22redoInline\x22>重做</button>\x27;\x0a\x20\x20\x20\x20\x20\x20$(\x27redoInline\x27).onclick\x20=\x20redo;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20revertBar.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20revertBar.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20lastUserMessageID()\x20{\x0a\x20\x20\x20\x20var\x20nodes\x20=\x20messageList.querySelectorAll(\x27.msg.user[data-msgid]\x27);\x0a\x20\x20\x20\x20return\x20nodes.length\x20?\x20nodes[nodes.length\x20-\x201].getAttribute(\x27data-msgid\x27)\x20:\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20stageRevert(messageID)\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.busy)\x20{\x20setStatus(\x27AI\x20处理中,无法回退\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!messageID)\x20{\x20setStatus(\x27没有可回退的消息\x27);\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/revert/stage\x27,\x20{\x20messageID:\x20messageID\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshSessionState();\x20setStatus(\x27已回退到该消息,发送新消息即确认\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27回退失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20}\x0a\x20\x20function\x20undo()\x20{\x0a\x20\x20\x20\x20var\x20id\x20=\x20lastUserMessageID();\x0a\x20\x20\x20\x20if\x20(!id)\x20{\x20setStatus(\x27没有可撤销的消息\x27);\x20return;\x20}\x0a\x20\x20\x20\x20stageRevert(id);\x0a\x20\x20}\x0a\x20\x20function\x20redo()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/revert/clear\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshSessionState();\x20setStatus(\x27已取消回退\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27重做失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20}\x0a\x20\x20$(\x27undoBtn\x27).addEventListener(\x27click\x27,\x20undo);\x0a\x20\x20$(\x27redoBtn\x27).addEventListener(\x27click\x27,\x20redo);\x0a\x20\x20messageList.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27a\x27))\x20{\x20return;\x20}\x20\x20//\x20点击消息内链接不触发回退\x0a\x20\x20\x20\x20var\x20bubble\x20=\x20event.target.closest(\x27.msg.user[data-msgid]\x20.bubble\x27);\x0a\x20\x20\x20\x20if\x20(!bubble\x20||\x20STATE.busy)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20msg\x20=\x20bubble.closest(\x27.msg.user\x27);\x0a\x20\x20\x20\x20if\x20(confirm(\x27回退到这条消息?之后的对话与文件更改会被撤销。\x27))\x20{\x20stageRevert(msg.getAttribute(\x27data-msgid\x27));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20压缩上下文\x20----------\x0a\x20\x20$(\x27compactBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.busy)\x20{\x20setStatus(\x27AI\x20处理中,无法压缩\x27);\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/compact\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已请求压缩会话\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27压缩失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20审查(会话更改\x20diff)\x20----------\x0a\x20\x20function\x20renderDiff(list)\x20{\x0a\x20\x20\x20\x20var\x20items\x20=\x20list\x20||\x20[];\x0a\x20\x20\x20\x20var\x20add\x20=\x200,\x20del\x20=\x200;\x0a\x20\x20\x20\x20items.forEach(function\x20(f)\x20{\x20add\x20+=\x20f.additions\x20||\x200;\x20del\x20+=\x20f.deletions\x20||\x200;\x20});\x0a\x20\x20\x20\x20diffStat.textContent\x20=\x20items.length\x20?\x20\x27+\x20\x27\x20+\x20add\x20+\x20\x27\x20/\x20-\x20\x27\x20+\x20del\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(!items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>此会话暂无更改</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20diffBody.innerHTML\x20=\x20items.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20lines\x20=\x20String(f.patch\x20||\x20\x27\x27).split(\x27\x5cn\x27).map(function\x20(line)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20cls\x20=\x20line.charAt(0)\x20===\x20\x27+\x27\x20?\x20\x27\x20add\x27\x20:\x20line.charAt(0)\x20===\x20\x27-\x27\x20?\x20\x27\x20del\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22diff-line\x27\x20+\x20cls\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(line)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22diff-file\x22><div\x20class=\x22diff-file-head\x22>\x27\x20+\x20fileChip(f.file)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22df-add\x22\x20style=\x22margin-left:auto\x22>+\x27\x20+\x20(f.additions\x20||\x200)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22df-del\x22>-\x27\x20+\x20(f.deletions\x20||\x200)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22diff-hunk\x22>\x27\x20+\x20lines\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20toggleDiff(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.diffOpen;\x0a\x20\x20\x20\x20STATE.diffOpen\x20=\x20open;\x0a\x20\x20\x20\x20diffPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open\x20&&\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>正在加载更改…</div>\x27;\x0a\x20\x20\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/diff\x27).then(function\x20(p)\x20{\x20renderDiff(p.data);\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20diffBody.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>加载失败:\x27\x20+\x20escapeHtml(e.message)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20$(\x27reviewBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20toggleDiff();\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.diffOpen\x20&&\x20!event.target.closest(\x27#diffPanel\x27)\x20&&\x20!event.target.closest(\x27#reviewBtn\x27))\x20{\x20toggleDiff(false);\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20Git\x20基础管理(点击右上角分支徽标打开)\x20----------\x0a\x20\x20function\x20gitSetMsg(text,\x20isError)\x20{\x0a\x20\x20\x20\x20gitMsgEl.textContent\x20=\x20text\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20gitMsgEl.className\x20=\x20\x27git-msg\x27\x20+\x20(isError\x20?\x20\x27\x20error\x27\x20:\x20\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderGitFiles(files)\x20{\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>工作区干净</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20files.map(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20untracked\x20=\x20file.index\x20===\x20\x27?\x27\x20||\x20file.working\x20===\x20\x27?\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20staged\x20=\x20!untracked\x20&&\x20file.index\x20!==\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20unstaged\x20=\x20untracked\x20||\x20file.working\x20!==\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20cls\x20=\x20untracked\x20?\x20\x27untracked\x27\x20:\x20staged\x20?\x20\x27staged\x27\x20:\x20\x27unstaged\x27;\x0a\x20\x20\x20\x20\x20\x20//\x20两列(暂存区\x20/\x20工作区),untracked\x20显示为\x20??\x0a\x20\x20\x20\x20\x20\x20var\x20code\x20=\x20untracked\x20?\x20\x27??\x27\x20:\x20(file.index\x20+\x20file.working);\x0a\x20\x20\x20\x20\x20\x20var\x20path\x20=\x20escapeHtml(file.path);\x0a\x20\x20\x20\x20\x20\x20var\x20acts\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(staged)\x20{\x20acts\x20+=\x20\x27<button\x20class=\x22git-act\x22\x20data-act=\x22unstage\x22\x20data-path=\x22\x27\x20+\x20path\x20+\x20\x27\x22>取消暂存</button>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(unstaged)\x20{\x20acts\x20+=\x20\x27<button\x20class=\x22git-act\x22\x20data-act=\x22stage\x22\x20data-path=\x22\x27\x20+\x20path\x20+\x20\x27\x22>暂存</button>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22git-file\x22><span\x20class=\x22git-code\x20\x27\x20+\x20cls\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(code)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22git-path\x22\x20title=\x22\x27\x20+\x20path\x20+\x20\x27\x22>\x27\x20+\x20path\x20+\x20\x27</span>\x27\x20+\x20acts\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderGitStatus(data)\x20{\x0a\x20\x20\x20\x20if\x20(!data)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20label\x20=\x20$(\x27gitBranchLabel\x27),\x20select\x20=\x20$(\x27gitBranchSelect\x27);\x0a\x20\x20\x20\x20if\x20(!data.isRepo)\x20{\x0a\x20\x20\x20\x20\x20\x20label.textContent\x20=\x20\x27—\x27;\x0a\x20\x20\x20\x20\x20\x20label.removeAttribute(\x27title\x27);\x0a\x20\x20\x20\x20\x20\x20select.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20select.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20$(\x27gitChangesCount\x27).textContent\x20=\x20\x27变更\x27;\x0a\x20\x20\x20\x20\x20\x20gitFilesEl.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>\x27\x20+\x20escapeHtml(data.reason\x20||\x20\x27当前项目不是\x20Git\x20仓库\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20renderBranch(data.branch);\x0a\x20\x20\x20\x20label.textContent\x20=\x20data.branch\x20||\x20\x27(detached)\x27;\x0a\x20\x20\x20\x20var\x20track\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(data.tracking)\x20{\x20track.push(\x27→\x20\x27\x20+\x20data.tracking);\x20}\x0a\x20\x20\x20\x20if\x20(data.ahead)\x20{\x20track.push(\x27↑\x27\x20+\x20data.ahead);\x20}\x0a\x20\x20\x20\x20if\x20(data.behind)\x20{\x20track.push(\x27↓\x27\x20+\x20data.behind);\x20}\x0a\x20\x20\x20\x20label.title\x20=\x20(data.branch\x20||\x20\x27\x27)\x20+\x20(track.length\x20?\x20\x27\x20\x20\x27\x20+\x20track.join(\x27\x20\x27)\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20branches\x20=\x20data.branches\x20||\x20[];\x0a\x20\x20\x20\x20select.innerHTML\x20=\x20branches.map(function\x20(b)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<option\x20value=\x22\x27\x20+\x20escapeHtml(b)\x20+\x20\x27\x22\x27\x20+\x20(b\x20===\x20data.branch\x20?\x20\x27\x20selected\x27\x20:\x20\x27\x27)\x20+\x20\x27>\x27\x20+\x20escapeHtml(b)\x20+\x20\x27</option>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20select.style.display\x20=\x20branches.length\x20?\x20\x27\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20var\x20count\x20=\x20(data.files\x20||\x20[]).length;\x0a\x20\x20\x20\x20$(\x27gitChangesCount\x27).textContent\x20=\x20count\x20?\x20\x27变更\x20·\x20\x27\x20+\x20count\x20:\x20\x27变更\x20·\x20干净\x27;\x0a\x20\x20\x20\x20renderGitFiles(data.files\x20||\x20[]);\x0a\x20\x20}\x0a\x20\x20function\x20refreshGit()\x20{\x0a\x20\x20\x20\x20return\x20wsCall(\x27git:status\x27).then(function\x20(p)\x20{\x20renderGitStatus(p.data);\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20gitSetMsg(\x27读取\x20Git\x20状态失败:\x27\x20+\x20error.message,\x20true);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20gitPost(action,\x20body,\x20doneText)\x20{\x0a\x20\x20\x20\x20gitSetMsg(\x27处理中…\x27);\x0a\x20\x20\x20\x20return\x20wsCall(\x27git:\x27\x20+\x20action,\x20body\x20||\x20{}).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(p.data)\x20{\x20renderGitStatus(p.data);\x20}\x0a\x20\x20\x20\x20\x20\x20gitSetMsg((p.summary\x20&&\x20p.summary.text)\x20||\x20doneText\x20||\x20\x27完成\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20true;\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20gitSetMsg(error.message,\x20true);\x0a\x20\x20\x20\x20\x20\x20return\x20false;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20toggleGitPanel(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.gitOpen;\x0a\x20\x20\x20\x20STATE.gitOpen\x20=\x20open;\x0a\x20\x20\x20\x20gitPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(!open)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20toggleDiff(false);\x0a\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20gitSetMsg(\x27\x27);\x0a\x20\x20\x20\x20refreshGit();\x0a\x20\x20}\x0a\x20\x20branchBadge.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleGitPanel();\x0a\x20\x20});\x0a\x20\x20$(\x27gitRefreshBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20refreshGit();\x0a\x20\x20});\x0a\x20\x20$(\x27gitStageAll\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27stage\x27,\x20{\x20paths:\x20[]\x20},\x20\x27已全部暂存\x27);\x20});\x0a\x20\x20$(\x27gitUnstageAll\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27unstage\x27,\x20{\x20paths:\x20[]\x20},\x20\x27已全部取消暂存\x27);\x20});\x0a\x20\x20gitFilesEl.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27[data-act][data-path]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20act\x20=\x20button.getAttribute(\x27data-act\x27);\x0a\x20\x20\x20\x20gitPost(act,\x20{\x20paths:\x20[button.getAttribute(\x27data-path\x27)]\x20},\x20act\x20===\x20\x27stage\x27\x20?\x20\x27已暂存\x27\x20:\x20\x27已取消暂存\x27);\x0a\x20\x20});\x0a\x20\x20$(\x27gitCommitBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20$(\x27gitCommitMsg\x27);\x0a\x20\x20\x20\x20var\x20message\x20=\x20box.value.trim();\x0a\x20\x20\x20\x20if\x20(!message)\x20{\x20gitSetMsg(\x27请填写提交信息\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20gitPost(\x27commit\x27,\x20{\x20message:\x20message\x20},\x20\x27已提交\x27).then(function\x20(ok)\x20{\x20if\x20(ok)\x20{\x20box.value\x20=\x20\x27\x27;\x20}\x20});\x0a\x20\x20});\x0a\x20\x20$(\x27gitCommitMsg\x27).addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20&&\x20!event.shiftKey\x20&&\x20!event.isComposing)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20$(\x27gitCommitBtn\x27).click();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27gitPullBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27pull\x27,\x20{},\x20\x27已拉取\x27);\x20});\x0a\x20\x20$(\x27gitPushBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20gitPost(\x27push\x27,\x20{},\x20\x27已推送\x27);\x20});\x0a\x20\x20$(\x27gitBranchSelect\x27).addEventListener(\x27change\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20branch\x20=\x20event.target.value;\x0a\x20\x20\x20\x20gitPost(\x27checkout\x27,\x20{\x20branch:\x20branch\x20},\x20\x27已切换到\x20\x27\x20+\x20branch);\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.gitOpen\x20&&\x20!event.target.closest(\x27#gitPanel\x27)\x20&&\x20!event.target.closest(\x27#branchBadge\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleGitPanel(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20问题(question\x20工具\x20→\x20form)\x20----------\x0a\x20\x20function\x20refreshForms()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.forms\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.all(STATE.forms.map(function\x20(f)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20f.id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(d)\x20{\x20STATE.formsDetail[f.id]\x20=\x20d.data;\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{});\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x20renderForms();\x20}).catch(function\x20()\x20{\x20renderForms();\x20});\x0a\x20\x20}\x0a\x20\x20function\x20fieldControl(field)\x20{\x0a\x20\x20\x20\x20var\x20key\x20=\x20escapeHtml(field.key);\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27external\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20extUrl\x20=\x20String(field.url\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!/^https?:\x5c/\x5c//i.test(extUrl))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22q-desc\x22>\x27\x20+\x20escapeHtml(field.title\x20||\x20extUrl)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<a\x20class=\x22q-link\x22\x20href=\x22\x27\x20+\x20escapeHtml(extUrl)\x20+\x20\x27\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.title\x20||\x20extUrl)\x20+\x20\x27</a>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27boolean\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<label\x20class=\x22q-opt\x22><input\x20type=\x22checkbox\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22>\x20\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.title\x20||\x20field.key)\x20+\x20\x27</label>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.options\x20&&\x20field.options.length)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20multiple\x20=\x20field.type\x20===\x20\x27multiselect\x27;\x0a\x20\x20\x20\x20\x20\x20//\x20可自定义的单选题:用\x20datalist\x20原生组合框(可选建议亦可自由输入)\x0a\x20\x20\x20\x20\x20\x20if\x20(!multiple\x20&&\x20field.custom)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20listId\x20=\x20\x27dl_\x27\x20+\x20key;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<input\x20type=\x22text\x22\x20list=\x22\x27\x20+\x20listId\x20+\x20\x27\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22><datalist\x20id=\x22\x27\x20+\x20listId\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20field.options.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<option\x20value=\x22\x27\x20+\x20escapeHtml(o.value)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(o.label\x20||\x20\x27\x27)\x20+\x20\x27</option>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</datalist>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-options\x22>\x27\x20+\x20field.options.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<label\x20class=\x22q-opt\x22><input\x20type=\x22\x27\x20+\x20(multiple\x20?\x20\x27checkbox\x27\x20:\x20\x27radio\x27)\x20+\x20\x27\x22\x20name=\x22q_\x27\x20+\x20key\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20value=\x22\x27\x20+\x20escapeHtml(o.value)\x20+\x20\x27\x22>\x20\x27\x20+\x20escapeHtml(o.label\x20||\x20o.value)\x20+\x20\x27</label>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(field.type\x20===\x20\x27number\x27\x20||\x20field.type\x20===\x20\x27integer\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<input\x20type=\x22number\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20\x27<textarea\x20rows=\x222\x22\x20data-qkey=\x22\x27\x20+\x20key\x20+\x20\x27\x22\x20placeholder=\x22\x27\x20+\x20escapeHtml(field.placeholder\x20||\x20\x27\x27)\x20+\x20\x27\x22></textarea>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderForms()\x20{\x0a\x20\x20\x20\x20var\x20pending\x20=\x20STATE.forms\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!pending.length)\x20{\x20questionBar.style.display\x20=\x20\x27none\x27;\x20questionBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20questionBar.style.display\x20=\x20\x27flex\x27;\x0a\x20\x20\x20\x20questionBar.innerHTML\x20=\x20pending.map(function\x20(f,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20detail\x20=\x20STATE.formsDetail[f.id]\x20||\x20f;\x0a\x20\x20\x20\x20\x20\x20var\x20fields\x20=\x20detail.fields\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-card\x22\x20data-formid=\x22\x27\x20+\x20escapeHtml(f.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22q-title\x22>\x27\x20+\x20icon(\x27shield-alert\x27,\x2014)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(detail.title\x20||\x20\x27需要你的回答\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22q-progress\x22>\x27\x20+\x20(i\x20+\x201)\x20+\x20\x27/\x27\x20+\x20pending.length\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20fields.map(function\x20(field)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22q-field\x22\x20data-key=\x22\x27\x20+\x20escapeHtml(field.key)\x20+\x20\x27\x22\x20data-qtype=\x22\x27\x20+\x20escapeHtml(field.type)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(field.title\x20?\x20\x27<div\x20class=\x22q-label\x22>\x27\x20+\x20escapeHtml(field.title)\x20+\x20(field.required\x20?\x20\x27\x20*\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(field.description\x20?\x20\x27<div\x20class=\x22q-desc\x22>\x27\x20+\x20escapeHtml(field.description)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fieldControl(field)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22q-actions\x22><button\x20class=\x22q-send\x22>发送</button><button\x20class=\x22q-cancel\x22>拒绝</button></div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20questionBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20card\x20=\x20event.target.closest(\x27.q-card[data-formid]\x27);\x0a\x20\x20\x20\x20if\x20(!card)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20formID\x20=\x20card.getAttribute(\x27data-formid\x27);\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27.q-cancel\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20formID\x20+\x20\x27/cancel\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(refreshForms).catch(function\x20(e)\x20{\x20setError(\x27操作失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!event.target.closest(\x27.q-send\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20answer\x20=\x20{};\x0a\x20\x20\x20\x20card.querySelectorAll(\x27.q-field\x27).forEach(function\x20(fieldEl)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20key\x20=\x20fieldEl.getAttribute(\x27data-key\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20qtype\x20=\x20fieldEl.getAttribute(\x27data-qtype\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20multi\x20=\x20fieldEl.querySelectorAll(\x27input[type=checkbox][data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(fieldEl.querySelector(\x27.q-options\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(multi.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20values\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20multi.forEach(function\x20(c)\x20{\x20if\x20(c.checked)\x20{\x20values.push(c.value);\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20answer[key]\x20=\x20values;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20radio\x20=\x20fieldEl.querySelector(\x27input[type=radio][data-qkey]:checked\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(radio)\x20{\x20answer[key]\x20=\x20radio.value;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20box\x20=\x20fieldEl.querySelector(\x27input[type=checkbox][data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(box)\x20{\x20answer[key]\x20=\x20box.checked;\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20fieldEl.querySelector(\x27input[data-qkey],\x20textarea[data-qkey]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(input)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20input.value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(qtype\x20===\x20\x27number\x27\x20||\x20qtype\x20===\x20\x27integer\x27)\x20{\x20value\x20=\x20value\x20===\x20\x27\x27\x20?\x200\x20:\x20Number(value);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20answer[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/forms/\x27\x20+\x20formID\x20+\x20\x27/reply\x27,\x20{\x20answer:\x20answer\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20refreshForms();\x20setStatus(\x27\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20setError(\x27提交失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20排队\x20/\x20引导消息\x20----------\x0a\x20\x20//\x20模式切换提醒(协议消息)不进排队条:面板模式指示已动态反映,TUI\x20亦不显示\x0a\x20\x20function\x20isPlanModeReminder(text)\x20{\x0a\x20\x20\x20\x20var\x20raw\x20=\x20String(text\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20return\x20/<system-reminder>[\x5cs\x5cS]*?(NO\x20LONGER\x20in\x20Plan\x20mode|You\x20are\x20in\x20Plan\x20mode)[\x5cs\x5cS]*?<\x5c/system-reminder>/i.test(raw)\x20||\x0a\x20\x20\x20\x20\x20\x20/^(NO\x20LONGER\x20in\x20Plan\x20mode|You\x20are\x20in\x20Plan\x20mode)/i.test(raw);\x0a\x20\x20}\x0a\x20\x20function\x20refreshQueue()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/inbox\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.queue\x20=\x20(p.data\x20||\x20[]).filter(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(m.type\x20!==\x20\x27user\x27\x20&&\x20m.type\x20!==\x20\x27synthetic\x27)\x20{\x20return\x20false;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20!isPlanModeReminder((m.payload\x20||\x20{}).text);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20renderQueue();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20queueText(m)\x20{\x0a\x20\x20\x20\x20var\x20payload\x20=\x20m.payload\x20||\x20{};\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(payload.text\x20||\x20payload.description\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20//\x20其它\x20<system-reminder>\x20系统提醒不铺原文,占位展示\x0a\x20\x20\x20\x20if\x20(/<system-reminder>/.test(text))\x20{\x20return\x20\x27系统提示\x27;\x20}\x0a\x20\x20\x20\x20return\x20stripPageContext(text);\x0a\x20\x20}\x0a\x20\x20function\x20renderQueue()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.queue.length)\x20{\x20queueBar.classList.remove(\x27show\x27);\x20queueBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20queueBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20queueBar.innerHTML\x20=\x20\x27<div\x20class=\x22queue-item\x22><span\x20class=\x22qi-badge\x22>\x27\x20+\x20STATE.queue.length\x20+\x20\x27\x20个已排队</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20STATE.queue.map(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22queue-item\x22\x20data-inbox=\x22\x27\x20+\x20escapeHtml(m.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22qi-text\x22>\x27\x20+\x20escapeHtml(queueText(m)\x20||\x20\x27(空)\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22qi-badge\x22>\x27\x20+\x20escapeHtml(m.delivery\x20||\x20\x27queue\x27)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20title=\x22取消\x22>\x27\x20+\x20icon(\x27x\x27,\x2011)\x20+\x20\x27</button></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20queueBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20row\x20=\x20event.target.closest(\x27.queue-item[data-inbox]\x27);\x0a\x20\x20\x20\x20if\x20(!row\x20||\x20!event.target.closest(\x27button\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/inbox/\x27\x20+\x20row.getAttribute(\x27data-inbox\x27)\x20+\x20\x27/cancel\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(refreshQueue).catch(function\x20(e)\x20{\x20setError(\x27取消失败:\x27\x20+\x20e.message);\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20子代理(subagent\x20子会话)\x20----------\x0a\x20\x20//\x20子会话的\x20sessionID\x20与父会话不同,事件按\x20sessionID\x20路由会丢弃其事件;这里用轮询在运行中实时呈现。\x0a\x20\x20function\x20assistantText(message)\x20{\x0a\x20\x20\x20\x20return\x20(message.content\x20||\x20[])\x0a\x20\x20\x20\x20\x20\x20.filter(function\x20(part)\x20{\x20return\x20part.type\x20===\x20\x27text\x27;\x20})\x0a\x20\x20\x20\x20\x20\x20.map(function\x20(part)\x20{\x20return\x20part.text;\x20})\x0a\x20\x20\x20\x20\x20\x20.join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20.trim();\x0a\x20\x20}\x0a\x20\x20//\x20折叠状态保留:整体重建前记录每个\x20<details>\x20的展开态,重建后逐一还原\x0a\x20\x20//\x20(思考过程默认\x20open,必须连「用户手动收起」也记录,否则刷新会被重新展开)\x0a\x20\x20function\x20captureFolds(root)\x20{\x0a\x20\x20\x20\x20var\x20states\x20=\x20[];\x0a\x20\x20\x20\x20root.querySelectorAll(\x27details.fold\x27).forEach(function\x20(d)\x20{\x20states.push(!!d.open);\x20});\x0a\x20\x20\x20\x20return\x20states;\x0a\x20\x20}\x0a\x20\x20function\x20restoreFolds(root,\x20states)\x20{\x0a\x20\x20\x20\x20if\x20(!states\x20||\x20!states.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20nodes\x20=\x20root.querySelectorAll(\x27details.fold\x27);\x0a\x20\x20\x20\x20states.forEach(function\x20(open,\x20i)\x20{\x20if\x20(nodes[i])\x20{\x20nodes[i].open\x20=\x20open;\x20}\x20});\x0a\x20\x20}\x0a\x20\x20function\x20childSnippet(c)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20STATE.childText[c.id];\x0a\x20\x20\x20\x20if\x20(text)\x20{\x20return\x20text;\x20}\x0a\x20\x20\x20\x20return\x20c.outcome\x20?\x20\x27(无文本输出)\x27\x20:\x20\x27(进行中…)\x27;\x0a\x20\x20}\x0a\x20\x20function\x20childItemHtml(c)\x20{\x0a\x20\x20\x20\x20var\x20label\x20=\x20c.agent\x20||\x20c.title\x20||\x20String(c.id).slice(-6);\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22child-item\x22\x20data-child=\x22\x27\x20+\x20escapeHtml(c.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22ci-head\x22><span\x20class=\x22ci-agent\x22>\x27\x20+\x20escapeHtml(label)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(c.outcome\x20?\x20\x27<span\x20class=\x22ci-outcome\x20\x27\x20+\x20escapeHtml(c.outcome)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(c.outcome)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22ci-open\x22>\x27\x20+\x20(STATE.childOpen[c.id]\x20?\x20\x27收起\x27\x20:\x20\x27展开\x27)\x20+\x20\x27</button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22ci-text\x22>\x27\x20+\x20escapeHtml(String(childSnippet(c)).slice(0,\x20240))\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.childOpen[c.id]\x20?\x20\x27<div\x20class=\x22child-body\x22>\x27\x20+\x20(STATE.childHtml[c.id]\x20||\x20\x27加载中…\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderChildren()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.children.length\x20||\x20STATE.childDismissed)\x20{\x20childBar.classList.remove(\x27show\x27);\x20childBar.innerHTML\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20childBar.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20childBar.innerHTML\x20=\x20\x27<div\x20class=\x22child-title\x22>\x27\x20+\x20icon(\x27bot\x27,\x2012)\x20+\x20\x27\x20子代理\x20·\x20\x27\x20+\x20STATE.children.length\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22cb-btn\x22\x20data-cb=\x22collapse\x22>\x27\x20+\x20(STATE.childCollapsed\x20?\x20\x27展开\x27\x20:\x20\x27收起\x27)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22cb-btn\x22\x20data-cb=\x22close\x22\x20title=\x22关闭(有新子代理时自动恢复)\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(STATE.childCollapsed\x20?\x20\x27\x27\x20:\x20STATE.children.map(childItemHtml).join(\x27\x27));\x0a\x20\x20}\x0a\x20\x20//\x20轮询时只更新文本\x20/\x20徽标,避免整体重建导致已展开的折叠被收起\x0a\x20\x20function\x20updateChildrenText()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.children.length)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20STATE.children.forEach(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20childBar.querySelector(\x27.child-item[data-child=\x22\x27\x20+\x20c.id\x20+\x20\x27\x22]\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!item)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20textEl\x20=\x20item.querySelector(\x27.ci-text\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(textEl)\x20{\x20textEl.textContent\x20=\x20String(childSnippet(c)).slice(0,\x20240);\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20head\x20=\x20item.querySelector(\x27.ci-head\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20badge\x20=\x20item.querySelector(\x27.ci-outcome\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(c.outcome\x20&&\x20!badge\x20&&\x20head)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge\x20=\x20document.createElement(\x27span\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.className\x20=\x20\x27ci-outcome\x20\x27\x20+\x20c.outcome;\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.textContent\x20=\x20c.outcome;\x0a\x20\x20\x20\x20\x20\x20\x20\x20head.insertBefore(badge,\x20item.querySelector(\x27.ci-open\x27));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(badge)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.className\x20=\x20\x27ci-outcome\x20\x27\x20+\x20(c.outcome\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20badge.textContent\x20=\x20c.outcome\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20fetchChildSummary(id)\x20{\x0a\x20\x20\x20\x20//\x20摘要取最近若干条里的最后一条\x20assistant(避免拉全量转写)\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/messages?limit=5&order=desc\x27).then(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20last\x20=\x20(m.data\x20||\x20[]).find(function\x20(x)\x20{\x20return\x20x.type\x20===\x20\x27assistant\x27;\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(last)\x20{\x20STATE.childText[id]\x20=\x20assistantText(last);\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20fetchChildFull(id)\x20{\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/messages?order=desc&limit=200\x27).then(function\x20(m)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20body\x20=\x20childBar.querySelector(\x27.child-item[data-child=\x22\x27\x20+\x20id\x20+\x20\x27\x22]\x20.child-body\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!body)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20open\x20=\x20captureFolds(body);\x0a\x20\x20\x20\x20\x20\x20STATE.childHtml[id]\x20=\x20(m.data\x20||\x20[]).slice().reverse().map(renderMessage).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20body.innerHTML\x20=\x20STATE.childHtml[id];\x0a\x20\x20\x20\x20\x20\x20restoreFolds(body,\x20open);\x0a\x20\x20\x20\x20\x20\x20enhanceCode(body);\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20}\x0a\x20\x20function\x20refreshChildren()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid\x20||\x20STATE.childFetching)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20STATE.childFetching\x20=\x20true;\x0a\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/children\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20structureChanged\x20=\x20list.length\x20!==\x20STATE.children.length\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20list.some(function\x20(c,\x20i)\x20{\x20return\x20!STATE.children[i]\x20||\x20STATE.children[i].id\x20!==\x20c.id;\x20});\x0a\x20\x20\x20\x20\x20\x20//\x20出现新子代理时自动恢复显示(用户关闭过也重新弹出,便于跟踪新任务)\x0a\x20\x20\x20\x20\x20\x20if\x20(list.some(function\x20(c)\x20{\x20return\x20!STATE.children.some(function\x20(o)\x20{\x20return\x20o.id\x20===\x20c.id;\x20});\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.childDismissed\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20STATE.children\x20=\x20list;\x0a\x20\x20\x20\x20\x20\x20if\x20(!list.length)\x20{\x20renderChildren();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(structureChanged)\x20{\x20renderChildren();\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.all(list.map(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20tasks\x20=\x20[fetchChildSummary(c.id)];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.childOpen[c.id])\x20{\x20tasks.push(fetchChildFull(c.id));\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20Promise.all(tasks);\x0a\x20\x20\x20\x20\x20\x20})).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(structureChanged)\x20{\x20renderChildren();\x20}\x20else\x20{\x20updateChildrenText();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20静默:下一轮再试\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.childFetching\x20=\x20false;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20childBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20cb\x20=\x20event.target.closest(\x27button[data-cb]\x27);\x0a\x20\x20\x20\x20if\x20(cb)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(cb.getAttribute(\x27data-cb\x27)\x20===\x20\x27close\x27)\x20{\x20STATE.childDismissed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20else\x20{\x20STATE.childCollapsed\x20=\x20!STATE.childCollapsed;\x20}\x0a\x20\x20\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.child-item[data-child]\x27);\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20id\x20=\x20item.getAttribute(\x27data-child\x27);\x0a\x20\x20\x20\x20STATE.childOpen[id]\x20=\x20!STATE.childOpen[id];\x0a\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20if\x20(STATE.childOpen[id])\x20{\x20refreshChildren();\x20}\x0a\x20\x20});\x0a\x20\x20var\x20childTimer\x20=\x20null;\x0a\x20\x20var\x20CHILD_POLL_MS\x20=\x201500;\x0a\x20\x20var\x20CHILD_POLL_MAX\x20=\x20600;\x20\x20\x20//\x20安全上限(约\x2015\x20分钟),避免事件丢失时无限轮询\x0a\x20\x20function\x20startChildPoll()\x20{\x0a\x20\x20\x20\x20stopChildPoll();\x0a\x20\x20\x20\x20STATE.childPolls\x20=\x200;\x0a\x20\x20\x20\x20childTimer\x20=\x20setInterval(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.childPolls\x20=\x20(STATE.childPolls\x20||\x200)\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.childPolls\x20>\x20CHILD_POLL_MAX)\x20{\x20stopChildPoll();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20refreshChildren();\x0a\x20\x20\x20\x20},\x20CHILD_POLL_MS);\x0a\x20\x20}\x0a\x20\x20function\x20stopChildPoll()\x20{\x0a\x20\x20\x20\x20clearInterval(childTimer);\x0a\x20\x20\x20\x20childTimer\x20=\x20null;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20WebSocket\x20通道(仅\x20Git\x20指令\x20+\x20分支查询;大模型事件推送仍走\x20SSE)\x20----------\x0a\x20\x20var\x20WS_URL\x20=\x20(location.protocol\x20===\x20\x27https:\x27\x20?\x20\x27wss://\x27\x20:\x20\x27ws://\x27)\x20+\x20location.host\x20+\x20\x27/aiwith/ws\x27;\x0a\x20\x20var\x20ws\x20=\x20null,\x20wsSeq\x20=\x200,\x20wsPending\x20=\x20{},\x20wsRetry\x20=\x200,\x20wsTimer\x20=\x20null;\x0a\x0a\x20\x20//\x20指令请求:发\x20{\x20id,\x20cmd,\x20...args\x20},等服务端回\x20{\x20id,\x20ok,\x20data?,\x20summary?\x20}\x0a\x20\x20function\x20wsCall(cmd,\x20args,\x20timeoutMs)\x20{\x0a\x20\x20\x20\x20return\x20new\x20Promise(function\x20(resolve,\x20reject)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!ws\x20||\x20ws.readyState\x20!==\x201)\x20{\x20reject(new\x20Error(\x27通道未连接\x27));\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20id\x20=\x20++wsSeq;\x0a\x20\x20\x20\x20\x20\x20var\x20timer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20delete\x20wsPending[id];\x0a\x20\x20\x20\x20\x20\x20\x20\x20reject(new\x20Error(\x27请求超时\x27));\x0a\x20\x20\x20\x20\x20\x20},\x20timeoutMs\x20||\x2030000);\x0a\x20\x20\x20\x20\x20\x20wsPending[id]\x20=\x20{\x20resolve:\x20resolve,\x20reject:\x20reject,\x20timer:\x20timer\x20};\x0a\x20\x20\x20\x20\x20\x20ws.send(JSON.stringify(Object.assign({\x20id:\x20id,\x20cmd:\x20cmd\x20},\x20args\x20||\x20{})));\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20failPending(reason)\x20{\x0a\x20\x20\x20\x20Object.keys(wsPending).forEach(function\x20(id)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20wsPending[id];\x0a\x20\x20\x20\x20\x20\x20clearTimeout(item.timer);\x0a\x20\x20\x20\x20\x20\x20item.reject(new\x20Error(reason));\x0a\x20\x20\x20\x20\x20\x20delete\x20wsPending[id];\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20onWsMessage(raw)\x20{\x0a\x20\x20\x20\x20var\x20message;\x0a\x20\x20\x20\x20try\x20{\x20message\x20=\x20JSON.parse(raw);\x20}\x20catch\x20(e)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(typeof\x20message.id\x20!==\x20\x27number\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20pending\x20=\x20wsPending[message.id];\x0a\x20\x20\x20\x20if\x20(!pending)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20clearTimeout(pending.timer);\x0a\x20\x20\x20\x20delete\x20wsPending[message.id];\x0a\x20\x20\x20\x20if\x20(message.ok)\x20{\x20pending.resolve(message);\x20}\x0a\x20\x20\x20\x20else\x20{\x20pending.reject(new\x20Error(message.message\x20||\x20\x27请求失败\x27));\x20}\x0a\x20\x20}\x0a\x20\x20function\x20scheduleWsReconnect()\x20{\x0a\x20\x20\x20\x20clearTimeout(wsTimer);\x0a\x20\x20\x20\x20wsRetry\x20=\x20Math.min(wsRetry\x20+\x201,\x206);\x0a\x20\x20\x20\x20wsTimer\x20=\x20setTimeout(connectWs,\x20Math.min(800\x20*\x20Math.pow(2,\x20wsRetry\x20-\x201),\x2015000));\x0a\x20\x20}\x0a\x20\x20function\x20connectWs()\x20{\x0a\x20\x20\x20\x20if\x20(ws\x20&&\x20(ws.readyState\x20===\x200\x20||\x20ws.readyState\x20===\x201))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20try\x20{\x20ws\x20=\x20new\x20WebSocket(WS_URL);\x20}\x20catch\x20(e)\x20{\x20scheduleWsReconnect();\x20return;\x20}\x0a\x20\x20\x20\x20ws.onopen\x20=\x20function\x20()\x20{\x20wsRetry\x20=\x200;\x20};\x0a\x20\x20\x20\x20ws.onmessage\x20=\x20function\x20(frame)\x20{\x20onWsMessage(frame.data);\x20};\x0a\x20\x20\x20\x20ws.onclose\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20failPending(\x27通道已断开\x27);\x0a\x20\x20\x20\x20\x20\x20scheduleWsReconnect();\x0a\x20\x20\x20\x20};\x0a\x20\x20\x20\x20ws.onerror\x20=\x20function\x20()\x20{\x20/*\x20onclose\x20兜底重连\x20*/\x20};\x0a\x20\x20}\x0a\x0a\x20\x20//\x20断线重连后对账所有标签的运行态(期间错过的\x20execution.finished\x20会让标签卡在「运行中」)\x0a\x20\x20//\x20故意不走\x20STATUS_CACHE:running\x20是实时态,缓存会导致\x20busy\x20状态对账错误\x0a\x20\x20function\x20reconcileRunning()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/status\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20running\x20=\x20p.running\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.branch);\x0a\x20\x20\x20\x20\x20\x20STATE.tabs.forEach(function\x20(sid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item)\x20{\x20item.busy\x20=\x20running.indexOf(sid)\x20>\x20-1;\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.sid\x20&&\x20STATE.sessions[STATE.sid])\x20{\x20setBusy(STATE.sessions[STATE.sid].busy);\x20}\x0a\x20\x20\x20\x20\x20\x20else\x20{\x20renderTabs();\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默:下次事件或重连再对账\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20事件流(SSE:大模型事件推送,比\x20WebSocket\x20更稳定)\x20----------\x0a\x20\x20function\x20openEventStream()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.source)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20firstOpen\x20=\x20true;\x0a\x20\x20\x20\x20var\x20source\x20=\x20STATE.source\x20=\x20new\x20EventSource(\x27/aiwith/api/events\x27);\x0a\x20\x20\x20\x20source.onopen\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20首次连接由调用方主动刷新;断线重连时补拉当前会话数据、对账运行态与分支\x0a\x20\x20\x20\x20\x20\x20if\x20(firstOpen)\x20{\x20firstOpen\x20=\x20false;\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.sid)\x20{\x20refreshMessages();\x20refreshPermissions();\x20}\x0a\x20\x20\x20\x20\x20\x20reconcileRunning();\x0a\x20\x20\x20\x20\x20\x20refreshBranch();\x0a\x20\x20\x20\x20};\x0a\x20\x20\x20\x20source.onerror\x20=\x20function\x20()\x20{\x20/*\x20浏览器自动重连\x20*/\x20};\x0a\x20\x20\x20\x20source.onmessage\x20=\x20function\x20(frame)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20event;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20event\x20=\x20JSON.parse(frame.data);\x20}\x20catch\x20(e)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20handleEvent(event.type\x20||\x20\x27\x27,\x20event.data\x20||\x20{});\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20//\x20事件路由(SSE\x20推送),按\x20sessionID\x20分发到对应标签\x0a\x20\x20function\x20handleEvent(type,\x20data)\x20{\x0a\x20\x20\x20\x20var\x20sid\x20=\x20data.sessionID\x20||\x20\x27\x27;\x0a\x0a\x20\x20\x20\x20//\x20全局事件(无\x20sessionID):MCP\x20与注册表\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27mcp.status.changed\x27)\x20{\x20return\x20refreshMcp();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27command.updated\x27\x20||\x20type\x20===\x20\x27agent.updated\x27\x20||\x20type\x20===\x20\x27model.updated\x27)\x20{\x20return\x20refreshRegistry();\x20}\x0a\x0a\x20\x20\x20\x20//\x20会话生命周期(部分事件不带\x20sessionID,如\x20session.created\x20携带会话对象)\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.created\x27\x20||\x20type\x20===\x20\x27session.moved\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.renamed\x27\x20||\x20type\x20===\x20\x27session.deleted\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20rid\x20=\x20sid\x20||\x20(data.session\x20&&\x20data.session.id)\x20||\x20data.id\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.renamed\x27\x20&&\x20rid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20title\x20=\x20data.title\x20||\x20(data.session\x20&&\x20data.session.title);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(title)\x20{\x20ensureSession(rid,\x20{\x20title:\x20title\x20});\x20renderTabs();\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.deleted\x27\x20&&\x20rid\x20&&\x20STATE.tabs.indexOf(rid)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20dropTab(rid);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.historyOpen)\x20{\x20loadSessions();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return;\x20}\x0a\x0a\x20\x20\x20\x20//\x20非当前会话:仅维护本面板标签的运行态与未读;其它会话忽略\x0a\x20\x20\x20\x20if\x20(sid\x20!==\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20meta\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20\x20\x20var\x20changed\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.started\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!meta.busy)\x20{\x20meta.busy\x20=\x20true;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(type\x20===\x20\x27session.execution.succeeded\x27\x20||\x20type\x20===\x20\x27session.execution.failed\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.execution.interrupted\x27\x20||\x20type\x20===\x20\x27session.idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(meta.busy)\x20{\x20meta.busy\x20=\x20false;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!meta.unread)\x20{\x20meta.unread\x20=\x20true;\x20changed\x20=\x20true;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(changed)\x20{\x20renderTabs();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20当前会话:常规处理\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.text.delta\x27)\x20{\x20return\x20onDelta(\x27text\x27,\x20data);\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.reasoning.delta\x27)\x20{\x20return\x20onDelta(\x27reasoning\x27,\x20data);\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.started\x27)\x20{\x20setBusy(true);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.execution.succeeded\x27\x20||\x20type\x20===\x20\x27session.execution.failed\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.execution.interrupted\x27\x20||\x20type\x20===\x20\x27session.idle\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20setBusy(false);\x0a\x20\x20\x20\x20\x20\x20return\x20scheduleRefresh();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.usage.updated\x27\x20||\x20type\x20===\x20\x27session.usage.recorded\x27)\x20{\x20return\x20scheduleRefresh();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.agent.selected\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.agent\x20=\x20data.agent\x20||\x20STATE.agent;\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.model.selected\x27)\x20{\x20return\x20refreshSessionState();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27permission.asked\x27)\x20{\x20refreshPermissions();\x20setStatus(\x27等待授权操作…\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27permission.replied\x27)\x20{\x20refreshPermissions();\x20setStatus(\x27\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27form.created\x27\x20||\x20type\x20===\x20\x27form.replied\x27\x20||\x20type\x20===\x20\x27form.cancelled\x27)\x20{\x20return\x20refreshForms();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.revert.staged\x27\x20||\x20type\x20===\x20\x27session.revert.cleared\x27\x20||\x20type\x20===\x20\x27session.revert.committed\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20refreshSessionState();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.compaction.\x27)\x20===\x200)\x20{\x20return\x20scheduleRefresh();\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.inbox.\x27)\x20===\x200)\x20{\x20return\x20refreshQueue();\x20}\x0a\x20\x20\x20\x20if\x20(type\x20===\x20\x27session.retry.scheduled\x27)\x20{\x20setStatus(\x27请求重试中…\x27);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(type.indexOf(\x27session.tool.\x27)\x20===\x200\x20||\x20type\x20===\x20\x27session.message.content.updated\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type\x20===\x20\x27session.shell.started\x27\x20||\x20type\x20===\x20\x27session.shell.ended\x27\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20type.indexOf(\x27session.step.\x27)\x20===\x200\x20||\x20type\x20===\x20\x27session.skill.activated\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20scheduleRefresh();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20setBusy(busy)\x20{\x0a\x20\x20\x20\x20STATE.busy\x20=\x20busy;\x0a\x20\x20\x20\x20if\x20(STATE.sid)\x20{\x20ensureSession(STATE.sid).busy\x20=\x20busy;\x20}\x0a\x20\x20\x20\x20sendBtn.className\x20=\x20\x27send-btn\x27\x20+\x20(busy\x20?\x20\x27\x20stop\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20sendBtn.innerHTML\x20=\x20busy\x20?\x20icon(\x27square\x27,\x2017)\x20:\x20icon(\x27send\x27,\x2017);\x0a\x20\x20\x20\x20sendBtn.title\x20=\x20busy\x20?\x20\x27停止\x27\x20:\x20\x27发送\x27;\x0a\x20\x20\x20\x20setStatus(busy\x20?\x20\x27AI\x20正在处理…\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20if\x20(busy)\x20{\x20startChildPoll();\x20}\x20else\x20{\x20stopChildPoll();\x20refreshChildren();\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20MCP\x20状态指示(左上角激活个数,悬停详情)\x20----------\x0a\x20\x20var\x20mcpBadge\x20=\x20$(\x27mcpBadge\x27),\x20mcpTip\x20=\x20$(\x27mcpTip\x27);\x0a\x20\x20function\x20renderMcp(list)\x20{\x0a\x20\x20\x20\x20var\x20items\x20=\x20list\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20mcpBadge.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20mcpTip.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20active\x20=\x20items.filter(function\x20(item)\x20{\x20return\x20item.status\x20===\x20\x27connected\x27;\x20}).length;\x0a\x20\x20\x20\x20//\x20「已断开」是默认省\x20token\x20的正常态,不算异常;只有\x20failed/needs_auth\x20才标红\x0a\x20\x20\x20\x20var\x20manageable\x20=\x20items.filter(function\x20(item)\x20{\x20return\x20item.status\x20!==\x20\x27disabled\x27;\x20}).length;\x0a\x20\x20\x20\x20var\x20hasBad\x20=\x20items.some(function\x20(item)\x20{\x20return\x20item.status\x20===\x20\x27failed\x27\x20||\x20item.status\x20===\x20\x27needs_auth\x27\x20||\x20item.status\x20===\x20\x27needsAuth\x27;\x20});\x0a\x20\x20\x20\x20mcpBadge.style.display\x20=\x20\x27flex\x27;\x0a\x20\x20\x20\x20mcpBadge.className\x20=\x20\x27mcp-badge\x27\x20+\x20(hasBad\x20?\x20\x27\x20bad\x27\x20:\x20active\x20>=\x20manageable\x20?\x20\x27\x20all-ok\x27\x20:\x20\x27\x20warn\x27);\x0a\x20\x20\x20\x20mcpBadge.innerHTML\x20=\x20icon(\x27server\x27,\x2013)\x20+\x20\x27<span>\x27\x20+\x20active\x20+\x20\x27/\x27\x20+\x20items.length\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20mcpBadge.title\x20=\x20\x27MCP\x20服务(点击开关)\x27;\x0a\x20\x20\x20\x20mcpTip.innerHTML\x20=\x20\x27<div\x20class=\x22mcp-head\x22>MCP\x20服务</div>\x27\x20+\x20items.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20item.status\x20===\x20\x27pending\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20on\x20=\x20item.status\x20===\x20\x27connected\x27\x20||\x20pending;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22row\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22dot\x20\x27\x20+\x20escapeHtml(item.status)\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22name\x22>\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22state\x22>\x27\x20+\x20escapeHtml(item.status)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<label\x20class=\x22mcp-switch\x22\x20title=\x22\x27\x20+\x20(on\x20?\x20\x27断开(省下其工具上下文)\x27\x20:\x20\x27连接\x27)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<input\x20type=\x22checkbox\x22\x20data-mcp=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22\x27\x20+\x20(on\x20?\x20\x27\x20checked\x27\x20:\x20\x27\x27)\x20+\x20(pending\x20?\x20\x27\x20disabled\x27\x20:\x20\x27\x27)\x20+\x20\x27>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22track\x22></span></label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27\x20+\x20(item.error\x20?\x20\x27<div\x20class=\x22err\x22>\x27\x20+\x20escapeHtml(item.error)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27<div\x20class=\x22mcp-hint\x22>关闭后该\x20MCP\x20的工具不再进入模型上下文(省\x20token)</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20refreshMcp()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/mcp\x27).then(function\x20(payload)\x20{\x20renderMcp(payload.data);\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20右上角:当前\x20Git\x20分支\x20----------\x0a\x20\x20function\x20renderBranch(name)\x20{\x0a\x20\x20\x20\x20if\x20(!branchBadge)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20text\x20=\x20String(name\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(!text)\x20{\x0a\x20\x20\x20\x20\x20\x20branchBadge.style.display\x20=\x20\x27none\x27;\x0a\x20\x20\x20\x20\x20\x20branchBadge.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20branchBadge.removeAttribute(\x27title\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20branchBadge.style.display\x20=\x20\x27inline-flex\x27;\x0a\x20\x20\x20\x20branchBadge.innerHTML\x20=\x20icon(\x27git-branch\x27,\x2011)\x20+\x20\x27<span\x20class=\x22bb-name\x22>\x27\x20+\x20escapeHtml(text)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20branchBadge.title\x20=\x20\x27当前\x20Git\x20分支:\x27\x20+\x20text;\x0a\x20\x20}\x0a\x20\x20//\x20非会话覆盖层(任务中心/调试/账号)打开时,会话类按钮(MCP/新建会话)先切回会话页:\x0a\x20\x20//\x20不弹\x20MCP\x20开关、不新建会话(与点其它工具按钮先收起覆盖层的交互一致)\x0a\x20\x20function\x20chatHiddenByOverlay()\x20{\x0a\x20\x20\x20\x20return\x20[\x27factoryOverlay\x27,\x20\x27debugOverlay\x27,\x20\x27accountOverlay\x27,\x20\x27viewerOverlay\x27].some(function\x20(id)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20el\x20=\x20document.getElementById(id);\x0a\x20\x20\x20\x20\x20\x20return\x20el\x20&&\x20el.classList.contains(\x27show\x27);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20backToChat()\x20{\x0a\x20\x20\x20\x20document.dispatchEvent(new\x20CustomEvent(\x27zen-aiwith-back-to-chat\x27));\x0a\x20\x20}\x0a\x20\x20//\x20MCP\x20徽标:点击打开开关面板(原\x20hover\x20提示改为可交互的列表)\x0a\x20\x20mcpBadge.style.cursor\x20=\x20\x27pointer\x27;\x0a\x20\x20mcpBadge.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20if\x20(chatHiddenByOverlay())\x20{\x20backToChat();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!mcpTip.innerHTML)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rect\x20=\x20mcpBadge.getBoundingClientRect();\x0a\x20\x20\x20\x20mcpTip.style.top\x20=\x20Math.round(rect.top)\x20+\x20\x27px\x27;\x0a\x20\x20\x20\x20mcpTip.style.left\x20=\x20Math.round(rect.right\x20+\x208)\x20+\x20\x27px\x27;\x0a\x20\x20\x20\x20mcpTip.classList.toggle(\x27show\x27);\x0a\x20\x20});\x0a\x20\x20mcpTip.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20var\x20input\x20=\x20event.target\x20&&\x20event.target.closest\x20?\x20event.target.closest(\x27input[data-mcp]\x27)\x20:\x20null;\x0a\x20\x20\x20\x20if\x20(!input)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20mcpName\x20=\x20input.getAttribute(\x27data-mcp\x27);\x0a\x20\x20\x20\x20var\x20want\x20=\x20input.checked;\x0a\x20\x20\x20\x20input.disabled\x20=\x20true;\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/mcp/toggle\x27,\x20{\x20name:\x20mcpName,\x20on:\x20want\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x20renderMcp(payload.data);\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20input.checked\x20=\x20!want;\x0a\x20\x20\x20\x20\x20\x20\x20\x20input.disabled\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20白名单拒绝等原因直呈(否则开关「打不开」没有任何反馈)\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20hint\x20=\x20mcpTip.querySelector(\x27.mcp-hint\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(hint)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hint.textContent\x20=\x20(error\x20&&\x20error.message)\x20||\x20(\x27切换失败\x20HTTP\x20\x27\x20+\x20(error\x20&&\x20error.status));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20hint.textContent\x20=\x20\x27关闭后该\x20MCP\x20的工具不再进入模型上下文(省\x20token)\x27;\x20},\x203000);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(!mcpTip.classList.contains(\x27show\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20target\x20=\x20event.target;\x0a\x20\x20\x20\x20if\x20(target\x20&&\x20target.closest\x20&&\x20(target.closest(\x27#mcpTip\x27)\x20||\x20target.closest(\x27#mcpBadge\x27)))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20mcpTip.classList.remove(\x27show\x27);\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20模型选择(顶栏)\x20----------\x0a\x20\x20var\x20modelPicker\x20=\x20$(\x27modelPicker\x27),\x20modelPanel\x20=\x20$(\x27modelPanel\x27),\x20modelList\x20=\x20$(\x27modelList\x27);\x0a\x20\x20function\x20shortModelName(item)\x20{\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return\x20\x27—\x27;\x20}\x0a\x20\x20\x20\x20var\x20name\x20=\x20item.name\x20||\x20item.modelID\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20var\x20slash\x20=\x20name.lastIndexOf(\x27/\x27);\x0a\x20\x20\x20\x20return\x20slash\x20>\x20-1\x20?\x20name.slice(slash\x20+\x201)\x20:\x20name;\x0a\x20\x20}\x0a\x20\x20function\x20findModel(ref)\x20{\x0a\x20\x20\x20\x20if\x20(!ref)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20return\x20STATE.models.find(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20item.providerID\x20===\x20ref.providerID\x20&&\x20item.modelID\x20===\x20(ref.modelID\x20||\x20ref.id);\x0a\x20\x20\x20\x20})\x20||\x20null;\x0a\x20\x20}\x0a\x20\x20function\x20renderModelPicker()\x20{\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.model;\x0a\x20\x20\x20\x20modelPicker.innerHTML\x20=\x20icon(\x27cpu\x27,\x2012)\x20+\x20\x27<span\x20class=\x22label\x22>\x27\x20+\x20escapeHtml(shortModelName(current))\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20modelPicker.title\x20=\x20current\x20?\x20\x27当前模型:\x27\x20+\x20(current.name\x20||\x20current.modelID)\x20+\x20\x27(点击切换)\x27\x20:\x20\x27切换模型\x27;\x0a\x20\x20}\x0a\x20\x20//\x20免费模型组:opencode\x20官方池。组内只显示零计价(免费)模型,并过滤\x20deepseek。\x0a\x20\x20var\x20FREE_PROVIDER\x20=\x20\x27opencode\x27;\x0a\x20\x20function\x20isModelHidden(item)\x20{\x0a\x20\x20\x20\x20if\x20(item.providerID\x20!==\x20FREE_PROVIDER)\x20{\x20return\x20false;\x20}\x0a\x20\x20\x20\x20if\x20(item.paid)\x20{\x20return\x20true;\x20}\x0a\x20\x20\x20\x20var\x20text\x20=\x20((item.modelID\x20||\x20\x27\x27)\x20+\x20\x27\x20\x27\x20+\x20(item.name\x20||\x20\x27\x27)).toLowerCase();\x0a\x20\x20\x20\x20return\x20text.indexOf(\x27deepseek\x27)\x20>\x20-1;\x0a\x20\x20}\x0a\x20\x20function\x20groupLabel(providerID)\x20{\x0a\x20\x20\x20\x20return\x20providerID\x20===\x20FREE_PROVIDER\x20?\x20\x27免费模型\x27\x20:\x20providerID;\x0a\x20\x20}\x0a\x20\x20function\x20usageOf(item)\x20{\x0a\x20\x20\x20\x20return\x20STATE.modelUsage[item.providerID\x20+\x20\x27/\x27\x20+\x20item.modelID]\x20||\x200;\x0a\x20\x20}\x0a\x20\x20//\x20用量数据(近\x2030\x20天)懒拉取:仅在模型面板打开时取,60s\x20内不重复请求;失败静默回落默认排序\x0a\x20\x20function\x20refreshModelUsage(force)\x20{\x0a\x20\x20\x20\x20var\x20now\x20=\x20Date.now();\x0a\x20\x20\x20\x20if\x20(!force\x20&&\x20STATE.modelUsageAt\x20&&\x20now\x20-\x20STATE.modelUsageAt\x20<\x2060000)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20if\x20(STATE.modelUsagePromise)\x20{\x20return\x20STATE.modelUsagePromise;\x20}\x0a\x20\x20\x20\x20STATE.modelUsagePromise\x20=\x20api(\x27GET\x27,\x20\x27/model/usage\x27)\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsageAt\x20=\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsage\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20(payload.data\x20||\x20[]).forEach(function\x20(u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.modelUsage[u.providerID\x20+\x20\x27/\x27\x20+\x20u.modelID]\x20=\x20u.tokens\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20STATE.modelUsagePromise\x20=\x20null;\x20});\x0a\x20\x20\x20\x20return\x20STATE.modelUsagePromise;\x0a\x20\x20}\x0a\x20\x20function\x20renderModelList()\x20{\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.model;\x0a\x20\x20\x20\x20//\x20分组并按「付费优先」排序(公司场景付费模型优先使用);免费模型组按\x20isModelHidden\x20过滤\x0a\x20\x20\x20\x20var\x20groups\x20=\x20{};\x0a\x20\x20\x20\x20var\x20order\x20=\x20[];\x0a\x20\x20\x20\x20STATE.models.forEach(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(isModelHidden(item))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!groups[item.providerID])\x20{\x20groups[item.providerID]\x20=\x20[];\x20order.push(item.providerID);\x20}\x0a\x20\x20\x20\x20\x20\x20groups[item.providerID].push(item);\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20order.sort(function\x20(a,\x20b)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20paidA\x20=\x20groups[a].some(function\x20(m)\x20{\x20return\x20m.paid;\x20})\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20var\x20paidB\x20=\x20groups[b].some(function\x20(m)\x20{\x20return\x20m.paid;\x20})\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20if\x20(paidA\x20!==\x20paidB)\x20{\x20return\x20paidA\x20-\x20paidB;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20curA\x20=\x20current\x20&&\x20current.providerID\x20===\x20a\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20var\x20curB\x20=\x20current\x20&&\x20current.providerID\x20===\x20b\x20?\x200\x20:\x201;\x0a\x20\x20\x20\x20\x20\x20return\x20curA\x20-\x20curB;\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20if\x20(!order.length)\x20{\x0a\x20\x20\x20\x20\x20\x20modelList.innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>暂无可用模型</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20modelList.innerHTML\x20=\x20order.map(function\x20(providerID)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20expanded\x20=\x20!!STATE.modelExpanded[providerID];\x0a\x20\x20\x20\x20\x20\x20//\x20免费模型组按实际用量降序(稳定排序:未用过的保持原有顺序垫后);其余组维持付费优先\x0a\x20\x20\x20\x20\x20\x20var\x20items\x20=\x20groups[providerID]\x0a\x20\x20\x20\x20\x20\x20\x20\x20.slice()\x0a\x20\x20\x20\x20\x20\x20\x20\x20.sort(providerID\x20===\x20FREE_PROVIDER\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20function\x20(a,\x20b)\x20{\x20return\x20usageOf(b)\x20-\x20usageOf(a);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20function\x20(a,\x20b)\x20{\x20return\x20(a.paid\x20?\x200\x20:\x201)\x20-\x20(b.paid\x20?\x200\x20:\x201);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20isCurrent\x20=\x20current\x20&&\x20item.providerID\x20===\x20current.providerID\x20&&\x20item.modelID\x20===\x20current.modelID;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20limit\x20=\x20item.contextLimit\x20?\x20fmtTokens(item.contextLimit)\x20+\x20\x27\x20上下文\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20variants\x20=\x20item.variants\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20variantHtml\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isCurrent\x20&&\x20variants.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variantHtml\x20=\x20\x27<div\x20class=\x22variant-chips\x22>\x27\x20+\x20variants.map(function\x20(v)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<span\x20class=\x22variant-chip\x27\x20+\x20(v\x20===\x20current.variant\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x22\x20data-variant=\x22\x27\x20+\x20escapeHtml(v)\x20+\x20\x27\x22>\x27\x20+\x20escapeHtml(v)\x20+\x20\x27</span>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22model-item\x27\x20+\x20(isCurrent\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-provider=\x22\x27\x20+\x20escapeHtml(item.providerID)\x20+\x20\x27\x22\x20data-model=\x22\x27\x20+\x20escapeHtml(item.modelID)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22m-name\x22>\x27\x20+\x20escapeHtml(shortModelName(item))\x20+\x20(isCurrent\x20?\x20\x27\x20✓\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(limit\x20?\x20\x27<div\x20class=\x22m-meta\x22>\x27\x20+\x20escapeHtml(limit)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variantHtml\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20currentInGroup\x20=\x20current\x20&&\x20current.providerID\x20===\x20providerID;\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22model-group\x27\x20+\x20(expanded\x20?\x20\x27\x20expanded\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22model-group-head\x22\x20data-provider=\x22\x27\x20+\x20escapeHtml(providerID)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20icon(\x27chevron-right\x27,\x2012).replace(\x27class=\x22ico\x22\x27,\x20\x27class=\x22ico\x20chevron\x22\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mg-name\x22>\x27\x20+\x20escapeHtml(groupLabel(providerID))\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(currentInGroup\x20?\x20\x27<span\x20class=\x22cur-in-group\x22>\x27\x20+\x20escapeHtml(shortModelName(current))\x20+\x20\x27\x20✓</span>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div><div\x20class=\x22model-group-body\x22>\x27\x20+\x20items\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20toggleModelPanel(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.modelOpen;\x0a\x20\x20\x20\x20STATE.modelOpen\x20=\x20open;\x0a\x20\x20\x20\x20modelPanel.classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open)\x20{\x0a\x20\x20\x20\x20\x20\x20renderModelList();\x0a\x20\x20\x20\x20\x20\x20//\x20用量到位后重排一次(面板仍开着才重渲染,避免关面板后白画)\x0a\x20\x20\x20\x20\x20\x20refreshModelUsage().then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.modelOpen)\x20{\x20renderModelList();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20modelPicker.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleModelPanel();\x0a\x20\x20});\x0a\x20\x20modelPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20//\x20组标题:展开\x20/\x20收起\x0a\x20\x20\x20\x20var\x20head\x20=\x20event.target.closest(\x27.model-group-head\x27);\x0a\x20\x20\x20\x20if\x20(head)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20providerID\x20=\x20head.getAttribute(\x27data-provider\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20group\x20=\x20head.parentElement;\x0a\x20\x20\x20\x20\x20\x20STATE.modelExpanded[providerID]\x20=\x20!group.classList.contains(\x27expanded\x27);\x0a\x20\x20\x20\x20\x20\x20group.classList.toggle(\x27expanded\x27,\x20STATE.modelExpanded[providerID]);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20变体选择(如\x20#high)\x0a\x20\x20\x20\x20var\x20chip\x20=\x20event.target.closest(\x27.variant-chip[data-variant]\x27);\x0a\x20\x20\x20\x20if\x20(chip\x20&&\x20!STATE.busy\x20&&\x20STATE.sid\x20&&\x20STATE.model)\x20{\x0a\x20\x20\x20\x20\x20\x20switchModelTo(STATE.model.providerID,\x20STATE.model.modelID,\x20chip.getAttribute(\x27data-variant\x27));\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.model-item[data-model]\x27);\x0a\x20\x20\x20\x20if\x20(!item\x20||\x20STATE.busy\x20||\x20!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20providerID\x20=\x20item.getAttribute(\x27data-provider\x27);\x0a\x20\x20\x20\x20var\x20modelID\x20=\x20item.getAttribute(\x27data-model\x27);\x0a\x20\x20\x20\x20if\x20(STATE.model\x20&&\x20STATE.model.providerID\x20===\x20providerID\x20&&\x20STATE.model.modelID\x20===\x20modelID)\x20{\x0a\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20switchModelTo(providerID,\x20modelID,\x20null);\x0a\x20\x20});\x0a\x20\x20function\x20switchModelTo(providerID,\x20modelID,\x20variant)\x20{\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/model\x27,\x20{\x20model:\x20{\x20providerID:\x20providerID,\x20id:\x20modelID,\x20...(variant\x20?\x20{\x20variant:\x20variant\x20}\x20:\x20{})\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model)\x20||\x20STATE.models.find(function\x20(m)\x20{\x20return\x20m.providerID\x20===\x20providerID\x20&&\x20m.modelID\x20===\x20modelID;\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20matched\x20?\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20})\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20(matched\x20&&\x20matched.contextLimit)\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderModelList();\x0a\x20\x20\x20\x20\x20\x20\x20\x20refreshMessages();\x20\x20//\x20ctx\x20用量按新模型窗口重算\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setError(\x27切换模型失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20}\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.modelOpen\x20&&\x20!event.target.closest(\x27#modelPanel\x27)\x20&&\x20!event.target.closest(\x27#modelPicker\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleModelPanel(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话标签(多会话并发)\x20----------\x0a\x20\x20var\x20TABS_KEY\x20=\x20\x27zen-aiwith:tabs\x27;\x0a\x20\x20function\x20ensureSession(sid,\x20meta)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return\x20null;\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20item\x20=\x20STATE.sessions[sid]\x20=\x20{\x20id:\x20sid,\x20title:\x20\x27\x27,\x20busy:\x20false,\x20unread:\x20false\x20};\x20}\x0a\x20\x20\x20\x20if\x20(meta)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(meta.title)\x20{\x20item.title\x20=\x20meta.title;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20meta.busy\x20===\x20\x27boolean\x27)\x20{\x20item.busy\x20=\x20meta.busy;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20item;\x0a\x20\x20}\x0a\x20\x20function\x20saveTabs()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20localStorage.setItem(TABS_KEY,\x20JSON.stringify({\x20tabs:\x20STATE.tabs,\x20active:\x20STATE.sid\x20}));\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20忽略存储失败\x20*/\x20}\x0a\x20\x20}\x0a\x20\x20function\x20loadTabs()\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20raw\x20=\x20JSON.parse(localStorage.getItem(TABS_KEY)\x20||\x20\x27null\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(raw\x20&&\x20Array.isArray(raw.tabs))\x20{\x20return\x20raw;\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20忽略解析失败\x20*/\x20}\x0a\x20\x20\x20\x20return\x20{\x20tabs:\x20[],\x20active:\x20\x27\x27\x20};\x0a\x20\x20}\x0a\x20\x20function\x20sessionLabel(sid)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20return\x20(item\x20&&\x20item.title)\x20||\x20(\x27会话\x20\x27\x20+\x20String(sid).slice(-6));\x0a\x20\x20}\x0a\x20\x20function\x20renderTabs()\x20{\x0a\x20\x20\x20\x20if\x20(!tabsBar)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20html\x20=\x20STATE.tabs.map(function\x20(sid)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20\x20\x20var\x20dot\x20=\x20item.busy\x20?\x20\x27running\x27\x20:\x20(item.unread\x20?\x20\x27unread\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22tab\x27\x20+\x20(sid\x20===\x20STATE.sid\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-sid=\x22\x27\x20+\x20escapeHtml(sid)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(sessionLabel(sid))\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tab-dot\x20\x27\x20+\x20dot\x20+\x20\x27\x22></span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tab-title\x22>\x27\x20+\x20escapeHtml(sessionLabel(sid))\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(STATE.tabs.length\x20>\x201\x20?\x20\x27<button\x20class=\x22tab-close\x22\x20data-close=\x22\x27\x20+\x20escapeHtml(sid)\x20+\x20\x27\x22\x20title=\x22关闭标签\x22>\x27\x20+\x20icon(\x27x\x27,\x2011)\x20+\x20\x27</button>\x27\x20:\x20\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20tabsBar.innerHTML\x20=\x20html;\x0a\x20\x20}\x0a\x20\x20function\x20addTab(sid,\x20title)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20STATE.tabs.push(sid);\x20}\x0a\x20\x20\x20\x20ensureSession(sid,\x20title\x20?\x20{\x20title:\x20title\x20}\x20:\x20null);\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20}\x0a\x20\x20function\x20removeTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.tabs.splice(index,\x201);\x20}\x0a\x20\x20\x20\x20delete\x20STATE.sessions[sid];\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20}\x0a\x20\x20//\x20切换序号:快速连点标签时,仅最后一次请求的结果生效(丢弃过期响应)\x0a\x20\x20var\x20switchSeq\x20=\x200;\x0a\x20\x20//\x20打开/激活某会话为标签(历史点击与标签点击共用)\x0a\x20\x20function\x20openSession(sid)\x20{\x0a\x20\x20\x20\x20if\x20(!sid)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(sid)\x20===\x20-1)\x20{\x20addTab(sid);\x20}\x0a\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20if\x20(item)\x20{\x20item.unread\x20=\x20false;\x20}\x0a\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20if\x20(sid\x20===\x20STATE.sid)\x20{\x20renderTabs();\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/switch\x27,\x20{\x20sessionID:\x20sid\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20applySession(payload.data\x20||\x20{\x20id:\x20sid\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20setStatus(\x27切换会话失败:\x27\x20+\x20error.message);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20//\x20关闭标签:仅移除标签,会话保留在历史面板可重新打开;运行中的先中断任务(尽力而为)\x0a\x20\x20function\x20closeTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20ensureSession(sid);\x0a\x20\x20\x20\x20if\x20(item\x20&&\x20item.busy)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!confirm(\x27该会话仍在运行,关闭将停止任务。会话保留在历史中,可随时重新打开。确定关闭?\x27))\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20sid\x20+\x20\x27/interrupt\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setStatus(\x27停止任务失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20dropTab(sid);\x0a\x20\x20}\x0a\x20\x20//\x20移除标签并处理「关闭的是当前标签」的切换兜底(无确认)\x0a\x20\x20function\x20dropTab(sid)\x20{\x0a\x20\x20\x20\x20var\x20index\x20=\x20STATE.tabs.indexOf(sid);\x0a\x20\x20\x20\x20if\x20(index\x20===\x20-1)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20wasActive\x20=\x20sid\x20===\x20STATE.sid;\x0a\x20\x20\x20\x20removeTab(sid);\x0a\x20\x20\x20\x20if\x20(!wasActive)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20newSession();\x20return;\x20}\x0a\x20\x20\x20\x20openSession(STATE.tabs[Math.min(index,\x20STATE.tabs.length\x20-\x201)]);\x0a\x20\x20}\x0a\x20\x20function\x20newSession()\x20{\x0a\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/reset\x27,\x20{})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20!==\x20switchSeq)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20setStatus(\x27新建会话失败:服务端未返回会话\x27);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.live\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderedSid\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20ensureSession(session.id,\x20{\x20title:\x20session.title\x20}).unread\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(session.id)\x20===\x20-1)\x20{\x20STATE.tabs.push(session.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20applySession(session);\x0a\x20\x20\x20\x20\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27已新建会话\x27);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20setStatus(\x27新建会话失败:\x27\x20+\x20error.message);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20tabsBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20closeBtn\x20=\x20event.target.closest(\x27.tab-close[data-close]\x27);\x0a\x20\x20\x20\x20if\x20(closeBtn)\x20{\x20event.stopPropagation();\x20closeTab(closeBtn.getAttribute(\x27data-close\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20tab\x20=\x20event.target.closest(\x27.tab[data-sid]\x27);\x0a\x20\x20\x20\x20if\x20(tab)\x20{\x20openSession(tab.getAttribute(\x27data-sid\x27));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20会话\x20----------\x0a\x20\x20function\x20applySession(session)\x20{\x0a\x20\x20\x20\x20if\x20(!session\x20||\x20!session.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20STATE.sid\x20=\x20session.id;\x0a\x20\x20\x20\x20ensureSession(session.id,\x20{\x20title:\x20session.title\x20}).unread\x20=\x20false;\x0a\x20\x20\x20\x20STATE.agent\x20=\x20session.agent\x20||\x20\x27build\x27;\x0a\x20\x20\x20\x20var\x20matched\x20=\x20findModel(session.model);\x0a\x20\x20\x20\x20if\x20(matched)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20Object.assign({},\x20matched,\x20{\x20variant:\x20session.model\x20&&\x20session.model.variant\x20});\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20matched.contextLimit\x20||\x200;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20STATE.revert\x20=\x20session.revert\x20||\x20null;\x0a\x20\x20\x20\x20STATE.cost\x20=\x20session.cost\x20||\x200;\x0a\x20\x20\x20\x20//\x20会话级\x20UI\x20状态全部重置,避免上一会话的内容串到当前会话\x0a\x20\x20\x20\x20STATE.forms\x20=\x20[];\x0a\x20\x20\x20\x20STATE.formsDetail\x20=\x20{};\x0a\x20\x20\x20\x20STATE.permissions\x20=\x20[];\x0a\x20\x20\x20\x20STATE.queue\x20=\x20[];\x0a\x20\x20\x20\x20STATE.children\x20=\x20[];\x0a\x20\x20\x20\x20STATE.childText\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childHtml\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childOpen\x20=\x20{};\x0a\x20\x20\x20\x20STATE.childCollapsed\x20=\x20false;\x0a\x20\x20\x20\x20STATE.childDismissed\x20=\x20false;\x0a\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20renderRevert();\x0a\x20\x20\x20\x20renderForms();\x0a\x20\x20\x20\x20renderPermissions();\x0a\x20\x20\x20\x20renderQueue();\x0a\x20\x20\x20\x20renderChildren();\x0a\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20//\x20运行态同步到输入区(sendBtn\x20图标\x20/\x20状态提示),并驱动子代理轮询\x0a\x20\x20\x20\x20setBusy(!!(STATE.sessions[session.id]\x20&&\x20STATE.sessions[session.id].busy));\x0a\x20\x20\x20\x20refreshMessages();\x0a\x20\x20\x20\x20refreshPermissions();\x0a\x20\x20\x20\x20refreshForms();\x0a\x20\x20\x20\x20refreshQueue();\x0a\x20\x20\x20\x20refreshChildren();\x0a\x20\x20\x20\x20if\x20(STATE.diffOpen)\x20{\x20toggleDiff(true);\x20}\x0a\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20if\x20(STATE.historyOpen)\x20{\x0a\x20\x20\x20\x20\x20\x20loadSessions();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20历史会话\x20----------\x0a\x20\x20function\x20relativeTime(ts)\x20{\x0a\x20\x20\x20\x20if\x20(!ts)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20var\x20diff\x20=\x20Date.now()\x20-\x20ts;\x0a\x20\x20\x20\x20if\x20(diff\x20<\x2060000)\x20{\x20return\x20\x27刚刚\x27;\x20}\x0a\x20\x20\x20\x20if\x20(diff\x20<\x203600000)\x20{\x20return\x20Math.floor(diff\x20/\x2060000)\x20+\x20\x27\x20分钟前\x27;\x20}\x0a\x20\x20\x20\x20if\x20(diff\x20<\x2086400000)\x20{\x20return\x20Math.floor(diff\x20/\x203600000)\x20+\x20\x27\x20小时前\x27;\x20}\x0a\x20\x20\x20\x20return\x20new\x20Date(ts).toLocaleDateString();\x0a\x20\x20}\x0a\x20\x20function\x20loadSessions()\x20{\x0a\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/sessions\x27).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20payload.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20list.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20current\x20=\x20item.id\x20===\x20STATE.sid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20label\x20=\x20item.title\x20||\x20(\x27会话\x20\x27\x20+\x20String(item.id).slice(-6));\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20meta\x20=\x20relativeTime(item.time\x20&&\x20(item.time.updated\x20||\x20item.time.created));\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.agent)\x20{\x20meta\x20=\x20(meta\x20?\x20meta\x20+\x20\x27\x20·\x20\x27\x20:\x20\x27\x27)\x20+\x20item.agent;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22history-item\x27\x20+\x20(current\x20?\x20\x27\x20current\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-id=\x22\x27\x20+\x20escapeHtml(item.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22hi-row\x22><div\x20class=\x22hi-title\x22>\x27\x20+\x20(current\x20?\x20icon(\x27map-pin\x27,\x2012)\x20+\x20\x27\x20\x27\x20:\x20\x27\x27)\x20+\x20escapeHtml(label)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22hi-acts\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22ren\x22\x20title=\x22重命名\x22>✎</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22del\x22\x20title=\x22删除\x22>\x27\x20+\x20icon(\x27x\x27,\x2012)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22hi-meta\x22>\x27\x20+\x20escapeHtml(meta)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20$(\x27historyList\x27).innerHTML\x20=\x20html\x20||\x20\x27<div\x20class=\x22history-empty\x22>暂无历史会话</div>\x27;\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20$(\x27historyList\x27).innerHTML\x20=\x20\x27<div\x20class=\x22history-empty\x22>加载失败:\x27\x20+\x20escapeHtml(error.message)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20toggleHistory(force)\x20{\x0a\x20\x20\x20\x20var\x20open\x20=\x20typeof\x20force\x20===\x20\x27boolean\x27\x20?\x20force\x20:\x20!STATE.historyOpen;\x0a\x20\x20\x20\x20STATE.historyOpen\x20=\x20open;\x0a\x20\x20\x20\x20$(\x27historyPanel\x27).classList.toggle(\x27show\x27,\x20open);\x0a\x20\x20\x20\x20if\x20(open)\x20{\x20loadSessions();\x20}\x0a\x20\x20}\x0a\x20\x20$(\x27historyBtn\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20toggleHistory();\x0a\x20\x20});\x0a\x20\x20$(\x27historyPanel\x27).addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20event.stopPropagation();\x0a\x20\x20\x20\x20var\x20item\x20=\x20event.target.closest(\x27.history-item[data-id]\x27);\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20id\x20=\x20item.getAttribute(\x27data-id\x27);\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27button.del\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(confirm(\x27删除该会话?此操作不可恢复。\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27DELETE\x27,\x20\x27/session/\x27\x20+\x20id,\x20{}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(id)\x20>\x20-1)\x20{\x20removeTab(id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(id\x20===\x20STATE.sid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20return\x20newSession();\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20openSession(STATE.tabs[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20loadSessions();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x20setStatus(\x27删除失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.target.closest(\x27button.ren\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20titleEl\x20=\x20item.querySelector(\x27.hi-title\x27);\x0a\x20\x20\x20\x20\x20\x20var\x20original\x20=\x20titleEl.textContent.trim();\x0a\x20\x20\x20\x20\x20\x20titleEl.outerHTML\x20=\x20\x27<input\x20class=\x22hi-rename\x22\x20value=\x22\x27\x20+\x20escapeHtml(original)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20var\x20input\x20=\x20item.querySelector(\x27.hi-rename\x27);\x0a\x20\x20\x20\x20\x20\x20input.focus();\x0a\x20\x20\x20\x20\x20\x20input.select();\x0a\x20\x20\x20\x20\x20\x20var\x20done\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20var\x20commit\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(done)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20done\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20value\x20=\x20input.value.trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!value\x20||\x20value\x20===\x20original)\x20{\x20loadSessions();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20id\x20+\x20\x27/title\x27,\x20{\x20title:\x20value\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20loadSessions();\x20if\x20(id\x20===\x20STATE.sid)\x20{\x20setStatus(\x27已重命名\x27);\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setStatus(\x27重命名失败:\x27\x20+\x20error.message);\x20loadSessions();\x20});\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20input.addEventListener(\x27keydown\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.key\x20===\x20\x27Enter\x27)\x20{\x20e.preventDefault();\x20commit();\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.key\x20===\x20\x27Escape\x27)\x20{\x20e.preventDefault();\x20done\x20=\x20true;\x20loadSessions();\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20input.addEventListener(\x27blur\x27,\x20commit);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(id\x20===\x20STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20openSession(id);\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(STATE.historyOpen\x20&&\x20!event.target.closest(\x27#historyPanel\x27)\x20&&\x20!event.target.closest(\x27#historyBtn\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20toggleHistory(false);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20模式(agent)切换:输入框内文字标签,点击切换\x20build\x20/\x20plan\x20----------\x0a\x20\x20function\x20primaryAgents()\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20(STATE.agents\x20||\x20[]).filter(function\x20(a)\x20{\x20return\x20a.mode\x20===\x20\x27primary\x27\x20||\x20a.mode\x20===\x20\x27all\x27;\x20});\x0a\x20\x20\x20\x20return\x20list.length\x20?\x20list\x20:\x20[{\x20id:\x20\x27build\x27,\x20name:\x20\x27build\x27\x20},\x20{\x20id:\x20\x27plan\x27,\x20name:\x20\x27plan\x27\x20}];\x0a\x20\x20}\x0a\x20\x20function\x20agentLabel(id)\x20{\x0a\x20\x20\x20\x20var\x20found\x20=\x20(STATE.agents\x20||\x20[]).find(function\x20(a)\x20{\x20return\x20a.id\x20===\x20id;\x20});\x0a\x20\x20\x20\x20return\x20(found\x20&&\x20found.name)\x20||\x20id\x20||\x20\x27build\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderAgents()\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20primaryAgents();\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.agent\x20&&\x20list.some(function\x20(a)\x20{\x20return\x20a.id\x20===\x20STATE.agent;\x20})\x20?\x20STATE.agent\x20:\x20list[0].id;\x0a\x20\x20\x20\x20var\x20index\x20=\x20Math.max(0,\x20list.findIndex(function\x20(a)\x20{\x20return\x20a.id\x20===\x20current;\x20}));\x0a\x20\x20\x20\x20var\x20target\x20=\x20list[(index\x20+\x201)\x20%\x20list.length];\x0a\x20\x20\x20\x20//\x20复用同一按钮节点,仅更新属性(避免重建\x20DOM\x20引起闪烁)\x0a\x20\x20\x20\x20var\x20button\x20=\x20agentSwitch.querySelector(\x27button\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x0a\x20\x20\x20\x20\x20\x20agentSwitch.innerHTML\x20=\x20\x27<button></button>\x27;\x0a\x20\x20\x20\x20\x20\x20button\x20=\x20agentSwitch.querySelector(\x27button\x27);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20button.setAttribute(\x27data-agent\x27,\x20target.id);\x0a\x20\x20\x20\x20button.disabled\x20=\x20STATE.busy;\x0a\x20\x20\x20\x20button.title\x20=\x20\x27点击切换到\x20\x27\x20+\x20agentLabel(target.id)\x20+\x20\x27(Tab\x20/\x20Shift+Tab\x20循环)\x27;\x0a\x20\x20\x20\x20button.textContent\x20=\x20(list.length\x20>\x201\x20?\x20\x27\x27\x20:\x20\x27\x27)\x20+\x20agentLabel(current);\x0a\x20\x20}\x0a\x20\x20function\x20cycleAgent(direction)\x20{\x0a\x20\x20\x20\x20var\x20list\x20=\x20primaryAgents();\x0a\x20\x20\x20\x20if\x20(list.length\x20<\x202)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20current\x20=\x20STATE.agent\x20&&\x20list.some(function\x20(a)\x20{\x20return\x20a.id\x20===\x20STATE.agent;\x20})\x20?\x20STATE.agent\x20:\x20list[0].id;\x0a\x20\x20\x20\x20var\x20index\x20=\x20list.findIndex(function\x20(a)\x20{\x20return\x20a.id\x20===\x20current;\x20});\x0a\x20\x20\x20\x20var\x20next\x20=\x20list[(index\x20+\x20(direction\x20||\x201)\x20+\x20list.length)\x20%\x20list.length];\x0a\x20\x20\x20\x20switchAgent(next.id);\x0a\x20\x20}\x0a\x20\x20//\x20切换智能体(按钮点击\x20/\x20输入框\x20Tab\x20键共用);busy\x20或未就绪时忽略\x0a\x20\x20function\x20switchAgent(target)\x20{\x0a\x20\x20\x20\x20if\x20(!target\x20||\x20!STATE.sid\x20||\x20STATE.busy\x20||\x20target\x20===\x20STATE.agent)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20agentSwitch.querySelectorAll(\x27button\x27).forEach(function\x20(item)\x20{\x20item.disabled\x20=\x20true;\x20});\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/agent\x27,\x20{\x20agent:\x20target\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20仅更新模式标签:消息历史与事件流不受影响,避免整屏重渲抖动\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.agent\x20=\x20(payload.data\x20&&\x20payload.data.agent)\x20||\x20target;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27切换失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20agentSwitch.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-agent]\x27);\x0a\x20\x20\x20\x20if\x20(!button\x20||\x20button.disabled)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20switchAgent(button.getAttribute(\x27data-agent\x27));\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20图片附件:必须经\x20kooteam\x20应用转发上传成功后才可发送(无降级)\x20----------\x0a\x20\x20//\x20自动获取登录\x20token:优先\x20AiWith\x20本机持久化(zen-aiwith:token),回退宿主页登录态\x0a\x20\x20function\x20getToken()\x20{\x0a\x20\x20\x20\x20try\x20{\x20return\x20localStorage.getItem(\x27zen-aiwith:token\x27)\x20||\x20localStorage.getItem(\x27_token_\x27);\x20}\x20catch\x20(e)\x20{\x20return\x20null;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20uploadToKooteam(file)\x20{\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(!token)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20Promise.reject(new\x20Error(\x27未登录,无法上传图片,请先登录后再试\x27));\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20form\x20=\x20new\x20FormData();\x0a\x20\x20\x20\x20form.append(\x27file\x27,\x20file,\x20file.name);\x0a\x20\x20\x20\x20form.append(\x27public\x27,\x20\x27public\x27);\x0a\x20\x20\x20\x20return\x20fetch(\x27/kooteam/api/zen/pair\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20token:\x20token\x20},\x20body:\x20form\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x20return\x20response.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload\x20||\x20payload.success\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error((payload\x20&&\x20payload.message)\x20||\x20\x27kooteam\x20上传失败\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!payload.data\x20||\x20!payload.data.url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27kooteam\x20未返回图片地址\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20payload.data.url;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20renderAttachments()\x20{\x0a\x20\x20\x20\x20var\x20hasAny\x20=\x20STATE.attachments.length\x20||\x20STATE.mentions.length;\x0a\x20\x20\x20\x20attachBar.className\x20=\x20\x27attach-bar\x27\x20+\x20(hasAny\x20?\x20\x27\x20show\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20attachBar.innerHTML\x20=\x0a\x20\x20\x20\x20\x20\x20STATE.attachments.map(function\x20(item,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-thumb\x27\x20+\x20(item.uploading\x20?\x20\x27\x20pending\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(item.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22remove\x22\x20data-index=\x22\x27\x20+\x20index\x20+\x20\x27\x22\x20title=\x22移除\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.map(function\x20(m,\x20index)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22attach-thumb\x20mention\x22\x20title=\x22\x27\x20+\x20escapeHtml(m.path)\x20+\x20\x27\x22\x20style=\x22width:auto;max-width:160px;padding:6px\x208px;display:flex;align-items:center;font-size:11px\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22tool-file-ref\x22>\x27\x20+\x20icon(\x27map-pin\x27,\x2011)\x20+\x20\x27\x20\x27\x20+\x20escapeHtml(m.path)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22remove\x22\x20data-mention=\x22\x27\x20+\x20index\x20+\x20\x27\x22\x20title=\x22移除\x22>\x27\x20+\x20icon(\x27x\x27,\x2010)\x20+\x20\x27</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20addFiles(fileList)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20Array.prototype.slice.call(fileList\x20||\x20[]);\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20无降级:未登录直接拒绝上传\x0a\x20\x20\x20\x20if\x20(!getToken())\x20{\x0a\x20\x20\x20\x20\x20\x20setError(\x27未登录,无法上传图片,请先登录后再试\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20files.forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.attachments.length\x20>=\x205)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27最多附加\x205\x20张图片\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(!/^image\x5c/(png|jpe?g|gif|webp)$/.test(file.type))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27仅支持\x20png\x20/\x20jpeg\x20/\x20gif\x20/\x20webp\x20图片\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20entry\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20file.name\x20||\x20\x27image.png\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20previewUrl:\x20URL.createObjectURL(file),\x0a\x20\x20\x20\x20\x20\x20\x20\x20kooteamUrl:\x20\x27\x27,\x20uploading:\x20true,\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20STATE.attachments.push(entry);\x0a\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20//\x20必须上传成功后才成为有效附件;失败即移除并提示,不做任何降级\x0a\x20\x20\x20\x20\x20\x20uploadToKooteam(file)\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.kooteamUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.previewUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20entry.uploading\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20index\x20=\x20STATE.attachments.indexOf(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(index\x20>\x20-1)\x20{\x20STATE.attachments.splice(index,\x201);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setError(\x27图片上传失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20attachBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20//\x20无降级:未登录先拦截,不进入选图流程\x0a\x20\x20\x20\x20if\x20(!getToken())\x20{\x0a\x20\x20\x20\x20\x20\x20setError(\x27未登录,无法上传图片,请先登录后再试\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20attachInput.click();\x0a\x20\x20});\x0a\x20\x20attachInput.addEventListener(\x27change\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20addFiles(attachInput.files);\x0a\x20\x20\x20\x20attachInput.value\x20=\x20\x27\x27;\x0a\x20\x20});\x0a\x20\x20attachBar.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20mentionBtn\x20=\x20event.target.closest(\x27button[data-mention]\x27);\x0a\x20\x20\x20\x20if\x20(mentionBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.splice(Number(mentionBtn.getAttribute(\x27data-mention\x27)),\x201);\x0a\x20\x20\x20\x20\x20\x20renderAttachments();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20button\x20=\x20event.target.closest(\x27button[data-index]\x27);\x0a\x20\x20\x20\x20if\x20(!button)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20entry\x20=\x20STATE.attachments[Number(button.getAttribute(\x27data-index\x27))];\x0a\x20\x20\x20\x20if\x20(!entry)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(entry.previewUrl\x20&&\x20entry.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x20URL.revokeObjectURL(entry.previewUrl);\x20}\x0a\x20\x20\x20\x20STATE.attachments.splice(STATE.attachments.indexOf(entry),\x201);\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20});\x0a\x20\x20//\x20从剪贴板/拖拽数据中提取图片文件:files\x20→\x20items(file)\x20→\x20HTML\x20img\x20src\x20兜底\x0a\x20\x20function\x20extractImageFiles(dataTransfer)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(!dataTransfer)\x20{\x20return\x20files;\x20}\x0a\x20\x20\x20\x20if\x20(dataTransfer.files\x20&&\x20dataTransfer.files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20Array.prototype.slice.call(dataTransfer.files).forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/^image\x5c//.test(file.type))\x20{\x20files.push(file);\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(!files.length\x20&&\x20dataTransfer.items\x20&&\x20dataTransfer.items.length)\x20{\x0a\x20\x20\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20dataTransfer.items.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20item\x20=\x20dataTransfer.items[i];\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.kind\x20===\x20\x27file\x27\x20&&\x20/^image\x5c//.test(item.type\x20||\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20file\x20=\x20item.getAsFile();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x20files.push(file);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20files;\x0a\x20\x20}\x0a\x20\x20//\x20网页里复制的图片(HTML/URL)没有\x20File\x20对象,尽力抓取为\x20File\x0a\x20\x20function\x20fetchWebImage(dataTransfer)\x20{\x0a\x20\x20\x20\x20var\x20url\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20url\x20=\x20dataTransfer.getData(\x27text/uri-list\x27)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(!url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20html\x20=\x20dataTransfer.getData(\x27text/html\x27)\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20match\x20=\x20html.match(/<img[^>]+src=[\x22\x27]([^\x22\x27]+)[\x22\x27]/i);\x0a\x20\x20\x20\x20\x20\x20\x20\x20url\x20=\x20match\x20?\x20match[1]\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20Promise.resolve(null);\x20}\x0a\x20\x20\x20\x20if\x20(!/^(https?:|data:image\x5c/)/.test(url))\x20{\x20return\x20Promise.resolve(null);\x20}\x0a\x20\x20\x20\x20return\x20fetch(url)\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!response.ok)\x20{\x20throw\x20new\x20Error(\x27HTTP\x20\x27\x20+\x20response.status);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20response.blob();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(blob)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!/^image\x5c//.test(blob.type))\x20{\x20throw\x20new\x20Error(\x27非图片内容\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20ext\x20=\x20(blob.type.split(\x27/\x27)[1]\x20||\x20\x27png\x27).replace(\x27jpeg\x27,\x20\x27jpg\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20new\x20File([blob],\x20\x27pasted-image.\x27\x20+\x20ext,\x20{\x20type:\x20blob.type\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20return\x20null;\x20});\x0a\x20\x20}\x0a\x0a\x20\x20promptInput.addEventListener(\x27paste\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20data\x20=\x20event.clipboardData;\x0a\x20\x20\x20\x20if\x20(!data)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20files\x20=\x20extractImageFiles(data);\x0a\x20\x20\x20\x20if\x20(files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addFiles(files);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20无文件对象(网页图片)时尝试抓取\x0a\x20\x20\x20\x20fetchWebImage(data).then(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20\x20\x20addFiles([file]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20拖拽图片到输入区\x0a\x20\x20function\x20setDragging(on)\x20{\x0a\x20\x20\x20\x20inputBox.classList.toggle(\x27dragover\x27,\x20on);\x0a\x20\x20}\x0a\x20\x20promptInput.addEventListener(\x27dragover\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.dataTransfer\x20&&\x20Array.prototype.some.call(event.dataTransfer.items\x20||\x20[],\x20function\x20(item)\x20{\x20return\x20item.kind\x20===\x20\x27file\x27;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20setDragging(true);\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20promptInput.addEventListener(\x27dragleave\x27,\x20function\x20()\x20{\x20setDragging(false);\x20});\x0a\x20\x20promptInput.addEventListener(\x27drop\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20extractImageFiles(event.dataTransfer);\x0a\x20\x20\x20\x20setDragging(false);\x0a\x20\x20\x20\x20if\x20(files.length)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addFiles(files);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fetchWebImage(event.dataTransfer).then(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20\x20\x20addFiles([file]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20输入区弹层(/\x20命令、@\x20文件引用)\x20----------\x0a\x20\x20function\x20closeMenus()\x20{\x0a\x20\x20\x20\x20STATE.menu\x20=\x20null;\x0a\x20\x20\x20\x20STATE.menuItems\x20=\x20[];\x0a\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20cmdPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20mentionPanel.classList.remove(\x27show\x27);\x0a\x20\x20}\x0a\x20\x20function\x20renderMenu()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.menu\x20===\x20\x27cmd\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20cmdPanel.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20mentionPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20cmdPanel.innerHTML\x20=\x20STATE.menuItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20STATE.menuItems.map(function\x20(c,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22cmd-item\x27\x20+\x20(i\x20===\x20STATE.menuIndex\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-i=\x22\x27\x20+\x20i\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22ci-name\x22>/\x27\x20+\x20escapeHtml(c.name)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22ci-desc\x22>\x27\x20+\x20escapeHtml(c.description\x20||\x20\x27\x27)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27<div\x20class=\x22cmd-item\x22>无匹配命令</div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(STATE.menu\x20===\x20\x27mention\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20mentionPanel.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20cmdPanel.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20\x20\x20mentionPanel.innerHTML\x20=\x20STATE.menuItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20STATE.menuItems.map(function\x20(e,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22mention-item\x27\x20+\x20(i\x20===\x20STATE.menuIndex\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-i=\x22\x27\x20+\x20i\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mi-path\x22>\x27\x20+\x20escapeHtml(e.path)\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22mi-type\x22>\x27\x20+\x20escapeHtml(e.type)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27<div\x20class=\x22mention-item\x22>无匹配文件</div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20var\x20mentionTimer\x20=\x20null;\x0a\x20\x20function\x20detectMenu()\x20{\x0a\x20\x20\x20\x20var\x20value\x20=\x20promptInput.value;\x0a\x20\x20\x20\x20if\x20(/^!/.test(value))\x20{\x20closeMenus();\x20setShellMode(true);\x20return;\x20}\x0a\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20var\x20cmd\x20=\x20/^\x5c/([^\x5cs]*)$/.exec(value);\x0a\x20\x20\x20\x20if\x20(cmd)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.menu\x20=\x20\x27cmd\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20STATE.menuItems\x20=\x20(STATE.commands\x20||\x20[]).filter(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20!cmd[1]\x20||\x20c.name.toLowerCase().indexOf(cmd[1].toLowerCase())\x20>\x20-1;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20caret\x20=\x20promptInput.selectionStart;\x0a\x20\x20\x20\x20var\x20before\x20=\x20value.slice(0,\x20caret);\x0a\x20\x20\x20\x20var\x20at\x20=\x20before.lastIndexOf(\x27@\x27);\x0a\x20\x20\x20\x20if\x20(at\x20>\x20-1\x20&&\x20!/\x5cs/.test(before.slice(at\x20+\x201)))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20query\x20=\x20before.slice(at\x20+\x201);\x0a\x20\x20\x20\x20\x20\x20STATE.menu\x20=\x20\x27mention\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.menuIndex\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20clearTimeout(mentionTimer);\x0a\x20\x20\x20\x20\x20\x20mentionTimer\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20api(\x27GET\x27,\x20\x27/files?query=\x27\x20+\x20encodeURIComponent(query)).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.menu\x20!==\x20\x27mention\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.menuItems\x20=\x20p.data\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).catch(function\x20()\x20{});\x0a\x20\x20\x20\x20\x20\x20},\x20120);\x0a\x20\x20\x20\x20\x20\x20renderMenu();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20}\x0a\x20\x20function\x20setShellMode(on)\x20{\x0a\x20\x20\x20\x20STATE.shellMode\x20=\x20on;\x0a\x20\x20\x20\x20shellBadge.style.display\x20=\x20on\x20?\x20\x27block\x27\x20:\x20\x27none\x27;\x0a\x20\x20\x20\x20promptInput.placeholder\x20=\x20on\x0a\x20\x20\x20\x20\x20\x20?\x20\x27输入\x20shell\x20命令,Enter\x20运行(Esc\x20退出)\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27Enter键发送任务,Tab键切换模式\x27;\x0a\x20\x20}\x0a\x20\x20function\x20chooseMenuItem(index)\x20{\x0a\x20\x20\x20\x20var\x20item\x20=\x20STATE.menuItems[index];\x0a\x20\x20\x20\x20if\x20(!item)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.menu\x20===\x20\x27cmd\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20promptInput.value\x20=\x20\x27/\x27\x20+\x20item.name\x20+\x20\x27\x20\x27;\x0a\x20\x20\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20\x20\x20promptInput.focus();\x0a\x20\x20\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20value\x20=\x20promptInput.value;\x0a\x20\x20\x20\x20var\x20caret\x20=\x20promptInput.selectionStart;\x0a\x20\x20\x20\x20var\x20at\x20=\x20value.slice(0,\x20caret).lastIndexOf(\x27@\x27);\x0a\x20\x20\x20\x20promptInput.value\x20=\x20value.slice(0,\x20at)\x20+\x20\x27@\x27\x20+\x20item.path\x20+\x20\x27\x20\x27\x20+\x20value.slice(caret);\x0a\x20\x20\x20\x20if\x20(!STATE.mentions.some(function\x20(m)\x20{\x20return\x20m.path\x20===\x20item.path;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.mentions.push({\x20path:\x20item.path\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20promptInput.focus();\x0a\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20}\x0a\x20\x20cmdPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20event.target.closest(\x27[data-i]\x27);\x0a\x20\x20\x20\x20if\x20(el)\x20{\x20chooseMenuItem(Number(el.getAttribute(\x27data-i\x27)));\x20}\x0a\x20\x20});\x0a\x20\x20mentionPanel.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20event.target.closest(\x27[data-i]\x27);\x0a\x20\x20\x20\x20if\x20(el)\x20{\x20chooseMenuItem(Number(el.getAttribute(\x27data-i\x27)));\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20输入\x20----------\x0a\x20\x20function\x20autoGrow()\x20{\x0a\x20\x20\x20\x20promptInput.style.height\x20=\x20\x27auto\x27;\x0a\x20\x20\x20\x20promptInput.style.height\x20=\x20Math.min(promptInput.scrollHeight,\x20132)\x20+\x20\x27px\x27;\x0a\x20\x20}\x0a\x20\x20function\x20clearInput()\x20{\x0a\x20\x20\x20\x20promptInput.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20STATE.attachments\x20=\x20[];\x0a\x20\x20\x20\x20STATE.mentions\x20=\x20[];\x0a\x20\x20\x20\x20closeMenus();\x0a\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20renderAttachments();\x0a\x20\x20}\x0a\x20\x20function\x20appendUserBubble(text,\x20attachments)\x20{\x0a\x20\x20\x20\x20var\x20empty\x20=\x20messageList.querySelector(\x27.empty\x27);\x0a\x20\x20\x20\x20if\x20(empty)\x20{\x20empty.remove();\x20}\x0a\x20\x20\x20\x20var\x20attachHtml\x20=\x20attachments\x20&&\x20attachments.length\x0a\x20\x20\x20\x20\x20\x20?\x20\x27<div\x20class=\x22attach-grid\x22>\x27\x20+\x20attachments.map(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20\x27<img\x20src=\x22\x27\x20+\x20escapeHtml(item.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x27\x20+\x20escapeHtml(item.name)\x20+\x20\x27\x22>\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20var\x20wrap\x20=\x20document.createElement(\x27div\x27);\x0a\x20\x20\x20\x20wrap.className\x20=\x20\x27msg\x20user\x27;\x0a\x20\x20\x20\x20wrap.innerHTML\x20=\x20\x27<div\x20class=\x22bubble\x22>\x27\x20+\x20attachHtml\x20+\x20renderMarkdown(text)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20messageList.appendChild(wrap);\x0a\x20\x20\x20\x20scrollBottom(true);\x0a\x20\x20}\x0a\x20\x20promptInput.addEventListener(\x27input\x27,\x20function\x20()\x20{\x20autoGrow();\x20detectMenu();\x20});\x0a\x20\x20promptInput.addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.isComposing)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20弹层键盘导航\x0a\x20\x20\x20\x20if\x20(STATE.menu)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27ArrowDown\x27)\x20{\x20event.preventDefault();\x20STATE.menuIndex\x20=\x20Math.min(STATE.menuIndex\x20+\x201,\x20STATE.menuItems.length\x20-\x201);\x20renderMenu();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27ArrowUp\x27)\x20{\x20event.preventDefault();\x20STATE.menuIndex\x20=\x20Math.max(STATE.menuIndex\x20-\x201,\x200);\x20renderMenu();\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20||\x20event.key\x20===\x20\x27Tab\x27)\x20{\x20event.preventDefault();\x20chooseMenuItem(STATE.menuIndex);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27)\x20{\x20event.preventDefault();\x20closeMenus();\x20return;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20Tab:在所有主智能体之间循环\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Tab\x27\x20&&\x20!event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20cycleAgent(1);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Tab\x27\x20&&\x20event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20cycleAgent(-1);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27\x20&&\x20STATE.shellMode)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20promptInput.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20autoGrow();\x0a\x20\x20\x20\x20\x20\x20setShellMode(false);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Enter\x27\x20&&\x20!event.shiftKey)\x20{\x0a\x20\x20\x20\x20\x20\x20event.preventDefault();\x0a\x20\x20\x20\x20\x20\x20//\x20运行中:Enter\x20引导(steer),Alt+Enter\x20排队(queue)\x0a\x20\x20\x20\x20\x20\x20if\x20(STATE.busy)\x20{\x20submit(event.altKey\x20?\x20\x27queue\x27\x20:\x20\x27steer\x27);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20submit();\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20messageList.addEventListener(\x27scroll\x27,\x20function\x20()\x20{\x20STATE.stickBottom\x20=\x20nearBottom();\x20});\x0a\x0a\x20\x20//\x20hljs\x20以\x20defer\x20加载:首屏渲染若跑在其之前(本地缓存/极快响应),load\x20后统一补一次增强\x0a\x20\x20window.addEventListener(\x27load\x27,\x20function\x20()\x20{\x20enhanceCode();\x20});\x0a\x0a\x20\x20//\x20代码块复制\x20+\x20文件\x20chip\x20打开查看器(文档级委托:消息流\x20/\x20子代理转写\x20/\x20diff\x20面板共用)\x0a\x20\x20document.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20target\x20=\x20event.target;\x0a\x20\x20\x20\x20if\x20(!target\x20||\x20!target.closest)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20copy\x20=\x20target.closest(\x27.code-copy\x27);\x0a\x20\x20\x20\x20if\x20(copy)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20code\x20=\x20copy.parentElement\x20?\x20copy.parentElement.querySelector(\x27code\x27)\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20copyText(code\x20?\x20code.textContent\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20copy.textContent\x20=\x20\x27已复制\x27;\x0a\x20\x20\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20copy.textContent\x20=\x20\x27复制\x27;\x20},\x201200);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20chip\x20=\x20target.closest(\x27.code-file\x27);\x0a\x20\x20\x20\x20if\x20(chip)\x20{\x0a\x20\x20\x20\x20\x20\x20document.dispatchEvent(new\x20CustomEvent(\x27zen-aiwith-open-file\x27,\x20{\x20detail:\x20{\x20path:\x20chip.getAttribute(\x27data-file\x27)\x20||\x20\x27\x27\x20}\x20}));\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x0a\x20\x20function\x20submit(delivery)\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20promptInput.value.trim();\x0a\x20\x20\x20\x20if\x20(!text\x20&&\x20!STATE.attachments.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(STATE.attachments.some(function\x20(item)\x20{\x20return\x20item.uploading;\x20}))\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27附件处理中,请稍候…\x27);\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20shell\x20模式:!command\x0a\x20\x20\x20\x20if\x20(/^!/.test(text))\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20command\x20=\x20text.replace(/^!\x5cs?/,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!command)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20\x20\x20appendUserBubble(\x27!\x20\x27\x20+\x20command,\x20[]);\x0a\x20\x20\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/shell\x27,\x20{\x20command:\x20command\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已运行\x20shell\x20命令\x27);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setBusy(false);\x20setStatus(\x27shell\x20失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20斜杠命令:/name\x20args\x0a\x20\x20\x20\x20var\x20cmd\x20=\x20/^\x5c/([^\x5cs]+)\x5cs*([\x5cs\x5cS]*)$/.exec(text);\x0a\x20\x20\x20\x20if\x20(cmd)\x20{\x0a\x20\x20\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20\x20\x20appendUserBubble(\x27/\x27\x20+\x20cmd[1]\x20+\x20(cmd[2]\x20?\x20\x27\x20\x27\x20+\x20cmd[2]\x20:\x20\x27\x27),\x20[]);\x0a\x20\x20\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/command\x27,\x20{\x20name:\x20cmd[1],\x20text:\x20cmd[2]\x20||\x20\x27\x27\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x20setStatus(\x27已运行命令\x20/\x27\x20+\x20cmd[1]);\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x20setBusy(false);\x20setStatus(\x27命令失败:\x27\x20+\x20error.message);\x20});\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20常规\x20prompt(图片\x20+\x20@\x20文件引用\x20+\x20delivery)\x0a\x20\x20\x20\x20var\x20attachments\x20=\x20STATE.attachments.slice();\x0a\x20\x20\x20\x20var\x20images\x20=\x20attachments\x0a\x20\x20\x20\x20\x20\x20.filter(function\x20(item)\x20{\x20return\x20item.kooteamUrl;\x20})\x0a\x20\x20\x20\x20\x20\x20.map(function\x20(item)\x20{\x20return\x20item.kooteamUrl;\x20});\x0a\x20\x20\x20\x20var\x20mentions\x20=\x20STATE.mentions.slice();\x0a\x20\x20\x20\x20var\x20pageContext\x20=\x20hostPageContext();\x0a\x20\x20\x20\x20clearInput();\x0a\x20\x20\x20\x20appendUserBubble(text\x20||\x20\x27请参考图片\x27,\x20attachments);\x0a\x20\x20\x20\x20setBusy(true);\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/prompt\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20text:\x20text\x20||\x20\x27请参考图片\x27,\x0a\x20\x20\x20\x20\x20\x20...(images.length\x20?\x20{\x20images:\x20images\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(mentions.length\x20?\x20{\x20mentions:\x20mentions\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(delivery\x20?\x20{\x20delivery:\x20delivery\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20...(pageContext\x20?\x20{\x20pageContext:\x20pageContext\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(delivery\x20===\x20\x27queue\x27\x20?\x20\x27已排队,稍后发送\x27\x20:\x20delivery\x20===\x20\x27steer\x27\x20?\x20\x27已发送引导\x27\x20:\x20\x27已发送,等待\x20AI\x20处理…\x27);\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20setBusy(false);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setStatus(\x27发送失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20interrupt()\x20{\x0a\x20\x20\x20\x20if\x20(!STATE.sid)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20api(\x27POST\x27,\x20\x27/session/\x27\x20+\x20STATE.sid\x20+\x20\x27/interrupt\x27,\x20{}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27停止失败:\x27\x20+\x20error.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20sendBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(STATE.busy)\x20{\x20interrupt();\x20}\x20else\x20{\x20submit();\x20}\x0a\x20\x20});\x0a\x0a\x20\x20$(\x27closeBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20parent.postMessage({\x20type:\x20\x27zen-aiwith-close\x27\x20},\x20\x27*\x27);\x0a\x20\x20});\x0a\x0a\x20\x20//\x20全屏:抽屉(右侧\x20min(520px,100vw))↔\x20整屏铺满(由\x20widget.js\x20的\x20.panel-wrap.full\x20承接样式)\x0a\x20\x20var\x20fullscreenOn\x20=\x20false;\x0a\x20\x20var\x20fullscreenBtn\x20=\x20$(\x27fullscreenBtn\x27);\x0a\x20\x20function\x20renderFullscreenBtn()\x20{\x0a\x20\x20\x20\x20if\x20(!fullscreenBtn)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20fullscreenBtn.innerHTML\x20=\x20icon(fullscreenOn\x20?\x20\x27minimize\x27\x20:\x20\x27maximize\x27,\x2016);\x0a\x20\x20\x20\x20fullscreenBtn.setAttribute(\x27data-tip\x27,\x20fullscreenOn\x20?\x20\x27退出全屏\x27\x20:\x20\x27全屏\x27);\x0a\x20\x20}\x0a\x20\x20if\x20(fullscreenBtn)\x20{\x0a\x20\x20\x20\x20fullscreenBtn.addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20fullscreenOn\x20=\x20!fullscreenOn;\x0a\x20\x20\x20\x20\x20\x20renderFullscreenBtn();\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20parent.postMessage({\x20type:\x20\x27zen-aiwith-fullscreen\x27,\x20on:\x20fullscreenOn\x20},\x20\x27*\x27);\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20renderFullscreenBtn();\x0a\x20\x20}\x0a\x20\x20$(\x27newSessionBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20//\x20覆盖层打开时:只切回会话页,不新建会话(见\x20chatHiddenByOverlay\x20注释)\x0a\x20\x20\x20\x20if\x20(chatHiddenByOverlay())\x20{\x20backToChat();\x20return;\x20}\x0a\x20\x20\x20\x20newSession();\x0a\x20\x20});\x0a\x0a\x20\x20//\x20任务中心「本地执行」:factory.js\x20新建本地会话并发出首个需求后,通知此处打开为标签\x0a\x20\x20window.addEventListener(\x27aiwith:open-session\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20detail\x20=\x20event\x20&&\x20event.detail;\x0a\x20\x20\x20\x20if\x20(detail\x20&&\x20detail.id)\x20{\x20openSession(detail.id);\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20----------\x20分支名(WebSocket\x20指令):可能随\x20git\x20checkout\x20变化,定期\x20/\x20回到前台时刷新\x20----------\x0a\x20\x20var\x20BRANCH_POLL_MS\x20=\x2020000;\x0a\x20\x20function\x20refreshBranch()\x20{\x0a\x20\x20\x20\x20wsCall(\x27branch\x27).then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20renderBranch(p.data\x20&&\x20p.data.branch);\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20静默\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20document.addEventListener(\x27visibilitychange\x27,\x20function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!document.hidden)\x20{\x20refreshBranch();\x20}\x0a\x20\x20});\x0a\x20\x20setInterval(function\x20()\x20{\x0a\x20\x20\x20\x20if\x20(!document.hidden)\x20{\x20refreshBranch();\x20}\x0a\x20\x20},\x20BRANCH_POLL_MS);\x0a\x0a\x20\x20//\x20----------\x20启动\x20----------\x0a\x20\x20function\x20boot()\x20{\x0a\x20\x20\x20\x20//\x20先尝试拉取统一下发的网关配置并注入(未登录/网络失败不阻断启动,退回手工配置)\x0a\x20\x20\x20\x20var\x20pre\x20=\x20getToken()\x0a\x20\x20\x20\x20\x20\x20?\x20api(\x27POST\x27,\x20\x27/aiconfig/ensure\x27,\x20{}).catch(function\x20()\x20{\x20return\x20null;\x20})\x0a\x20\x20\x20\x20\x20\x20:\x20Promise.resolve(null);\x0a\x20\x20\x20\x20pre.then(function\x20()\x20{\x20return\x20loadStatus();\x20}).then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20STATE.root\x20=\x20payload.root\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20STATE.ctxLimit\x20=\x20(payload.defaultModel\x20&&\x20payload.defaultModel.contextLimit)\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20STATE.models\x20=\x20payload.models\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.model\x20=\x20payload.defaultModel\x20||\x20STATE.models[0]\x20||\x20null;\x0a\x20\x20\x20\x20\x20\x20STATE.agents\x20=\x20payload.agents\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20STATE.commands\x20=\x20payload.commands\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20var\x20running\x20=\x20payload.running\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20renderModelPicker();\x0a\x20\x20\x20\x20\x20\x20renderMcp(payload.mcp);\x0a\x20\x20\x20\x20\x20\x20renderBranch(payload.branch);\x0a\x20\x20\x20\x20\x20\x20ctxText.title\x20=\x20STATE.model\x20?\x20\x27当前模型:\x27\x20+\x20(STATE.model.name\x20||\x20STATE.model.modelID)\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20renderAgents();\x0a\x20\x20\x20\x20\x20\x20//\x20恢复标签:校验本地记录的会话仍存在(排除子会话),再取桥接层默认会话兜底\x0a\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/sessions\x27).then(function\x20(listResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20existing\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20(listResult.data\x20||\x20[]).forEach(function\x20(item)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.parentID)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20existing[item.id]\x20=\x20item;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20STATE.sessions[item.id]\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.id,\x20title:\x20item.title\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20busy:\x20running.indexOf(item.id)\x20>\x20-1,\x20unread:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20stored\x20=\x20loadTabs();\x0a\x20\x20\x20\x20\x20\x20\x20\x20STATE.tabs\x20=\x20(stored.tabs\x20||\x20[]).filter(function\x20(id)\x20{\x20return\x20existing[id];\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27GET\x27,\x20\x27/session\x27).then(function\x20(result)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20current\x20=\x20result.data;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!current\x20||\x20!current.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ensureSession(current.id,\x20{\x20title:\x20current.title,\x20busy:\x20running.indexOf(current.id)\x20>\x20-1\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!STATE.tabs.length)\x20{\x20STATE.tabs\x20=\x20[current.id];\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(STATE.tabs.indexOf(current.id)\x20===\x20-1)\x20{\x20STATE.tabs.push(current.id);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20active\x20=\x20STATE.tabs.indexOf(stored.active)\x20>\x20-1\x20?\x20stored.active\x20:\x20STATE.tabs[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(active\x20===\x20current.id)\x20{\x20applySession(current);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20seq\x20=\x20++switchSeq;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20api(\x27POST\x27,\x20\x27/session/switch\x27,\x20{\x20sessionID:\x20active\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.then(function\x20(p)\x20{\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20applySession(p.data\x20||\x20{\x20id:\x20active\x20});\x20}\x20})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x20if\x20(seq\x20===\x20switchSeq)\x20{\x20applySession(current);\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20saveTabs();\x0a\x20\x20\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20\x20\x20connectWs();\x0a\x20\x20\x20\x20\x20\x20openEventStream();\x0a\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20setStatus(\x27AiWith\x20服务不可用:\x27\x20+\x20(error.message\x20||\x20\x27未知错误\x27));\x0a\x20\x20\x20\x20\x20\x20messageList.innerHTML\x20=\x20\x27<div\x20class=\x22empty\x22><div\x20class=\x22big\x22>💤</div>AiWith\x20服务未就绪<br><br>请先完成运行环境安装后重启\x20dev\x20server<br><a\x20style=\x22color:#7ea6ff\x22\x20href=\x22https://opencode.ai\x22\x20target=\x22_blank\x22\x20rel=\x22noopener\x22>安装指引</a></div>\x27;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20boot();\x0a})();\x0a','widget.js':db(0x305),'factory.css':db(0x1f9),'factory.js':'/**\x0a\x20*\x20AiWith\x20任务中心(Thor)面板模块(仅\x20dev)。\x0a\x20*\x20与\x20panel.js\x20解耦:自身持有工具栏按钮、覆盖层、请求与渲染;SSE\x20实时\x20+\x20轮询兜底。\x0a\x20*\x20只管理「当前应用」——应用名由插件启动时的\x20name\x20决定,桥接层统一注入,面板不做应用切换。\x0a\x20*\x20契约:面板\x20→\x20/aiwith/api/factory*(桥接)→\x20Thor;Thor\x20一律\x20POST\x20+\x20JSON,\x0a\x20*\x20\x20\x20\x20\x20\x20响应信封\x20{\x20success,\x20action,\x20data,\x20message\x20}(action\x200=成功\x20/\x202=未登录\x20/\x209=错误)。\x0a\x20*/\x0a!(function\x20()\x20{\x0a\x20\x20\x27use\x20strict\x27;\x0a\x20\x20var\x20$\x20=\x20function\x20(id)\x20{\x20return\x20document.getElementById(id);\x20};\x0a\x20\x20if\x20(!$(\x27factoryOverlay\x27))\x20{\x20return;\x20}\x0a\x0a\x20\x20//\x20----------\x20字典(与\x20Thor\x20factoryTaskStatus\x20等一致)----------\x0a\x20\x20var\x20DICT\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x200:\x20[\x27待执行\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27规划\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27执行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stage:\x20{\x200:\x20[\x27排队\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已派发\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27运行\x27,\x20\x27#8B5CF6\x27],\x206:\x20[\x27门禁\x27,\x20\x27#F59E0B\x27],\x208:\x20[\x27完成\x27,\x20\x27#10B981\x27],\x2010:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x2012:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20story:\x20{\x200:\x20[\x27待办\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27已下单\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已完成\x27,\x20\x27#10B981\x27],\x206:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20priority:\x20{\x200:\x20[\x27高\x27,\x20\x27#EF4444\x27],\x202:\x20[\x27中\x27,\x20\x27#F59E0B\x27],\x204:\x20[\x27低\x27,\x20\x27#94A3B8\x27]\x20},\x0a\x20\x20\x20\x20issue:\x20{\x200:\x20[\x27待处理\x27,\x20\x27#94A3B8\x27],\x202:\x20[\x27修复中\x27,\x20\x27#3B82F6\x27],\x204:\x20[\x27已解决\x27,\x20\x27#10B981\x27],\x206:\x20[\x27失败\x27,\x20\x27#EF4444\x27],\x208:\x20[\x27已取消\x27,\x20\x27#6B7280\x27]\x20},\x0a\x20\x20\x20\x20stageName:\x20{\x20plan:\x20\x27规划\x27,\x20confirm:\x20\x27双重确认\x27,\x20models:\x20\x27建模\x27,\x20tools:\x20\x27工具\x27,\x20pages:\x20\x27页面\x27,\x20backend:\x20\x27后端\x27,\x20review:\x20\x27复核\x27,\x20fix:\x20\x27修复\x27,\x20verify:\x20\x27门禁\x27,\x20e2e:\x20\x27e2e\x20验收\x27,\x20merge:\x20\x27合并发布\x27\x20},\x0a\x20\x20\x20\x20msgType:\x20{\x20text:\x20\x27文本\x27,\x20thinking:\x20\x27思考\x27,\x20tool_use:\x20\x27工具\x27,\x20tool_result:\x20\x27结果\x27,\x20user:\x20\x27用户\x27,\x20assistant:\x20\x27Agent\x27\x20},\x0a\x20\x20\x20\x20source:\x20{\x201:\x20\x27手动提交\x27,\x202:\x20\x27任务副产物\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20ENDPOINTS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20{\x20list:\x20\x27/api/factory/tasks\x27,\x20detail:\x20\x27/api/factory/task\x27,\x20activities:\x20\x27/api/factory/activities\x27,\x20messages:\x20\x27/api/factory/messages\x27,\x20idKey:\x20\x27taskId\x27\x20},\x0a\x20\x20\x20\x20story:\x20{\x20list:\x20\x27/api/factoryStory/stories\x27,\x20detail:\x20\x27/api/factoryStory/story\x27,\x20activities:\x20\x27/api/factoryStory/activities\x27,\x20idKey:\x20\x27storyId\x27\x20},\x0a\x20\x20\x20\x20issue:\x20{\x20list:\x20\x27/api/factoryIssue/issues\x27,\x20detail:\x20\x27/api/factoryIssue/issue\x27,\x20activities:\x20\x27/api/factoryIssue/activities\x27,\x20messages:\x20\x27/api/factoryIssue/messages\x27,\x20idKey:\x20\x27issueId\x27\x20},\x0a\x20\x20};\x0a\x20\x20var\x20FILTERS\x20=\x20{\x0a\x20\x20\x20\x20task:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x27active\x27,\x20\x27进行中\x27],\x20[\x27done\x27,\x20\x27完成\x27],\x20[\x27failed\x27,\x20\x27失败\x27],\x20[\x27cancelled\x27,\x20\x27取消\x27]],\x0a\x20\x20\x20\x20story:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待办\x27],\x20[\x272\x27,\x20\x27已下单\x27],\x20[\x274\x27,\x20\x27已完成\x27],\x20[\x276\x27,\x20\x27已取消\x27]],\x0a\x20\x20\x20\x20issue:\x20[[\x27all\x27,\x20\x27全部\x27],\x20[\x270\x27,\x20\x27待处理\x27],\x20[\x272\x27,\x20\x27修复中\x27],\x20[\x274\x27,\x20\x27已解决\x27],\x20[\x276\x27,\x20\x27失败\x27],\x20[\x278\x27,\x20\x27已取消\x27]],\x0a\x20\x20};\x0a\x20\x20var\x20TAB_LABEL\x20=\x20{\x20task:\x20\x27任务\x27,\x20story:\x20\x27需求\x27,\x20issue:\x20\x27问题\x27\x20};\x0a\x20\x20var\x20ACTIVE_TASK\x20=\x20[0,\x202,\x204,\x206];\x0a\x0a\x20\x20var\x20S\x20=\x20{\x0a\x20\x20\x20\x20open:\x20false,\x20booted:\x20false,\x20app:\x20\x27\x27,\x0a\x20\x20\x20\x20tab:\x20\x27task\x27,\x20filters:\x20{\x20task:\x20\x27all\x27,\x20story:\x20\x27all\x27,\x20issue:\x20\x27all\x27\x20},\x0a\x20\x20\x20\x20lists:\x20{\x20task:\x20[],\x20story:\x20[],\x20issue:\x20[]\x20},\x0a\x20\x20\x20\x20detail:\x20null,\x20detailKind:\x20\x27\x27,\x20detailStage:\x20null,\x20activities:\x20[],\x20detailStageMessages:\x20[],\x0a\x20\x20\x20\x20createOpen:\x20false,\x20createImages:\x20[],\x0a\x20\x20\x20\x20streamDownUntil:\x200,\x0a\x20\x20};\x0a\x20\x20var\x20POLL_MS\x20=\x204000,\x20SAFETY_MS\x20=\x2030000,\x20BG_MS\x20=\x2030000;\x0a\x20\x20var\x20timers\x20=\x20{\x20poll:\x20null,\x20safety:\x20null,\x20bg:\x20null,\x20retry:\x20null,\x20debounce:\x20null\x20};\x0a\x20\x20var\x20streamAbort\x20=\x20null,\x20streamAlive\x20=\x20false;\x0a\x0a\x20\x20//\x20----------\x20工具\x20----------\x0a\x20\x20function\x20esc(s)\x20{\x0a\x20\x20\x20\x20return\x20String(s\x20==\x20null\x20?\x20\x27\x27\x20:\x20s).replace(/[&<>\x22\x27]/g,\x20function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20\x27&\x27:\x20\x27&amp;\x27,\x20\x27<\x27:\x20\x27&lt;\x27,\x20\x27>\x27:\x20\x27&gt;\x27,\x20\x27\x22\x27:\x20\x27&quot;\x27,\x20\x22\x27\x22:\x20\x27&#39;\x27\x20}[c];\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20getToken()\x20{\x20try\x20{\x20return\x20localStorage.getItem(\x27zen-aiwith:token\x27)\x20||\x20localStorage.getItem(\x27_token_\x27)\x20||\x20\x27\x27;\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x20}\x0a\x20\x20function\x20fmtTime(sec)\x20{\x0a\x20\x20\x20\x20if\x20(!sec)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20d\x20=\x20new\x20Date(Number(sec)\x20*\x201000);\x0a\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20function\x20(n)\x20{\x20return\x20n\x20<\x2010\x20?\x20\x270\x27\x20+\x20n\x20:\x20\x27\x27\x20+\x20n;\x20};\x0a\x20\x20\x20\x20\x20\x20return\x20d.getFullYear()\x20+\x20\x27-\x27\x20+\x20p(d.getMonth()\x20+\x201)\x20+\x20\x27-\x27\x20+\x20p(d.getDate())\x20+\x20\x27\x20\x27\x20+\x20p(d.getHours())\x20+\x20\x27:\x27\x20+\x20p(d.getMinutes());\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20}\x0a\x20\x20function\x20tag(map,\x20val)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20map[val];\x0a\x20\x20\x20\x20var\x20label\x20=\x20it\x20?\x20it[0]\x20:\x20String(val);\x0a\x20\x20\x20\x20var\x20color\x20=\x20it\x20?\x20it[1]\x20:\x20\x27#6B7280\x27;\x0a\x20\x20\x20\x20return\x20\x27<span\x20class=\x22factory-tag\x22\x20style=\x22background:\x27\x20+\x20color\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</span>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20msg(text,\x20isErr)\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryMsg\x27);\x0a\x20\x20\x20\x20el.textContent\x20=\x20text;\x0a\x20\x20\x20\x20el.className\x20=\x20\x27factory-msg\x20show\x27\x20+\x20(isErr\x20?\x20\x27\x20err\x27\x20:\x20\x27\x27);\x0a\x20\x20\x20\x20clearTimeout(msg._t);\x0a\x20\x20\x20\x20msg._t\x20=\x20setTimeout(function\x20()\x20{\x20el.className\x20=\x20\x27factory-msg\x27;\x20},\x20isErr\x20?\x205200\x20:\x202600);\x0a\x20\x20}\x0a\x20\x20function\x20promptLogin()\x20{\x0a\x20\x20\x20\x20msg(\x27未登录:请先登录任务中心服务后重试\x27,\x20true);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20请求(面板\x20→\x20桥接\x20→\x20Thor;app\x20由桥接统一注入)----------\x0a\x20\x20function\x20head()\x20{\x0a\x20\x20\x20\x20return\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27,\x20Token:\x20getToken()\x20};\x0a\x20\x20}\x0a\x20\x20function\x20post(path,\x20body)\x20{\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith\x27\x20+\x20path,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20head(),\x20body:\x20JSON.stringify(body\x20||\x20{})\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20r.text().then(function\x20(t)\x20{\x20var\x20p\x20=\x20{};\x20try\x20{\x20p\x20=\x20JSON.parse(t);\x20}\x20catch\x20(e)\x20{\x20/*\x20非\x20JSON\x20*/\x20}\x20return\x20{\x20r:\x20r,\x20p:\x20p\x20};\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20p\x20=\x20o.p;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(p\x20&&\x20p.action\x20===\x202)\x20{\x20var\x20e\x20=\x20new\x20Error(\x27未登录\x27);\x20e.login\x20=\x20true;\x20throw\x20e;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!o.r.ok\x20||\x20(p\x20&&\x20p.success\x20===\x20false))\x20{\x20throw\x20new\x20Error((p\x20&&\x20p.message)\x20||\x20(\x27HTTP\x20\x27\x20+\x20o.r.status));\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20p\x20?\x20p.data\x20:\x20null;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20头部\x20/\x20启动\x20----------\x0a\x20\x20function\x20renderHead()\x20{\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).textContent\x20=\x20S.app\x20||\x20\x27未配置应用\x27;\x0a\x20\x20\x20\x20$(\x27factoryApp\x27).title\x20=\x20S.app\x20?\x20(\x27当前应用:\x27\x20+\x20S.app)\x20:\x20\x27未取到应用名(插件启动\x20name)\x27;\x0a\x20\x20}\x0a\x20\x20function\x20boot()\x20{\x0a\x20\x20\x20\x20if\x20(S.booted)\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20S.booted\x20=\x20true;\x0a\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/factory/config\x27).then(function\x20(r)\x20{\x20return\x20r.json();\x20}).then(function\x20(c)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(c)\x20{\x20S.app\x20=\x20c.app\x20||\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20renderHead();\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20renderHead();\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20列表\x20----------\x0a\x20\x20function\x20filtered(tab)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20S.filters[tab];\x0a\x20\x20\x20\x20var\x20list\x20=\x20S.lists[tab]\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(f\x20===\x20\x27all\x27)\x20{\x20return\x20list;\x20}\x0a\x20\x20\x20\x20return\x20list.filter(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(tab\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27active\x27)\x20{\x20return\x20ACTIVE_TASK.indexOf(it.status)\x20>\x20-1;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27done\x27)\x20{\x20return\x20it.status\x20===\x208;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27failed\x27)\x20{\x20return\x20it.status\x20===\x2010;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(f\x20===\x20\x27cancelled\x27)\x20{\x20return\x20it.status\x20===\x2012;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20it.status\x20===\x20Number(f);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20renderTabs()\x20{\x0a\x20\x20\x20\x20var\x20tabs\x20=\x20$(\x27factoryTabs\x27).querySelectorAll(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20for\x20(var\x20i\x20=\x200;\x20i\x20<\x20tabs.length;\x20i++)\x20{\x0a\x20\x20\x20\x20\x20\x20tabs[i].classList.toggle(\x27active\x27,\x20tabs[i].getAttribute(\x27data-tab\x27)\x20===\x20S.tab);\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20renderFilters()\x20{\x0a\x20\x20\x20\x20var\x20opts\x20=\x20FILTERS[S.tab]\x20||\x20[];\x0a\x20\x20\x20\x20$(\x27factoryFilters\x27).innerHTML\x20=\x20opts.map(function\x20(o)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-filter\x27\x20+\x20(S.filters[S.tab]\x20===\x20o[0]\x20?\x20\x27\x20active\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20data-f=\x22\x27\x20+\x20o[0]\x20+\x20\x27\x22>\x27\x20+\x20o[1]\x20+\x20\x27</button>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20itemTask(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22task\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20(\x27任务\x20\x27\x20+\x20String(it.id).slice(-6)))\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.task,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.gitBranch\x20?\x20\x27<span>\x27\x20+\x20esc(it.gitBranch)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20(it.destructive\x20?\x20\x27<span>高风险</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemStory(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22story\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20\x27需求\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.story,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20tag(DICT.priority,\x20it.priority)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.updateGmt)\x20+\x20\x27</span>\x27\x20+\x20(it.taskId\x20?\x20\x27<span>任务\x20\x27\x20+\x20esc(String(it.taskId).slice(-6))\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20itemIssue(it)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-item\x22\x20data-kind=\x22issue\x22\x20data-id=\x22\x27\x20+\x20esc(it.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(it.title\x20||\x20it.content\x20||\x20\x27问题\x27)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.issue,\x20it.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(DICT.source[it.source]\x20||\x20\x27手动提交\x27)\x20+\x20\x27</span><span>\x27\x20+\x20fmtTime(it.createGmt)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20(it.failureReason\x20?\x20\x27<div\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(it.failureReason)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20renderList()\x20{\x0a\x20\x20\x20\x20renderFilters();\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryBody\x27);\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>未取到应用名(插件启动\x20name),无法管理工厂任务</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rows\x20=\x20filtered(S.tab);\x0a\x20\x20\x20\x20if\x20(!rows.length)\x20{\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-empty\x22>暂无\x27\x20+\x20TAB_LABEL[S.tab]\x20+\x20\x27</div>\x27;\x20return;\x20}\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20rows.map(function\x20(it)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27task\x27)\x20{\x20return\x20itemTask(it);\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.tab\x20===\x20\x27story\x27)\x20{\x20return\x20itemStory(it);\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20itemIssue(it);\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20loadList(tab)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[tab].list,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.lists[tab]\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20return\x20d;\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20refresh()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20renderList();\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20loadList(S.tab).then(renderList).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27加载失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20详情\x20----------\x0a\x20\x20function\x20panelHead(title)\x20{\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-panel-head\x22><button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryBack\x22\x20title=\x22返回\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22m15\x2018-6-6\x206-6\x22/></svg></button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<span\x20class=\x22factory-panel-title\x22>\x27\x20+\x20esc(title)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20openDetail(kind,\x20id)\x20{\x0a\x20\x20\x20\x20S.detailKind\x20=\x20kind;\x20S.detailStage\x20=\x20null;\x20S.detailStageMessages\x20=\x20[];\x20S.detail\x20=\x20null;\x20S.activities\x20=\x20[];\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>加载中…</div></div>\x27;\x0a\x20\x20\x20\x20loadDetail(id);\x0a\x20\x20}\x0a\x20\x20function\x20closeDetail()\x20{\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x20el.classList.remove(\x27show\x27);\x20el.innerHTML\x20=\x20\x27\x27;\x20S.detail\x20=\x20null;\x20S.detailStage\x20=\x20null;\x20}\x0a\x20\x20function\x20loadDetail(id)\x20{\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[S.detailKind].detail,\x20{\x20id:\x20id\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detail\x20=\x20d\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20return\x20loadActivities(S.detailKind,\x20id).then(function\x20(acts)\x20{\x20S.activities\x20=\x20acts\x20||\x20[];\x20renderDetail();\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryDetail\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(el)\x20{\x20el.innerHTML\x20=\x20panelHead(\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22><div\x20class=\x22factory-empty\x22>\x27\x20+\x20esc(e.login\x20?\x20\x27未登录\x27\x20:\x20(\x27加载失败:\x27\x20+\x20e.message))\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20loadActivities(kind,\x20id)\x20{\x0a\x20\x20\x20\x20var\x20body\x20=\x20{};\x20body[ENDPOINTS[kind].idKey]\x20=\x20id;\x0a\x20\x20\x20\x20return\x20post(ENDPOINTS[kind].activities,\x20body).catch(function\x20()\x20{\x20return\x20[];\x20});\x0a\x20\x20}\x0a\x20\x20function\x20infoRow(k,\x20v)\x20{\x20return\x20v\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>\x27\x20+\x20esc(k)\x20+\x20\x27</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(v)\x20+\x20\x27</span></div>\x27\x20:\x20\x27\x27;\x20}\x0a\x20\x20function\x20renderDetail()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.detailKind,\x20o\x20=\x20S.detail\x20||\x20{};\x0a\x20\x20\x20\x20var\x20body\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>任务信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.task,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27创建人\x27,\x20o.creator)\x20+\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.destructive\x20?\x20infoRow(\x27标记\x27,\x20\x27高风险(删除/重构/迁移)\x27)\x20:\x20\x27\x27)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.result\x20&&\x20o.result.summary)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>本地执行结果</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.result.summary)\x20+\x20\x27</div>\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20(Array.isArray(o.result.files)\x20&&\x20o.result.files.length\x20?\x20\x27<div\x20class=\x22factory-item-sub\x22\x20style=\x22margin-top:6px\x22>\x27\x20+\x20o.result.files.map(function\x20(f)\x20{\x20return\x20\x27<span>\x27\x20+\x20esc(f)\x20+\x20\x27</span>\x27;\x20}).join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>故事信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.story,\x20o.status)\x20+\x20\x27\x20\x27\x20+\x20tag(DICT.priority,\x20o.priority)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27更新时间\x27,\x20fmtTime(o.updateGmt))\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20(o.taskId\x20?\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>关联任务</span><span\x20class=\x22factory-row-v\x22><a\x20href=\x22javascript:void(0)\x22\x20data-open-task=\x22\x27\x20+\x20esc(o.taskId)\x20+\x20\x27\x22>\x27\x20+\x20esc(o.taskId)\x20+\x20\x27</a></span></div>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.description)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>需求描述\x20/\x20验收条件</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.description)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题信息</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27标题\x27,\x20o.title)\x20+\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-k\x22>状态</span><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20tag(DICT.issue,\x20o.status)\x20+\x20\x27</span></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20infoRow(\x27来源\x27,\x20DICT.source[o.source]\x20||\x20\x27手动提交\x27)\x20+\x20infoRow(\x27来源任务\x27,\x20o.taskId)\x20+\x20infoRow(\x27分支\x27,\x20o.gitBranch)\x20+\x20infoRow(\x27失败原因\x27,\x20o.failureReason)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(o.content)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>问题内容</div><div\x20class=\x22factory-row-v\x22\x20style=\x22white-space:pre-wrap\x22>\x27\x20+\x20esc(o.content)\x20+\x20\x27</div></div>\x27;\x20}\x0a\x20\x20\x20\x20\x20\x20body\x20+=\x20actionsHtml(kind,\x20o);\x0a\x20\x20\x20\x20\x20\x20if\x20(o.stages\x20&&\x20o.stages.length)\x20{\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>修复阶段</div>\x27\x20+\x20stagesHtml(kind,\x20o.stages)\x20+\x20\x27</div>\x27;\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(S.detailStage)\x20{\x20body\x20+=\x20transcriptHtml(S.detailStage);\x20}\x0a\x20\x20\x20\x20body\x20+=\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>活动时间线</div>\x27\x20+\x20activitiesHtml()\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20$(\x27factoryDetail\x27).innerHTML\x20=\x20panelHead(TAB_LABEL[kind]\x20+\x20\x27详情\x27)\x20+\x20\x27<div\x20class=\x22factory-panel-body\x22>\x27\x20+\x20body\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20stagesHtml(kind,\x20stages)\x20{\x0a\x20\x20\x20\x20if\x20(!stages\x20||\x20!stages.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无阶段</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20stages.map(function\x20(t)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-stage\x22\x20data-stage=\x22\x27\x20+\x20esc(t.id)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-top\x22><span\x20class=\x22factory-item-title\x22>\x27\x20+\x20esc(DICT.stageName[t.stage]\x20||\x20t.stage)\x20+\x20\x27</span>\x27\x20+\x20tag(DICT.stage,\x20t.status)\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-item-sub\x22><span>\x27\x20+\x20esc(t.model\x20||\x20\x27-\x27)\x20+\x20\x27</span><span>第\x27\x20+\x20esc(t.attempt)\x20+\x20\x27次</span>\x27\x20+\x20(t.failureReason\x20?\x20\x27<span\x20class=\x22factory-fail\x22>\x27\x20+\x20esc(t.failureReason)\x20+\x20\x27</span>\x27\x20:\x20\x27\x27)\x20+\x20\x27</div></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20isLocalTask(o)\x20{\x20return\x20!!(o\x20&&\x20o.gitBranch\x20&&\x20String(o.gitBranch).indexOf(\x27local-\x27)\x20===\x200);\x20}\x0a\x20\x20function\x20actionsHtml(kind,\x20o)\x20{\x0a\x20\x20\x20\x20var\x20b\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isLocalTask(o))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b.push(\x27<button\x20class=\x22factory-btn\x20primary\x22\x20data-act=\x22localStart\x22>本地执行</button>\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20待执行的远程任务:手工立即拉进流水线(默认等夜间\x2022:00\x20批次)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27startTask\x27,\x20\x27立即执行\x27,\x20\x27primary\x27,\x20\x27/api/factory/startTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定立即执行?任务将进入工厂流水线\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x208\x20},\x20\x27确认本地执行已完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27localResult\x27,\x20\x27标记失败\x27,\x20\x27danger\x27,\x20\x27/api/factory/localResult\x27,\x20{\x20id:\x20o.id,\x20status:\x2010\x20},\x20\x27确认本地执行失败?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20//\x20本地任务(gitBranch=local-*):提供「转远端重跑」,把需求交回远端工厂流水线\x0a\x20\x20\x20\x20\x20\x20if\x20(isLocalTask(o)\x20&&\x20[0,\x204,\x208,\x2010].indexOf(o.status)\x20>\x20-1)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(\x27<button\x20class=\x22factory-btn\x22\x20data-act=\x22remoteRerun\x22>转远端重跑</button>\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(ACTIVE_TASK.indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelTask\x27,\x20\x27取消任务\x27,\x20\x27danger\x27,\x20\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此任务?进行中的阶段将停止\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27orderTask\x27,\x20\x27下单到工厂\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/orderTask\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定下单?将生成工厂任务并自动执行\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27removeStory\x27,\x20\x27删除\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/removeStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定删除此待办需求?\x27));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(o.status\x20===\x202)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27markDone\x27,\x20\x27标记完成\x27,\x20\x27primary\x27,\x20\x27/api/factoryStory/markDone\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定验收通过并标记完成?\x27));\x0a\x20\x20\x20\x20\x20\x20\x20\x20b.push(btn(\x27unorder\x27,\x20\x27撤回下单\x27,\x20\x27\x27,\x20\x27/api/factoryStory/unorder\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定撤回下单?运行中任务将一并取消\x27));\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(o.status\x20!==\x204)\x20{\x20b.push(btn(\x27cancelStory\x27,\x20\x27取消\x27,\x20\x27danger\x27,\x20\x27/api/factoryStory/cancelStory\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此需求?\x27));\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x204,\x206].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27reopenIssue\x27,\x20\x27重新修复\x27,\x20\x27primary\x27,\x20\x27/api/factoryIssue/reopenIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定重新修复此问题?\x27));\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20([0,\x202].indexOf(o.status)\x20>\x20-1)\x20{\x20b.push(btn(\x27cancelIssue\x27,\x20\x27取消问题\x27,\x20\x27danger\x27,\x20\x27/api/factoryIssue/cancelIssue\x27,\x20{\x20id:\x20o.id\x20},\x20\x27确定取消此问题?\x27));\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20b.length\x20?\x20\x27<div\x20class=\x22factory-actions\x22>\x27\x20+\x20b.join(\x27\x27)\x20+\x20\x27</div>\x27\x20:\x20\x27\x27;\x0a\x20\x20}\x0a\x20\x20function\x20btn(name,\x20label,\x20cls,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20return\x20\x27<button\x20class=\x22factory-btn\x20\x27\x20+\x20(cls\x20||\x20\x27\x27)\x20+\x20\x27\x22\x20data-act=\x22\x27\x20+\x20name\x20+\x20\x27\x22\x20data-ep=\x22\x27\x20+\x20esc(ep)\x20+\x20\x27\x22\x20data-body=\x22\x27\x20+\x20esc(JSON.stringify(body))\x20+\x20\x27\x22\x20data-confirm=\x22\x27\x20+\x20esc(confirmText\x20||\x20\x27\x27)\x20+\x20\x27\x22>\x27\x20+\x20esc(label)\x20+\x20\x27</button>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20activitiesHtml()\x20{\x0a\x20\x20\x20\x20var\x20acts\x20=\x20S.activities\x20||\x20[];\x0a\x20\x20\x20\x20if\x20(!acts.length)\x20{\x20return\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无活动</div>\x27;\x20}\x0a\x20\x20\x20\x20return\x20acts.map(function\x20(a)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-row\x22><span\x20class=\x22factory-row-v\x22>\x27\x20+\x20esc(a.summary\x20||\x20\x27\x27)\x20+\x20\x27</span><span\x20style=\x22color:var(--text-faint);font-size:11px\x22>\x27\x20+\x20fmtTime(a.createGmt)\x20+\x20\x27</span></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20transcriptHtml(stageId)\x20{\x0a\x20\x20\x20\x20var\x20m\x20=\x20S.detailStageMessages\x20||\x20[];\x0a\x20\x20\x20\x20var\x20list\x20=\x20m.length\x20?\x20m.map(function\x20(x)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-msg-item\x22><span\x20class=\x22factory-msg-type\x22>\x27\x20+\x20esc(DICT.msgType[x.type]\x20||\x20x.type)\x20+\x20\x27</span>\x27\x20+\x20esc(x.content\x20||\x20\x27\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27)\x20:\x20\x27<div\x20class=\x22factory-empty\x22\x20style=\x22padding:12px\x200\x22>暂无执行消息</div>\x27;\x0a\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-group\x22><div\x20class=\x22factory-group-title\x22>执行记录\x20<span\x20style=\x22color:var(--text-faint)\x22>#\x27\x20+\x20esc(String(stageId).slice(-6))\x20+\x20\x27</span></div>\x27\x20+\x20list\x20+\x20\x27</div>\x27;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20动作\x20----------\x0a\x20\x20function\x20runAction(name,\x20ep,\x20body,\x20confirmText)\x20{\x0a\x20\x20\x20\x20if\x20(confirmText\x20&&\x20!window.confirm(confirmText))\x20{\x20return\x20Promise.resolve();\x20}\x0a\x20\x20\x20\x20return\x20post(ep,\x20body).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已提交\x27);\x0a\x20\x20\x20\x20\x20\x20return\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20return\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg((name\x20?\x20name\x20+\x20\x27:\x27\x20:\x20\x27\x27)\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20//\x20转远端重跑:新建一个非本地任务承接同一需求;当前本地任务若仍活跃则取消\x0a\x20\x20function\x20rerunRemote(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/createTask\x27,\x20{\x20title:\x20task.title\x20||\x20\x27\x27,\x20description:\x20task.description\x20||\x20\x27\x27\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20msg(\x27已转远端工厂执行\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(task.status\x20===\x200\x20||\x20task.status\x20===\x204)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20post(\x27/api/factory/cancelTask\x27,\x20{\x20id:\x20task.id\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh().then(function\x20()\x20{\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27转远端失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20openTranscript(stageId)\x20{\x0a\x20\x20\x20\x20S.detailStage\x20=\x20stageId;\x20S.detailStageMessages\x20=\x20[];\x0a\x20\x20\x20\x20renderDetail();\x0a\x20\x20\x20\x20var\x20ep\x20=\x20ENDPOINTS[S.detailKind].messages;\x0a\x20\x20\x20\x20if\x20(!ep)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(ep,\x20{\x20stageId:\x20stageId,\x20page:\x200,\x20pageSize:\x20100\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20S.detailStageMessages\x20=\x20(d\x20&&\x20(d.list\x20||\x20d.data))\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detailStage\x20===\x20stageId)\x20{\x20renderDetail();\x20}\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20新建(居中弹层,不侧滑):标题合并原描述/内容;相关图片本地上传/粘贴;页面地址可取宿主页面\x20----------\x0a\x20\x20var\x20MAX_IMAGES\x20=\x205;\x0a\x20\x20var\x20IMAGE_RE\x20=\x20/^image\x5c/(png|jpe?g|gif|webp)$/;\x0a\x0a\x20\x20//\x20图片经\x20kooteam\x20转发上传(与聊天附件同通道),返回外链地址\x0a\x20\x20function\x20uploadImage(file)\x20{\x0a\x20\x20\x20\x20var\x20token\x20=\x20getToken();\x0a\x20\x20\x20\x20if\x20(!token)\x20{\x20return\x20Promise.reject(new\x20Error(\x27未登录,无法上传图片,请先登录后再试\x27));\x20}\x0a\x20\x20\x20\x20var\x20form\x20=\x20new\x20FormData();\x0a\x20\x20\x20\x20form.append(\x27file\x27,\x20file,\x20file.name);\x0a\x20\x20\x20\x20form.append(\x27public\x27,\x20\x27public\x27);\x0a\x20\x20\x20\x20return\x20fetch(\x27/kooteam/api/zen/pair\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20token:\x20token\x20},\x20body:\x20form\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x20return\x20r.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(p)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!p\x20||\x20p.success\x20===\x20false)\x20{\x20throw\x20new\x20Error((p\x20&&\x20p.message)\x20||\x20\x27上传失败\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!p.data\x20||\x20!p.data.url)\x20{\x20throw\x20new\x20Error(\x27未返回图片地址\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20p.data.url;\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20revokePreview(it)\x20{\x0a\x20\x20\x20\x20if\x20(it\x20&&\x20it.previewUrl\x20&&\x20it.previewUrl.indexOf(\x27blob:\x27)\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20URL.revokeObjectURL(it.previewUrl);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20function\x20renderCreateThumbs()\x20{\x0a\x20\x20\x20\x20var\x20box\x20=\x20$(\x27f_thumbs\x27);\x0a\x20\x20\x20\x20if\x20(!box)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20box.innerHTML\x20=\x20S.createImages.map(function\x20(it,\x20i)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27<div\x20class=\x22factory-thumb\x27\x20+\x20(it.uploading\x20?\x20\x27\x20pending\x27\x20:\x20\x27\x27)\x20+\x20\x27\x22\x20title=\x22\x27\x20+\x20esc(it.name)\x20+\x20\x27\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<img\x20src=\x22\x27\x20+\x20esc(it.previewUrl)\x20+\x20\x27\x22\x20alt=\x22\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22rm\x22\x20data-rm=\x22\x27\x20+\x20i\x20+\x20\x27\x22\x20title=\x22移除\x22>×</button></div>\x27;\x0a\x20\x20\x20\x20}).join(\x27\x27);\x0a\x20\x20}\x0a\x20\x20function\x20addCreateFiles(fileList)\x20{\x0a\x20\x20\x20\x20var\x20files\x20=\x20Array.prototype.slice.call(fileList\x20||\x20[]).filter(function\x20(f)\x20{\x20return\x20IMAGE_RE.test(f.type);\x20});\x0a\x20\x20\x20\x20if\x20(!files.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20files.forEach(function\x20(file)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.createImages.length\x20>=\x20MAX_IMAGES)\x20{\x20msg(\x27最多上传\x20\x27\x20+\x20MAX_IMAGES\x20+\x20\x27\x20张图片\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20var\x20entry\x20=\x20{\x20name:\x20file.name\x20||\x20\x27image.png\x27,\x20previewUrl:\x20URL.createObjectURL(file),\x20url:\x20\x27\x27,\x20uploading:\x20true\x20};\x0a\x20\x20\x20\x20\x20\x20S.createImages.push(entry);\x0a\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20uploadImage(file).then(function\x20(url)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.url\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.uploading\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20revokePreview(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20entry.previewUrl\x20=\x20url;\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20}).catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20i\x20=\x20S.createImages.indexOf(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x20-1)\x20{\x20S.createImages.splice(i,\x201);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20revokePreview(entry);\x0a\x20\x20\x20\x20\x20\x20\x20\x20renderCreateThumbs();\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27图片上传失败:\x27\x20+\x20error.message,\x20true);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20onModalPaste(e)\x20{\x0a\x20\x20\x20\x20if\x20(!S.createOpen)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20files\x20=\x20e.clipboardData\x20&&\x20e.clipboardData.files;\x0a\x20\x20\x20\x20var\x20hasImage\x20=\x20files\x20&&\x20Array.prototype.some.call(files,\x20function\x20(f)\x20{\x20return\x20IMAGE_RE.test(f.type);\x20});\x0a\x20\x20\x20\x20if\x20(hasImage)\x20{\x0a\x20\x20\x20\x20\x20\x20e.preventDefault();\x0a\x20\x20\x20\x20\x20\x20addCreateFiles(files);\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20//\x20勾选「当前页面」:取宿主页(父级)location.pathname\x20填入;取消勾选清空\x0a\x20\x20function\x20toggleCurPage()\x20{\x0a\x20\x20\x20\x20var\x20cb\x20=\x20$(\x27f_curPage\x27),\x20input\x20=\x20$(\x27f_page\x27);\x0a\x20\x20\x20\x20if\x20(!cb\x20||\x20!input)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(!cb.checked)\x20{\x20input.value\x20=\x20\x27\x27;\x20return;\x20}\x0a\x20\x20\x20\x20var\x20path\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.parent\x20&&\x20window.parent\x20!==\x20window)\x20{\x20path\x20=\x20window.parent.location.pathname;\x20}\x0a\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20path\x20=\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20if\x20(path)\x20{\x20input.value\x20=\x20path;\x20}\x20else\x20{\x20cb.checked\x20=\x20false;\x20msg(\x27取不到宿主页面地址(跨域或独立面板)\x27,\x20true);\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20openCreate()\x20{\x0a\x20\x20\x20\x20if\x20(!S.app)\x20{\x20msg(\x27未取到应用名,无法创建\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20S.createImages\x20=\x20[];\x0a\x20\x20\x20\x20S.createOpen\x20=\x20true;\x0a\x20\x20\x20\x20var\x20fields\x20=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>标题\x20*</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<input\x20class=\x22factory-input\x22\x20id=\x22f_title\x22\x20placeholder=\x22\x27\x20+\x20(kind\x20===\x20\x27issue\x27\x20?\x20\x27问题标题:现象\x20/\x20期望,可写完整些\x27\x20:\x20\x27需求标题:一句话说明,可写完整些\x27)\x20+\x20\x27\x22></div>\x27;\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20+=\x20\x27<label\x20class=\x22factory-check\x22><input\x20type=\x22checkbox\x22\x20id=\x22f_start\x22>\x20立即执行(不勾选则待夜间\x2022:00\x20批次统一执行)</label>\x27;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>优先级</label><select\x20class=\x22factory-input\x22\x20id=\x22f_priority\x22><option\x20value=\x220\x22>高</option><option\x20value=\x222\x22\x20selected>中</option><option\x20value=\x224\x22>低</option></select></div>\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>相关图片</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-thumbs\x22\x20id=\x22f_thumbs\x22></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-upzone\x22\x20id=\x22f_upzone\x22\x20title=\x22点击选择文件,或直接粘贴\x22>点击上传\x20/\x20Ctrl+V\x20粘贴图片(最多\x20\x27\x20+\x20MAX_IMAGES\x20+\x20\x27\x20张)</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<input\x20type=\x22file\x22\x20id=\x22f_files\x22\x20accept=\x22image/png,image/jpeg,image/gif,image/webp\x22\x20multiple\x20style=\x22display:none\x22></div>\x27;\x0a\x20\x20\x20\x20fields\x20+=\x20\x27<div\x20class=\x22factory-field\x22><label\x20class=\x22factory-label\x22>页面地址</label>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-page-row\x22><input\x20class=\x22factory-input\x22\x20id=\x22f_page\x22\x20placeholder=\x22所在页面路径,可勾选自动填充\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<label\x20class=\x22factory-check\x22\x20style=\x22margin:0;white-space:nowrap\x22><input\x20type=\x22checkbox\x22\x20id=\x22f_curPage\x22>\x20当前页面</label></div></div>\x27;\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryModal\x27);\x0a\x20\x20\x20\x20el.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20el.setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20\x27<div\x20class=\x22factory-modal-card\x22>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-head\x22><span\x20class=\x22factory-modal-title\x22>新建\x27\x20+\x20TAB_LABEL[kind]\x20+\x20\x27</span>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22factory-icon-btn\x22\x20id=\x22factoryModalClose\x22\x20title=\x22关闭\x22><svg\x20class=\x22ico\x22\x20width=\x2215\x22\x20height=\x2215\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M18\x206\x206\x2018\x22/><path\x20d=\x22m6\x206\x2012\x2012\x22/></svg></button></div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-body\x22>\x27\x20+\x20fields\x20+\x20\x27</div>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<div\x20class=\x22factory-modal-foot\x22><button\x20class=\x22factory-btn\x22\x20id=\x22factoryCancel\x22>取消</button>\x27\x20+\x0a\x20\x20\x20\x20\x20\x20\x27<button\x20class=\x22factory-btn\x20primary\x22\x20id=\x22factorySubmit\x22>创建\x27\x20+\x20TAB_LABEL[kind]\x20+\x20\x27</button></div></div>\x27;\x0a\x20\x20}\x0a\x20\x20function\x20closeCreate()\x20{\x0a\x20\x20\x20\x20var\x20el\x20=\x20$(\x27factoryModal\x27);\x0a\x20\x20\x20\x20if\x20(!el)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20el.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20el.setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20\x20\x20el.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20S.createImages.forEach(revokePreview);\x0a\x20\x20\x20\x20S.createImages\x20=\x20[];\x0a\x20\x20\x20\x20S.createOpen\x20=\x20false;\x0a\x20\x20}\x0a\x20\x20function\x20composeCreated()\x20{\x0a\x20\x20\x20\x20//\x20页面地址\x20+\x20相关图片\x20→\x20组装为描述/内容(文本字段已合并进标题)\x0a\x20\x20\x20\x20var\x20parts\x20=\x20[];\x0a\x20\x20\x20\x20var\x20page\x20=\x20(($(\x27f_page\x27)\x20||\x20{}).value\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(page)\x20{\x20parts.push(\x27页面地址:\x27\x20+\x20page);\x20}\x0a\x20\x20\x20\x20var\x20urls\x20=\x20S.createImages.map(function\x20(it)\x20{\x20return\x20it.url;\x20}).filter(Boolean);\x0a\x20\x20\x20\x20if\x20(urls.length)\x20{\x20parts.push(\x27相关图片:\x5cn\x27\x20+\x20urls.map(function\x20(u)\x20{\x20return\x20\x27![](\x27\x20+\x20u\x20+\x20\x27)\x27;\x20}).join(\x27\x5cn\x27));\x20}\x0a\x20\x20\x20\x20return\x20parts.join(\x27\x5cn\x5cn\x27);\x0a\x20\x20}\x0a\x20\x20function\x20submitCreate()\x20{\x0a\x20\x20\x20\x20var\x20kind\x20=\x20S.tab;\x0a\x20\x20\x20\x20var\x20title\x20=\x20(($(\x27f_title\x27)\x20||\x20{}).value\x20||\x20\x27\x27).trim();\x0a\x20\x20\x20\x20if\x20(!title)\x20{\x20msg(\x27标题不能为空\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.createImages.some(function\x20(it)\x20{\x20return\x20it.uploading;\x20}))\x20{\x20msg(\x27图片还在上传中,请稍候\x27,\x20true);\x20return;\x20}\x0a\x20\x20\x20\x20var\x20composed\x20=\x20composeCreated();\x0a\x20\x20\x20\x20var\x20body\x20=\x20{\x20title:\x20title\x20};\x0a\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20立即执行:start=1\x20直接拉进流水线;默认待夜间\x2022:00\x20批次\x0a\x20\x20\x20\x20\x20\x20if\x20(($(\x27f_start\x27)\x20||\x20{}).checked)\x20{\x20body.start\x20=\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(composed)\x20{\x20body.description\x20=\x20composed;\x20}\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(composed)\x20{\x20body.description\x20=\x20composed;\x20}\x0a\x20\x20\x20\x20\x20\x20body.priority\x20=\x20Number(($(\x27f_priority\x27)\x20||\x20{}).value\x20||\x202);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27issue\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20问题:content\x20供修复\x20agent\x20使用,无图片/页面时兜底用标题\x0a\x20\x20\x20\x20\x20\x20body.content\x20=\x20composed\x20||\x20title;\x0a\x20\x20\x20\x20}\x20else\x20if\x20(composed)\x20{\x0a\x20\x20\x20\x20\x20\x20body.description\x20=\x20composed;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20ep\x20=\x20{\x20task:\x20\x27/api/factory/createTask\x27,\x20story:\x20\x27/api/factoryStory/createStory\x27,\x20issue:\x20\x27/api/factoryIssue/createIssue\x27\x20}[kind];\x0a\x20\x20\x20\x20var\x20submit\x20=\x20$(\x27factorySubmit\x27);\x0a\x20\x20\x20\x20submit.disabled\x20=\x20true;\x0a\x20\x20\x20\x20post(ep,\x20body).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20closeCreate();\x0a\x20\x20\x20\x20\x20\x20//\x20文案随路径:任务勾选立即执行=已进流水线;默认待夜间批;需求仅入池(下单才建任务)\x0a\x20\x20\x20\x20\x20\x20if\x20(kind\x20===\x20\x27task\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(body.start\x20?\x20\x27已创建,立即执行\x27\x20:\x20\x27已创建,待夜间\x2022:00\x20批次执行\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(kind\x20===\x20\x27story\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27需求已创建,下单后进厂\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20msg(\x27问题已创建,进入修复流水线\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20}).catch(function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20submit.disabled\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20if\x20(e.login)\x20{\x20promptLogin();\x20}\x20else\x20{\x20msg(\x27创建失败:\x27\x20+\x20e.message,\x20true);\x20}\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20本地执行:把需求交给本地\x20AiWith\x20会话,在当前项目里跑\x20----------\x0a\x20\x20function\x20composeLocalPrompt(task)\x20{\x0a\x20\x20\x20\x20var\x20lines\x20=\x20[\x27【任务中心\x20·\x20本地执行】请在当前项目中完成以下任务,完成后简要总结改动:\x27,\x20\x27\x27];\x0a\x20\x20\x20\x20lines.push(\x27标题:\x27\x20+\x20(task.title\x20||\x20\x27\x27));\x0a\x20\x20\x20\x20if\x20(task.description)\x20{\x20lines.push(\x27描述:\x27);\x20lines.push(task.description);\x20}\x0a\x20\x20\x20\x20return\x20lines.join(\x27\x5cn\x27);\x0a\x20\x20}\x0a\x20\x20function\x20startLocal(task)\x20{\x0a\x20\x20\x20\x20if\x20(!task\x20||\x20!task.id)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20先写回「执行中(4)」;失败不阻断本地执行\x0a\x20\x20\x20\x20post(\x27/api/factory/localResult\x27,\x20{\x20id:\x20task.id,\x20status:\x204\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20\x20\x20var\x20prompt\x20=\x20composeLocalPrompt(task);\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/session/reset\x27,\x20{\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20\x27{}\x27\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(r)\x20{\x20return\x20r.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(payload)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20session\x20=\x20(payload\x20&&\x20payload.data)\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!session.id)\x20{\x20throw\x20new\x20Error(\x27未创建本地会话\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20fetch(\x27/aiwith/api/session/\x27\x20+\x20session.id\x20+\x20\x27/prompt\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20\x27POST\x27,\x20headers:\x20{\x20\x27Content-Type\x27:\x20\x27application/json\x27\x20},\x20body:\x20JSON.stringify({\x20text:\x20prompt\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).then(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20close();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20window.dispatchEvent(new\x20CustomEvent(\x27aiwith:open-session\x27,\x20{\x20detail:\x20{\x20id:\x20session.id,\x20title:\x20task.title\x20}\x20}));\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(e)\x20{\x20msg(\x27本地执行启动失败:\x27\x20+\x20(e\x20&&\x20e.message\x20?\x20e.message\x20:\x20e),\x20true);\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20SSE\x20实时\x20+\x20轮询兜底\x20----------\x0a\x20\x20function\x20scheduleRefresh()\x20{\x0a\x20\x20\x20\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.debounce\x20=\x20setTimeout(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20refresh();\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x0a\x20\x20\x20\x20},\x20350);\x0a\x20\x20}\x0a\x20\x20function\x20connectStream()\x20{\x0a\x20\x20\x20\x20if\x20(!S.open)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20//\x20后端推送已知不可用:不反复请求,等低频重探时间到再试(轮询兜底接管)\x0a\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20clearTimeout(timers.retry);\x0a\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20S.streamDownUntil\x20-\x20Date.now());\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20ac\x20=\x20new\x20AbortController();\x0a\x20\x20\x20\x20streamAbort\x20=\x20ac;\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/factory/stream\x27,\x20{\x20headers:\x20{\x20Token:\x20getToken()\x20},\x20signal:\x20ac.signal\x20})\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(res)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.ok\x20||\x20!res.body)\x20{\x20throw\x20new\x20Error(\x27stream\x20http\x20\x27\x20+\x20res.status);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20S.streamDownUntil\x20=\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20reader\x20=\x20res.body.getReader();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20dec\x20=\x20new\x20TextDecoder();\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20buf\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pump\x20=\x20function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20reader.read().then(function\x20(chunk)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(chunk.done)\x20{\x20throw\x20new\x20Error(\x27stream\x20ended\x27);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20+=\x20dec.decode(chunk.value,\x20{\x20stream:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20var\x20idx;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20while\x20((idx\x20=\x20buf.indexOf(\x27\x5cn\x5cn\x27))\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20handleFrame(buf.slice(0,\x20idx));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20buf\x20=\x20buf.slice(idx\x20+\x202);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20pump();\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20()\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ac.signal.aborted)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20delay;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(S.streamDownUntil\x20&&\x20Date.now()\x20<\x20S.streamDownUntil)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.streamDownUntil\x20-\x20Date.now();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20S.retries\x20=\x20(S.retries\x20||\x200)\x20+\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delay\x20=\x20S.retries\x20<=\x204\x20?\x201000\x20*\x20Math.pow(2,\x20S.retries)\x20:\x2060000;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20timers.retry\x20=\x20setTimeout(connectStream,\x20delay);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x20\x20function\x20handleFrame(frame)\x20{\x0a\x20\x20\x20\x20var\x20datas\x20=\x20frame.split(\x27\x5cn\x27).filter(function\x20(l)\x20{\x20return\x20l.indexOf(\x27data:\x27)\x20===\x200;\x20}).map(function\x20(l)\x20{\x20return\x20l.slice(5).trim();\x20});\x0a\x20\x20\x20\x20if\x20(!datas.length)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20var\x20evt\x20=\x20null;\x0a\x20\x20\x20\x20try\x20{\x20evt\x20=\x20JSON.parse(datas.join(\x27\x5cn\x27));\x20}\x20catch\x20(e)\x20{\x20evt\x20=\x20null;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27ping\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(evt\x20&&\x20evt.type\x20===\x20\x27unavailable\x27)\x20{\x20S.streamDownUntil\x20=\x20Date.now()\x20+\x205\x20*\x2060\x20*\x201000;\x20return;\x20}\x0a\x20\x20\x20\x20scheduleRefresh();\x0a\x20\x20}\x0a\x20\x20function\x20startSync()\x20{\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20connectStream();\x0a\x20\x20\x20\x20timers.poll\x20=\x20setInterval(function\x20()\x20{\x20if\x20(!streamAlive)\x20{\x20refresh();\x20}\x20},\x20POLL_MS);\x0a\x20\x20\x20\x20timers.safety\x20=\x20setInterval(function\x20()\x20{\x20refresh();\x20},\x20SAFETY_MS);\x0a\x20\x20}\x0a\x20\x20function\x20stopSync()\x20{\x0a\x20\x20\x20\x20clearInterval(timers.poll);\x20clearInterval(timers.safety);\x20clearTimeout(timers.retry);\x20clearTimeout(timers.debounce);\x0a\x20\x20\x20\x20timers.poll\x20=\x20timers.safety\x20=\x20timers.retry\x20=\x20timers.debounce\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(streamAbort)\x20{\x20try\x20{\x20streamAbort.abort();\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x20streamAbort\x20=\x20null;\x20}\x0a\x20\x20\x20\x20streamAlive\x20=\x20false;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20后台低频(关闭时维护未读点)----------\x0a\x20\x20function\x20startBg()\x20{\x20stopBg();\x20timers.bg\x20=\x20setInterval(bgPoll,\x20BG_MS);\x20}\x0a\x20\x20function\x20stopBg()\x20{\x20clearInterval(timers.bg);\x20timers.bg\x20=\x20null;\x20}\x0a\x20\x20function\x20bgPoll()\x20{\x0a\x20\x20\x20\x20if\x20(S.open\x20||\x20!S.app)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20post(\x27/api/factory/tasks\x27,\x20{\x20page:\x200,\x20pageSize:\x2050\x20}).then(function\x20(d)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20list\x20=\x20(d\x20&&\x20d.list)\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20setUnread(list.some(function\x20(t)\x20{\x20return\x20ACTIVE_TASK.indexOf(t.status)\x20>\x20-1;\x20}));\x0a\x20\x20\x20\x20}).catch(function\x20()\x20{\x20/*\x20ignore\x20*/\x20});\x0a\x20\x20}\x0a\x20\x20function\x20setUnread(on)\x20{\x20var\x20dot\x20=\x20$(\x27factoryUnread\x27);\x20if\x20(dot)\x20{\x20dot.classList.toggle(\x27show\x27,\x20!!on);\x20}\x20}\x0a\x20\x20function\x20clearUnread()\x20{\x20setUnread(false);\x20}\x0a\x0a\x20\x20//\x20----------\x20打开/关闭\x20----------\x0a\x20\x20function\x20open()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20true;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.add(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20clearUnread();\x0a\x20\x20\x20\x20boot().then(function\x20()\x20{\x20refresh();\x20});\x0a\x20\x20\x20\x20startSync();\x0a\x20\x20\x20\x20stopBg();\x0a\x20\x20}\x0a\x20\x20function\x20close()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20false;\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20$(\x27factoryOverlay\x27).setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20\x20\x20closeDetail();\x0a\x20\x20\x20\x20closeCreate();\x0a\x20\x20\x20\x20stopSync();\x0a\x20\x20\x20\x20startBg();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20----------\x20事件绑定\x20----------\x0a\x20\x20$(\x27factoryBtn\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20else\x20{\x20open();\x20}\x20});\x0a\x20\x20//\x20会话类按钮(MCP/新建会话)要求切回会话页时收起工厂面板\x0a\x20\x20document.addEventListener(\x27zen-aiwith-back-to-chat\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20});\x0a\x20\x20//\x20切换到其它工具栏功能时收起工厂面板(主题切换除外,不打断),避免面板开在覆盖层之下\x0a\x20\x20var\x20toolRail\x20=\x20document.querySelector(\x27.tool-rail\x27);\x0a\x20\x20if\x20(toolRail)\x20{\x0a\x20\x20\x20\x20//\x20capture\x20阶段:panel.js\x20对\x20history/review\x20调了\x20stopPropagation,冒泡监听收不到\x0a\x20\x20\x20\x20//\x20newSessionBtn\x20不在此收起:panel\x20侧守卫要先看到「覆盖层开着」才能拦下新建动作(只切回会话页)\x0a\x20\x20\x20\x20toolRail.addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20b\x20=\x20e.target.closest(\x27.icon-btn\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!b\x20||\x20b.id\x20===\x20\x27factoryBtn\x27\x20||\x20b.id\x20===\x20\x27themeBtn\x27\x20||\x20b.id\x20===\x20\x27fullscreenBtn\x27\x20||\x20b.id\x20===\x20\x27newSessionBtn\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(S.open)\x20{\x20close();\x20}\x0a\x20\x20\x20\x20},\x20true);\x0a\x20\x20}\x0a\x20\x20$(\x27factoryClose\x27).addEventListener(\x27click\x27,\x20close);\x0a\x20\x20$(\x27factoryRefresh\x27).addEventListener(\x27click\x27,\x20function\x20()\x20{\x20refresh();\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20loadDetail(S.detail.id);\x20}\x20});\x0a\x20\x20$(\x27factoryNew\x27).addEventListener(\x27click\x27,\x20openCreate);\x0a\x20\x20$(\x27factoryTabs\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20t\x20=\x20e.target.closest(\x27.factory-tab\x27);\x0a\x20\x20\x20\x20if\x20(!t)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.tab\x20=\x20t.getAttribute(\x27data-tab\x27);\x0a\x20\x20\x20\x20renderTabs();\x0a\x20\x20\x20\x20refresh();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryFilters\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20f\x20=\x20e.target.closest(\x27.factory-filter\x27);\x0a\x20\x20\x20\x20if\x20(!f)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20S.filters[S.tab]\x20=\x20f.getAttribute(\x27data-f\x27);\x0a\x20\x20\x20\x20renderList();\x0a\x20\x20});\x0a\x20\x20$(\x27factoryBody\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20var\x20it\x20=\x20e.target.closest(\x27.factory-item\x27);\x0a\x20\x20\x20\x20if\x20(it)\x20{\x20openDetail(it.getAttribute(\x27data-kind\x27),\x20it.getAttribute(\x27data-id\x27));\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryDetail\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factoryBack\x27))\x20{\x20closeDetail();\x20return;\x20}\x0a\x20\x20\x20\x20var\x20openTask\x20=\x20e.target.closest(\x27[data-open-task]\x27);\x0a\x20\x20\x20\x20if\x20(openTask)\x20{\x20openDetail(\x27task\x27,\x20openTask.getAttribute(\x27data-open-task\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20stage\x20=\x20e.target.closest(\x27.factory-stage\x27);\x0a\x20\x20\x20\x20if\x20(stage)\x20{\x20openTranscript(stage.getAttribute(\x27data-stage\x27));\x20return;\x20}\x0a\x20\x20\x20\x20var\x20localBtn\x20=\x20e.target.closest(\x27[data-act=\x22localStart\x22]\x27);\x0a\x20\x20\x20\x20if\x20(localBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(S.detail\x20&&\x20S.detail.id)\x20{\x20startLocal({\x20id:\x20S.detail.id,\x20title:\x20S.detail.title,\x20description:\x20S.detail.description\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20rerunBtn\x20=\x20e.target.closest(\x27[data-act=\x22remoteRerun\x22]\x27);\x0a\x20\x20\x20\x20if\x20(rerunBtn)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(window.confirm(\x27转远端工厂重跑?将新建一个远端任务,当前本地任务将被取消\x27))\x20{\x20rerunRemote(S.detail\x20||\x20{});\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20act\x20=\x20e.target.closest(\x27.factory-btn[data-act]\x27);\x0a\x20\x20\x20\x20if\x20(act)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20body\x20=\x20{};\x20try\x20{\x20body\x20=\x20JSON.parse(act.getAttribute(\x27data-body\x27)\x20||\x20\x27{}\x27);\x20}\x20catch\x20(err)\x20{\x20body\x20=\x20{};\x20}\x0a\x20\x20\x20\x20\x20\x20runAction(act.getAttribute(\x27data-act\x27),\x20act.getAttribute(\x27data-ep\x27),\x20body,\x20act.getAttribute(\x27data-confirm\x27));\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20//\x20新建弹层:点击(遮罩关闭/取消/提交/选图/移除图/勾选当前页面)+\x20change(文件选择)+\x20paste(粘贴图片)\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27click\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target\x20===\x20this)\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factoryModalClose\x27)\x20||\x20e.target.closest(\x27#factoryCancel\x27))\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#factorySubmit\x27))\x20{\x20submitCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(e.target.closest(\x27#f_upzone\x27))\x20{\x20var\x20fi\x20=\x20$(\x27f_files\x27);\x20if\x20(fi)\x20{\x20fi.click();\x20}\x20return;\x20}\x0a\x20\x20\x20\x20var\x20rm\x20=\x20e.target.closest(\x27[data-rm]\x27);\x0a\x20\x20\x20\x20if\x20(rm)\x20{\x0a\x20\x20\x20\x20\x20\x20var\x20i\x20=\x20Number(rm.getAttribute(\x27data-rm\x27));\x0a\x20\x20\x20\x20\x20\x20if\x20(i\x20>\x20-1\x20&&\x20S.createImages[i])\x20{\x20revokePreview(S.createImages[i]);\x20S.createImages.splice(i,\x201);\x20renderCreateThumbs();\x20}\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(e.target.id\x20===\x20\x27f_curPage\x27)\x20{\x20toggleCurPage();\x20return;\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27change\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.target\x20&&\x20e.target.id\x20===\x20\x27f_files\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20addCreateFiles(e.target.files);\x0a\x20\x20\x20\x20\x20\x20e.target.value\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20});\x0a\x20\x20$(\x27factoryModal\x27).addEventListener(\x27paste\x27,\x20onModalPaste);\x0a\x20\x20document.addEventListener(\x27keydown\x27,\x20function\x20(e)\x20{\x0a\x20\x20\x20\x20if\x20(e.key\x20!==\x20\x27Escape\x27)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.createOpen)\x20{\x20closeCreate();\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(S.open)\x20{\x20close();\x20}\x0a\x20\x20});\x0a\x0a\x20\x20//\x20启动:取工厂源与当前应用,开启后台未读轮询\x0a\x20\x20boot().then(startBg);\x0a})();\x0a','debug.css':'/*\x20AiWith\x20页内调试面板覆盖层\x20——\x20复用\x20panel.css\x20的主题变量(免\x20chrome-devtools\x20授权)\x20*/\x0a.debug-overlay\x20{\x0a\x20\x20position:\x20fixed;\x20top:\x200;\x20right:\x200;\x20bottom:\x200;\x20left:\x2046px;\x20z-index:\x2088;\x0a\x20\x20display:\x20none;\x20flex-direction:\x20column;\x0a\x20\x20background:\x20var(--bg);\x20color:\x20var(--text);\x20font-size:\x2013px;\x0a}\x0a.debug-overlay.show\x20{\x20display:\x20flex;\x20}\x0a\x0a.debug-head\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20padding:\x2010px\x2012px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--header-bg);\x20backdrop-filter:\x20blur(8px);\x0a}\x0a.debug-title\x20{\x20font-weight:\x20600;\x20font-size:\x2014px;\x20}\x0a.debug-target\x20{\x0a\x20\x20margin-left:\x20auto;\x20font-size:\x2012px;\x20padding:\x202px\x209px;\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border-strong);\x20background:\x20var(--bg-card);\x20color:\x20var(--text-dim);\x0a\x20\x20max-width:\x20320px;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x0a}\x0a.debug-target.online\x20{\x20color:\x20var(--ok);\x20border-color:\x20var(--ok);\x20}\x0a.debug-target.offline\x20{\x20color:\x20var(--err);\x20border-color:\x20var(--err);\x20}\x0a.debug-icon-btn\x20{\x0a\x20\x20display:\x20flex;\x20align-items:\x20center;\x20justify-content:\x20center;\x20width:\x2026px;\x20height:\x2026px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x0a}\x0a.debug-icon-btn:hover\x20{\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a\x0a.debug-tabs\x20{\x20display:\x20flex;\x20gap:\x204px;\x20padding:\x208px\x2012px\x200;\x20}\x0a.debug-tab\x20{\x0a\x20\x20border:\x20none;\x20background:\x20none;\x20color:\x20var(--text-dim);\x20font-size:\x2013px;\x20padding:\x206px\x2012px\x208px;\x0a\x20\x20border-radius:\x208px\x208px\x200\x200;\x20cursor:\x20pointer;\x20border-bottom:\x202px\x20solid\x20transparent;\x0a}\x0a.debug-tab.active\x20{\x20color:\x20var(--brand-text);\x20border-bottom-color:\x20var(--brand);\x20font-weight:\x20600;\x20}\x0a\x0a.debug-body\x20{\x20flex:\x201;\x20overflow-y:\x20auto;\x20padding:\x2010px\x2012px\x2024px;\x20}\x0a.debug-pane\x20{\x20display:\x20flex;\x20flex-direction:\x20column;\x20gap:\x208px;\x20}\x0a.debug-pane[hidden]\x20{\x20display:\x20none;\x20}\x0a.debug-row\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x208px;\x20flex-wrap:\x20wrap;\x20}\x0a.debug-row\x20label\x20{\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20}\x0a.debug-row\x20input[type=\x22text\x22],\x20.debug-row\x20input:not([type]),\x20.debug-row\x20input[type=\x22number\x22]\x20{\x0a\x20\x20flex:\x200\x201\x20220px;\x20min-width:\x200;\x20padding:\x205px\x209px;\x20font-size:\x2012px;\x20color:\x20var(--text);\x0a\x20\x20background:\x20var(--bg-card);\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20outline:\x20none;\x0a}\x0a.debug-row\x20input[type=\x22number\x22]\x20{\x20flex:\x200\x200\x2078px;\x20}\x0a.debug-row\x20input:focus,\x20.debug-pane\x20textarea:focus\x20{\x20border-color:\x20var(--brand-strong);\x20}\x0a.debug-btn\x20{\x0a\x20\x20font-size:\x2012px;\x20padding:\x205px\x2012px;\x20border-radius:\x208px;\x20border:\x201px\x20solid\x20var(--border);\x0a\x20\x20background:\x20none;\x20color:\x20var(--text-dim);\x20cursor:\x20pointer;\x20text-decoration:\x20none;\x0a}\x0a.debug-btn:hover\x20{\x20color:\x20var(--brand-text);\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a.debug-btn.primary\x20{\x20border:\x20none;\x20background:\x20var(--gradient);\x20color:\x20#fff;\x20}\x0a.debug-hint\x20{\x20font-size:\x2011px;\x20color:\x20var(--text-faint);\x20}\x0a.debug-auto\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x204px;\x20margin-left:\x20auto;\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20}\x0a\x0a.debug-grid\x20{\x20display:\x20grid;\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(280px,\x201fr));\x20gap:\x208px;\x20}\x0a.debug-card\x20{\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x2010px;\x20background:\x20var(--bg-card);\x20overflow:\x20hidden;\x20}\x0a.debug-card\x20>\x20h4\x20{\x0a\x20\x20margin:\x200;\x20padding:\x206px\x2010px;\x20font-size:\x2012px;\x20font-weight:\x20600;\x20color:\x20var(--text-dim);\x0a\x20\x20border-bottom:\x201px\x20solid\x20var(--border);\x20background:\x20var(--bg-soft);\x0a}\x0a.debug-card\x20>\x20pre\x20{\x0a\x20\x20margin:\x200;\x20padding:\x208px\x2010px;\x20max-height:\x20260px;\x20overflow:\x20auto;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20font-size:\x2011.5px;\x20line-height:\x201.5;\x0a\x20\x20white-space:\x20pre-wrap;\x20word-break:\x20break-all;\x20color:\x20var(--text);\x0a}\x0a.debug-line\x20{\x20padding:\x201px\x200;\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20font-size:\x2011.5px;\x20word-break:\x20break-all;\x20}\x0a.debug-line.err\x20{\x20color:\x20var(--err);\x20}\x0a.debug-line.warn\x20{\x20color:\x20var(--warn);\x20}\x0a.debug-line.ok\x20{\x20color:\x20var(--ok);\x20}\x0a.debug-line.info,\x20.debug-line.debug\x20{\x20color:\x20var(--text-dim);\x20}\x0a.debug-pane\x20textarea\x20{\x0a\x20\x20width:\x20100%;\x20box-sizing:\x20border-box;\x20padding:\x208px\x2010px;\x20font-size:\x2012px;\x20line-height:\x201.5;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x20color:\x20var(--text);\x0a\x20\x20background:\x20var(--bg-card);\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20outline:\x20none;\x20resize:\x20vertical;\x0a}\x0a.debug-list\x20{\x20padding:\x208px\x2010px;\x20display:\x20flex;\x20flex-direction:\x20column;\x20gap:\x204px;\x20max-height:\x20260px;\x20overflow:\x20auto;\x20}\x0a.debug-el\x20{\x0a\x20\x20text-align:\x20left;\x20font-size:\x2012px;\x20padding:\x204px\x208px;\x20border-radius:\x206px;\x0a\x20\x20border:\x201px\x20solid\x20var(--border);\x20background:\x20none;\x20color:\x20var(--text);\x20cursor:\x20pointer;\x0a\x20\x20font-family:\x20ui-monospace,\x20SFMono-Regular,\x20Menlo,\x20monospace;\x0a}\x0a.debug-el:hover\x20{\x20border-color:\x20var(--brand-strong);\x20background:\x20var(--brand-soft);\x20}\x0a.debug-shot\x20{\x20min-height:\x20120px;\x20padding:\x208px;\x20display:\x20flex;\x20align-items:\x20flex-start;\x20justify-content:\x20center;\x20color:\x20var(--text-faint);\x20font-size:\x2012px;\x20}\x0a.debug-shot\x20img\x20{\x20max-width:\x20100%;\x20border:\x201px\x20solid\x20var(--border);\x20border-radius:\x208px;\x20}\x0a.debug-msg\x20{\x20padding:\x206px\x2012px;\x20min-height:\x2018px;\x20font-size:\x2012px;\x20color:\x20var(--text-dim);\x20border-top:\x201px\x20solid\x20var(--border);\x20}\x0a.debug-msg.err\x20{\x20color:\x20var(--err);\x20}\x0a','debug.js':db(0x2b1),'account.css':db(0x315),'account.js':db(0x20d),'viewer.css':db(0x26f),'viewer.js':'/**\x0a\x20*\x20AiWith\x20文件查看器(独立覆盖层,仅文本):\x0a\x20*\x20消息流\x20/\x20子代理转写\x20/\x20diff\x20面板里的文件\x20chip\x20经\x20CustomEvent\x20\x27zen-aiwith-open-file\x27\x20唤起,\x0a\x20*\x20GET\x20/aiwith/api/file\x20读取项目内文本文件(越界/二进制由桥接层拦截或标记),\x0a\x20*\x20正文按扩展名交给\x20hljs\x20高亮;Esc\x20/\x20点击头部外空白\x20/\x20关闭按钮收起。\x0a\x20*/\x0a!(function\x20()\x20{\x0a\x20\x20var\x20overlay\x20=\x20document.getElementById(\x27viewerOverlay\x27);\x0a\x20\x20if\x20(!overlay)\x20{\x20return;\x20}\x0a\x20\x20var\x20titleEl\x20=\x20document.getElementById(\x27viewerTitle\x27);\x0a\x20\x20var\x20metaEl\x20=\x20document.getElementById(\x27viewerMeta\x27);\x0a\x20\x20var\x20bodyEl\x20=\x20document.getElementById(\x27viewerBody\x27);\x0a\x20\x20var\x20copyBtn\x20=\x20document.getElementById(\x27viewerCopy\x27);\x0a\x20\x20var\x20closeBtn\x20=\x20document.getElementById(\x27viewerClose\x27);\x0a\x20\x20var\x20S\x20=\x20{\x20open:\x20false,\x20path:\x20\x27\x27,\x20text:\x20\x27\x27\x20};\x0a\x0a\x20\x20function\x20esc(value)\x20{\x0a\x20\x20\x20\x20return\x20String(value).replace(/&/g,\x20\x27&amp;\x27).replace(/</g,\x20\x27&lt;\x27)\x0a\x20\x20\x20\x20\x20\x20.replace(/>/g,\x20\x27&gt;\x27).replace(/\x22/g,\x20\x27&quot;\x27).replace(/\x27/g,\x20\x27&#39;\x27);\x0a\x20\x20}\x0a\x0a\x20\x20//\x20扩展名\x20→\x20hljs\x20语言(未命中交给\x20hljs\x20自动检测)\x0a\x20\x20function\x20extLang(p)\x20{\x0a\x20\x20\x20\x20var\x20match\x20=\x20/\x5c.([a-z0-9]+)$/i.exec(p\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20var\x20ext\x20=\x20match\x20?\x20match[1].toLowerCase()\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20return\x20({\x0a\x20\x20\x20\x20\x20\x20js:\x20\x27javascript\x27,\x20mjs:\x20\x27javascript\x27,\x20cjs:\x20\x27javascript\x27,\x20jsx:\x20\x27javascript\x27,\x0a\x20\x20\x20\x20\x20\x20ts:\x20\x27typescript\x27,\x20tsx:\x20\x27typescript\x27,\x20json:\x20\x27json\x27,\x0a\x20\x20\x20\x20\x20\x20html:\x20\x27xml\x27,\x20xml:\x20\x27xml\x27,\x20vue:\x20\x27xml\x27,\x20svg:\x20\x27xml\x27,\x20jsp:\x20\x27xml\x27,\x0a\x20\x20\x20\x20\x20\x20css:\x20\x27css\x27,\x20scss:\x20\x27scss\x27,\x20less:\x20\x27less\x27,\x0a\x20\x20\x20\x20\x20\x20sh:\x20\x27bash\x27,\x20bash:\x20\x27bash\x27,\x20zsh:\x20\x27bash\x27,\x0a\x20\x20\x20\x20\x20\x20java:\x20\x27java\x27,\x20sql:\x20\x27sql\x27,\x20md:\x20\x27markdown\x27,\x20markdown:\x20\x27markdown\x27,\x0a\x20\x20\x20\x20\x20\x20yml:\x20\x27yaml\x27,\x20yaml:\x20\x27yaml\x27,\x20py:\x20\x27python\x27,\x20go:\x20\x27go\x27\x0a\x20\x20\x20\x20})[ext]\x20||\x20\x27\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20fmtSize(size)\x20{\x0a\x20\x20\x20\x20if\x20(!size)\x20{\x20return\x20\x27\x27;\x20}\x0a\x20\x20\x20\x20return\x20size\x20>=\x201024\x20?\x20Math.max(1,\x20Math.round(size\x20/\x201024))\x20+\x20\x27KB\x27\x20:\x20size\x20+\x20\x27B\x27;\x0a\x20\x20}\x0a\x0a\x20\x20function\x20copy()\x20{\x0a\x20\x20\x20\x20var\x20text\x20=\x20S.text;\x0a\x20\x20\x20\x20if\x20(!text)\x20{\x20return;\x20}\x0a\x20\x20\x20\x20if\x20(navigator.clipboard\x20&&\x20navigator.clipboard.writeText)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20var\x20pending\x20=\x20navigator.clipboard.writeText(text);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(pending\x20&&\x20pending.catch)\x20{\x20pending.catch(function\x20()\x20{\x20/*\x20权限被拒时静默\x20*/\x20});\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20\x27已复制\x27;\x0a\x20\x20\x20\x20setTimeout(function\x20()\x20{\x20metaEl.textContent\x20=\x20S.meta\x20||\x20\x27\x27;\x20},\x201200);\x0a\x20\x20}\x0a\x0a\x20\x20function\x20close()\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20false;\x0a\x20\x20\x20\x20overlay.classList.remove(\x27show\x27);\x0a\x20\x20\x20\x20overlay.setAttribute(\x27aria-hidden\x27,\x20\x27true\x27);\x0a\x20\x20}\x0a\x0a\x20\x20function\x20render(payload)\x20{\x0a\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(!payload.ok)\x20{\x0a\x20\x20\x20\x20\x20\x20metaEl.textContent\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20S.meta\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27<div\x20class=\x22viewer-empty\x22>\x27\x20+\x20esc(payload.message\x20||\x20\x27读取失败\x27)\x20+\x20\x27</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20var\x20data\x20=\x20payload.data\x20||\x20{};\x0a\x20\x20\x20\x20if\x20(data.binary)\x20{\x0a\x20\x20\x20\x20\x20\x20S.text\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20S.meta\x20=\x20fmtSize(data.size)\x20+\x20\x27\x20·\x20二进制文件,不支持预览\x27;\x0a\x20\x20\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27<div\x20class=\x22viewer-empty\x22>二进制文件,仅支持文本预览</div>\x27;\x0a\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20S.text\x20=\x20data.text\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20S.meta\x20=\x20[fmtSize(data.size),\x20data.truncated\x20?\x20\x27已截断\x20256KB\x27\x20:\x20\x27\x27].filter(Boolean).join(\x27\x20·\x20\x27);\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20var\x20code\x20=\x20document.createElement(\x27code\x27);\x0a\x20\x20\x20\x20var\x20lang\x20=\x20extLang(S.path);\x0a\x20\x20\x20\x20if\x20(lang\x20&&\x20window.hljs)\x20{\x20code.className\x20=\x20\x27language-\x27\x20+\x20lang;\x20}\x0a\x20\x20\x20\x20code.textContent\x20=\x20S.text;\x0a\x20\x20\x20\x20var\x20pre\x20=\x20document.createElement(\x27pre\x27);\x0a\x20\x20\x20\x20pre.appendChild(code);\x0a\x20\x20\x20\x20bodyEl.appendChild(pre);\x0a\x20\x20\x20\x20if\x20(window.hljs\x20&&\x20typeof\x20window.hljs.highlightElement\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x20window.hljs.highlightElement(code);\x20}\x20catch\x20(e)\x20{\x20/*\x20ignore\x20*/\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20function\x20open(path)\x20{\x0a\x20\x20\x20\x20S.open\x20=\x20true;\x0a\x20\x20\x20\x20S.path\x20=\x20String(path\x20||\x20\x27\x27);\x0a\x20\x20\x20\x20S.text\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20S.meta\x20=\x20\x27加载中…\x27;\x0a\x20\x20\x20\x20overlay.classList.add(\x27show\x27);\x0a\x20\x20\x20\x20overlay.setAttribute(\x27aria-hidden\x27,\x20\x27false\x27);\x0a\x20\x20\x20\x20titleEl.textContent\x20=\x20S.path;\x0a\x20\x20\x20\x20metaEl.textContent\x20=\x20S.meta;\x0a\x20\x20\x20\x20bodyEl.innerHTML\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20fetch(\x27/aiwith/api/file?path=\x27\x20+\x20encodeURIComponent(S.path))\x0a\x20\x20\x20\x20\x20\x20.then(function\x20(response)\x20{\x20return\x20response.json();\x20})\x0a\x20\x20\x20\x20\x20\x20.then(render)\x0a\x20\x20\x20\x20\x20\x20.catch(function\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20render({\x20ok:\x20false,\x20message:\x20error\x20&&\x20error.message\x20?\x20error.message\x20:\x20String(error)\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20document.addEventListener(\x27zen-aiwith-open-file\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20var\x20path\x20=\x20event.detail\x20&&\x20event.detail.path;\x0a\x20\x20\x20\x20if\x20(path)\x20{\x20open(path);\x20}\x0a\x20\x20});\x0a\x20\x20document.addEventListener(\x27zen-aiwith-back-to-chat\x27,\x20function\x20()\x20{\x20if\x20(S.open)\x20{\x20close();\x20}\x20});\x0a\x20\x20document.addEventListener(\x27keydown\x27,\x20function\x20(event)\x20{\x0a\x20\x20\x20\x20if\x20(event.key\x20===\x20\x27Escape\x27\x20&&\x20S.open)\x20{\x20close();\x20}\x0a\x20\x20});\x0a\x20\x20closeBtn.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20close();\x20});\x0a\x20\x20copyBtn.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20event.stopPropagation();\x20copy();\x20});\x0a\x20\x20//\x20点击头部/正文以外的空白(overlay\x20自身)收起\x0a\x20\x20overlay.addEventListener(\x27click\x27,\x20function\x20(event)\x20{\x20if\x20(event.target\x20===\x20overlay)\x20{\x20close();\x20}\x20});\x0a})();\x0a','hljs.js':'(()=>{var\x20Ut=Object.create;var\x20Ce=Object.defineProperty;var\x20Pt=Object.getOwnPropertyDescriptor;var\x20zt=Object.getOwnPropertyNames;var\x20$t=Object.getPrototypeOf,Gt=Object.prototype.hasOwnProperty;var\x20Ft=(e,t)=>()=>{try{return\x20t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw\x20t=0,n}};var\x20Ht=(e,t,n,r)=>{if(t&&typeof\x20t==\x22object\x22||typeof\x20t==\x22function\x22)for(let\x20l\x20of\x20zt(t))!Gt.call(e,l)&&l!==n&&Ce(e,l,{get:()=>t[l],enumerable:!(r=Pt(t,l))||r.enumerable});return\x20e};var\x20Kt=(e,t,n)=>(n=e!=null?Ut($t(e)):{},Ht(t||!e||!e.__esModule?Ce(n,\x22default\x22,{value:e,enumerable:!0}):n,e));var\x20Je=Ft((ui,Qe)=>{function\x20$e(e){return\x20e\x20instanceof\x20Map?e.clear=e.delete=e.set=function(){throw\x20new\x20Error(\x22map\x20is\x20read-only\x22)}:e\x20instanceof\x20Set&&(e.add=e.clear=e.delete=function(){throw\x20new\x20Error(\x22set\x20is\x20read-only\x22)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let\x20n=e[t],r=typeof\x20n;(r===\x22object\x22||r===\x22function\x22)&&!Object.isFrozen(n)&&$e(n)}),e}var\x20ge=class{constructor(t){t.data===void\x200&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function\x20Ge(e){return\x20e.replace(/&/g,\x22&amp;\x22).replace(/</g,\x22&lt;\x22).replace(/>/g,\x22&gt;\x22).replace(/\x22/g,\x22&quot;\x22).replace(/\x27/g,\x22&#x27;\x22)}function\x20Y(e,...t){let\x20n=Object.create(null);for(let\x20r\x20in\x20e)n[r]=e[r];return\x20t.forEach(function(r){for(let\x20l\x20in\x20r)n[l]=r[l]}),n}var\x20Zt=\x22</span>\x22,Le=e=>!!e.scope,Wt=(e,{prefix:t})=>{if(e.startsWith(\x22language:\x22))return\x20e.replace(\x22language:\x22,\x22language-\x22);if(e.includes(\x22.\x22)){let\x20n=e.split(\x22.\x22);return[`${t}${n.shift()}`,...n.map((r,l)=>`${r}${\x22_\x22.repeat(l+1)}`)].join(\x22\x20\x22)}return`${t}${e}`},we=class{constructor(t,n){this.buffer=\x22\x22,this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ge(t)}openNode(t){if(!Le(t))return;let\x20n=Wt(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Le(t)&&(this.buffer+=Zt)}value(){return\x20this.buffer}span(t){this.buffer+=`<span\x20class=\x22${t}\x22>`}},De=(e={})=>{let\x20t={children:[]};return\x20Object.assign(t,e),t},Ne=class\x20e{constructor(){this.rootNode=De(),this.stack=[this.rootNode]}get\x20top(){return\x20this.stack[this.stack.length-1]}get\x20root(){return\x20this.rootNode}add(t){this.top.children.push(t)}openNode(t){let\x20n=De({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return\x20this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return\x20JSON.stringify(this.rootNode,null,4)}walk(t){return\x20this.constructor._walk(t,this.rootNode)}static\x20_walk(t,n){return\x20typeof\x20n==\x22string\x22?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static\x20_collapse(t){typeof\x20t!=\x22string\x22&&t.children&&(t.children.every(n=>typeof\x20n==\x22string\x22)?t.children=[t.children.join(\x22\x22)]:t.children.forEach(n=>{e._collapse(n)}))}},ke=class\x20extends\x20Ne{constructor(t){super(),this.options=t}addText(t){t!==\x22\x22&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let\x20r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return\x20new\x20we(this,this.options).value()}finalize(){return\x20this.closeAllNodes(),!0}};function\x20ae(e){return\x20e?typeof\x20e==\x22string\x22?e:e.source:null}function\x20Fe(e){return\x20V(\x22(?=\x22,e,\x22)\x22)}function\x20Yt(e){return\x20V(\x22(?:\x22,e,\x22)*\x22)}function\x20Xt(e){return\x20V(\x22(?:\x22,e,\x22)?\x22)}function\x20V(...e){return\x20e.map(n=>ae(n)).join(\x22\x22)}function\x20jt(e){let\x20t=e[e.length-1];return\x20typeof\x20t==\x22object\x22&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function\x20be(...e){return\x22(\x22+(jt(e).capture?\x22\x22:\x22?:\x22)+e.map(r=>ae(r)).join(\x22|\x22)+\x22)\x22}function\x20He(e){return\x20new\x20RegExp(e.toString()+\x22|\x22).exec(\x22\x22).length-1}function\x20qt(e,t){let\x20n=e&&e.exec(t);return\x20n&&n.index===0}var\x20Vt=new\x20RegExp(be(/\x5c[(?:[^\x5c\x5c\x5c]]|\x5c\x5c.)*\x5c]/,/\x5c(\x5c?<(?![=!])[^>]+>/,/\x5c(\x5c?\x27[^\x27]+\x27/,/\x5c(\x5c??/,/\x5c\x5c([1-9][0-9]*)/,/\x5c\x5c./));function\x20Te(e,{joinWith:t}){let\x20n=0;return\x20e.map(r=>{n+=1;let\x20l=n,p=ae(r),o=\x22\x22;for(;p.length>0;){let\x20i=Vt.exec(p);if(!i){o+=p;break}o+=p.substring(0,i.index),p=p.substring(i.index+i[0].length),i[0][0]===\x22\x5c\x5c\x22&&i[1]?o+=\x22\x5c\x5c\x22+String(Number(i[1])+l):(o+=i[0],(i[0]===\x22(\x22||/^\x5c(\x5c?[<\x27]/.test(i[0]))&&n++)}return\x20o}).map(r=>`(${r})`).join(t)}var\x20Qt=/\x5cb\x5cB/,Ke=\x22[a-zA-Z]\x5c\x5cw*\x22,xe=\x22[a-zA-Z_]\x5c\x5cw*\x22,Ze=\x22\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd+)?\x22,We=\x22(-?)(\x5c\x5cb0[xX][a-fA-F0-9]+|(\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd*)?|\x5c\x5c.\x5c\x5cd+)([eE][-+]?\x5c\x5cd+)?)\x22,Ye=\x22\x5c\x5cb(0b[01]+)\x22,Jt=\x22!|!=|!==|%|%=|&|&&|&=|\x5c\x5c*|\x5c\x5c*=|\x5c\x5c+|\x5c\x5c+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\x5c\x5c?|\x5c\x5c[|\x5c\x5c{|\x5c\x5c(|\x5c\x5c^|\x5c\x5c^=|\x5c\x5c||\x5c\x5c|=|\x5c\x5c|\x5c\x5c||~\x22,en=(e={})=>{let\x20t=/^#![\x20]*\x5c//;return\x20e.binary&&(e.begin=V(t,/.*\x5cb/,e.binary,/\x5cb.*/)),Y({scope:\x22meta\x22,begin:t,end:/$/,relevance:0,\x22on:begin\x22:(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},se={begin:\x22\x5c\x5c\x5c\x5c[\x5c\x5cs\x5c\x5cS]\x22,relevance:0},tn={scope:\x22string\x22,begin:\x22\x27\x22,end:\x22\x27\x22,illegal:\x22\x5c\x5cn\x22,contains:[se]},nn={scope:\x22string\x22,begin:\x27\x22\x27,end:\x27\x22\x27,illegal:\x22\x5c\x5cn\x22,contains:[se]},rn={begin:/\x5cb(a|an|the|are|I\x27m|isn\x27t|don\x27t|doesn\x27t|won\x27t|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\x5cb/},pe=function(e,t,n={}){let\x20r=Y({scope:\x22comment\x22,begin:e,end:t,contains:[]},n);r.contains.push({scope:\x22doctag\x22,begin:\x22[\x20]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)\x22,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let\x20l=be(\x22I\x22,\x22a\x22,\x22is\x22,\x22so\x22,\x22us\x22,\x22to\x22,\x22at\x22,\x22if\x22,\x22in\x22,\x22it\x22,\x22on\x22,/[A-Za-z]+[\x27](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return\x20r.contains.push({begin:V(/[\x20]+/,\x22(\x22,l,/[.]?[:]?([.][\x20]|[\x20])/,\x22){3}\x22)}),r},on=pe(\x22//\x22,\x22$\x22),an=pe(\x22/\x5c\x5c*\x22,\x22\x5c\x5c*/\x22),sn=pe(\x22#\x22,\x22$\x22),cn={scope:\x22number\x22,begin:Ze,relevance:0},ln={scope:\x22number\x22,begin:We,relevance:0},dn={scope:\x22number\x22,begin:Ye,relevance:0},gn={scope:\x22regexp\x22,begin:/\x5c/(?=[^/\x5cn]*\x5c/)/,end:/\x5c/[gimuy]*/,contains:[se,{begin:/\x5c[/,end:/\x5c]/,relevance:0,contains:[se]}]},un={scope:\x22title\x22,begin:Ke,relevance:0},bn={scope:\x22title\x22,begin:xe,relevance:0},pn={begin:\x22\x5c\x5c.\x5c\x5cs*\x22+xe,relevance:0},fn=function(e){return\x20Object.assign(e,{\x22on:begin\x22:(t,n)=>{n.data._beginMatch=t[1]},\x22on:end\x22:(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},de=Object.freeze({__proto__:null,APOS_STRING_MODE:tn,BACKSLASH_ESCAPE:se,BINARY_NUMBER_MODE:dn,BINARY_NUMBER_RE:Ye,COMMENT:pe,C_BLOCK_COMMENT_MODE:an,C_LINE_COMMENT_MODE:on,C_NUMBER_MODE:ln,C_NUMBER_RE:We,END_SAME_AS_BEGIN:fn,HASH_COMMENT_MODE:sn,IDENT_RE:Ke,MATCH_NOTHING_RE:Qt,METHOD_GUARD:pn,NUMBER_MODE:cn,NUMBER_RE:Ze,PHRASAL_WORDS_MODE:rn,QUOTE_STRING_MODE:nn,REGEXP_MODE:gn,RE_STARTERS_RE:Jt,SHEBANG:en,TITLE_MODE:un,UNDERSCORE_IDENT_RE:xe,UNDERSCORE_TITLE_MODE:bn});function\x20mn(e,t){e.input[e.index-1]===\x22.\x22&&t.ignoreMatch()}function\x20hn(e,t){e.className!==void\x200&&(e.scope=e.className,delete\x20e.className)}function\x20En(e,t){t&&e.beginKeywords&&(e.begin=\x22\x5c\x5cb(\x22+e.beginKeywords.split(\x22\x20\x22).join(\x22|\x22)+\x22)(?!\x5c\x5c.)(?=\x5c\x5cb|\x5c\x5cs)\x22,e.__beforeBegin=mn,e.keywords=e.keywords||e.beginKeywords,delete\x20e.beginKeywords,e.relevance===void\x200&&(e.relevance=0))}function\x20_n(e,t){Array.isArray(e.illegal)&&(e.illegal=be(...e.illegal))}function\x20yn(e,t){if(e.match){if(e.begin||e.end)throw\x20new\x20Error(\x22begin\x20&\x20end\x20are\x20not\x20supported\x20with\x20match\x22);e.begin=e.match,delete\x20e.match}}function\x20vn(e,t){e.relevance===void\x200&&(e.relevance=1)}var\x20wn=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw\x20new\x20Error(\x22beforeMatch\x20cannot\x20be\x20used\x20with\x20starts\x22);let\x20n=Object.assign({},e);Object.keys(e).forEach(r=>{delete\x20e[r]}),e.keywords=n.keywords,e.begin=V(n.beforeMatch,Fe(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete\x20n.beforeMatch},Nn=[\x22of\x22,\x22and\x22,\x22for\x22,\x22in\x22,\x22not\x22,\x22or\x22,\x22if\x22,\x22then\x22,\x22parent\x22,\x22list\x22,\x22value\x22],kn=\x22keyword\x22;function\x20Xe(e,t,n=kn){let\x20r=Object.create(null);return\x20typeof\x20e==\x22string\x22?l(n,e.split(\x22\x20\x22)):Array.isArray(e)?l(n,e):Object.keys(e).forEach(function(p){Object.assign(r,Xe(e[p],t,p))}),r;function\x20l(p,o){t&&(o=o.map(i=>i.toLowerCase())),o.forEach(function(i){let\x20s=i.split(\x22|\x22);r[s[0]]=[p,Sn(s[0],s[1])]})}}function\x20Sn(e,t){return\x20t?Number(t):Tn(e)?0:1}function\x20Tn(e){return\x20Nn.includes(e.toLowerCase())}var\x20Be={},q=e=>{console.error(e)},Ue=(e,...t)=>{console.log(`WARN:\x20${e}`,...t)},J=(e,t)=>{Be[`${e}/${t}`]||(console.log(`Deprecated\x20as\x20of\x20${e}.\x20${t}`),Be[`${e}/${t}`]=!0)},ue=new\x20Error;function\x20je(e,t,{key:n}){let\x20r=0,l=e[n],p={},o={};for(let\x20i=1;i<=t.length;i++)o[i+r]=l[i],p[i+r]=!0,r+=He(t[i-1]);e[n]=o,e[n]._emit=p,e[n]._multi=!0}function\x20xn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw\x20q(\x22skip,\x20excludeBegin,\x20returnBegin\x20not\x20compatible\x20with\x20beginScope:\x20{}\x22),ue;if(typeof\x20e.beginScope!=\x22object\x22||e.beginScope===null)throw\x20q(\x22beginScope\x20must\x20be\x20object\x22),ue;je(e,e.begin,{key:\x22beginScope\x22}),e.begin=Te(e.begin,{joinWith:\x22\x22})}}function\x20On(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw\x20q(\x22skip,\x20excludeEnd,\x20returnEnd\x20not\x20compatible\x20with\x20endScope:\x20{}\x22),ue;if(typeof\x20e.endScope!=\x22object\x22||e.endScope===null)throw\x20q(\x22endScope\x20must\x20be\x20object\x22),ue;je(e,e.end,{key:\x22endScope\x22}),e.end=Te(e.end,{joinWith:\x22\x22})}}function\x20An(e){e.scope&&typeof\x20e.scope==\x22object\x22&&e.scope!==null&&(e.beginScope=e.scope,delete\x20e.scope)}function\x20Rn(e){An(e),typeof\x20e.beginScope==\x22string\x22&&(e.beginScope={_wrap:e.beginScope}),typeof\x20e.endScope==\x22string\x22&&(e.endScope={_wrap:e.endScope}),xn(e),On(e)}function\x20Mn(e){function\x20t(o,i){return\x20new\x20RegExp(ae(o),\x22m\x22+(e.case_insensitive?\x22i\x22:\x22\x22)+(e.unicodeRegex?\x22u\x22:\x22\x22)+(i?\x22g\x22:\x22\x22))}class\x20n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,i]),this.matchAt+=He(i)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let\x20i=this.regexes.map(s=>s[1]);this.matcherRe=t(Te(i,{joinWith:\x22|\x22}),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;let\x20s=this.matcherRe.exec(i);if(!s)return\x20null;let\x20d=s.findIndex((w,m)=>m>0&&w!==void\x200),f=this.matchIndexes[d];return\x20s.splice(0,d),Object.assign(s,f)}}class\x20r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return\x20this.multiRegexes[i];let\x20s=new\x20n;return\x20this.rules.slice(i).forEach(([d,f])=>s.addRule(d,f)),s.compile(),this.multiRegexes[i]=s,s}resumingScanAtSamePosition(){return\x20this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(i,s){this.rules.push([i,s]),s.type===\x22begin\x22&&this.count++}exec(i){let\x20s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let\x20d=s.exec(i);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let\x20f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(i)}return\x20d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function\x20l(o){let\x20i=new\x20r;return\x20o.contains.forEach(s=>i.addRule(s.begin,{rule:s,type:\x22begin\x22})),o.terminatorEnd&&i.addRule(o.terminatorEnd,{type:\x22end\x22}),o.illegal&&i.addRule(o.illegal,{type:\x22illegal\x22}),i}function\x20p(o,i){let\x20s=o;if(o.isCompiled)return\x20s;[hn,yn,Rn,wn].forEach(f=>f(o,i)),e.compilerExtensions.forEach(f=>f(o,i)),o.__beforeBegin=null,[En,_n,vn].forEach(f=>f(o,i)),o.isCompiled=!0;let\x20d=null;return\x20typeof\x20o.keywords==\x22object\x22&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),d=o.keywords.$pattern,delete\x20o.keywords.$pattern),d=d||/\x5cw+/,o.keywords&&(o.keywords=Xe(o.keywords,e.case_insensitive)),s.keywordPatternRe=t(d,!0),i&&(o.begin||(o.begin=/\x5cB|\x5cb/),s.beginRe=t(s.begin),!o.end&&!o.endsWithParent&&(o.end=/\x5cB|\x5cb/),o.end&&(s.endRe=t(s.end)),s.terminatorEnd=ae(s.end)||\x22\x22,o.endsWithParent&&i.terminatorEnd&&(s.terminatorEnd+=(o.end?\x22|\x22:\x22\x22)+i.terminatorEnd)),o.illegal&&(s.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(f){return\x20In(f===\x22self\x22?o:f)})),o.contains.forEach(function(f){p(f,s)}),o.starts&&p(o.starts,i),s.matcher=l(s),s}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes(\x22self\x22))throw\x20new\x20Error(\x22ERR:\x20contains\x20`self`\x20is\x20not\x20supported\x20at\x20the\x20top-level\x20of\x20a\x20language.\x20\x20See\x20documentation.\x22);return\x20e.classNameAliases=Y(e.classNameAliases||{}),p(e)}function\x20qe(e){return\x20e?e.endsWithParent||qe(e.starts):!1}function\x20In(e){return\x20e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return\x20Y(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:qe(e)?Y(e,{starts:e.starts?Y(e.starts):null}):Object.isFrozen(e)?Y(e):e}var\x20Cn=\x2211.12.0\x22,Se=class\x20extends\x20Error{constructor(t,n){super(t),this.name=\x22HTMLInjectionError\x22,this.html=n}},ve=Ge,Pe=Y,ze=Symbol(\x22nomatch\x22),Ln=7,Ve=function(e){let\x20t=Object.create(null),n=Object.create(null),r=[],l=!0,p=\x22Could\x20not\x20find\x20the\x20language\x20\x27{}\x27,\x20did\x20you\x20forget\x20to\x20load/include\x20a\x20language\x20module?\x22,o={disableAutodetect:!0,name:\x22Plain\x20text\x22,contains:[]},i={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\x5cblang(?:uage)?-([\x5cw-]+)\x5cb/i,classPrefix:\x22hljs-\x22,cssSelector:\x22pre\x20code\x22,languages:null,__emitter:ke};function\x20s(a){return\x20i.noHighlightRe.test(a)}function\x20d(a){let\x20u=a.className+\x22\x20\x22;u+=a.parentNode?a.parentNode.className:\x22\x22;let\x20g=i.languageDetectRe.exec(u);if(g){let\x20E=B(g[1]);return\x20E||(Ue(p.replace(\x22{}\x22,g[1])),Ue(\x22Falling\x20back\x20to\x20no-highlight\x20mode\x20for\x20this\x20block.\x22,a)),E?g[1]:\x22no-highlight\x22}return\x20u.split(/\x5cs+/).find(E=>s(E)||B(E))}function\x20f(a,u,g){let\x20E=\x22\x22,v=\x22\x22;typeof\x20u==\x22object\x22?(E=a,g=u.ignoreIllegals,v=u.language):(J(\x2210.7.0\x22,\x22highlight(lang,\x20code,\x20...args)\x20has\x20been\x20deprecated.\x22),J(\x2210.7.0\x22,`Please\x20use\x20highlight(code,\x20options)\x20instead.\x0ahttps://github.com/highlightjs/highlight.js/issues/2277`),v=a,E=u),g===void\x200&&(g=!0);let\x20R={code:E,language:v};W(\x22before:highlight\x22,R);let\x20U=R.result?R.result:w(R.language,R.code,g);return\x20U.code=R.code,W(\x22after:highlight\x22,U),U}function\x20w(a,u,g,E){let\x20v=Object.create(null);function\x20R(c,b){return\x20c.keywords[b]}function\x20U(){if(!h.keywords){L.addText(T);return}let\x20c=0;h.keywordPatternRe.lastIndex=0;let\x20b=h.keywordPatternRe.exec(T),_=\x22\x22;for(;b;){_+=T.substring(c,b.index);let\x20k=K.case_insensitive?b[0].toLowerCase():b[0],P=R(h,k);if(P){let[Z,Dt]=P;if(L.addText(_),_=\x22\x22,v[k]=(v[k]||0)+1,v[k]<=Ln&&(le+=Dt),Z.startsWith(\x22_\x22))_+=b[0];else{let\x20Bt=K.classNameAliases[Z]||Z;H(b[0],Bt)}}else\x20_+=b[0];c=h.keywordPatternRe.lastIndex,b=h.keywordPatternRe.exec(T)}_+=T.substring(c),L.addText(_)}function\x20F(){if(T===\x22\x22)return;let\x20c=null;if(typeof\x20h.subLanguage==\x22string\x22){if(!t[h.subLanguage]){L.addText(T);return}c=w(h.subLanguage,T,!0,Ie[h.subLanguage]),Ie[h.subLanguage]=c._top}else\x20c=y(T,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(le+=c.relevance),L.__addSublanguage(c._emitter,c.language)}function\x20G(){h.subLanguage!=null?F():U(),T=\x22\x22}function\x20H(c,b){c!==\x22\x22&&(L.startScope(b),L.addText(c),L.endScope())}function\x20Oe(c,b){let\x20_=1,k=b.length-1;for(;_<=k;){if(!c._emit[_]){_++;continue}let\x20P=K.classNameAliases[c[_]]||c[_],Z=b[_];P?H(Z,P):(T=Z,U(),T=\x22\x22),_++}}function\x20Ae(c,b){return\x20c.scope&&typeof\x20c.scope==\x22string\x22&&L.openNode(K.classNameAliases[c.scope]||c.scope),c.beginScope&&(c.beginScope._wrap?(H(T,K.classNameAliases[c.beginScope._wrap]||c.beginScope._wrap),T=\x22\x22):c.beginScope._multi&&(Oe(c.beginScope,b),T=\x22\x22)),h=Object.create(c,{parent:{value:h}}),h}function\x20Re(c,b,_){let\x20k=qt(c.endRe,_);if(k){if(c[\x22on:end\x22]){let\x20P=new\x20ge(c);c[\x22on:end\x22](b,P),P.isMatchIgnored&&(k=!1)}if(k){for(;c.endsParent&&c.parent;)c=c.parent;return\x20c}}if(c.endsWithParent)return\x20Re(c.parent,b,_)}function\x20Rt(c){return\x20h.matcher.regexIndex===0?(T+=c[0],1):(ye=!0,0)}function\x20Mt(c){let\x20b=c[0],_=c.rule,k=new\x20ge(_),P=[_.__beforeBegin,_[\x22on:begin\x22]];for(let\x20Z\x20of\x20P)if(Z&&(Z(c,k),k.isMatchIgnored))return\x20Rt(b);return\x20_.skip?T+=b:(_.excludeBegin&&(T+=b),G(),!_.returnBegin&&!_.excludeBegin&&(T=b)),Ae(_,c),_.returnBegin?0:b.length}function\x20It(c){let\x20b=c[0],_=u.substring(c.index),k=Re(h,c,_);if(!k)return\x20ze;let\x20P=h;h.endScope&&h.endScope._wrap?(G(),H(b,h.endScope._wrap)):h.endScope&&h.endScope._multi?(G(),Oe(h.endScope,c)):P.skip?T+=b:(P.returnEnd||P.excludeEnd||(T+=b),G(),P.excludeEnd&&(T=b));do\x20h.scope&&L.closeNode(),!h.skip&&!h.subLanguage&&(le+=h.relevance),h=h.parent;while(h!==k.parent);return\x20k.starts&&Ae(k.starts,c),P.returnEnd?0:b.length}function\x20Ct(){let\x20c=[];for(let\x20b=h;b!==K;b=b.parent)b.scope&&c.unshift(b.scope);c.forEach(b=>L.openNode(b))}let\x20ce={};function\x20Me(c,b){let\x20_=b&&b[0];if(T+=c,_==null)return\x20G(),0;if(ce.type===\x22begin\x22&&b.type===\x22end\x22&&ce.index===b.index&&_===\x22\x22){if(T+=u.slice(b.index,b.index+1),!l){let\x20k=new\x20Error(`0\x20width\x20match\x20regex\x20(${a})`);throw\x20k.languageName=a,k.badRule=ce.rule,k}return\x201}if(ce=b,b.type===\x22begin\x22)return\x20Mt(b);if(b.type===\x22illegal\x22&&!g){let\x20k=new\x20Error(\x27Illegal\x20lexeme\x20\x22\x27+_+\x27\x22\x20for\x20mode\x20\x22\x27+(h.scope||\x22<unnamed>\x22)+\x27\x22\x27);throw\x20k.mode=h,k}else\x20if(b.type===\x22end\x22){let\x20k=It(b);if(k!==ze)return\x20k}if(b.type===\x22illegal\x22&&_===\x22\x22)return\x20b.index===u.length||(T+=`\x0a`),1;if(_e>1e5&&_e>b.index*3)throw\x20new\x20Error(\x22potential\x20infinite\x20loop,\x20way\x20more\x20iterations\x20than\x20matches\x22);return\x20T+=_,_.length}let\x20K=B(a);if(!K)throw\x20q(p.replace(\x22{}\x22,a)),new\x20Error(\x27Unknown\x20language:\x20\x22\x27+a+\x27\x22\x27);let\x20Lt=Mn(K),Ee=\x22\x22,h=E||Lt,Ie={},L=new\x20i.__emitter(i);Ct();let\x20T=\x22\x22,le=0,j=0,_e=0,ye=!1;try{if(K.__emitTokens)K.__emitTokens(u,L);else{for(h.matcher.considerAll();;){_e++,ye?ye=!1:h.matcher.considerAll(),h.matcher.lastIndex=j;let\x20c=h.matcher.exec(u);if(!c)break;let\x20b=u.substring(j,c.index),_=Me(b,c);j=c.index+_}Me(u.substring(j))}return\x20L.finalize(),Ee=L.toHTML(),{language:a,value:Ee,relevance:le,illegal:!1,_emitter:L,_top:h}}catch(c){if(c.message&&c.message.includes(\x22Illegal\x22))return{language:a,value:ve(u),illegal:!0,relevance:0,_illegalBy:{message:c.message,index:j,context:u.slice(j-100,j+100),mode:c.mode,resultSoFar:Ee},_emitter:L};if(l)return{language:a,value:ve(u),illegal:!1,relevance:0,errorRaised:c,_emitter:L,_top:h};throw\x20c}}function\x20m(a){let\x20u={value:ve(a),illegal:!1,relevance:0,_top:o,_emitter:new\x20i.__emitter(i)};return\x20u._emitter.addText(a),u}function\x20y(a,u){u=u||i.languages||Object.keys(t);let\x20g=m(a),E=u.filter(B).filter(Q).map(G=>w(G,a,!1));E.unshift(g);let\x20v=E.sort((G,H)=>{if(G.relevance!==H.relevance)return\x20H.relevance-G.relevance;if(G.language&&H.language){if(B(G.language).supersetOf===H.language)return\x201;if(B(H.language).supersetOf===G.language)return-1}return\x200}),[R,U]=v,F=R;return\x20F.secondBest=U,F}function\x20S(a,u,g){let\x20E=u&&n[u]||g;a.classList.add(\x22hljs\x22),a.classList.add(`language-${E}`)}function\x20N(a){let\x20u=null,g=d(a);if(s(g))return;if(W(\x22before:highlightElement\x22,{el:a,language:g}),a.dataset.highlighted){console.log(\x22Element\x20previously\x20highlighted.\x20To\x20highlight\x20again,\x20first\x20unset\x20`dataset.highlighted`.\x22,a);return}if(a.children.length>0&&(i.ignoreUnescapedHTML||(console.warn(\x22One\x20of\x20your\x20code\x20blocks\x20includes\x20unescaped\x20HTML.\x20This\x20is\x20a\x20potentially\x20serious\x20security\x20risk.\x22),console.warn(\x22https://github.com/highlightjs/highlight.js/wiki/security\x22),console.warn(\x22The\x20element\x20with\x20unescaped\x20HTML:\x22),console.warn(a)),i.throwUnescapedHTML))throw\x20new\x20Se(\x22One\x20of\x20your\x20code\x20blocks\x20includes\x20unescaped\x20HTML.\x22,a.innerHTML);u=a;let\x20E=u.textContent,v=g?f(E,{language:g,ignoreIllegals:!0}):y(E);a.innerHTML=v.value,a.dataset.highlighted=\x22yes\x22,S(a,g,v.language),a.result={language:v.language,re:v.relevance,relevance:v.relevance},v.secondBest&&(a.secondBest={language:v.secondBest.language,relevance:v.secondBest.relevance}),W(\x22after:highlightElement\x22,{el:a,result:v,text:E})}function\x20O(a){i=Pe(i,a)}let\x20x=()=>{D(),J(\x2210.6.0\x22,\x22initHighlighting()\x20deprecated.\x20\x20Use\x20highlightAll()\x20now.\x22)};function\x20M(){D(),J(\x2210.6.0\x22,\x22initHighlightingOnLoad()\x20deprecated.\x20\x20Use\x20highlightAll()\x20now.\x22)}let\x20I=!1;function\x20D(){function\x20a(){D()}if(document.readyState===\x22loading\x22){I||window.addEventListener(\x22DOMContentLoaded\x22,a,!1),I=!0;return}document.querySelectorAll(i.cssSelector).forEach(N)}function\x20A(a,u){let\x20g=null;try{g=u(e)}catch(E){if(q(\x22Language\x20definition\x20for\x20\x27{}\x27\x20could\x20not\x20be\x20registered.\x22.replace(\x22{}\x22,a)),l)q(E);else\x20throw\x20E;g=o}g.name||(g.name=a),t[a]=g,g.rawDefinition=u.bind(null,e),g.aliases&&$(g.aliases,{languageName:a})}function\x20C(a){delete\x20t[a];for(let\x20u\x20of\x20Object.keys(n))n[u]===a&&delete\x20n[u]}function\x20X(){return\x20Object.keys(t)}function\x20B(a){return\x20a=(a||\x22\x22).toLowerCase(),t[a]||t[n[a]]}function\x20$(a,{languageName:u}){typeof\x20a==\x22string\x22&&(a=[a]),a.forEach(g=>{n[g.toLowerCase()]=u})}function\x20Q(a){let\x20u=B(a);return\x20u&&!u.disableAutodetect}function\x20ne(a){a[\x22before:highlightBlock\x22]&&!a[\x22before:highlightElement\x22]&&(a[\x22before:highlightElement\x22]=u=>{a[\x22before:highlightBlock\x22](Object.assign({block:u.el},u))}),a[\x22after:highlightBlock\x22]&&!a[\x22after:highlightElement\x22]&&(a[\x22after:highlightElement\x22]=u=>{a[\x22after:highlightBlock\x22](Object.assign({block:u.el},u))})}function\x20ie(a){ne(a),r.push(a)}function\x20re(a){let\x20u=r.indexOf(a);u!==-1&&r.splice(u,1)}function\x20W(a,u){let\x20g=a;r.forEach(function(E){E[g]&&E[g](u)})}function\x20oe(a){return\x20J(\x2210.7.0\x22,\x22highlightBlock\x20will\x20be\x20removed\x20entirely\x20in\x20v12.0\x22),J(\x2210.7.0\x22,\x22Please\x20use\x20highlightElement\x20now.\x22),N(a)}Object.assign(e,{highlight:f,highlightAuto:y,highlightAll:D,highlightElement:N,highlightBlock:oe,configure:O,initHighlighting:x,initHighlightingOnLoad:M,registerLanguage:A,unregisterLanguage:C,listLanguages:X,getLanguage:B,registerAliases:$,autoDetection:Q,inherit:Pe,addPlugin:ie,removePlugin:re}),e.debugMode=function(){l=!1},e.safeMode=function(){l=!0},e.versionString=Cn,e.regex={concat:V,lookahead:Fe,either:be,optional:Xt,anyNumberOfTimes:Yt};for(let\x20a\x20in\x20de)typeof\x20de[a]==\x22object\x22&&$e(de[a]);return\x20Object.assign(e,de),e},ee=Ve({});ee.newInstance=()=>Ve({});Qe.exports=ee;ee.HighlightJS=ee;ee.default=ee});var\x20et=Kt(Je(),1);var\x20z=et.default;var\x20tt=\x22[A-Za-z$_][0-9A-Za-z$_]*\x22,Dn=[\x22as\x22,\x22in\x22,\x22of\x22,\x22if\x22,\x22for\x22,\x22while\x22,\x22finally\x22,\x22var\x22,\x22new\x22,\x22function\x22,\x22do\x22,\x22return\x22,\x22void\x22,\x22else\x22,\x22break\x22,\x22catch\x22,\x22instanceof\x22,\x22with\x22,\x22throw\x22,\x22case\x22,\x22default\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22typeof\x22,\x22delete\x22,\x22let\x22,\x22yield\x22,\x22const\x22,\x22class\x22,\x22debugger\x22,\x22async\x22,\x22await\x22,\x22static\x22,\x22import\x22,\x22from\x22,\x22export\x22,\x22extends\x22,\x22using\x22],Bn=[\x22true\x22,\x22false\x22,\x22null\x22,\x22undefined\x22,\x22NaN\x22,\x22Infinity\x22],nt=[\x22Object\x22,\x22Function\x22,\x22Boolean\x22,\x22Symbol\x22,\x22Math\x22,\x22Date\x22,\x22Number\x22,\x22BigInt\x22,\x22String\x22,\x22RegExp\x22,\x22Array\x22,\x22Float32Array\x22,\x22Float64Array\x22,\x22Int8Array\x22,\x22Uint8Array\x22,\x22Uint8ClampedArray\x22,\x22Int16Array\x22,\x22Int32Array\x22,\x22Uint16Array\x22,\x22Uint32Array\x22,\x22BigInt64Array\x22,\x22BigUint64Array\x22,\x22Set\x22,\x22Map\x22,\x22WeakSet\x22,\x22WeakMap\x22,\x22ArrayBuffer\x22,\x22SharedArrayBuffer\x22,\x22Atomics\x22,\x22DataView\x22,\x22JSON\x22,\x22Promise\x22,\x22Generator\x22,\x22GeneratorFunction\x22,\x22AsyncFunction\x22,\x22Reflect\x22,\x22Proxy\x22,\x22Intl\x22,\x22WebAssembly\x22],it=[\x22Error\x22,\x22EvalError\x22,\x22InternalError\x22,\x22RangeError\x22,\x22ReferenceError\x22,\x22SyntaxError\x22,\x22TypeError\x22,\x22URIError\x22],rt=[\x22setInterval\x22,\x22setTimeout\x22,\x22clearInterval\x22,\x22clearTimeout\x22,\x22require\x22,\x22exports\x22,\x22eval\x22,\x22isFinite\x22,\x22isNaN\x22,\x22parseFloat\x22,\x22parseInt\x22,\x22decodeURI\x22,\x22decodeURIComponent\x22,\x22encodeURI\x22,\x22encodeURIComponent\x22,\x22escape\x22,\x22unescape\x22],Un=[\x22arguments\x22,\x22this\x22,\x22super\x22,\x22console\x22,\x22window\x22,\x22document\x22,\x22localStorage\x22,\x22sessionStorage\x22,\x22module\x22,\x22self\x22,\x22global\x22],Pn=[].concat(rt,nt,it);function\x20ot(e){let\x20t=e.regex,n=(g,{after:E})=>{let\x20v=\x22</\x22+g[0].slice(1);return\x20g.input.indexOf(v,E)!==-1},r=tt,l={begin:\x22<>\x22,end:\x22</>\x22},p=/<[A-Za-z0-9\x5c\x5c._:-]+\x5cs*\x5c/>/,o={begin:/<[A-Za-z0-9\x5c\x5c._:-]+/,end:/\x5c/[A-Za-z0-9\x5c\x5c._:-]+>|\x5c/>/,isTrulyOpeningTag:(g,E)=>{let\x20v=g[0].length+g.index,R=g.input[v];if(R===\x22<\x22||R===\x22,\x22){E.ignoreMatch();return}R===\x22>\x22&&(n(g,{after:v})||E.ignoreMatch());let\x20U,F=g.input.substring(v);if(U=F.match(/^\x5cs*=/)){E.ignoreMatch();return}if((U=F.match(/^\x5cs+extends\x5cs+/))&&U.index===0){E.ignoreMatch();return}}},i={$pattern:tt,keyword:Dn,literal:Bn,built_in:Pn,\x22variable.language\x22:Un},s=\x22[0-9](_?[0-9])*\x22,d=`\x5c\x5c.(${s})`,f=\x220|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\x22,w={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${f})((${d})|\x5c\x5c.)?|(${d}))[eE][+-]?(${s})\x5c\x5cb`},{begin:`\x5c\x5cb(${f})\x5c\x5cb((${d})\x5c\x5cb|\x5c\x5c.)?|(${d})\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_?[0-9])*)n\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][0-1](_?[0-1])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[oO][0-7](_?[0-7])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[0-7]+n?\x5c\x5cb\x22}],relevance:0},m={className:\x22subst\x22,begin:\x22\x5c\x5c$\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,keywords:i,contains:[]},y={begin:\x22.?html`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22xml\x22}},S={begin:\x22.?css`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22css\x22}},N={begin:\x22.?gql`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22graphql\x22}},O={className:\x22string\x22,begin:\x22`\x22,end:\x22`\x22,contains:[e.BACKSLASH_ESCAPE,m]},M={className:\x22comment\x22,variants:[e.COMMENT(/\x5c/\x5c*\x5c*(?!\x5c/)/,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:\x22(?=@[A-Za-z]+)\x22,relevance:0,contains:[{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22},{className:\x22type\x22,begin:\x22\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:\x22variable\x22,begin:r+\x22(?=\x5c\x5cs*(-)|$)\x22,endsParent:!0,relevance:0},{begin:/(?=[^\x5cn])\x5cs/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},I=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,{match:/\x5c$\x5cd+/},w];m.contains=I.concat({begin:/\x5c{/,end:/\x5c}/,keywords:i,contains:[\x22self\x22].concat(I)});let\x20D=[].concat(M,m.contains),A=D.concat([{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,keywords:i,contains:[\x22self\x22].concat(D)}]),C={className:\x22params\x22,begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A},X={variants:[{match:[/class/,/\x5cs+/,r,/\x5cs+/,/extends/,/\x5cs+/,t.concat(r,\x22(\x22,t.concat(/\x5c./,r),\x22)*\x22)],scope:{1:\x22keyword\x22,3:\x22title.class\x22,5:\x22keyword\x22,7:\x22title.class.inherited\x22}},{match:[/class/,/\x5cs+/,r],scope:{1:\x22keyword\x22,3:\x22title.class\x22}}]},B={relevance:0,match:t.either(/\x5cbJSON/,/\x5cb[A-Z][a-z]+([A-Z][a-z]*|\x5cd)*/,/\x5cb[A-Z]{2,}([A-Z][a-z]+|\x5cd)+([A-Z][a-z]*)*/,/\x5cb[A-Z]{2,}[a-z]+([A-Z][a-z]+|\x5cd)*([A-Z][a-z]*)*/),className:\x22title.class\x22,keywords:{_:[...nt,...it]}},$={label:\x22use_strict\x22,className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20(strict|asm)[\x27\x22]/},Q={variants:[{match:[/function/,/\x5cs+/,r,/(?=\x5cs*\x5c()/]},{match:[/function/,/\x5cs*(?=\x5c()/]}],className:{1:\x22keyword\x22,3:\x22title.function\x22},label:\x22func.def\x22,contains:[C],illegal:/%/},ne={relevance:0,match:/\x5cb[A-Z][A-Z_0-9]+\x5cb/,className:\x22variable.constant\x22};function\x20ie(g){return\x20t.concat(\x22(?!\x22,g.join(\x22|\x22),\x22)\x22)}let\x20re={match:t.concat(/\x5cb/,ie([...rt,\x22super\x22,\x22import\x22,\x22await\x22].map(g=>`${g}\x5c\x5cs*\x5c\x5c(`)),r,t.lookahead(/\x5cs*\x5c(/)),className:\x22title.function\x22,relevance:0},W={begin:t.concat(/\x5c./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:\x22prototype\x22,className:\x22property\x22,relevance:0},oe={match:[/get|set/,/\x5cs+/,r,/(?=\x5c()/],className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[{begin:/\x5c(\x5c)/},C]},a=\x22(\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)|\x22+e.UNDERSCORE_IDENT_RE+\x22)\x5c\x5cs*=>\x22,u={match:[/const|var|let/,/\x5cs+/,r,/\x5cs*/,/=\x5cs*/,/(async\x5cs*)?/,t.lookahead(a)],keywords:\x22async\x22,className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[C]};return{name:\x22JavaScript\x22,aliases:[\x22js\x22,\x22jsx\x22,\x22mjs\x22,\x22cjs\x22],keywords:i,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:B},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:\x22shebang\x22,binary:\x22node\x22,relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,M,{match:/\x5c$\x5cd+/},w,B,{scope:\x22attr\x22,match:r+t.lookahead(\x22:\x22),relevance:0},u,{begin:\x22(\x22+e.RE_STARTERS_RE+\x22|\x5c\x5cb(case|return|throw)\x5c\x5cb)\x5c\x5cs*\x22,keywords:\x22return\x20throw\x20case\x22,relevance:0,contains:[M,e.REGEXP_MODE,{className:\x22function\x22,begin:a,returnBegin:!0,end:\x22\x5c\x5cs*=>\x22,contains:[{className:\x22params\x22,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A}]}]},{begin:/,/,relevance:0},{match:/\x5cs+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:p},{begin:o.begin,\x22on:begin\x22:o.isTrulyOpeningTag,end:o.end}],subLanguage:\x22xml\x22,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[\x22self\x22]}]}]},Q,{beginKeywords:\x22while\x20if\x20switch\x20catch\x20for\x22},{begin:\x22\x5c\x5cb(?!function)\x22+e.UNDERSCORE_IDENT_RE+\x22\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)\x5c\x5cs*\x5c\x5c{\x22,returnBegin:!0,label:\x22func.def\x22,contains:[C,e.inherit(e.TITLE_MODE,{begin:r,className:\x22title.function\x22})]},{match:/\x5c.\x5c.\x5c./,relevance:0},W,{match:\x22\x5c\x5c$\x22+r,relevance:0},{match:[/\x5cbconstructor(?=\x5cs*\x5c()/],className:{1:\x22title.function\x22},contains:[C]},re,ne,X,oe,{match:/\x5c$[(.]/}]}}var\x20fe=\x22[A-Za-z$_][0-9A-Za-z$_]*\x22,at=[\x22as\x22,\x22in\x22,\x22of\x22,\x22if\x22,\x22for\x22,\x22while\x22,\x22finally\x22,\x22var\x22,\x22new\x22,\x22function\x22,\x22do\x22,\x22return\x22,\x22void\x22,\x22else\x22,\x22break\x22,\x22catch\x22,\x22instanceof\x22,\x22with\x22,\x22throw\x22,\x22case\x22,\x22default\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22typeof\x22,\x22delete\x22,\x22let\x22,\x22yield\x22,\x22const\x22,\x22class\x22,\x22debugger\x22,\x22async\x22,\x22await\x22,\x22static\x22,\x22import\x22,\x22from\x22,\x22export\x22,\x22extends\x22,\x22using\x22],st=[\x22true\x22,\x22false\x22,\x22null\x22,\x22undefined\x22,\x22NaN\x22,\x22Infinity\x22],ct=[\x22Object\x22,\x22Function\x22,\x22Boolean\x22,\x22Symbol\x22,\x22Math\x22,\x22Date\x22,\x22Number\x22,\x22BigInt\x22,\x22String\x22,\x22RegExp\x22,\x22Array\x22,\x22Float32Array\x22,\x22Float64Array\x22,\x22Int8Array\x22,\x22Uint8Array\x22,\x22Uint8ClampedArray\x22,\x22Int16Array\x22,\x22Int32Array\x22,\x22Uint16Array\x22,\x22Uint32Array\x22,\x22BigInt64Array\x22,\x22BigUint64Array\x22,\x22Set\x22,\x22Map\x22,\x22WeakSet\x22,\x22WeakMap\x22,\x22ArrayBuffer\x22,\x22SharedArrayBuffer\x22,\x22Atomics\x22,\x22DataView\x22,\x22JSON\x22,\x22Promise\x22,\x22Generator\x22,\x22GeneratorFunction\x22,\x22AsyncFunction\x22,\x22Reflect\x22,\x22Proxy\x22,\x22Intl\x22,\x22WebAssembly\x22],lt=[\x22Error\x22,\x22EvalError\x22,\x22InternalError\x22,\x22RangeError\x22,\x22ReferenceError\x22,\x22SyntaxError\x22,\x22TypeError\x22,\x22URIError\x22],dt=[\x22setInterval\x22,\x22setTimeout\x22,\x22clearInterval\x22,\x22clearTimeout\x22,\x22require\x22,\x22exports\x22,\x22eval\x22,\x22isFinite\x22,\x22isNaN\x22,\x22parseFloat\x22,\x22parseInt\x22,\x22decodeURI\x22,\x22decodeURIComponent\x22,\x22encodeURI\x22,\x22encodeURIComponent\x22,\x22escape\x22,\x22unescape\x22],gt=[\x22arguments\x22,\x22this\x22,\x22super\x22,\x22console\x22,\x22window\x22,\x22document\x22,\x22localStorage\x22,\x22sessionStorage\x22,\x22module\x22,\x22self\x22,\x22global\x22],ut=[].concat(dt,ct,lt);function\x20zn(e){let\x20t=e.regex,n=(g,{after:E})=>{let\x20v=\x22</\x22+g[0].slice(1);return\x20g.input.indexOf(v,E)!==-1},r=fe,l={begin:\x22<>\x22,end:\x22</>\x22},p=/<[A-Za-z0-9\x5c\x5c._:-]+\x5cs*\x5c/>/,o={begin:/<[A-Za-z0-9\x5c\x5c._:-]+/,end:/\x5c/[A-Za-z0-9\x5c\x5c._:-]+>|\x5c/>/,isTrulyOpeningTag:(g,E)=>{let\x20v=g[0].length+g.index,R=g.input[v];if(R===\x22<\x22||R===\x22,\x22){E.ignoreMatch();return}R===\x22>\x22&&(n(g,{after:v})||E.ignoreMatch());let\x20U,F=g.input.substring(v);if(U=F.match(/^\x5cs*=/)){E.ignoreMatch();return}if((U=F.match(/^\x5cs+extends\x5cs+/))&&U.index===0){E.ignoreMatch();return}}},i={$pattern:fe,keyword:at,literal:st,built_in:ut,\x22variable.language\x22:gt},s=\x22[0-9](_?[0-9])*\x22,d=`\x5c\x5c.(${s})`,f=\x220|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\x22,w={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${f})((${d})|\x5c\x5c.)?|(${d}))[eE][+-]?(${s})\x5c\x5cb`},{begin:`\x5c\x5cb(${f})\x5c\x5cb((${d})\x5c\x5cb|\x5c\x5c.)?|(${d})\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_?[0-9])*)n\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][0-1](_?[0-1])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[oO][0-7](_?[0-7])*n?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[0-7]+n?\x5c\x5cb\x22}],relevance:0},m={className:\x22subst\x22,begin:\x22\x5c\x5c$\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,keywords:i,contains:[]},y={begin:\x22.?html`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22xml\x22}},S={begin:\x22.?css`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22css\x22}},N={begin:\x22.?gql`\x22,end:\x22\x22,starts:{end:\x22`\x22,returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,m],subLanguage:\x22graphql\x22}},O={className:\x22string\x22,begin:\x22`\x22,end:\x22`\x22,contains:[e.BACKSLASH_ESCAPE,m]},M={className:\x22comment\x22,variants:[e.COMMENT(/\x5c/\x5c*\x5c*(?!\x5c/)/,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:\x22(?=@[A-Za-z]+)\x22,relevance:0,contains:[{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22},{className:\x22type\x22,begin:\x22\x5c\x5c{\x22,end:\x22\x5c\x5c}\x22,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:\x22variable\x22,begin:r+\x22(?=\x5c\x5cs*(-)|$)\x22,endsParent:!0,relevance:0},{begin:/(?=[^\x5cn])\x5cs/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},I=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,{match:/\x5c$\x5cd+/},w];m.contains=I.concat({begin:/\x5c{/,end:/\x5c}/,keywords:i,contains:[\x22self\x22].concat(I)});let\x20D=[].concat(M,m.contains),A=D.concat([{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,keywords:i,contains:[\x22self\x22].concat(D)}]),C={className:\x22params\x22,begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A},X={variants:[{match:[/class/,/\x5cs+/,r,/\x5cs+/,/extends/,/\x5cs+/,t.concat(r,\x22(\x22,t.concat(/\x5c./,r),\x22)*\x22)],scope:{1:\x22keyword\x22,3:\x22title.class\x22,5:\x22keyword\x22,7:\x22title.class.inherited\x22}},{match:[/class/,/\x5cs+/,r],scope:{1:\x22keyword\x22,3:\x22title.class\x22}}]},B={relevance:0,match:t.either(/\x5cbJSON/,/\x5cb[A-Z][a-z]+([A-Z][a-z]*|\x5cd)*/,/\x5cb[A-Z]{2,}([A-Z][a-z]+|\x5cd)+([A-Z][a-z]*)*/,/\x5cb[A-Z]{2,}[a-z]+([A-Z][a-z]+|\x5cd)*([A-Z][a-z]*)*/),className:\x22title.class\x22,keywords:{_:[...ct,...lt]}},$={label:\x22use_strict\x22,className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20(strict|asm)[\x27\x22]/},Q={variants:[{match:[/function/,/\x5cs+/,r,/(?=\x5cs*\x5c()/]},{match:[/function/,/\x5cs*(?=\x5c()/]}],className:{1:\x22keyword\x22,3:\x22title.function\x22},label:\x22func.def\x22,contains:[C],illegal:/%/},ne={relevance:0,match:/\x5cb[A-Z][A-Z_0-9]+\x5cb/,className:\x22variable.constant\x22};function\x20ie(g){return\x20t.concat(\x22(?!\x22,g.join(\x22|\x22),\x22)\x22)}let\x20re={match:t.concat(/\x5cb/,ie([...dt,\x22super\x22,\x22import\x22,\x22await\x22].map(g=>`${g}\x5c\x5cs*\x5c\x5c(`)),r,t.lookahead(/\x5cs*\x5c(/)),className:\x22title.function\x22,relevance:0},W={begin:t.concat(/\x5c./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:\x22prototype\x22,className:\x22property\x22,relevance:0},oe={match:[/get|set/,/\x5cs+/,r,/(?=\x5c()/],className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[{begin:/\x5c(\x5c)/},C]},a=\x22(\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)|\x22+e.UNDERSCORE_IDENT_RE+\x22)\x5c\x5cs*=>\x22,u={match:[/const|var|let/,/\x5cs+/,r,/\x5cs*/,/=\x5cs*/,/(async\x5cs*)?/,t.lookahead(a)],keywords:\x22async\x22,className:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[C]};return{name:\x22JavaScript\x22,aliases:[\x22js\x22,\x22jsx\x22,\x22mjs\x22,\x22cjs\x22],keywords:i,exports:{PARAMS_CONTAINS:A,CLASS_REFERENCE:B},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:\x22shebang\x22,binary:\x22node\x22,relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,S,N,O,M,{match:/\x5c$\x5cd+/},w,B,{scope:\x22attr\x22,match:r+t.lookahead(\x22:\x22),relevance:0},u,{begin:\x22(\x22+e.RE_STARTERS_RE+\x22|\x5c\x5cb(case|return|throw)\x5c\x5cb)\x5c\x5cs*\x22,keywords:\x22return\x20throw\x20case\x22,relevance:0,contains:[M,e.REGEXP_MODE,{className:\x22function\x22,begin:a,returnBegin:!0,end:\x22\x5c\x5cs*=>\x22,contains:[{className:\x22params\x22,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/(\x5cs*)\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:A}]}]},{begin:/,/,relevance:0},{match:/\x5cs+/,relevance:0},{variants:[{begin:l.begin,end:l.end},{match:p},{begin:o.begin,\x22on:begin\x22:o.isTrulyOpeningTag,end:o.end}],subLanguage:\x22xml\x22,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[\x22self\x22]}]}]},Q,{beginKeywords:\x22while\x20if\x20switch\x20catch\x20for\x22},{begin:\x22\x5c\x5cb(?!function)\x22+e.UNDERSCORE_IDENT_RE+\x22\x5c\x5c([^()]*(\x5c\x5c([^()]*(\x5c\x5c([^()]*\x5c\x5c)[^()]*)*\x5c\x5c)[^()]*)*\x5c\x5c)\x5c\x5cs*\x5c\x5c{\x22,returnBegin:!0,label:\x22func.def\x22,contains:[C,e.inherit(e.TITLE_MODE,{begin:r,className:\x22title.function\x22})]},{match:/\x5c.\x5c.\x5c./,relevance:0},W,{match:\x22\x5c\x5c$\x22+r,relevance:0},{match:[/\x5cbconstructor(?=\x5cs*\x5c()/],className:{1:\x22title.function\x22},contains:[C]},re,ne,X,oe,{match:/\x5c$[(.]/}]}}function\x20bt(e){let\x20t=e.regex,n=zn(e),r=fe,l=[\x22any\x22,\x22void\x22,\x22number\x22,\x22boolean\x22,\x22string\x22,\x22object\x22,\x22never\x22,\x22symbol\x22,\x22bigint\x22,\x22unknown\x22],p={begin:[/namespace/,/\x5cs+/,e.IDENT_RE],beginScope:{1:\x22keyword\x22,3:\x22title.class\x22}},o={beginKeywords:\x22interface\x22,end:/\x5c{/,excludeEnd:!0,keywords:{keyword:\x22interface\x20extends\x22,built_in:l},contains:[n.exports.CLASS_REFERENCE]},i={className:\x22meta\x22,relevance:10,begin:/^\x5cs*[\x27\x22]use\x20strict[\x27\x22]/},s=[\x22type\x22,\x22interface\x22,\x22public\x22,\x22private\x22,\x22protected\x22,\x22implements\x22,\x22declare\x22,\x22abstract\x22,\x22readonly\x22,\x22enum\x22,\x22override\x22,\x22satisfies\x22],d={$pattern:fe,keyword:at.concat(s),literal:st,built_in:ut.concat(l),\x22variable.language\x22:gt},f={className:\x22meta\x22,begin:\x22@\x22+r},w=(N,O,x)=>{let\x20M=N.contains.findIndex(I=>I.label===O);if(M===-1)throw\x20new\x20Error(\x22can\x20not\x20find\x20mode\x20to\x20replace\x22);N.contains.splice(M,1,x)};Object.assign(n.keywords,d),n.exports.PARAMS_CONTAINS.push(f);let\x20m=n.contains.find(N=>N.scope===\x22attr\x22),y=Object.assign({},m,{match:t.concat(r,t.lookahead(/\x5cs*\x5c?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,m,y]),n.contains=n.contains.concat([f,p,o,y]),w(n,\x22shebang\x22,e.SHEBANG()),w(n,\x22use_strict\x22,i);let\x20S=n.contains.find(N=>N.label===\x22func.def\x22);return\x20S.relevance=0,Object.assign(n,{name:\x22TypeScript\x22,aliases:[\x22ts\x22,\x22tsx\x22,\x22mts\x22,\x22cts\x22]}),n}var\x20$n=\x22([-+]?)(\x5c\x5cb0[xX][a-fA-F0-9]+|(\x5c\x5cb\x5c\x5cd+(\x5c\x5c.\x5c\x5cd*)?|\x5c\x5c.\x5c\x5cd+)([eE][-+]?\x5c\x5cd+)?)|NaN|[-+]?Infinity\x22,Gn={scope:\x22number\x22,match:$n,relevance:0};function\x20pt(e){let\x20t={className:\x22attr\x22,begin:/((\x22(\x5c\x5c.|[^\x5c\x5c\x22\x5cr\x5cn])*\x22)|(\x27(\x5c\x5c.|[^\x5c\x5c\x27\x5cr\x5cn])*\x27))(?=\x5cs*:)/,relevance:1.01},n={match:/[{}[\x5c],:]/,className:\x22punctuation\x22,relevance:0},r=[\x22true\x22,\x22false\x22,\x22null\x22],l={scope:\x22literal\x22,beginKeywords:r.join(\x22\x20\x22)};return{name:\x22JSON\x22,aliases:[\x22jsonc\x22,\x22json5\x22],keywords:{literal:r},contains:[t,n,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,l,Gn,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:\x22\x5c\x5cS\x22}}function\x20ft(e){let\x20t=e.regex,n=t.concat(/[\x5cp{L}_]/u,t.optional(/[\x5cp{L}0-9_.-]*:/u),/[\x5cp{L}0-9_.-]*/u),r=/[\x5cp{L}0-9._:-]+/u,l={className:\x22symbol\x22,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},p={begin:/\x5cs/,contains:[{className:\x22keyword\x22,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\x5cn/}]},o=e.inherit(p,{begin:/\x5c(/,end:/\x5c)/}),i=e.inherit(e.APOS_STRING_MODE,{className:\x22string\x22}),s=e.inherit(e.QUOTE_STRING_MODE,{className:\x22string\x22}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:\x22attr\x22,begin:r,relevance:0},{begin:/=\x5cs*/,relevance:0,contains:[{className:\x22string\x22,endsParent:!0,variants:[{begin:/\x22/,end:/\x22/,contains:[l]},{begin:/\x27/,end:/\x27/,contains:[l]},{begin:/[^\x5cs\x22\x27=<>`]+/}]}]}]};return{name:\x22HTML,\x20XML\x22,aliases:[\x22html\x22,\x22xhtml\x22,\x22rss\x22,\x22atom\x22,\x22xjb\x22,\x22xsd\x22,\x22xsl\x22,\x22plist\x22,\x22wsf\x22,\x22svg\x22],case_insensitive:!0,unicodeRegex:!0,contains:[{className:\x22meta\x22,begin:/<![a-z]/,end:/>/,relevance:10,contains:[p,s,i,o,{begin:/\x5c[/,end:/\x5c]/,contains:[{className:\x22meta\x22,begin:/<![a-z]/,end:/>/,contains:[p,o,s,i]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\x5c[CDATA\x5c[/,end:/\x5c]\x5c]>/,relevance:10},l,{className:\x22meta\x22,end:/\x5c?>/,variants:[{begin:/<\x5c?xml/,relevance:10,contains:[s]},{begin:/<\x5c?[a-z][a-z0-9]+/}]},{className:\x22tag\x22,begin:/<style(?=\x5cs|>)/,end:/>/,keywords:{name:\x22style\x22},contains:[d],starts:{end:/<\x5c/style>/,returnEnd:!0,subLanguage:\x22css\x22}},{className:\x22tag\x22,begin:/<script(?=\x5cs|>)/,end:/>/,keywords:{name:\x22script\x22},contains:[d],starts:{end:/<\x5c/script>/,returnEnd:!0,subLanguage:\x22javascript\x22}},{className:\x22tag\x22,begin:/<>|<\x5c/>/},{className:\x22tag\x22,begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\x5c/>/,/>/,/\x5cs/)))),end:/\x5c/?>/,contains:[{className:\x22name\x22,begin:n,relevance:0,starts:d}]},{className:\x22tag\x22,begin:t.concat(/<\x5c//,t.lookahead(t.concat(n,/>/))),contains:[{className:\x22name\x22,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}var\x20Fn=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Hn=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],Kn=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],Zn=[...Hn,...Kn],Wn=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),Yn=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),Xn=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),jn=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse();function\x20mt(e){let\x20t=e.regex,n=Fn(e),r={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l=\x22and\x20or\x20not\x20only\x22,p=/@-?\x5cw[\x5cw]*(-\x5cw+)*/,o=\x22[a-zA-Z-][a-zA-Z0-9_-]*\x22,i=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:\x22CSS\x22,case_insensitive:!0,illegal:/[=|\x27\x5c$]/,keywords:{keyframePosition:\x22from\x20to\x22},classNameAliases:{keyframePosition:\x22selector-tag\x22},contains:[n.BLOCK_COMMENT,r,n.CSS_NUMBER_MODE,{className:\x22selector-id\x22,begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:\x22selector-class\x22,begin:\x22\x5c\x5c.\x22+o,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-pseudo\x22,variants:[{begin:\x22:(\x22+Yn.join(\x22|\x22)+\x22)\x22},{begin:\x22:(:)?(\x22+Xn.join(\x22|\x22)+\x22)\x22}]},n.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+jn.join(\x22|\x22)+\x22)\x5c\x5cb\x22},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...i,{begin:/(url|data-uri)\x5c(/,end:/\x5c)/,relevance:0,keywords:{built_in:\x22url\x20data-uri\x22},contains:[...i,{className:\x22string\x22,begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:\x22[{;]\x22,relevance:0,illegal:/:/,contains:[{className:\x22keyword\x22,begin:p},{begin:/\x5cs/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:l,attribute:Wn.join(\x22\x20\x22)},contains:[{begin:/[a-z-]+(?=:)/,className:\x22attribute\x22},...i,n.CSS_NUMBER_MODE]}]},{className:\x22selector-tag\x22,begin:\x22\x5c\x5cb(\x22+Zn.join(\x22|\x22)+\x22)\x5c\x5cb\x22}]}}var\x20qn=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Vn=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],Qn=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],Jn=[...Vn,...Qn],ei=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),ti=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),ni=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),ii=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse();function\x20ht(e){let\x20t=qn(e),n=ni,r=ti,l=\x22@[a-z-]+\x22,p=\x22and\x20or\x20not\x20only\x22,i={className:\x22variable\x22,begin:\x22(\x5c\x5c$\x22+\x22[a-zA-Z-][a-zA-Z0-9_-]*\x22+\x22)\x5c\x5cb\x22,relevance:0};return{name:\x22SCSS\x22,case_insensitive:!0,illegal:\x22[=/|\x27]\x22,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:\x22selector-id\x22,begin:\x22#[A-Za-z0-9_-]+\x22,relevance:0},{className:\x22selector-class\x22,begin:\x22\x5c\x5c.[A-Za-z0-9_-]+\x22,relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-tag\x22,begin:\x22\x5c\x5cb(\x22+Jn.join(\x22|\x22)+\x22)\x5c\x5cb\x22,relevance:0},{className:\x22selector-pseudo\x22,begin:\x22:(\x22+r.join(\x22|\x22)+\x22)\x22},{className:\x22selector-pseudo\x22,begin:\x22:(:)?(\x22+n.join(\x22|\x22)+\x22)\x22},i,{begin:/\x5c(/,end:/\x5c)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+ii.join(\x22|\x22)+\x22)\x5c\x5cb\x22},{begin:\x22\x5c\x5cb(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\x5c\x5cb\x22},{begin:/:/,end:/[;}{]/,relevance:0,contains:[t.BLOCK_COMMENT,i,t.HEXCOLOR,t.CSS_NUMBER_MODE,t.UNICODE_RANGE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT,t.FUNCTION_DISPATCH]},{begin:\x22@(page|font-face)\x22,keywords:{$pattern:l,keyword:\x22@page\x20@font-face\x22}},{begin:\x22@\x22,end:\x22[{;]\x22,returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:ei.join(\x22\x20\x22)},contains:[{begin:l,className:\x22keyword\x22},{begin:/[a-z-]+(?=:)/,className:\x22attribute\x22},i,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}}var\x20ri=e=>({IMPORTANT:{scope:\x22meta\x22,begin:\x22!important\x22},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:\x22number\x22,begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\x5cb/},UNICODE_RANGE:{scope:\x22number\x22,begin:/\x5cb[Uu]\x5c+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:\x22built_in\x22,begin:/[\x5cw-]+(?=\x5c()/},ATTRIBUTE_SELECTOR_MODE:{scope:\x22selector-attr\x22,begin:/\x5c[/,end:/\x5c]/,illegal:\x22$\x22,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:\x22number\x22,begin:e.NUMBER_RE+\x22(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\x22,relevance:0},CSS_VARIABLE:{className:\x22attr\x22,begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),oi=[\x22a\x22,\x22abbr\x22,\x22address\x22,\x22article\x22,\x22aside\x22,\x22audio\x22,\x22b\x22,\x22blockquote\x22,\x22body\x22,\x22button\x22,\x22canvas\x22,\x22caption\x22,\x22cite\x22,\x22code\x22,\x22dd\x22,\x22del\x22,\x22details\x22,\x22dfn\x22,\x22div\x22,\x22dl\x22,\x22dt\x22,\x22em\x22,\x22fieldset\x22,\x22figcaption\x22,\x22figure\x22,\x22footer\x22,\x22form\x22,\x22h1\x22,\x22h2\x22,\x22h3\x22,\x22h4\x22,\x22h5\x22,\x22h6\x22,\x22header\x22,\x22hgroup\x22,\x22html\x22,\x22i\x22,\x22iframe\x22,\x22img\x22,\x22input\x22,\x22ins\x22,\x22kbd\x22,\x22label\x22,\x22legend\x22,\x22li\x22,\x22main\x22,\x22mark\x22,\x22menu\x22,\x22nav\x22,\x22object\x22,\x22ol\x22,\x22optgroup\x22,\x22option\x22,\x22p\x22,\x22picture\x22,\x22q\x22,\x22quote\x22,\x22samp\x22,\x22section\x22,\x22select\x22,\x22source\x22,\x22span\x22,\x22strong\x22,\x22summary\x22,\x22sup\x22,\x22table\x22,\x22tbody\x22,\x22td\x22,\x22textarea\x22,\x22tfoot\x22,\x22th\x22,\x22thead\x22,\x22time\x22,\x22tr\x22,\x22ul\x22,\x22var\x22,\x22video\x22],ai=[\x22defs\x22,\x22g\x22,\x22marker\x22,\x22mask\x22,\x22pattern\x22,\x22svg\x22,\x22switch\x22,\x22symbol\x22,\x22feBlend\x22,\x22feColorMatrix\x22,\x22feComponentTransfer\x22,\x22feComposite\x22,\x22feConvolveMatrix\x22,\x22feDiffuseLighting\x22,\x22feDisplacementMap\x22,\x22feFlood\x22,\x22feGaussianBlur\x22,\x22feImage\x22,\x22feMerge\x22,\x22feMorphology\x22,\x22feOffset\x22,\x22feSpecularLighting\x22,\x22feTile\x22,\x22feTurbulence\x22,\x22linearGradient\x22,\x22radialGradient\x22,\x22stop\x22,\x22circle\x22,\x22ellipse\x22,\x22image\x22,\x22line\x22,\x22path\x22,\x22polygon\x22,\x22polyline\x22,\x22rect\x22,\x22text\x22,\x22use\x22,\x22textPath\x22,\x22tspan\x22,\x22foreignObject\x22,\x22clipPath\x22],si=[...oi,...ai],ci=[\x22any-hover\x22,\x22any-pointer\x22,\x22aspect-ratio\x22,\x22color\x22,\x22color-gamut\x22,\x22color-index\x22,\x22device-aspect-ratio\x22,\x22device-height\x22,\x22device-width\x22,\x22display-mode\x22,\x22forced-colors\x22,\x22grid\x22,\x22height\x22,\x22hover\x22,\x22inverted-colors\x22,\x22monochrome\x22,\x22orientation\x22,\x22overflow-block\x22,\x22overflow-inline\x22,\x22pointer\x22,\x22prefers-color-scheme\x22,\x22prefers-contrast\x22,\x22prefers-reduced-motion\x22,\x22prefers-reduced-transparency\x22,\x22resolution\x22,\x22scan\x22,\x22scripting\x22,\x22update\x22,\x22width\x22,\x22min-width\x22,\x22max-width\x22,\x22min-height\x22,\x22max-height\x22].sort().reverse(),Et=[\x22active\x22,\x22any-link\x22,\x22blank\x22,\x22checked\x22,\x22current\x22,\x22default\x22,\x22defined\x22,\x22dir\x22,\x22disabled\x22,\x22drop\x22,\x22empty\x22,\x22enabled\x22,\x22first\x22,\x22first-child\x22,\x22first-of-type\x22,\x22fullscreen\x22,\x22future\x22,\x22focus\x22,\x22focus-visible\x22,\x22focus-within\x22,\x22has\x22,\x22host\x22,\x22host-context\x22,\x22hover\x22,\x22indeterminate\x22,\x22in-range\x22,\x22invalid\x22,\x22is\x22,\x22lang\x22,\x22last-child\x22,\x22last-of-type\x22,\x22left\x22,\x22link\x22,\x22local-link\x22,\x22not\x22,\x22nth-child\x22,\x22nth-col\x22,\x22nth-last-child\x22,\x22nth-last-col\x22,\x22nth-last-of-type\x22,\x22nth-of-type\x22,\x22only-child\x22,\x22only-of-type\x22,\x22optional\x22,\x22out-of-range\x22,\x22past\x22,\x22placeholder-shown\x22,\x22read-only\x22,\x22read-write\x22,\x22required\x22,\x22right\x22,\x22root\x22,\x22scope\x22,\x22target\x22,\x22target-within\x22,\x22user-invalid\x22,\x22valid\x22,\x22visited\x22,\x22where\x22].sort().reverse(),_t=[\x22after\x22,\x22backdrop\x22,\x22before\x22,\x22cue\x22,\x22cue-region\x22,\x22first-letter\x22,\x22first-line\x22,\x22grammar-error\x22,\x22marker\x22,\x22part\x22,\x22placeholder\x22,\x22selection\x22,\x22slotted\x22,\x22spelling-error\x22].sort().reverse(),li=[\x22accent-color\x22,\x22align-content\x22,\x22align-items\x22,\x22align-self\x22,\x22alignment-baseline\x22,\x22all\x22,\x22anchor-name\x22,\x22animation\x22,\x22animation-composition\x22,\x22animation-delay\x22,\x22animation-direction\x22,\x22animation-duration\x22,\x22animation-fill-mode\x22,\x22animation-iteration-count\x22,\x22animation-name\x22,\x22animation-play-state\x22,\x22animation-range\x22,\x22animation-range-end\x22,\x22animation-range-start\x22,\x22animation-timeline\x22,\x22animation-timing-function\x22,\x22appearance\x22,\x22aspect-ratio\x22,\x22backdrop-filter\x22,\x22backface-visibility\x22,\x22background\x22,\x22background-attachment\x22,\x22background-blend-mode\x22,\x22background-clip\x22,\x22background-color\x22,\x22background-image\x22,\x22background-origin\x22,\x22background-position\x22,\x22background-position-x\x22,\x22background-position-y\x22,\x22background-repeat\x22,\x22background-size\x22,\x22baseline-shift\x22,\x22block-size\x22,\x22border\x22,\x22border-block\x22,\x22border-block-color\x22,\x22border-block-end\x22,\x22border-block-end-color\x22,\x22border-block-end-style\x22,\x22border-block-end-width\x22,\x22border-block-start\x22,\x22border-block-start-color\x22,\x22border-block-start-style\x22,\x22border-block-start-width\x22,\x22border-block-style\x22,\x22border-block-width\x22,\x22border-bottom\x22,\x22border-bottom-color\x22,\x22border-bottom-left-radius\x22,\x22border-bottom-right-radius\x22,\x22border-bottom-style\x22,\x22border-bottom-width\x22,\x22border-collapse\x22,\x22border-color\x22,\x22border-end-end-radius\x22,\x22border-end-start-radius\x22,\x22border-image\x22,\x22border-image-outset\x22,\x22border-image-repeat\x22,\x22border-image-slice\x22,\x22border-image-source\x22,\x22border-image-width\x22,\x22border-inline\x22,\x22border-inline-color\x22,\x22border-inline-end\x22,\x22border-inline-end-color\x22,\x22border-inline-end-style\x22,\x22border-inline-end-width\x22,\x22border-inline-start\x22,\x22border-inline-start-color\x22,\x22border-inline-start-style\x22,\x22border-inline-start-width\x22,\x22border-inline-style\x22,\x22border-inline-width\x22,\x22border-left\x22,\x22border-left-color\x22,\x22border-left-style\x22,\x22border-left-width\x22,\x22border-radius\x22,\x22border-right\x22,\x22border-right-color\x22,\x22border-right-style\x22,\x22border-right-width\x22,\x22border-spacing\x22,\x22border-start-end-radius\x22,\x22border-start-start-radius\x22,\x22border-style\x22,\x22border-top\x22,\x22border-top-color\x22,\x22border-top-left-radius\x22,\x22border-top-right-radius\x22,\x22border-top-style\x22,\x22border-top-width\x22,\x22border-width\x22,\x22bottom\x22,\x22box-align\x22,\x22box-decoration-break\x22,\x22box-direction\x22,\x22box-flex\x22,\x22box-flex-group\x22,\x22box-lines\x22,\x22box-ordinal-group\x22,\x22box-orient\x22,\x22box-pack\x22,\x22box-shadow\x22,\x22box-sizing\x22,\x22break-after\x22,\x22break-before\x22,\x22break-inside\x22,\x22caption-side\x22,\x22caret-color\x22,\x22clear\x22,\x22clip\x22,\x22clip-path\x22,\x22clip-rule\x22,\x22color\x22,\x22color-interpolation\x22,\x22color-interpolation-filters\x22,\x22color-profile\x22,\x22color-rendering\x22,\x22color-scheme\x22,\x22column-count\x22,\x22column-fill\x22,\x22column-gap\x22,\x22column-rule\x22,\x22column-rule-color\x22,\x22column-rule-style\x22,\x22column-rule-width\x22,\x22column-span\x22,\x22column-width\x22,\x22columns\x22,\x22contain\x22,\x22contain-intrinsic-block-size\x22,\x22contain-intrinsic-height\x22,\x22contain-intrinsic-inline-size\x22,\x22contain-intrinsic-size\x22,\x22contain-intrinsic-width\x22,\x22container\x22,\x22container-name\x22,\x22container-type\x22,\x22content\x22,\x22content-visibility\x22,\x22corner-bottom-left-shape\x22,\x22corner-bottom-right-shape\x22,\x22corner-shape\x22,\x22corner-top-left-shape\x22,\x22corner-top-right-shape\x22,\x22counter-increment\x22,\x22counter-reset\x22,\x22counter-set\x22,\x22cue\x22,\x22cue-after\x22,\x22cue-before\x22,\x22cursor\x22,\x22cx\x22,\x22cy\x22,\x22direction\x22,\x22display\x22,\x22dominant-baseline\x22,\x22empty-cells\x22,\x22enable-background\x22,\x22field-sizing\x22,\x22fill\x22,\x22fill-opacity\x22,\x22fill-rule\x22,\x22filter\x22,\x22flex\x22,\x22flex-basis\x22,\x22flex-direction\x22,\x22flex-flow\x22,\x22flex-grow\x22,\x22flex-shrink\x22,\x22flex-wrap\x22,\x22float\x22,\x22flood-color\x22,\x22flood-opacity\x22,\x22flow\x22,\x22font\x22,\x22font-display\x22,\x22font-family\x22,\x22font-feature-settings\x22,\x22font-kerning\x22,\x22font-language-override\x22,\x22font-optical-sizing\x22,\x22font-palette\x22,\x22font-size\x22,\x22font-size-adjust\x22,\x22font-smooth\x22,\x22font-smoothing\x22,\x22font-stretch\x22,\x22font-style\x22,\x22font-synthesis\x22,\x22font-synthesis-position\x22,\x22font-synthesis-small-caps\x22,\x22font-synthesis-style\x22,\x22font-synthesis-weight\x22,\x22font-variant\x22,\x22font-variant-alternates\x22,\x22font-variant-caps\x22,\x22font-variant-east-asian\x22,\x22font-variant-emoji\x22,\x22font-variant-ligatures\x22,\x22font-variant-numeric\x22,\x22font-variant-position\x22,\x22font-variation-settings\x22,\x22font-weight\x22,\x22forced-color-adjust\x22,\x22gap\x22,\x22glyph-orientation-horizontal\x22,\x22glyph-orientation-vertical\x22,\x22grid\x22,\x22grid-area\x22,\x22grid-auto-columns\x22,\x22grid-auto-flow\x22,\x22grid-auto-rows\x22,\x22grid-column\x22,\x22grid-column-end\x22,\x22grid-column-start\x22,\x22grid-gap\x22,\x22grid-row\x22,\x22grid-row-end\x22,\x22grid-row-start\x22,\x22grid-template\x22,\x22grid-template-areas\x22,\x22grid-template-columns\x22,\x22grid-template-rows\x22,\x22hanging-punctuation\x22,\x22height\x22,\x22hyphenate-character\x22,\x22hyphenate-limit-chars\x22,\x22hyphens\x22,\x22icon\x22,\x22image-orientation\x22,\x22image-rendering\x22,\x22image-resolution\x22,\x22ime-mode\x22,\x22initial-letter\x22,\x22initial-letter-align\x22,\x22inline-size\x22,\x22inset\x22,\x22inset-area\x22,\x22inset-block\x22,\x22inset-block-end\x22,\x22inset-block-start\x22,\x22inset-inline\x22,\x22inset-inline-end\x22,\x22inset-inline-start\x22,\x22isolation\x22,\x22justify-content\x22,\x22justify-items\x22,\x22justify-self\x22,\x22kerning\x22,\x22left\x22,\x22letter-spacing\x22,\x22lighting-color\x22,\x22line-break\x22,\x22line-height\x22,\x22line-height-step\x22,\x22list-style\x22,\x22list-style-image\x22,\x22list-style-position\x22,\x22list-style-type\x22,\x22margin\x22,\x22margin-block\x22,\x22margin-block-end\x22,\x22margin-block-start\x22,\x22margin-bottom\x22,\x22margin-inline\x22,\x22margin-inline-end\x22,\x22margin-inline-start\x22,\x22margin-left\x22,\x22margin-right\x22,\x22margin-top\x22,\x22margin-trim\x22,\x22marker\x22,\x22marker-end\x22,\x22marker-mid\x22,\x22marker-start\x22,\x22marks\x22,\x22mask\x22,\x22mask-border\x22,\x22mask-border-mode\x22,\x22mask-border-outset\x22,\x22mask-border-repeat\x22,\x22mask-border-slice\x22,\x22mask-border-source\x22,\x22mask-border-width\x22,\x22mask-clip\x22,\x22mask-composite\x22,\x22mask-image\x22,\x22mask-mode\x22,\x22mask-origin\x22,\x22mask-position\x22,\x22mask-repeat\x22,\x22mask-size\x22,\x22mask-type\x22,\x22masonry-auto-flow\x22,\x22math-depth\x22,\x22math-shift\x22,\x22math-style\x22,\x22max-block-size\x22,\x22max-height\x22,\x22max-inline-size\x22,\x22max-width\x22,\x22min-block-size\x22,\x22min-height\x22,\x22min-inline-size\x22,\x22min-width\x22,\x22mix-blend-mode\x22,\x22nav-down\x22,\x22nav-index\x22,\x22nav-left\x22,\x22nav-right\x22,\x22nav-up\x22,\x22none\x22,\x22normal\x22,\x22object-fit\x22,\x22object-position\x22,\x22offset\x22,\x22offset-anchor\x22,\x22offset-distance\x22,\x22offset-path\x22,\x22offset-position\x22,\x22offset-rotate\x22,\x22opacity\x22,\x22order\x22,\x22orphans\x22,\x22outline\x22,\x22outline-color\x22,\x22outline-offset\x22,\x22outline-style\x22,\x22outline-width\x22,\x22overflow\x22,\x22overflow-anchor\x22,\x22overflow-block\x22,\x22overflow-clip-margin\x22,\x22overflow-inline\x22,\x22overflow-wrap\x22,\x22overflow-x\x22,\x22overflow-y\x22,\x22overlay\x22,\x22overscroll-behavior\x22,\x22overscroll-behavior-block\x22,\x22overscroll-behavior-inline\x22,\x22overscroll-behavior-x\x22,\x22overscroll-behavior-y\x22,\x22padding\x22,\x22padding-block\x22,\x22padding-block-end\x22,\x22padding-block-start\x22,\x22padding-bottom\x22,\x22padding-inline\x22,\x22padding-inline-end\x22,\x22padding-inline-start\x22,\x22padding-left\x22,\x22padding-right\x22,\x22padding-top\x22,\x22page\x22,\x22page-break-after\x22,\x22page-break-before\x22,\x22page-break-inside\x22,\x22paint-order\x22,\x22pause\x22,\x22pause-after\x22,\x22pause-before\x22,\x22perspective\x22,\x22perspective-origin\x22,\x22place-content\x22,\x22place-items\x22,\x22place-self\x22,\x22pointer-events\x22,\x22position\x22,\x22position-anchor\x22,\x22position-visibility\x22,\x22print-color-adjust\x22,\x22quotes\x22,\x22r\x22,\x22resize\x22,\x22rest\x22,\x22rest-after\x22,\x22rest-before\x22,\x22right\x22,\x22rotate\x22,\x22row-gap\x22,\x22ruby-align\x22,\x22ruby-position\x22,\x22scale\x22,\x22scroll-behavior\x22,\x22scroll-margin\x22,\x22scroll-margin-block\x22,\x22scroll-margin-block-end\x22,\x22scroll-margin-block-start\x22,\x22scroll-margin-bottom\x22,\x22scroll-margin-inline\x22,\x22scroll-margin-inline-end\x22,\x22scroll-margin-inline-start\x22,\x22scroll-margin-left\x22,\x22scroll-margin-right\x22,\x22scroll-margin-top\x22,\x22scroll-padding\x22,\x22scroll-padding-block\x22,\x22scroll-padding-block-end\x22,\x22scroll-padding-block-start\x22,\x22scroll-padding-bottom\x22,\x22scroll-padding-inline\x22,\x22scroll-padding-inline-end\x22,\x22scroll-padding-inline-start\x22,\x22scroll-padding-left\x22,\x22scroll-padding-right\x22,\x22scroll-padding-top\x22,\x22scroll-snap-align\x22,\x22scroll-snap-stop\x22,\x22scroll-snap-type\x22,\x22scroll-timeline\x22,\x22scroll-timeline-axis\x22,\x22scroll-timeline-name\x22,\x22scrollbar-color\x22,\x22scrollbar-gutter\x22,\x22scrollbar-width\x22,\x22shape-image-threshold\x22,\x22shape-margin\x22,\x22shape-outside\x22,\x22shape-rendering\x22,\x22speak\x22,\x22speak-as\x22,\x22src\x22,\x22stop-color\x22,\x22stop-opacity\x22,\x22stroke\x22,\x22stroke-dasharray\x22,\x22stroke-dashoffset\x22,\x22stroke-linecap\x22,\x22stroke-linejoin\x22,\x22stroke-miterlimit\x22,\x22stroke-opacity\x22,\x22stroke-width\x22,\x22tab-size\x22,\x22table-layout\x22,\x22text-align\x22,\x22text-align-all\x22,\x22text-align-last\x22,\x22text-anchor\x22,\x22text-combine-upright\x22,\x22text-decoration\x22,\x22text-decoration-color\x22,\x22text-decoration-line\x22,\x22text-decoration-skip\x22,\x22text-decoration-skip-ink\x22,\x22text-decoration-style\x22,\x22text-decoration-thickness\x22,\x22text-emphasis\x22,\x22text-emphasis-color\x22,\x22text-emphasis-position\x22,\x22text-emphasis-style\x22,\x22text-indent\x22,\x22text-justify\x22,\x22text-orientation\x22,\x22text-overflow\x22,\x22text-rendering\x22,\x22text-shadow\x22,\x22text-size-adjust\x22,\x22text-transform\x22,\x22text-underline-offset\x22,\x22text-underline-position\x22,\x22text-wrap\x22,\x22text-wrap-mode\x22,\x22text-wrap-style\x22,\x22timeline-scope\x22,\x22top\x22,\x22touch-action\x22,\x22transform\x22,\x22transform-box\x22,\x22transform-origin\x22,\x22transform-style\x22,\x22transition\x22,\x22transition-behavior\x22,\x22transition-delay\x22,\x22transition-duration\x22,\x22transition-property\x22,\x22transition-timing-function\x22,\x22translate\x22,\x22unicode-bidi\x22,\x22unicode-range\x22,\x22user-modify\x22,\x22user-select\x22,\x22vector-effect\x22,\x22vertical-align\x22,\x22view-timeline\x22,\x22view-timeline-axis\x22,\x22view-timeline-inset\x22,\x22view-timeline-name\x22,\x22view-transition-name\x22,\x22visibility\x22,\x22voice-balance\x22,\x22voice-duration\x22,\x22voice-family\x22,\x22voice-pitch\x22,\x22voice-range\x22,\x22voice-rate\x22,\x22voice-stress\x22,\x22voice-volume\x22,\x22white-space\x22,\x22white-space-collapse\x22,\x22widows\x22,\x22width\x22,\x22will-change\x22,\x22word-break\x22,\x22word-spacing\x22,\x22word-wrap\x22,\x22writing-mode\x22,\x22x\x22,\x22y\x22,\x22z-index\x22,\x22zoom\x22].sort().reverse(),di=Et.concat(_t).sort().reverse();function\x20yt(e){let\x20t=ri(e),n=di,r=\x22and\x20or\x20not\x20only\x22,l=\x22[\x5c\x5cw-]+\x22,p=\x22(\x22+l+\x22|@\x5c\x5c{\x22+l+\x22\x5c\x5c})\x22,o=[],i=[],s=function(I){return{className:\x22string\x22,begin:\x22~?\x22+I+\x22.*?\x22+I}},d=function(I,D,A){return{className:I,begin:D,relevance:A}},f={$pattern:/[a-z-]+/,keyword:r,attribute:ci.join(\x22\x20\x22)},w={begin:\x22\x5c\x5c(\x22,end:\x22\x5c\x5c)\x22,contains:i,keywords:f,relevance:0};i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s(\x22\x27\x22),s(\x27\x22\x27),t.CSS_NUMBER_MODE,{begin:\x22(url|data-uri)\x5c\x5c(\x22,starts:{className:\x22string\x22,end:\x22[\x5c\x5c)\x5c\x5cn]\x22,excludeEnd:!0}},t.UNICODE_RANGE,t.HEXCOLOR,w,d(\x22variable\x22,\x22@@?\x22+l,10),d(\x22variable\x22,\x22@\x5c\x5c{\x22+l+\x22\x5c\x5c}\x22),d(\x22built_in\x22,\x22~?`[^`]*?`\x22),{className:\x22attribute\x22,begin:l+\x22\x5c\x5cs*:\x22,end:\x22:\x22,returnBegin:!0,excludeEnd:!0},t.IMPORTANT,{beginKeywords:\x22and\x20not\x22},t.FUNCTION_DISPATCH);let\x20m=i.concat({begin:/\x5c{/,end:/\x5c}/,contains:o}),y={beginKeywords:\x22when\x22,endsWithParent:!0,contains:[{beginKeywords:\x22and\x20not\x22}].concat(i)},S={begin:p+\x22\x5c\x5cs*:\x22,returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},t.CSS_VARIABLE,{className:\x22attribute\x22,begin:\x22\x5c\x5cb(\x22+li.join(\x22|\x22)+\x22)\x5c\x5cb\x22,end:/(?=:)/,starts:{endsWithParent:!0,illegal:\x22[<=$]\x22,relevance:0,contains:i}}]},N={className:\x22keyword\x22,begin:\x22@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\x5c\x5cb\x22,starts:{end:\x22[;{}]\x22,keywords:f,returnEnd:!0,contains:i,relevance:0}},O={className:\x22variable\x22,variants:[{begin:\x22@\x22+l+\x22\x5c\x5cs*:\x22,relevance:15},{begin:\x22@\x22+l}],starts:{end:\x22[;}]\x22,returnEnd:!0,contains:m}},x={variants:[{begin:\x22[\x5c\x5c.#:&\x5c\x5c[>]\x22,end:\x22[;{}]\x22},{begin:p,end:/\x5c{/}],returnBegin:!0,returnEnd:!0,illegal:`[<=\x27$\x22]`,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,y,d(\x22keyword\x22,\x22all\x5c\x5cb\x22),d(\x22variable\x22,\x22@\x5c\x5c{\x22+l+\x22\x5c\x5c}\x22),{begin:\x22\x5c\x5cb(\x22+si.join(\x22|\x22)+\x22)\x5c\x5cb\x22,className:\x22selector-tag\x22},t.CSS_NUMBER_MODE,d(\x22selector-tag\x22,p,0),d(\x22selector-id\x22,\x22#\x22+p),d(\x22selector-class\x22,\x22\x5c\x5c.\x22+p,0),d(\x22selector-tag\x22,\x22&\x22,0),t.ATTRIBUTE_SELECTOR_MODE,{className:\x22selector-pseudo\x22,begin:\x22:(\x22+Et.join(\x22|\x22)+\x22)\x22},{className:\x22selector-pseudo\x22,begin:\x22:(:)?(\x22+_t.join(\x22|\x22)+\x22)\x22},{begin:/\x5c(/,end:/\x5c)/,relevance:0,contains:m},{begin:\x22!important\x22},t.FUNCTION_DISPATCH]},M={begin:l+`:(:)?(${n.join(\x22|\x22)})`,returnBegin:!0,contains:[x]};return\x20o.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,N,O,M,S,x,y,t.FUNCTION_DISPATCH),{name:\x22Less\x22,case_insensitive:!0,illegal:`[=>\x27/<($\x22]`,contains:o}}function\x20vt(e){let\x20t=e.regex,n={},r={begin:/\x5c$\x5c{/,end:/\x5c}/,contains:[\x22self\x22,{begin:/:-/,contains:[n]}]};Object.assign(n,{className:\x22variable\x22,variants:[{begin:t.concat(/\x5c$[\x5cw\x5cd#@][\x5cw\x5cd_]*/,\x22(?![\x5c\x5cw\x5c\x5cd])(?![$])\x22)},r]});let\x20l={className:\x22subst\x22,begin:/\x5c$\x5c(/,end:/\x5c)/,contains:[e.BACKSLASH_ESCAPE]},p=e.inherit(e.COMMENT(),{match:[/(^|\x5cs)/,/#.*$/],scope:{2:\x22comment\x22}}),o={begin:/<<-?\x5cs*(?=\x5cw+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\x5cw+)/,end:/(\x5cw+)/,className:\x22string\x22})]}},i={className:\x22string\x22,begin:/\x22/,end:/\x22/,contains:[e.BACKSLASH_ESCAPE,n,l]};l.contains.push(i);let\x20s={match:/\x5c\x5c\x22/},d={className:\x22string\x22,begin:/\x27/,end:/\x27/},f={match:/\x5c\x5c\x27/},w={begin:/\x5c$?\x5c(\x5c(/,end:/\x5c)\x5c)/,contains:[{begin:/\x5cd+#[0-9a-f]+/,className:\x22number\x22},e.NUMBER_MODE,n]},m=[\x22fish\x22,\x22bash\x22,\x22zsh\x22,\x22sh\x22,\x22csh\x22,\x22ksh\x22,\x22tcsh\x22,\x22dash\x22,\x22scsh\x22],y=e.SHEBANG({binary:`(${m.join(\x22|\x22)})`,relevance:10}),S={className:\x22function\x22,begin:/\x5cw[\x5cw\x5cd_]*\x5cs*\x5c(\x5cs*\x5c)\x5cs*\x5c{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\x5cw[\x5cw\x5cd_]*/})],relevance:0},N=[\x22if\x22,\x22then\x22,\x22else\x22,\x22elif\x22,\x22fi\x22,\x22time\x22,\x22for\x22,\x22while\x22,\x22until\x22,\x22in\x22,\x22do\x22,\x22done\x22,\x22case\x22,\x22esac\x22,\x22coproc\x22,\x22function\x22,\x22select\x22],O=[\x22true\x22,\x22false\x22],x={match:/(\x5c/[a-z._-]+)+/},M=[\x22break\x22,\x22cd\x22,\x22continue\x22,\x22eval\x22,\x22exec\x22,\x22exit\x22,\x22export\x22,\x22getopts\x22,\x22hash\x22,\x22pwd\x22,\x22readonly\x22,\x22return\x22,\x22shift\x22,\x22test\x22,\x22times\x22,\x22trap\x22,\x22umask\x22,\x22unset\x22],I=[\x22alias\x22,\x22bind\x22,\x22builtin\x22,\x22caller\x22,\x22command\x22,\x22declare\x22,\x22echo\x22,\x22enable\x22,\x22help\x22,\x22let\x22,\x22local\x22,\x22logout\x22,\x22mapfile\x22,\x22printf\x22,\x22read\x22,\x22readarray\x22,\x22source\x22,\x22sudo\x22,\x22type\x22,\x22typeset\x22,\x22ulimit\x22,\x22unalias\x22],D=[\x22autoload\x22,\x22bg\x22,\x22bindkey\x22,\x22bye\x22,\x22cap\x22,\x22chdir\x22,\x22clone\x22,\x22comparguments\x22,\x22compcall\x22,\x22compctl\x22,\x22compdescribe\x22,\x22compfiles\x22,\x22compgroups\x22,\x22compquote\x22,\x22comptags\x22,\x22comptry\x22,\x22compvalues\x22,\x22dirs\x22,\x22disable\x22,\x22disown\x22,\x22echotc\x22,\x22echoti\x22,\x22emulate\x22,\x22fc\x22,\x22fg\x22,\x22float\x22,\x22functions\x22,\x22getcap\x22,\x22getln\x22,\x22history\x22,\x22integer\x22,\x22jobs\x22,\x22kill\x22,\x22limit\x22,\x22log\x22,\x22noglob\x22,\x22popd\x22,\x22print\x22,\x22pushd\x22,\x22pushln\x22,\x22rehash\x22,\x22sched\x22,\x22setcap\x22,\x22setopt\x22,\x22stat\x22,\x22suspend\x22,\x22ttyctl\x22,\x22unfunction\x22,\x22unhash\x22,\x22unlimit\x22,\x22unsetopt\x22,\x22vared\x22,\x22wait\x22,\x22whence\x22,\x22where\x22,\x22which\x22,\x22zcompile\x22,\x22zformat\x22,\x22zftp\x22,\x22zle\x22,\x22zmodload\x22,\x22zparseopts\x22,\x22zprof\x22,\x22zpty\x22,\x22zregexparse\x22,\x22zsocket\x22,\x22zstyle\x22,\x22ztcp\x22],A=[\x22chcon\x22,\x22chgrp\x22,\x22chown\x22,\x22chmod\x22,\x22cp\x22,\x22dd\x22,\x22df\x22,\x22dir\x22,\x22dircolors\x22,\x22ln\x22,\x22ls\x22,\x22mkdir\x22,\x22mkfifo\x22,\x22mknod\x22,\x22mktemp\x22,\x22mv\x22,\x22realpath\x22,\x22rm\x22,\x22rmdir\x22,\x22shred\x22,\x22sync\x22,\x22touch\x22,\x22truncate\x22,\x22vdir\x22,\x22b2sum\x22,\x22base32\x22,\x22base64\x22,\x22cat\x22,\x22cksum\x22,\x22comm\x22,\x22csplit\x22,\x22cut\x22,\x22expand\x22,\x22fmt\x22,\x22fold\x22,\x22head\x22,\x22join\x22,\x22md5sum\x22,\x22nl\x22,\x22numfmt\x22,\x22od\x22,\x22paste\x22,\x22ptx\x22,\x22pr\x22,\x22sha1sum\x22,\x22sha224sum\x22,\x22sha256sum\x22,\x22sha384sum\x22,\x22sha512sum\x22,\x22shuf\x22,\x22sort\x22,\x22split\x22,\x22sum\x22,\x22tac\x22,\x22tail\x22,\x22tr\x22,\x22tsort\x22,\x22unexpand\x22,\x22uniq\x22,\x22wc\x22,\x22arch\x22,\x22basename\x22,\x22chroot\x22,\x22date\x22,\x22dirname\x22,\x22du\x22,\x22echo\x22,\x22env\x22,\x22expr\x22,\x22factor\x22,\x22groups\x22,\x22hostid\x22,\x22id\x22,\x22link\x22,\x22logname\x22,\x22nice\x22,\x22nohup\x22,\x22nproc\x22,\x22pathchk\x22,\x22pinky\x22,\x22printenv\x22,\x22printf\x22,\x22pwd\x22,\x22readlink\x22,\x22runcon\x22,\x22seq\x22,\x22sleep\x22,\x22stat\x22,\x22stdbuf\x22,\x22stty\x22,\x22tee\x22,\x22test\x22,\x22timeout\x22,\x22tty\x22,\x22uname\x22,\x22unlink\x22,\x22uptime\x22,\x22users\x22,\x22who\x22,\x22whoami\x22,\x22yes\x22];return{name:\x22Bash\x22,aliases:[\x22sh\x22,\x22zsh\x22],keywords:{$pattern:/\x5cb[a-z][a-z0-9._-]+\x5cb/,keyword:N,literal:O,built_in:[...M,...I,\x22set\x22,\x22shopt\x22,...D,...A]},contains:[y,e.SHEBANG(),S,w,p,o,x,i,s,d,f,n]}}var\x20te=\x22[0-9](_*[0-9])*\x22,me=`\x5c\x5c.(${te})`,he=\x22[0-9a-fA-F](_*[0-9a-fA-F])*\x22,wt={className:\x22number\x22,variants:[{begin:`(\x5c\x5cb(${te})((${me})|\x5c\x5c.)?|(${me}))[eE][+-]?(${te})[fFdD]?\x5c\x5cb`},{begin:`\x5c\x5cb(${te})((${me})[fFdD]?\x5c\x5cb|\x5c\x5c.([fFdD]\x5c\x5cb)?)`},{begin:`(${me})[fFdD]?\x5c\x5cb`},{begin:`\x5c\x5cb(${te})[fFdD]\x5c\x5cb`},{begin:`\x5c\x5cb0[xX]((${he})\x5c\x5c.?|(${he})?\x5c\x5c.(${he}))[pP][+-]?(${te})[fFdD]?\x5c\x5cb`},{begin:\x22\x5c\x5cb(0|[1-9](_*[0-9])*)[lL]?\x5c\x5cb\x22},{begin:`\x5c\x5cb0[xX](${he})[lL]?\x5c\x5cb`},{begin:\x22\x5c\x5cb0(_*[0-7])*[lL]?\x5c\x5cb\x22},{begin:\x22\x5c\x5cb0[bB][01](_*[01])*[lL]?\x5c\x5cb\x22}],relevance:0};function\x20Nt(e,t,n){return\x20n===-1?\x22\x22:e.replace(t,r=>Nt(e,t,n-1))}function\x20kt(e){let\x20t=e.regex,n=\x22[\x5cxC0-\x5cu02B8a-zA-Z_$][\x5cxC0-\x5cu02B8a-zA-Z_$0-9]*\x22,r=\x22(?:(?:\x5c\x5cs*\x5c\x5c[\x5c\x5cs*])+)?\x22,l=n+\x22<@@@>\x22+r,o=\x22(?:\x22+(\x22\x5c\x5c?(?:\x5c\x5cs+(?:extends|super)\x5c\x5cs+\x22+l+\x22)?\x22)+\x22|\x22+l+\x22)\x22,i=Nt(\x22(?:\x5c\x5cs*<\x5c\x5cs*\x22+o+\x22(?:\x5c\x5cs*,\x5c\x5cs*\x22+o+\x22)*\x5c\x5cs*>)?\x22,/<@@@>/g,2),m={keyword:[\x22synchronized\x22,\x22abstract\x22,\x22private\x22,\x22var\x22,\x22static\x22,\x22if\x22,\x22const\x20\x22,\x22for\x22,\x22while\x22,\x22strictfp\x22,\x22finally\x22,\x22protected\x22,\x22import\x22,\x22native\x22,\x22final\x22,\x22void\x22,\x22enum\x22,\x22else\x22,\x22break\x22,\x22transient\x22,\x22catch\x22,\x22instanceof\x22,\x22volatile\x22,\x22case\x22,\x22assert\x22,\x22package\x22,\x22default\x22,\x22public\x22,\x22try\x22,\x22switch\x22,\x22continue\x22,\x22throws\x22,\x22protected\x22,\x22public\x22,\x22private\x22,\x22module\x22,\x22requires\x22,\x22exports\x22,\x22do\x22,\x22sealed\x22,\x22yield\x22,\x22permits\x22,\x22goto\x22,\x22when\x22],literal:[\x22false\x22,\x22true\x22,\x22null\x22],type:[\x22char\x22,\x22boolean\x22,\x22long\x22,\x22float\x22,\x22int\x22,\x22byte\x22,\x22short\x22,\x22double\x22],built_in:[\x22super\x22,\x22this\x22]},y={className:\x22meta\x22,begin:\x22@\x22+n,contains:[{begin:/\x5c(/,end:/\x5c)/,contains:[\x22self\x22]}]},S={className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,keywords:m,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:\x22Java\x22,aliases:[\x22jsp\x22],keywords:m,illegal:/<\x5c/|#/,contains:[e.COMMENT(\x22/\x5c\x5c*\x5c\x5c*\x22,\x22\x5c\x5c*/\x22,{relevance:0,contains:[{begin:/\x5cw+@/,relevance:0},{className:\x22doctag\x22,begin:\x22@[A-Za-z]+\x22}]}),{begin:/import\x20java\x5c.[a-z]+\x5c./,keywords:\x22import\x22,relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/\x22\x22\x22/,end:/\x22\x22\x22/,className:\x22string\x22,contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\x5cb(?:class|interface|enum|extends|implements|new)/,/\x5cs+/,n],className:{1:\x22keyword\x22,3:\x22title.class\x22}},{match:/non-sealed/,scope:\x22keyword\x22},{beginKeywords:\x22new\x20throw\x20return\x20else\x20yield\x20assert\x22,relevance:0},{begin:[n,t.concat(i,r,/\x5cs+/),n,r,/\x5cs*/,/=(?!=)/],className:{1:\x22type\x22,3:\x22variable\x22,6:\x22operator\x22}},{begin:[/record/,/\x5cs+/,n],className:{1:\x22keyword\x22,3:\x22title.class\x22},contains:[S,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{begin:[n,t.concat(i,r,/\x5cs+/),n,/\x5cs*(?=\x5c()/],className:{1:\x22type\x22,3:\x22title.function\x22},keywords:m,contains:[{className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,keywords:m,relevance:0,contains:[y,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,wt,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},wt,y]}}function\x20St(e){let\x20t=e.regex,n=e.COMMENT(\x22--\x22,\x22$\x22),r={scope:\x22string\x22,variants:[{begin:/\x27/,end:/\x27/,contains:[{match:/\x27\x27/}]}]},l={begin:/\x22/,end:/\x22/,contains:[{match:/\x22\x22/}]},p=[\x22true\x22,\x22false\x22,\x22unknown\x22],o=[\x22double\x20precision\x22,\x22large\x20object\x22,\x22with\x20timezone\x22,\x22without\x20timezone\x22],i=[\x22bigint\x22,\x22binary\x22,\x22blob\x22,\x22boolean\x22,\x22char\x22,\x22character\x22,\x22clob\x22,\x22date\x22,\x22dec\x22,\x22decfloat\x22,\x22decimal\x22,\x22float\x22,\x22int\x22,\x22integer\x22,\x22interval\x22,\x22nchar\x22,\x22nclob\x22,\x22national\x22,\x22numeric\x22,\x22real\x22,\x22row\x22,\x22smallint\x22,\x22time\x22,\x22timestamp\x22,\x22varchar\x22,\x22varying\x22,\x22varbinary\x22],s=[\x22add\x22,\x22asc\x22,\x22collation\x22,\x22desc\x22,\x22final\x22,\x22first\x22,\x22last\x22,\x22view\x22],d=[\x22abs\x22,\x22acos\x22,\x22all\x22,\x22allocate\x22,\x22alter\x22,\x22and\x22,\x22any\x22,\x22are\x22,\x22array\x22,\x22array_agg\x22,\x22array_max_cardinality\x22,\x22as\x22,\x22asensitive\x22,\x22asin\x22,\x22asymmetric\x22,\x22at\x22,\x22atan\x22,\x22atomic\x22,\x22authorization\x22,\x22avg\x22,\x22begin\x22,\x22begin_frame\x22,\x22begin_partition\x22,\x22between\x22,\x22bigint\x22,\x22binary\x22,\x22blob\x22,\x22boolean\x22,\x22both\x22,\x22by\x22,\x22call\x22,\x22called\x22,\x22cardinality\x22,\x22cascaded\x22,\x22case\x22,\x22cast\x22,\x22ceil\x22,\x22ceiling\x22,\x22char\x22,\x22char_length\x22,\x22character\x22,\x22character_length\x22,\x22check\x22,\x22classifier\x22,\x22clob\x22,\x22close\x22,\x22coalesce\x22,\x22collate\x22,\x22collect\x22,\x22column\x22,\x22commit\x22,\x22condition\x22,\x22connect\x22,\x22constraint\x22,\x22contains\x22,\x22convert\x22,\x22copy\x22,\x22corr\x22,\x22corresponding\x22,\x22cos\x22,\x22cosh\x22,\x22count\x22,\x22covar_pop\x22,\x22covar_samp\x22,\x22create\x22,\x22cross\x22,\x22cube\x22,\x22cume_dist\x22,\x22current\x22,\x22current_catalog\x22,\x22current_date\x22,\x22current_default_transform_group\x22,\x22current_path\x22,\x22current_role\x22,\x22current_row\x22,\x22current_schema\x22,\x22current_time\x22,\x22current_timestamp\x22,\x22current_path\x22,\x22current_role\x22,\x22current_transform_group_for_type\x22,\x22current_user\x22,\x22cursor\x22,\x22cycle\x22,\x22date\x22,\x22day\x22,\x22deallocate\x22,\x22dec\x22,\x22decimal\x22,\x22decfloat\x22,\x22declare\x22,\x22default\x22,\x22define\x22,\x22delete\x22,\x22dense_rank\x22,\x22deref\x22,\x22describe\x22,\x22deterministic\x22,\x22disconnect\x22,\x22distinct\x22,\x22double\x22,\x22drop\x22,\x22dynamic\x22,\x22each\x22,\x22element\x22,\x22else\x22,\x22empty\x22,\x22end\x22,\x22end_frame\x22,\x22end_partition\x22,\x22end-exec\x22,\x22equals\x22,\x22escape\x22,\x22every\x22,\x22except\x22,\x22exec\x22,\x22execute\x22,\x22exists\x22,\x22exp\x22,\x22external\x22,\x22extract\x22,\x22false\x22,\x22fetch\x22,\x22filter\x22,\x22first_value\x22,\x22float\x22,\x22floor\x22,\x22for\x22,\x22foreign\x22,\x22frame_row\x22,\x22free\x22,\x22from\x22,\x22full\x22,\x22function\x22,\x22fusion\x22,\x22get\x22,\x22global\x22,\x22grant\x22,\x22group\x22,\x22grouping\x22,\x22groups\x22,\x22having\x22,\x22hold\x22,\x22hour\x22,\x22identity\x22,\x22in\x22,\x22indicator\x22,\x22initial\x22,\x22inner\x22,\x22inout\x22,\x22insensitive\x22,\x22insert\x22,\x22int\x22,\x22integer\x22,\x22intersect\x22,\x22intersection\x22,\x22interval\x22,\x22into\x22,\x22is\x22,\x22join\x22,\x22json_array\x22,\x22json_arrayagg\x22,\x22json_exists\x22,\x22json_object\x22,\x22json_objectagg\x22,\x22json_query\x22,\x22json_table\x22,\x22json_table_primitive\x22,\x22json_value\x22,\x22lag\x22,\x22language\x22,\x22large\x22,\x22last_value\x22,\x22lateral\x22,\x22lead\x22,\x22leading\x22,\x22left\x22,\x22like\x22,\x22like_regex\x22,\x22listagg\x22,\x22ln\x22,\x22local\x22,\x22localtime\x22,\x22localtimestamp\x22,\x22log\x22,\x22log10\x22,\x22lower\x22,\x22match\x22,\x22match_number\x22,\x22match_recognize\x22,\x22matches\x22,\x22max\x22,\x22member\x22,\x22merge\x22,\x22method\x22,\x22min\x22,\x22minute\x22,\x22mod\x22,\x22modifies\x22,\x22module\x22,\x22month\x22,\x22multiset\x22,\x22national\x22,\x22natural\x22,\x22nchar\x22,\x22nclob\x22,\x22new\x22,\x22no\x22,\x22none\x22,\x22normalize\x22,\x22not\x22,\x22nth_value\x22,\x22ntile\x22,\x22null\x22,\x22nullif\x22,\x22numeric\x22,\x22octet_length\x22,\x22occurrences_regex\x22,\x22of\x22,\x22offset\x22,\x22old\x22,\x22omit\x22,\x22on\x22,\x22one\x22,\x22only\x22,\x22open\x22,\x22or\x22,\x22order\x22,\x22out\x22,\x22outer\x22,\x22over\x22,\x22overlaps\x22,\x22overlay\x22,\x22parameter\x22,\x22partition\x22,\x22pattern\x22,\x22per\x22,\x22percent\x22,\x22percent_rank\x22,\x22percentile_cont\x22,\x22percentile_disc\x22,\x22period\x22,\x22portion\x22,\x22position\x22,\x22position_regex\x22,\x22power\x22,\x22precedes\x22,\x22precision\x22,\x22prepare\x22,\x22primary\x22,\x22procedure\x22,\x22ptf\x22,\x22range\x22,\x22rank\x22,\x22reads\x22,\x22real\x22,\x22recursive\x22,\x22ref\x22,\x22references\x22,\x22referencing\x22,\x22regr_avgx\x22,\x22regr_avgy\x22,\x22regr_count\x22,\x22regr_intercept\x22,\x22regr_r2\x22,\x22regr_slope\x22,\x22regr_sxx\x22,\x22regr_sxy\x22,\x22regr_syy\x22,\x22release\x22,\x22result\x22,\x22return\x22,\x22returns\x22,\x22revoke\x22,\x22right\x22,\x22rollback\x22,\x22rollup\x22,\x22row\x22,\x22row_number\x22,\x22rows\x22,\x22running\x22,\x22savepoint\x22,\x22scope\x22,\x22scroll\x22,\x22search\x22,\x22second\x22,\x22seek\x22,\x22select\x22,\x22sensitive\x22,\x22session_user\x22,\x22set\x22,\x22show\x22,\x22similar\x22,\x22sin\x22,\x22sinh\x22,\x22skip\x22,\x22smallint\x22,\x22some\x22,\x22specific\x22,\x22specifictype\x22,\x22sql\x22,\x22sqlexception\x22,\x22sqlstate\x22,\x22sqlwarning\x22,\x22sqrt\x22,\x22start\x22,\x22static\x22,\x22stddev_pop\x22,\x22stddev_samp\x22,\x22submultiset\x22,\x22subset\x22,\x22substring\x22,\x22substring_regex\x22,\x22succeeds\x22,\x22sum\x22,\x22symmetric\x22,\x22system\x22,\x22system_time\x22,\x22system_user\x22,\x22table\x22,\x22tablesample\x22,\x22tan\x22,\x22tanh\x22,\x22then\x22,\x22time\x22,\x22timestamp\x22,\x22timezone_hour\x22,\x22timezone_minute\x22,\x22to\x22,\x22trailing\x22,\x22translate\x22,\x22translate_regex\x22,\x22translation\x22,\x22treat\x22,\x22trigger\x22,\x22trim\x22,\x22trim_array\x22,\x22true\x22,\x22truncate\x22,\x22uescape\x22,\x22union\x22,\x22unique\x22,\x22unknown\x22,\x22unnest\x22,\x22update\x22,\x22upper\x22,\x22user\x22,\x22using\x22,\x22value\x22,\x22values\x22,\x22value_of\x22,\x22var_pop\x22,\x22var_samp\x22,\x22varbinary\x22,\x22varchar\x22,\x22varying\x22,\x22versioning\x22,\x22when\x22,\x22whenever\x22,\x22where\x22,\x22width_bucket\x22,\x22window\x22,\x22with\x22,\x22within\x22,\x22without\x22,\x22year\x22],f=[\x22abs\x22,\x22acos\x22,\x22array_agg\x22,\x22asin\x22,\x22atan\x22,\x22avg\x22,\x22cast\x22,\x22ceil\x22,\x22ceiling\x22,\x22coalesce\x22,\x22corr\x22,\x22cos\x22,\x22cosh\x22,\x22count\x22,\x22covar_pop\x22,\x22covar_samp\x22,\x22cume_dist\x22,\x22dense_rank\x22,\x22deref\x22,\x22element\x22,\x22exp\x22,\x22extract\x22,\x22first_value\x22,\x22floor\x22,\x22json_array\x22,\x22json_arrayagg\x22,\x22json_exists\x22,\x22json_object\x22,\x22json_objectagg\x22,\x22json_query\x22,\x22json_table\x22,\x22json_table_primitive\x22,\x22json_value\x22,\x22lag\x22,\x22last_value\x22,\x22lead\x22,\x22listagg\x22,\x22ln\x22,\x22log\x22,\x22log10\x22,\x22lower\x22,\x22max\x22,\x22min\x22,\x22mod\x22,\x22nth_value\x22,\x22ntile\x22,\x22nullif\x22,\x22percent_rank\x22,\x22percentile_cont\x22,\x22percentile_disc\x22,\x22position\x22,\x22position_regex\x22,\x22power\x22,\x22rank\x22,\x22regr_avgx\x22,\x22regr_avgy\x22,\x22regr_count\x22,\x22regr_intercept\x22,\x22regr_r2\x22,\x22regr_slope\x22,\x22regr_sxx\x22,\x22regr_sxy\x22,\x22regr_syy\x22,\x22row_number\x22,\x22sin\x22,\x22sinh\x22,\x22sqrt\x22,\x22stddev_pop\x22,\x22stddev_samp\x22,\x22substring\x22,\x22substring_regex\x22,\x22sum\x22,\x22tan\x22,\x22tanh\x22,\x22translate\x22,\x22translate_regex\x22,\x22treat\x22,\x22trim\x22,\x22trim_array\x22,\x22unnest\x22,\x22upper\x22,\x22value_of\x22,\x22var_pop\x22,\x22var_samp\x22,\x22width_bucket\x22],w=[\x22current_catalog\x22,\x22current_date\x22,\x22current_default_transform_group\x22,\x22current_path\x22,\x22current_role\x22,\x22current_schema\x22,\x22current_transform_group_for_type\x22,\x22current_user\x22,\x22session_user\x22,\x22system_time\x22,\x22system_user\x22,\x22current_time\x22,\x22localtime\x22,\x22current_timestamp\x22,\x22localtimestamp\x22],m=[\x22create\x20table\x22,\x22insert\x20into\x22,\x22primary\x20key\x22,\x22foreign\x20key\x22,\x22not\x20null\x22,\x22alter\x20table\x22,\x22add\x20constraint\x22,\x22grouping\x20sets\x22,\x22on\x20overflow\x22,\x22character\x20set\x22,\x22respect\x20nulls\x22,\x22ignore\x20nulls\x22,\x22nulls\x20first\x22,\x22nulls\x20last\x22,\x22depth\x20first\x22,\x22breadth\x20first\x22],y=f,S=[...d,...s].filter(A=>!f.includes(A)),N={scope:\x22variable\x22,match:/@[a-z0-9][a-z0-9_]*/},O={scope:\x22operator\x22,match:/[-+*/=%^~]|&&?|\x5c|\x5c|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},x={match:t.concat(/\x5cb/,t.either(...y),/\x5cs*\x5c(/),relevance:0,keywords:{built_in:y}};function\x20M(A){return\x20t.concat(/\x5cb/,t.either(...A.map(C=>C.replace(/\x5cs+/,\x22\x5c\x5cs+\x22))),/\x5cb/)}let\x20I={scope:\x22keyword\x22,match:M(m),relevance:0};function\x20D(A,{exceptions:C,when:X}={}){let\x20B=X;return\x20C=C||[],A.map($=>$.match(/\x5c|\x5cd+$/)||C.includes($)?$:B($)?`${$}|0`:$)}return{name:\x22SQL\x22,case_insensitive:!0,illegal:/[{}]|<\x5c//,keywords:{$pattern:/\x5cb[\x5cw\x5c.]+/,keyword:D(S,{when:A=>A.length<3}),literal:p,type:i,built_in:w},contains:[{scope:\x22type\x22,match:M(o)},I,x,N,r,l,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,O]}}function\x20Tt(e){let\x20t=e.regex,n={begin:/<\x5c/?[A-Za-z_]/,end:\x22>\x22,subLanguage:\x22xml\x22,relevance:0},r={match:/^\x20{0,3}([-*_])[\x20\x5ct]*(?:\x5c1[\x20\x5ct]*){2,}$/},l={className:\x22code\x22,variants:[{begin:\x22(`{3,})[^`](.|\x5c\x5cn)*?\x5c\x5c1`*[\x20]*\x22},{begin:\x22(~{3,})[^~](.|\x5c\x5cn)*?\x5c\x5c1~*[\x20]*\x22},{begin:\x22```\x22,end:\x22```+[\x20]*$\x22},{begin:\x22~~~\x22,end:\x22~~~+[\x20]*$\x22},{begin:\x22`.+?`\x22},{begin:\x22(?=^(\x20{4}|\x5c\x5ct))\x22,contains:[{begin:\x22^(\x20{4}|\x5c\x5ct)\x22,end:\x22(\x5c\x5cn)$\x22}],relevance:0}]},p={className:\x22bullet\x22,begin:\x22^[\x20\x09]*([*+-]|(\x5c\x5cd+\x5c\x5c.))(?=\x5c\x5cs+)\x22,end:\x22\x5c\x5cs+\x22,excludeEnd:!0},o={begin:/^\x5c[[^\x5cn]+\x5c]:/,returnBegin:!0,contains:[{className:\x22symbol\x22,begin:/\x5c[/,end:/\x5c]/,excludeBegin:!0,excludeEnd:!0},{className:\x22link\x22,begin:/:\x5cs*/,end:/$/,excludeBegin:!0}]},i=/[A-Za-z][A-Za-z0-9+.-]*/,s={variants:[{begin:/\x5c[.+?\x5c]\x5c[.*?\x5c]/,relevance:0},{begin:/\x5c[.+?\x5c]\x5c(((data|javascript|mailto):|(?:http|ftp)s?:\x5c/\x5c/).*?\x5c)/,relevance:2},{begin:t.concat(/\x5c[.+?\x5c]\x5c(/,i,/:\x5c/\x5c/.*?\x5c)/),relevance:2},{begin:/\x5c[.+?\x5c]\x5c([./?&#].*?\x5c)/,relevance:1},{begin:/\x5c[.*?\x5c]\x5c(.*?\x5c)/,relevance:0}],returnBegin:!0,contains:[{match:/\x5c[(?=\x5c])/},{className:\x22string\x22,relevance:0,begin:\x22\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,excludeBegin:!0,returnEnd:!0},{className:\x22link\x22,relevance:0,begin:\x22\x5c\x5c]\x5c\x5c(\x22,end:\x22\x5c\x5c)\x22,excludeBegin:!0,excludeEnd:!0},{className:\x22symbol\x22,relevance:0,begin:\x22\x5c\x5c]\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,excludeBegin:!0,excludeEnd:!0}]},d={className:\x22strong\x22,contains:[],variants:[{begin:/_{2}(?!\x5cs)/,end:/_{2}/},{begin:/\x5c*{2}(?!\x5cs)/,end:/\x5c*{2}/}]},f={className:\x22emphasis\x22,contains:[],variants:[{begin:/\x5c*(?![*\x5cs])/,end:/\x5c*/},{begin:/_(?![_\x5cs])/,end:/_/,relevance:0}]},w=e.inherit(d,{contains:[]}),m=e.inherit(f,{contains:[]});d.contains.push(m),f.contains.push(w);let\x20y=[n,s];return[d,f,w,m].forEach(x=>{x.contains=x.contains.concat(y)}),y=y.concat(d,f),{name:\x22Markdown\x22,aliases:[\x22md\x22,\x22mkdown\x22,\x22mkd\x22],contains:[{className:\x22section\x22,variants:[{begin:\x22^#{1,6}\x22,end:\x22$\x22,contains:y},{begin:\x22(?=^.+?\x5c\x5cn[=-]{2,}$)\x22,contains:[{begin:\x22^[=-]*$\x22},{begin:\x22^\x22,end:\x22\x5c\x5cn\x22,contains:y}]}]},n,p,r,d,f,{className:\x22quote\x22,begin:\x22^>\x5c\x5cs+\x22,contains:y,end:\x22$\x22},l,s,o,{scope:\x22literal\x22,match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function\x20xt(e){let\x20t=\x22true\x20false\x20yes\x20no\x20null\x22,n=\x22[\x5c\x5cw#;/?:@&=+$,.~*\x27()[\x5c\x5c]]+\x22,r={className:\x22attr\x22,variants:[{begin:/[\x5cw*@][\x5cw*@\x20:()\x5c./-]*:(?=[\x20\x5ct]|$)/},{begin:/\x22[\x5cw*@][\x5cw*@\x20:()\x5c./-]*\x22:(?=[\x20\x5ct]|$)/},{begin:/\x27[\x5cw*@][\x5cw*@\x20:()\x5c./-]*\x27:(?=[\x20\x5ct]|$)/}]},l={className:\x22template-variable\x22,variants:[{begin:/\x5c{\x5c{/,end:/\x5c}\x5c}/},{begin:/%\x5c{/,end:/\x5c}/}]},p={className:\x22string\x22,relevance:0,begin:/\x27/,end:/\x27/,contains:[{match:/\x27\x27/,scope:\x22char.escape\x22,relevance:0}]},o={className:\x22string\x22,relevance:0,variants:[{begin:/\x22/,end:/\x22/},{begin:/\x5cS+/}],contains:[e.BACKSLASH_ESCAPE,l]},i=e.inherit(o,{variants:[{begin:/\x27/,end:/\x27/,contains:[{begin:/\x27\x27/,relevance:0}]},{begin:/\x22/,end:/\x22/},{begin:/[^\x5cs,{}[\x5c]]+/}]}),m={className:\x22number\x22,begin:\x22\x5c\x5cb\x22+\x22[0-9]{4}(-[0-9][0-9]){0,2}\x22+\x22([Tt\x20\x5c\x5ct][0-9][0-9]?(:[0-9][0-9]){2})?\x22+\x22(\x5c\x5c.[0-9]*)?\x22+\x22([\x20\x5c\x5ct])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\x22+\x22\x5c\x5cb\x22},y={end:\x22,\x22,endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},S={begin:/\x5c{/,end:/\x5c}/,contains:[y],illegal:\x22\x5c\x5cn\x22,relevance:0},N={begin:\x22\x5c\x5c[\x22,end:\x22\x5c\x5c]\x22,contains:[y],illegal:\x22\x5c\x5cn\x22,relevance:0},O=[r,{className:\x22meta\x22,begin:\x22^---\x5c\x5cs*$\x22,relevance:10},{className:\x22string\x22,begin:\x22[\x5c\x5c|>]([1-9]?[+-])?[\x20]*\x5c\x5cn(\x20+)[^\x20][^\x5c\x5cn]*\x5c\x5cn(\x5c\x5c2[^\x5c\x5cn]+\x5c\x5cn?)*\x22},{begin:\x22<%[%=-]?\x22,end:\x22[%-]?%>\x22,subLanguage:\x22ruby\x22,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:\x22type\x22,begin:\x22!\x5c\x5cw+!\x22+n},{className:\x22type\x22,begin:\x22!<\x22+n+\x22>\x22},{className:\x22type\x22,begin:\x22!\x22+n},{className:\x22type\x22,begin:\x22!!\x22+n},{className:\x22meta\x22,begin:\x22&\x22+e.UNDERSCORE_IDENT_RE+\x22$\x22},{className:\x22meta\x22,begin:\x22\x5c\x5c*\x22+e.UNDERSCORE_IDENT_RE+\x22$\x22},{className:\x22bullet\x22,begin:\x22-(?=[\x20]|$)\x22,relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},m,{className:\x22number\x22,begin:e.C_NUMBER_RE+\x22\x5c\x5cb\x22,relevance:0},S,N,p,o],x=[...O];return\x20x.pop(),x.push(i),y.contains=x,{name:\x22YAML\x22,case_insensitive:!0,aliases:[\x22yml\x22],contains:O}}function\x20Ot(e){let\x20t=e.regex,n=/[\x5cp{XID_Start}_]\x5cp{XID_Continue}*/u,r=[\x22and\x22,\x22as\x22,\x22assert\x22,\x22async\x22,\x22await\x22,\x22break\x22,\x22case\x22,\x22class\x22,\x22continue\x22,\x22def\x22,\x22del\x22,\x22elif\x22,\x22else\x22,\x22except\x22,\x22finally\x22,\x22for\x22,\x22from\x22,\x22global\x22,\x22if\x22,\x22import\x22,\x22in\x22,\x22is\x22,\x22lambda\x22,\x22lazy\x22,\x22match\x22,\x22nonlocal|10\x22,\x22not\x22,\x22or\x22,\x22pass\x22,\x22raise\x22,\x22return\x22,\x22try\x22,\x22while\x22,\x22with\x22,\x22yield\x22],i={$pattern:/[A-Za-z]\x5cw+|__\x5cw+__/,keyword:r,built_in:[\x22__import__\x22,\x22abs\x22,\x22aiter\x22,\x22all\x22,\x22anext\x22,\x22any\x22,\x22ascii\x22,\x22bin\x22,\x22bool\x22,\x22breakpoint\x22,\x22bytearray\x22,\x22bytes\x22,\x22callable\x22,\x22chr\x22,\x22classmethod\x22,\x22compile\x22,\x22complex\x22,\x22delattr\x22,\x22dict\x22,\x22dir\x22,\x22divmod\x22,\x22enumerate\x22,\x22eval\x22,\x22exec\x22,\x22filter\x22,\x22float\x22,\x22format\x22,\x22frozendict\x22,\x22frozenset\x22,\x22getattr\x22,\x22globals\x22,\x22hasattr\x22,\x22hash\x22,\x22help\x22,\x22hex\x22,\x22id\x22,\x22input\x22,\x22int\x22,\x22isinstance\x22,\x22issubclass\x22,\x22iter\x22,\x22len\x22,\x22list\x22,\x22locals\x22,\x22map\x22,\x22max\x22,\x22memoryview\x22,\x22min\x22,\x22next\x22,\x22object\x22,\x22oct\x22,\x22open\x22,\x22ord\x22,\x22pow\x22,\x22print\x22,\x22property\x22,\x22range\x22,\x22repr\x22,\x22reversed\x22,\x22round\x22,\x22sentinel\x22,\x22set\x22,\x22setattr\x22,\x22slice\x22,\x22sorted\x22,\x22staticmethod\x22,\x22str\x22,\x22sum\x22,\x22super\x22,\x22tuple\x22,\x22type\x22,\x22vars\x22,\x22zip\x22],literal:[\x22__debug__\x22,\x22Ellipsis\x22,\x22False\x22,\x22None\x22,\x22NotImplemented\x22,\x22True\x22],type:[\x22Any\x22,\x22Callable\x22,\x22Coroutine\x22,\x22Dict\x22,\x22List\x22,\x22Literal\x22,\x22Generic\x22,\x22Optional\x22,\x22Sequence\x22,\x22Set\x22,\x22Tuple\x22,\x22Type\x22,\x22Union\x22]},s={className:\x22meta\x22,begin:/^(>>>|\x5c.\x5c.\x5c.)\x20/},d={className:\x22subst\x22,begin:/\x5c{/,end:/\x5c}/,keywords:i,illegal:/#/},f={begin:/\x5c{\x5c{/,relevance:0},w={className:\x22string\x22,contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\x27\x27\x27/,end:/\x27\x27\x27/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\x22\x22\x22/,end:/\x22\x22\x22/,contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x27\x27\x27/,end:/\x27\x27\x27/,contains:[e.BACKSLASH_ESCAPE,s,f,d]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x22\x22\x22/,end:/\x22\x22\x22/,contains:[e.BACKSLASH_ESCAPE,s,f,d]},{begin:/([uU]|[rR])\x27/,end:/\x27/,relevance:10},{begin:/([uU]|[rR])\x22/,end:/\x22/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])\x27/,end:/\x27/},{begin:/([bB]|[bB][rR]|[rR][bB])\x22/,end:/\x22/},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x27/,end:/\x27/,contains:[e.BACKSLASH_ESCAPE,f,d]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])\x22/,end:/\x22/,contains:[e.BACKSLASH_ESCAPE,f,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},m=\x22[0-9](_?[0-9])*\x22,y=`(\x5c\x5cb(${m}))?\x5c\x5c.(${m})|\x5c\x5cb(${m})\x5c\x5c.`,S=`\x5c\x5cb|${r.join(\x22|\x22)}`,N={className:\x22number\x22,relevance:0,variants:[{begin:`(\x5c\x5cb(${m})|(${y}))[eE][+-]?(${m})[jJ]?(?=${S})`},{begin:`(${y})[jJ]?`},{begin:`\x5c\x5cb([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${S})`},{begin:`\x5c\x5cb0[bB](_?[01])+[lL]?(?=${S})`},{begin:`\x5c\x5cb0[oO](_?[0-7])+[lL]?(?=${S})`},{begin:`\x5c\x5cb0[xX](_?[0-9a-fA-F])+[lL]?(?=${S})`},{begin:`\x5c\x5cb(${m})[jJ](?=${S})`}]},O={className:\x22comment\x22,begin:t.lookahead(/#\x20type:/),end:/$/,keywords:i,contains:[{begin:/#\x20type:/},{begin:/#/,end:/\x5cb\x5cB/,endsWithParent:!0}]},x={className:\x22params\x22,variants:[{className:\x22\x22,begin:/\x5c(\x5cs*\x5c)/,skip:!0},{begin:/\x5c(/,end:/\x5c)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:[\x22self\x22,s,N,w,e.HASH_COMMENT_MODE]}]};return\x20d.contains=[w,N,s],{name:\x22Python\x22,aliases:[\x22py\x22,\x22gyp\x22,\x22ipython\x22],unicodeRegex:!0,keywords:i,illegal:/(<\x5c/|\x5c?)|=>/,contains:[s,N,{scope:\x22variable.language\x22,match:/\x5cbself\x5cb/},{beginKeywords:\x22if\x22,relevance:0},{match:/\x5cbor\x5cb/,scope:\x22keyword\x22},w,O,e.HASH_COMMENT_MODE,{match:[/\x5cbdef/,/\x5cs+/,n],scope:{1:\x22keyword\x22,3:\x22title.function\x22},contains:[x]},{variants:[{match:[/\x5cbclass/,/\x5cs+/,n,/\x5cs*/,/\x5c(\x5cs*/,n,/\x5cs*\x5c)/]},{match:[/\x5cbclass/,/\x5cs+/,n]}],scope:{1:\x22keyword\x22,3:\x22title.class\x22,6:\x22title.class.inherited\x22}},{className:\x22meta\x22,begin:/^[\x5ct\x20]*@/,end:/(?=#)|$/,contains:[N,x,w]}]}}function\x20At(e){let\x20p={keyword:[\x22break\x22,\x22case\x22,\x22chan\x22,\x22const\x22,\x22continue\x22,\x22default\x22,\x22defer\x22,\x22else\x22,\x22fallthrough\x22,\x22for\x22,\x22func\x22,\x22go\x22,\x22goto\x22,\x22if\x22,\x22import\x22,\x22interface\x22,\x22map\x22,\x22package\x22,\x22range\x22,\x22return\x22,\x22select\x22,\x22struct\x22,\x22switch\x22,\x22type\x22,\x22var\x22],type:[\x22bool\x22,\x22byte\x22,\x22complex64\x22,\x22complex128\x22,\x22error\x22,\x22float32\x22,\x22float64\x22,\x22int8\x22,\x22int16\x22,\x22int32\x22,\x22int64\x22,\x22string\x22,\x22uint8\x22,\x22uint16\x22,\x22uint32\x22,\x22uint64\x22,\x22int\x22,\x22uint\x22,\x22uintptr\x22,\x22rune\x22],literal:[\x22true\x22,\x22false\x22,\x22iota\x22,\x22nil\x22],built_in:[\x22append\x22,\x22cap\x22,\x22close\x22,\x22complex\x22,\x22copy\x22,\x22imag\x22,\x22len\x22,\x22make\x22,\x22new\x22,\x22panic\x22,\x22print\x22,\x22println\x22,\x22real\x22,\x22recover\x22,\x22delete\x22]};return{name:\x22Go\x22,aliases:[\x22golang\x22],keywords:p,illegal:\x22</\x22,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:\x22string\x22,variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:\x22`\x22,end:\x22`\x22}]},{className:\x22number\x22,variants:[{match:/-?\x5cb0[xX]\x5c.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\x5cd(_?\x5cd)*i?/,relevance:0},{match:/-?\x5cb0[xX](_?[a-fA-F0-9])+((\x5c.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0},{match:/-?\x5cb0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\x5cb0[bB](_?[01])*i?/,relevance:0},{match:/-?\x5c.\x5cd(_?\x5cd)*([eE][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0},{match:/-?\x5cb\x5cd(_?\x5cd)*(\x5c.(\x5cd(_?\x5cd)*)?)?([eE][+-]?\x5cd(_?\x5cd)*)?i?/,relevance:0}]},{begin:/:=/},{className:\x22function\x22,beginKeywords:\x22func\x22,end:\x22\x5c\x5cs*(\x5c\x5c{|$)\x22,excludeEnd:!0,contains:[e.TITLE_MODE,{className:\x22params\x22,begin:/\x5c(/,end:/\x5c)/,endsParent:!0,keywords:p,illegal:/[\x22\x27]/}]}]}}z.registerLanguage(\x22javascript\x22,ot);z.registerLanguage(\x22typescript\x22,bt);z.registerLanguage(\x22json\x22,pt);z.registerLanguage(\x22xml\x22,ft);z.registerLanguage(\x22css\x22,mt);z.registerLanguage(\x22scss\x22,ht);z.registerLanguage(\x22less\x22,yt);z.registerLanguage(\x22bash\x22,vt);z.registerLanguage(\x22java\x22,kt);z.registerLanguage(\x22sql\x22,St);z.registerLanguage(\x22markdown\x22,Tt);z.registerLanguage(\x22yaml\x22,xt);z.registerLanguage(\x22python\x22,Ot);z.registerLanguage(\x22go\x22,At);globalThis.hljs=z;})();\x0a','page-agent.js':db(0x2c8),'opencode-plugin.js':'/**\x0a\x20*\x20AiWith\x20页内调试工具(OpenCode\x20插件模板)。\x0a\x20*\x0a\x20*\x20由\x20zen-app-plugin\x20在\x20dev\x20server\x20启动时生成到\x20<工程>/.opencode/plugins/aiwith-page/index.ts,\x0a\x20*\x20其中\x20origin\x20占位符会被替换为本次\x20dev\x20server\x20的真实地址。\x0a\x20*\x0a\x20*\x20为什么不用\x20chrome-devtools\x20MCP:\x0a\x20*\x20\x20\x20①\x20MCP\x20工具每次调用都要过授权弹窗,无法无人值守自动化;\x0a\x20*\x20\x20\x20②\x20本插件注册的是\x20OpenCode\x20原生工具,不走\x20MCP\x20权限流,任务中心的「本地执行」才能闭环。\x0a\x20*\x20目标页\x20=\x20AiWith\x20注入\x20page-agent\x20的宿主页;本插件只做\x20HTTP\x20转发到桥接(/aiwith/api/page/*),\x0a\x20*\x20仅\x20screenshot\x20会把图片落盘(node_modules/.cache/aiwith/shots,退回系统临时目录)。\x0a\x20*\x0a\x20*\x20⚠️\x20不要\x20import\x20\x22@opencode/plugin\x22:该包在目标工程内通常不可解析(工程\x20node_modules\x20没有它),\x0a\x20*\x20\x20\x20\x20一旦「使用」其绑定(如\x20Plugin.define(...))就会因解析失败导致整个插件加载失败\x0a\x20*\x20\x20\x20\x20(实测\x20opencode\x202.0.21:state=failed\x20\x22Plugin\x20failed\x20to\x20load\x22)。插件协议本身接受**纯对象**\x0a\x20*\x20\x20\x20\x20默认导出(`export\x20default\x20{\x20id,\x20setup\x20}`),Plugin.define\x20只是\x20identity\x20辅助函数,去掉零影响。\x0a\x20*/\x0aimport\x20{\x20mkdirSync,\x20writeFileSync\x20}\x20from\x20\x22node:fs\x22\x0aimport\x20{\x20join\x20}\x20from\x20\x22node:path\x22\x0aimport\x20{\x20tmpdir\x20}\x20from\x20\x22node:os\x22\x0a\x0aconst\x20ORIGIN\x20=\x20\x22__AIWITH_ORIGIN__\x22\x0a\x0aasync\x20function\x20call(cmd,\x20args,\x20signal)\x20{\x0a\x20\x20//\x20超时兜底:桥接侧\x20wait\x20最长\x2063s,这里给\x2070s;并与外部\x20signal\x20联动\x0a\x20\x20const\x20ctrl\x20=\x20new\x20AbortController()\x0a\x20\x20let\x20timedOut\x20=\x20false\x0a\x20\x20const\x20timer\x20=\x20setTimeout(()\x20=>\x20{\x20timedOut\x20=\x20true;\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20},\x2070000)\x0a\x20\x20const\x20onAbort\x20=\x20()\x20=>\x20{\x20try\x20{\x20ctrl.abort()\x20}\x20catch\x20(error)\x20{\x20/*\x20ignore\x20*/\x20}\x20}\x0a\x20\x20if\x20(signal)\x20{\x20signal.aborted\x20?\x20onAbort()\x20:\x20signal.addEventListener(\x22abort\x22,\x20onAbort,\x20{\x20once:\x20true\x20})\x20}\x0a\x20\x20let\x20res\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20res\x20=\x20await\x20fetch(ORIGIN\x20+\x20\x22/aiwith/api/page/\x22\x20+\x20cmd,\x20{\x0a\x20\x20\x20\x20\x20\x20method:\x20\x22POST\x22,\x0a\x20\x20\x20\x20\x20\x20headers:\x20{\x20\x22Content-Type\x22:\x20\x22application/json\x22\x20},\x0a\x20\x20\x20\x20\x20\x20body:\x20JSON.stringify(args\x20||\x20{}),\x0a\x20\x20\x20\x20\x20\x20signal:\x20ctrl.signal,\x0a\x20\x20\x20\x20})\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(timedOut\x0a\x20\x20\x20\x20\x20\x20?\x20\x22页内接口超时(70s,dev\x20页面可能未响应)\x22\x0a\x20\x20\x20\x20\x20\x20:\x20(\x22连接\x20AiWith\x20dev\x20server\x20失败(\x22\x20+\x20ORIGIN\x20+\x20\x22):\x22\x20+\x20((error\x20&&\x20error.message)\x20||\x20error)))\x0a\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20clearTimeout(timer)\x0a\x20\x20\x20\x20if\x20(signal\x20&&\x20signal.removeEventListener)\x20{\x20signal.removeEventListener(\x22abort\x22,\x20onAbort)\x20}\x0a\x20\x20}\x0a\x20\x20const\x20json\x20=\x20await\x20res.json().catch(()\x20=>\x20null)\x0a\x20\x20if\x20(!json\x20||\x20json.ok\x20!==\x20true)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error((json\x20&&\x20json.message)\x20||\x20(\x22页内接口失败:HTTP\x20\x22\x20+\x20res.status))\x0a\x20\x20}\x0a\x20\x20return\x20json.data\x0a}\x0a\x0a//\x20紧凑\x20JSON(工具输出直供模型,pretty\x20缩进会放大约\x203\x20倍\x20token)\x0afunction\x20text(value)\x20{\x0a\x20\x20return\x20typeof\x20value\x20===\x20\x22string\x22\x20?\x20value\x20:\x20JSON.stringify(value)\x0a}\x0a\x0afunction\x20schema(properties,\x20required)\x20{\x0a\x20\x20return\x20{\x20type:\x20\x22object\x22,\x20properties:\x20properties,\x20required:\x20required\x20||\x20[],\x20additionalProperties:\x20false\x20}\x0a}\x0a\x0afunction\x20saveScreenshot(directory,\x20dataUrl)\x20{\x0a\x20\x20const\x20match\x20=\x20/^data:image\x5c/([a-z]+);base64,(.*)$/.exec(String(dataUrl\x20||\x20\x22\x22))\x0a\x20\x20if\x20(!match)\x20{\x0a\x20\x20\x20\x20throw\x20new\x20Error(\x22截图数据无法解析\x22)\x0a\x20\x20}\x0a\x20\x20const\x20ext\x20=\x20match[1]\x20===\x20\x22jpeg\x22\x20?\x20\x22jpg\x22\x20:\x20match[1]\x0a\x20\x20const\x20buffer\x20=\x20Buffer.from(match[2],\x20\x22base64\x22)\x0a\x20\x20//\x20时间戳\x20+\x20随机后缀,避免同毫秒内多次截图互相覆盖\x0a\x20\x20const\x20name\x20=\x20\x22aiwith-\x22\x20+\x20Date.now()\x20+\x20\x22-\x22\x20+\x20Math.random().toString(36).slice(2,\x208)\x20+\x20\x22.\x22\x20+\x20ext\x0a\x20\x20const\x20candidates\x20=\x20[\x0a\x20\x20\x20\x20join(directory,\x20\x22node_modules\x22,\x20\x22.cache\x22,\x20\x22aiwith\x22,\x20\x22shots\x22),\x0a\x20\x20\x20\x20join(tmpdir(),\x20\x22aiwith-shots\x22),\x0a\x20\x20]\x0a\x20\x20let\x20path\x20=\x20join(candidates[candidates.length\x20-\x201],\x20name)\x0a\x20\x20for\x20(const\x20dir\x20of\x20candidates)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20mkdirSync(dir,\x20{\x20recursive:\x20true\x20})\x0a\x20\x20\x20\x20\x20\x20writeFileSync(join(dir,\x20name),\x20buffer)\x0a\x20\x20\x20\x20\x20\x20path\x20=\x20join(dir,\x20name)\x0a\x20\x20\x20\x20\x20\x20break\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x20/*\x20换下一个目录\x20*/\x20}\x0a\x20\x20}\x0a\x20\x20return\x20{\x20path:\x20path,\x20mime:\x20ext\x20===\x20\x22jpg\x22\x20?\x20\x22image/jpeg\x22\x20:\x20\x22image/\x22\x20+\x20ext\x20}\x0a}\x0a\x0aexport\x20default\x20{\x0a\x20\x20id:\x20\x22aiwith.page\x22,\x0a\x20\x20async\x20setup(ctx)\x20{\x0a\x20\x20\x20\x20const\x20directory\x20=\x20(ctx.location\x20&&\x20ctx.location.directory)\x20||\x20process.cwd()\x0a\x0a\x20\x20\x20\x20await\x20ctx.tool.transform((editor)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20editor.namespace({\x20name:\x20\x22page\x22,\x20description:\x20\x22AiWith\x20当前\x20dev\x20页面的调试与交互能力(免浏览器授权)\x22\x20})\x0a\x20\x20\x20\x20\x20\x20//\x20⚠️\x20生效名\x20=\x20<options.namespace>_<name>:命名空间前缀必须逐工具用\x20options.namespace\x20指定,\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20editor.namespace()\x20只登记分组描述、**不会**给后续工具加前缀(实测\x20opencode\x202.0.21)。\x0a\x20\x20\x20\x20\x20\x20const\x20add\x20=\x20(tool)\x20=>\x20editor.add(Object.assign({\x20options:\x20{\x20namespace:\x20\x22page\x22\x20}\x20},\x20tool))\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22debug\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22读取当前\x20dev\x20页面的调试信息:页面地址/视口、最近的控制台输出、未捕获错误、网络请求,以及可选区域的\x20DOM\x20结构摘要。字段多、输出可能偏大——定位用\x20page_query/page_eval,本工具尽量传\x20selector\x20聚焦、调小各上限。调试问题优先用它,而不是截图。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只摘要该选择器命中的区域(默认整页\x20body)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maxNodes:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22DOM\x20摘要节点上限,默认\x20120,最大\x20800\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条控制台日志,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条错误,默认\x2010\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20net:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22返回最近多少条网络请求,默认\x2020\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22debug\x22,\x20Object.assign({\x20maxNodes:\x20120,\x20console:\x2020,\x20errors:\x2010,\x20net:\x2020\x20},\x20input),\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22click\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面点击匹配的元素(自动滚动到可视区,穿透开放\x20Shadow\x20DOM)。selector\x20支持\x20CSS\x20或文本匹配\x20\x5c\x22text=新建\x5c\x22。用于触发交互后,再用\x20page_debug\x20/\x20page_wait\x20验证结果。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器,或\x20\x5c\x22text=按钮文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22click\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22点击失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已点击\x20\x22\x20+\x20text(data)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22query\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22按选择器查询当前\x20dev\x20页面的元素清单(tag/id/class/text/rect/visible),用于定位可操作元素、拿选择器。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22(默认\x20*)\x22\x20},\x20limit:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22最多返回条数,默认\x2050\x22\x20}\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22query\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22查询失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data.items\x20||\x20[])\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22type\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面的输入框写入文本(自动\x20focus,触发\x20input/change\x20事件,兼容\x20Vue\x20v-model)。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=标签文案\x5c\x22。用于表单填写后,再用\x20page_debug\x20/\x20page_eval\x20验证。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22输入框选择器(CSS\x20或\x20\x5c\x22text=文案\x5c\x22)\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要写入的文本\x22\x20}\x20},\x20[\x22selector\x22,\x20\x22value\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22type\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22写入失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22fill\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22一次性批量写入多个表单字段(比多次\x20page_type\x20省往返)。fields=[{selector,value}],任一失败即中止并回报已完成项。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20fields:\x20{\x20type:\x20\x22array\x22,\x20description:\x20\x22字段数组:[{selector,value}]\x22,\x20items:\x20{\x20type:\x20\x22object\x22,\x20properties:\x20{\x20selector:\x20{\x20type:\x20\x22string\x22\x20},\x20value:\x20{\x20type:\x20\x22string\x22\x20}\x20},\x20required:\x20[\x22selector\x22,\x20\x22value\x22],\x20additionalProperties:\x20false\x20}\x20}\x20},\x20[\x22fields\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22fill\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data.error\x20||\x20\x22批量写入失败\x22)\x20+\x20\x22(已完成\x20\x22\x20+\x20(data.done\x20||\x20[]).length\x20+\x20\x22\x20项)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已写入\x20\x22\x20+\x20(data\x20&&\x20data.count)\x20+\x20\x22\x20个字段\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22press\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面按键(Enter/Escape/Tab\x20等):触发\x20keydown/keyup\x20事件,依赖\x20JS\x20按键监听(如\x20Vue\x20`@keyup.enter`)——**不会触发浏览器原生默认行为**(原生表单\x20Enter\x20提交、原生\x20Tab\x20焦点移动等不生效)。默认作用于当前焦点元素(如刚\x20page_type\x20的输入框),也可用\x20selector\x20指定。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20key:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22键名,如\x20Enter\x20/\x20Escape\x20/\x20Tab\x22\x20},\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22可选,目标元素选择器(默认焦点元素)\x22\x20}\x20},\x20[\x22key\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22press\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22按键失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已按键\x20\x22\x20+\x20input.key\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22hover\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22悬停到匹配元素:触发\x20mouseover/mouseenter/mousemove\x20事件,适用依赖\x20JS\x20监听的悬停。**注意:合成事件不会触发\x20CSS\x20伪类\x20`:hover`**——纯\x20CSS\x20hover\x20驱动的菜单/提示打不开,那种用\x20chrome-devtools\x20的\x20hover。selector\x20支持\x20CSS\x20或\x20\x5c\x22text=文案\x5c\x22。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22CSS\x20选择器或\x20\x5c\x22text=文案\x5c\x22\x22\x20}\x20},\x20[\x22selector\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22hover\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22悬停失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已悬停\x20\x22\x20+\x20input.selector\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22navigate\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面内跳转路由:hash\x20路由(如\x20\x5c\x22#/order/list\x5c\x22)为\x20SPA\x20内跳转,不重载、连接不丢;跨路径整页跳转会等待新页面就绪。用于打开指定页面后再\x20page_debug\x20/\x20page_wait。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20to:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22目标地址:#/route\x20形式的\x20hash\x20路由,或完整\x20URL\x22\x20},\x20replace:\x20{\x20type:\x20\x22boolean\x22,\x20description:\x20\x22是否替换当前历史记录(默认\x20false)\x22\x20}\x20},\x20[\x22to\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22navigate\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22导航失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22已导航至\x20\x22\x20+\x20((data\x20&&\x20data.url)\x20||\x20input.to)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22wait\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22等待当前\x20dev\x20页面满足条件:元素出现(selector)、文本出现(text)或地址变化(url),命中即返回,超时即失败。替代固定等待,用于等列表刷新/toast\x20出现。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待该\x20CSS\x20选择器出现\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待页面出现该文本\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20url:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22等待地址包含该子串\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timeout:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22超时毫秒,默认\x2015000,最小\x201000,最大\x2060000\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22wait\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.timeout)\x20{\x20throw\x20new\x20Error(\x22等待超时(条件未满足)\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(data.error\x20||\x20\x22等待失败\x22)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20\x22条件已满足(\x22\x20+\x20((data\x20&&\x20data.matched)\x20||\x20\x22ok\x22)\x20+\x20\x22)\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22eval\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22在当前\x20dev\x20页面执行一段\x20JavaScript\x20并返回结果(JSON\x20化)。用于读取任意页面状态、调用页面内\x20API、构造测试数据。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x20code:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22要执行的\x20JavaScript\x20源码,最后表达式的值即返回结果\x22\x20}\x20},\x20[\x22code\x22]),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22eval\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data\x20&&\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error(data.error\x20||\x20\x22执行失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20content:\x20text(data\x20&&\x20data.result)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x0a\x20\x20\x20\x20\x20\x20add({\x0a\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x22screenshot\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x22对当前\x20dev\x20页面(或指定区域)截图,返回\x20PNG\x20文件路径与图片内容,便于直接查看渲染效果。自动排除\x20AiWith\x20自身的浮标/抽屉等开发期元素。\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20input:\x20schema({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selector:\x20{\x20type:\x20\x22string\x22,\x20description:\x20\x22只截取该选择器命中的元素(默认整页)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scale:\x20{\x20type:\x20\x22number\x22,\x20description:\x20\x22缩放倍数,默认\x201(会再乘以设备像素比)\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20execute:\x20async\x20(input,\x20context)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20call(\x22screenshot\x22,\x20input,\x20context\x20&&\x20context.signal)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!data\x20||\x20data.ok\x20===\x20false)\x20{\x20throw\x20new\x20Error((data\x20&&\x20data.error)\x20||\x20\x22截图失败\x22)\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20saved\x20=\x20saveScreenshot(directory,\x20data.dataUrl)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20content:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22text\x22,\x20text:\x20\x22截图完成\x20\x22\x20+\x20data.width\x20+\x20\x22×\x22\x20+\x20data.height\x20+\x20\x22,已保存:\x22\x20+\x20saved.path\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20type:\x20\x22file\x22,\x20uri:\x20\x22file://\x22\x20+\x20saved.path,\x20mime:\x20saved.mime,\x20name:\x20saved.path.split(/[\x5c\x5c/]/).pop()\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20})\x0a\x20\x20\x20\x20})\x0a\x20\x20},\x0a}\x0a'};}),gn=ge(c=>{J(),(function(){const dc=b;let d=/[\p{Lu}]/u,e=/[\p{Ll}]/u,g=/^[\p{Lu}](?![\p{Lu}])/gu,i=/([\p{Alpha}\p{N}_]|$)/u,j=/[_.\- ]+/,k=new RegExp('^'+j[dc(0x34b)]),l=new RegExp(j[dc(0x34b)]+i[dc(0x34b)],'gu'),m=new RegExp(dc(0x25b)+i[dc(0x34b)],'gu'),n=(r,s,t,u)=>{const dd=dc;let v=!0x1,z=!0x1,A=!0x1,E=!0x1;for(let F=0x0;F<r[dd(0x77)];F++){let H=r[F];E=F>0x2?r[F-0x3]==='-':!0x0,v&&d[dd(0x320)](H)?(r=r['slice'](0x0,F)+'-'+r[dd(0x75)](F),v=!0x1,A=z,z=!0x0,F++):z&&A&&e[dd(0x320)](H)&&(!E||u)?(r=r[dd(0x75)](0x0,F-0x1)+'-'+r[dd(0x75)](F-0x1),A=z,z=!0x1,v=!0x0):(v=s(H)===H&&t(H)!==H,A=z,z=t(H)===H&&s(H)!==H);}return r;},p=(r,s)=>(g[dc(0xfb)]=0x0,r[dc(0x1c7)](g,t=>s(t))),q=(r,s)=>(l['lastIndex']=0x0,m['lastIndex']=0x0,r[dc(0x1c7)](m,(t,u,v)=>['_','-'][dc(0x10e)](r[dc(0x1d4)](v+t[dc(0x77)]))?t:s(t))[dc(0x1c7)](l,(t,u)=>s(u)));c[dc(0x1e6)]=function(r,s){const df=dc;if(!(typeof r==df(0x2be)||Array[df(0x17f)](r)))throw new TypeError(df(0x17d));if(s={'pascalCase':!0x1,'preserveConsecutiveUppercase':!0x1,...s},Array[df(0x17f)](r)?r=r[df(0x245)](v=>v[df(0x2da)]())[df(0x1b6)](v=>v[df(0x77)])[df(0xab)]('-'):r=r[df(0x2da)](),r[df(0x77)]===0x0)return'';let t=s['locale']===!0x1?v=>v['toLowerCase']():v=>v[df(0x1ac)](s[df(0x28b)]),u=s['locale']===!0x1?v=>v['toUpperCase']():v=>v[df(0x1fc)](s[df(0x28b)]);return r['length']===0x1?j[df(0x320)](r)?'':s[df(0xf7)]?u(r):t(r):(r!==t(r)&&(r=n(r,t,u,s[df(0x112)])),r=r['replace'](k,''),r=s[df(0x112)]?p(r,t):t(r),s[df(0xf7)]&&(r=u(r[df(0x1d4)](0x0))+r[df(0x75)](0x1)),q(r,u));};}());}),mn=ge(c=>{J(),(function(){const dg=b;let d=require(dg(0x2d4)),e=require('fs'),g=['components','blocks'],{camelCase:i}=gn(),j=function(n){const dh=dg;let p=[],q=[],r=[];e[dh(0x36a)](n)[dh(0x20c)]((u,v)=>u['localeCompare'](v))[dh(0x203)](u=>{const di=dh;let v=d[di(0xab)](n,u,di(0x2a4));if(e['existsSync'](v))p[di(0xce)](di(0x176)+u+di(0x7a)+u+'/index\x27;'),q[di(0xce)](u);else{let z=d[di(0xab)](n,u,u+di(0x82));if(e[di(0x329)](z))p[di(0xce)](di(0x176)+u+di(0x7a)+u+'/'+u+di(0x182)),r[di(0xce)](''+u);else{if(u[di(0xca)]('.')>-0x1)return;k(d['join'](n,u),u,n)&&(p[di(0xce)]('import\x20'+u+di(0x7a)+u+di(0x12a)),q[di(0xce)](u));}}});let s=r['length']>0x0?dh(0x120)+r[dh(0xab)](dh(0x174))+dh(0x139):'',t=p[dh(0xab)]('\x0a')+'\x0a'+s+dh(0x13a)+(s?dh(0x22a):'')+dh(0xba)+(q[dh(0x77)]>0x0?dh(0x178)+q[dh(0xab)](dh(0x307)):'')+dh(0x139);e['writeFileSync'](d[dh(0xab)](n,'index.js'),t,()=>{});},k=function(n,p,q){const dj=dg;let r=d['join'](n,dj(0x2a4)),s=[],t=[];if(!e['existsSync'](n)||p[0x0]==='.'||g['includes'](p))return!0x1;let u=!e['existsSync'](r);if(e[dj(0x36a)](n)[dj(0x20c)]((z,A)=>z['localeCompare'](A))['forEach'](z=>{const dk=dj;let A=d[dk(0xab)](n,z,'index.js'),E=[];if(e[dk(0x329)](A)){E[dk(0xce)](z),s[dk(0xce)]('import\x20'+z+dk(0x14e)+z+dk(0x1cb)),t['push']('...'+z);return;}let F=d['join'](n,z,z+dk(0x82));if(z['indexOf']('.')>-0x1||!e[dk(0x329)](F))return;let H=i(p[dk(0x2f2)](/\//gi,'_')+'_'+z,{'pascalCase':!0x0});s[dk(0xce)](dk(0x176)+H+dk(0x14e)+z+'/'+z+'\x22;'),t[dk(0xce)]('\x27'+p+'/'+z+dk(0x269)+H);}),s[dj(0x77)]===0x0)return!0x1;let v=s[dj(0xab)]('\x0a')+dj(0x1ea)+t[dj(0xab)](dj(0x174))+'\x0a}';return e['writeFileSync'](r,v),j(q),u&&j(q),!0x0;};function l(n){const dl=dg;let p=d[dl(0xab)](n,dl(0x2a4)),q=e[dl(0x36a)](n),r=[],s=[];q['map'](u=>{const dm=dl;if(u[dm(0xca)]('.')>-0x1)return;let v=d[dm(0xab)](n,u,u+'.vue');e[dm(0x329)](v)&&(s['push'](u),r['unshift'](dm(0x176)+u+'\x20from\x20\x22./'+u+'/'+u+'\x22;'));});let t=r[dl(0xab)]('\x0a')+dl(0x36e)+s['join'](dl(0x174))+'\x0a}\x0a';return e[dl(0x135)](p,t);}c[dg(0x173)]=j,c[dg(0x277)]=k,c[dg(0xfa)]=l;}());}),hn=ge(c=>{J(),(function(){const dn=b;let e=require('os'),g=require(dn(0x285)),i=require(dn(0x145)),k=new RegExp('(https?:)?//((b|a)\x5c.(ebus))\x5c.vip/.+?\x5c.(svg|js|png|gif|jpe?g|ttf|woff2?|eot|css)','gi'),l=['.js',dn(0x1a0),'.svg'],n=[dn(0x7c),dn(0x1a0),dn(0x32f)],p=require('fs'),{join:r,dirname:s,resolve:t,extname:u}=require(dn(0x2d4)),z=dn(0x369),E='/',F=require(dn(0x205)),I=require(dn(0x83)),{TosClient:M}=require(dn(0x231)),N,Q,R,W,X;function Y(aa){const dp=dn;let ab=r(aa,dp(0x143)),ac=p[dp(0x7f)](ab,dp(0x33b));return JSON[dp(0x24a)](ac);}function Z(aa,ab){const dq=dn;let ac={'Bucket':R[dq(0xbd)],'Region':R['region'],'Key':aa,'StorageClass':dq(0x216)},ad=aa[dq(0xca)](dq(0x7c))>-0x1;ad||aa[dq(0xca)](dq(0x1a0))>-0x1?(ac[dq(0x121)]={'Content-Encoding':dq(0x26d),'Content-Type':ad?dq(0x134):dq(0xb6)},ac[dq(0xc8)]=Buffer['from'](i[dq(0x26d)](p[dq(0x7f)](ab,dq(0x33b))))):ac[dq(0xc8)]=p[dq(0x195)](ab),Q[dq(0x1d8)](ac,(af,ag)=>{const dr=dq;if(af)return console[dr(0xb0)](af,ag);console[dr(0xb0)](E+aa);});}function a0(aa,ab){const ds=dn;let ac={'bucket':R[ds(0x1da)],'key':aa},ad=aa['indexOf']('.js')>-0x1;ad||aa[ds(0xca)](ds(0x1a0))>-0x1?(ac[ds(0xb2)]={'Content-Encoding':ds(0x26d),'Content-Type':ad?ds(0x134):ds(0xb6)},ac[ds(0x350)]=Buffer[ds(0x118)](i[ds(0x26d)](p['readFileSync'](ab,'utf8')))):ac[ds(0x350)]=p[ds(0x195)](ab),Q['putObject'](ac,(af,ag)=>{const dt=ds;if(af)return console[dt(0xb0)](af,ag);console[dt(0xb0)](E+aa);});}function a1(aa,ab){const du=dn;let ac,ad,af=aa['indexOf'](du(0x7c))>-0x1;af||aa[du(0xca)](du(0x1a0))>-0x1?(ad={'Content-Encoding':du(0x26d),'Content-Type':af?du(0x134):'text/css'},ac=Buffer[du(0x118)](i[du(0x26d)](p['readFileSync'](ab,du(0x33b))))):(ac=p[du(0x195)](ab),ad={}),Q[du(0xdf)](aa,ac,{'headers':ad});}function a2(aa,ab){const dv=dn;p[dv(0x36a)](aa)[dv(0x203)](ac=>{const dw=dv;if(ac['indexOf']('.')===0x0||ac[dw(0xca)](dw(0x1f3))>-0x1)return;let ad=r(aa,ac),af=p[dw(0x20a)](ad);if(af[dw(0x35b)]()&&a2(ad,r(ab,ac)),af['isFile']()){let ag=r(ab,ac)[dw(0x2f2)](/\\/gi,'/');console[dw(0xb0)](ag),X(ag,ad);}});}function a3(aa){const dx=dn;let ab=aa[dx(0x264)](aa[dx(0xca)]('.vip')+0x4);ab[dx(0x141)]('/f01')&&(ab=ab[dx(0x264)](0x4));let ac=r(N,ab),ad=u(ac);if(!p[dx(0x329)](ac)||n[dx(0x10e)](ad)){g[dx(0x1a5)]('-p',s(ac));let af=aa['indexOf'](':')>-0x1?aa:dx(0x242)+aa,ag='curl\x20'+z+dx(0x150)+ac+'\x22\x20\x22'+af+'\x22';if(ac[dx(0xca)](dx(0x7c))>-0x1||ac[dx(0xca)](dx(0x1a0))>-0x1){let ai=ac+'.tmp';ag=dx(0x1f1)+z+dx(0x150)+ai+dx(0x128)+af+dx(0xd0)+ai+dx(0x1bb)+ac+dx(0x167)+ai+dx(0x8a);}let ah=g[dx(0x26e)](ag);if(ah[dx(0x10c)]!==0x0)return console[dx(0x30e)](dx(0x30a)+ag+':\x20'+ah[dx(0x147)]),aa;}return ab;}function a4(aa){const dy=dn;let ab=u(aa);if(aa[dy(0xca)]('.')===0x0||ab===dy(0x1f3))return;let ac;if(aa[dy(0xca)](dy(0x9a))>-0x1?ac=N+aa[dy(0x264)](W['length']+0x5):ac=N+aa[dy(0x264)](W[dy(0x77)]+0x7),g[dy(0x1a5)]('-p',s(ac)),!l[dy(0x10e)](ab))return g['cp'](aa,ac);let ad=p[dy(0x7f)](aa,'utf8')[dy(0x2f2)](k,af=>af[dy(0xca)]('\x27')>-0x1||af['indexOf']('\x22')>-0x1?af:a3(af));p[dy(0x135)](ac,Buffer[dy(0x118)](i[dy(0x26d)](ad)),dy(0x33b));}function a5(aa){const dz=dn;let ab=p['readdirSync'](aa);for(let ac of ab){if(ac[dz(0x141)]('.'))continue;let ad=r(aa,ac),af=p[dz(0x20a)](ad);af[dz(0x35b)]()?a5(ad):af[dz(0x1a3)]()&&a4(ad);}}function a6(aa,ab,ac){const dA=dn;let ad=p[dA(0x36a)](aa);for(let af of ad){let ag=r(aa,af);if(p[dA(0x20a)](ag)[dA(0x35b)]())a6(ag,ab,ac);else{if(aa[dA(0xca)]('.lowcode')>-0x1&&af===dA(0x1df)){let ah=p[dA(0x7f)](ag,dA(0x33b)),{path:ai,basic:aj,actions:ak=[]}=JSON[dA(0x24a)](ah);if(!ai)continue;let al=aj[dA(0x17e)];al&&(ac[al]?ac[al][dA(0xce)](ai):ac[al]=[ai]);let am=[];aj[dA(0x1b3)][dA(0x203)](({_id:an,label:ao,mode:ap,href:aq,url:ar})=>{const dB=dA;let as=an+'',at={'id':as,'label':ao};ap===dB(0x103)&&aq&&(at[dB(0x103)]=aq[dB(0x264)](0x1)),am[dB(0xce)](at),ar&&(ac[ar]?ac[ar][dB(0xce)](as):ac[ar]=[as]);}),ak['forEach'](({_id:an,label:ao,mode:ap,href:aq,url:ar})=>{const dC=dA;let as=an+'',at={'id':as,'label':ao};ap===dC(0x103)&&aq&&(at['link']=aq[dC(0x264)](0x1)),am['push'](at),ar&&(ac[ar]?ac[ar]['push'](as):ac[ar]=[as]);}),am[dA(0x77)]>0x0&&(ab[ai]=am);}}}}function a7(){const dD=dn;let aa=new Date(),ab=aa[dD(0xcc)]()[dD(0xa8)]()['slice'](-0x2),ac=(aa['getMonth']()+0x1)[dD(0xa8)]()[dD(0xe6)](0x2,'0'),ad=aa[dD(0x22e)]()[dD(0xa8)]()['padStart'](0x2,'0'),af=aa[dD(0x202)]()[dD(0xa8)]()[dD(0xe6)](0x2,'0'),ag=aa[dD(0xc9)]()[dD(0xa8)]()[dD(0xe6)](0x2,'0');return ab+ac+ad+af+ag;}function a8(aa){const dE=dn;let ab=r(N,'..');if(!p[dE(0x329)](ab))return;let ac={},ad={};a6(r(aa,dE(0x2de)),ac,ad);let af=r(ab,dE(0x338)),ag=r(ab,'pointsApi');p[dE(0x135)](ag,JSON['stringify'](ad),dE(0x33b)),p[dE(0x135)](af,JSON[dE(0x133)](ac),'utf8');}async function a9(aa){const dF=dn;let ab=r(N,'..'),ac=a7();if(!p[dF(0x329)](ab)){let af=r(aa,dF(0x14a));return p[dF(0x135)](af,ac,dF(0x33b)),ac;}let ad=r(ab,dF(0x222),'app');p[dF(0x329)](ad)||g[dF(0x1a5)]('-p',s(ad));try{let ag={};return p['existsSync'](ad)&&(ag=JSON['parse'](p[dF(0x7f)](ad,'utf8'))),ag['fd']=ac,p[dF(0x135)](ad,JSON['stringify'](ag),dF(0x33b)),ac;}catch(ah){return console['log'](ah),'';}}c[dn(0xa6)]=async function(aa,ab,ac){const dG=dn;if(!ab)return;W=aa,R=JSON[dG(0x24a)](p['readFileSync'](r(e[dG(0xd8)](),dG(0x29d)))),ab==='tos'?(Q=new M({'accessKeyId':R[dG(0x196)],'accessKeySecret':R[dG(0x108)],'region':R['tosRegion'],'endpoint':R[dG(0xb5)]}),E=R[dG(0x9f)]+'/',X=a0):ab===dG(0x360)?(Q=new I({'accessKeyId':R[dG(0xf2)],'accessKeySecret':R['ossSecret'],'bucket':R[dG(0x22f)],'region':'oss-'+R[dG(0x19b)],'authorizationV4':!0x0}),E=R[dG(0x308)]+'/',X=a1):(Q=new F({'SecretId':R['id'],'SecretKey':R[dG(0x122)]}),E=R[dG(0x2e4)]+'/',X=Z);let ad=Y(aa),af=ad[dG(0xaa)],ag,ah;if(ag=r(aa,dG(0x9a)),ah=r(aa,dG(0xd3)),ad[dG(0x1d0)]!==dG(0xa9)){let ak=[dG(0x98),'zen.css',dG(0x33c),dG(0x2f1)];g[dG(0x1a5)]('-p',ah),ak['forEach'](al=>{const dH=dG;let am=r(ah,al),an=am+dH(0xbb),ao='curl\x20'+z+dH(0x150)+an+dH(0x9c)+ac+'/'+al+dH(0xc0)+an+'\x22\x20>\x20\x22'+am+'\x22;\x20status=$?;\x20rm\x20-f\x20\x22'+an+dH(0x8a);console[dH(0xb0)](ao);let ap=g[dH(0x26e)](ao);ap['code']!==0x0&&console[dH(0x30e)](dH(0x30a)+ao+':\x20'+ap[dH(0x147)]);});}N=t(aa,'..',af,dG(0x2de),'main',dG(0x1a8),dG(0xc7));let ai=await a9(ag),aj=af+'/'+ai;a8(aa),a2(ag,aj),p[dG(0x329)](ah)&&a2(ah,aj);},c['locale']=async function(aa,ab){const dI=dn;W=aa;let ac=Y(aa)[dI(0xaa)];N=t(aa,'..',ac,dI(0x2de),dI(0x318),dI(0x1a8),dI(0xc7)),a8(aa);let ad=r(aa,dI(0x9a));await a9(ad);let af=r(aa,'public');g[dI(0x1a5)]('-p',af),[dI(0x98),'zen.css',dI(0x33c),dI(0x2f1)]['forEach'](ag=>{const dJ=dI;let ah=r(af,ag),ai=ah+dJ(0xbb),aj=dJ(0x1f1)+z+dJ(0x150)+ai+dJ(0x9c)+ab+'/'+ag+dJ(0xc0)+ai+'\x22\x20>\x20\x22'+ah+dJ(0x167)+ai+'\x22;\x20exit\x20$status';console[dJ(0xb0)](aj);let ak=g[dJ(0x26e)](aj);ak[dJ(0x10c)]!==0x0&&console[dJ(0x30e)]('Failed\x20to\x20download\x20'+aj+':\x20'+ak[dJ(0x147)]);}),a5(ad),p[dI(0x329)](af)&&a5(af);};}());}),vn=ge((c,d)=>{J(),(function(){const dK=b;let e=require('path'),g=require('fs'),i=require(dK(0x236)),k=require(dK(0x303)),l=mn(),{remote:n,locale:p}=hn(),{makeRootIndex:q,makeSonIndex:r,makeComponentIndex:s}=l,t=[dK(0x9d),dK(0x258)];function u(N){const dL=dK;return dL(0xb4)+N+dL(0x15c);}function v(N){const dM=dK;return'<!doctypehtml><meta\x20charset=utf-8><meta\x20content=\x22chrome,IE=edge\x22http-equiv=X-UA-Compatible><meta\x20content=true\x20name=HandheldFriendly><link\x20href=data:image/ico;base64,aWNv\x20rel=icon><meta\x20content=\x22telephone=no,email=no\x22name=format-detection><meta\x20content=\x22width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0,user-scalable=no,minimal-ui,viewport-fit=cover\x22name=viewport><meta\x20content=webkit\x20name=renderer><meta\x20content=no\x20name=msapplication-tap-highlight><title>大屏设计器</title><script\x20src=//b.ebus.vip/zeto/latest/zen.js></script><link\x20href=//b.ebus.vip/zeto/latest/zen.css\x20rel=stylesheet><script>zen.host=\x22https://thor.zeto.me\x22,window.appName=\x22'+N+dM(0x12d);}function z(N,P){const dN=dK;if(P[dN(0x77)]<0x2)return;let Q,R=P[dN(0x1b6)]((W,X)=>(X===0x0&&(Q=e[dN(0xab)](N,W),g[dN(0x329)](Q)||g['mkdirSync'](Q)),X>0x0));z(Q,R);}let A=dK(0x223),E=dK(0x2a0);function F(N,P){const dO=dK;N[dO(0x33a)](dO(0x125),dO(0x179)),N[dO(0x2d7)](JSON[dO(0x133)](P));}function H(N,P){const dP=dK;N['setHeader'](dP(0x125),'text/html;\x20charset=utf-8'),N[dP(0x2d7)](P);}function I(N,P){const dQ=dK;let Q=e[dQ(0xab)](N,dQ(0x2de),'pages'),R=k['json']();return function(W,X,Y){const dR=dQ;let {url:Z,method:a0}=W;if(a0===dR(0x132)&&Z===dR(0x26c))return H(X,u(P));if(a0===dR(0x132)&&Z==='/datav.html')return H(X,v(P));if(a0===dR(0x251)&&Z==='/coder/read')return R(W,X,()=>{const dS=dR;let {file:a1}=W[dS(0x350)]||{};if(!a1)return F(X,{'code':0x2711,'message':dS(0x16d)});let a2=e[dS(0xab)](Q,a1);return g['existsSync'](a2)?F(X,{'code':0x2710,'data':g[dS(0x7f)](a2,dS(0x368))}):F(X,{'code':0x2710,'data':null});});if(a0==='POST'&&Z===dR(0x1ab))return R(W,X,()=>{const dT=dR;let {file:a1,content:a2,type:a3}=W[dT(0x350)]||{};if(!a1)return F(X,{'code':0x2711,'message':dT(0x16d)});let a4=a1[dT(0xeb)]('/');z(Q,a4);let a5=e['join'](Q,a1);if(g['writeFileSync'](a5,a2),a3===dT(0x23a)){let a6=a4[dT(0xc5)](0x0,a4[dT(0x77)]-0x2),a7=e[dT(0xab)](Q,a6[dT(0xab)](e[dT(0x31f)]));if(a6[dT(0x77)]===0x0)return q(Q);r(a7,a6[dT(0xab)]('/'),Q);}return F(X,{'code':0x2710,'message':dT(0x2b2)});});Y();};}function K(N){const dU=dK;let P=e[dU(0xab)](N,'src',dU(0x291));if(!g[dU(0x329)](P))return null;let Q=i[dU(0xc2)](P,{'depth':0x2,'usePolling':!0x1});return Q['on'](dU(0x35d),R=>{const dV=dU;let W=e[dV(0xab)](R,dV(0x2a4));if(g[dV(0x329)](W)||R[dV(0xca)](dV(0x1a2))>-0x1)return;let X=e[dV(0x17b)](R)[dV(0xeb)](e['sep']),Y=X[dV(0x18b)](),Z=X[X['length']-0x1],a0=e[dV(0xab)](R,Y+dV(0x82));g[dV(0x329)](a0)||t[dV(0x10e)](Y)||t[dV(0x10e)](Z)||(X[dV(0x77)]-X[dV(0xca)](Z)===0x1&&X[dV(0x77)]-X[dV(0xca)]('pages')!==0x2&&(Z=X[X['length']-0x2]+e[dV(0x31f)]+Z),g[dV(0x135)](a0,A),r(X[dV(0xab)](e[dV(0x31f)]),Z,P));}),Q['on'](dU(0x229),R=>{const dW=dU;let W=e['resolve'](R)['split'](e[dW(0x31f)]);W['pop']();let X=W[dW(0xab)](e[dW(0x31f)]),Y=W[dW(0x18b)]();Y===dW(0x291)?q(P):(W[dW(0x77)]-W[dW(0xca)](dW(0x291))===0x2&&(Y=W[dW(0x18b)]()+e[dW(0x31f)]+Y),r(X,Y,P));}),q(P),Q['on'](dU(0x30e),function(R){const dX=dU;console[dX(0x30e)](dX(0x1d5),R);}),Q;}function M(N){const dY=dK;let P=e[dY(0xab)](N,dY(0x2de),dY(0x9d));if(!g[dY(0x329)](P))return null;let Q=i['watch'](P,{'depth':0x1,'usePolling':!0x1});return Q['on'](dY(0x35d),R=>{const dZ=dY;let W=e[dZ(0x17b)](R)['split'](e[dZ(0x31f)]),X=W[dZ(0x18b)](),Y=e['join'](R,X+'.vue'),Z=e[dZ(0xab)](R,X+dZ(0x7c));g['existsSync'](Y)||g['existsSync'](Z)||X==='components'||W[W[dZ(0x77)]-0x1]!==dZ(0x9d)||(g[dZ(0x135)](Y,E),s(P));}),Q['on'](dY(0x229),R=>{const e0=dY;let W=e[e0(0x17b)](R)[e0(0xeb)](e[e0(0x31f)]);W[W['length']-0x2]==='components'&&s(P);}),Q['on']('error',function(R){const e1=dY;console[e1(0x30e)](e1(0x1d5),R);}),Q;}d[dK(0x1ae)]=function({target:N,ROOT:P,name:Q,core:R,isDev:V}){return{'name':'zen-auto-code','configureServer'(W){const e2=b;W[e2(0x265)][e2(0x208)](I(P,Q));let X=[K(P),M(P)];W[e2(0x284)]&&W[e2(0x284)]['on'](e2(0x155),()=>{const e3=e2;X[e3(0x203)](Y=>Y&&Y[e3(0x155)]());});},'closeBundle'(){V||setTimeout(()=>{const e4=b;N===e4(0x94)?p(P,R):N&&n(P,N,R);},0x64);}};};}());}),en=ge((c,d)=>{J(),(function(){const e5=b;let e=require('fs'),f=require(e5(0x2d4));d['exports']=function({outDir:g}){return{'name':'zen-css-inject','closeBundle'(){const e6=b;if(!g||!e['existsSync'](g))return;e[e6(0x36a)](g)[e6(0x1b6)](h=>h[e6(0x268)](e6(0x1a0)))[e6(0x203)](h=>{const e7=e6;let i=e[e7(0x7f)](f[e7(0xab)](g,h),e7(0x33b)),j=f[e7(0xab)](g,h['replace'](/\.css$/,e7(0x7c)));if(e[e7(0x329)](j)){let k=e['readFileSync'](j,e7(0x33b)),l=e7(0x15a)+JSON[e7(0x133)](i)+e7(0x1b0);e[e7(0x135)](j,l+k);}e[e7(0x2f4)](f[e7(0xab)](g,h));});}};};}());}),wn=ge((c,d)=>{J(),(function(){const e8=b;let e=require('fs'),g=require(e8(0x2d4)),h={'compact':!0x0,'stringArray':!0x0,'stringArrayEncoding':['base64'],'stringArrayThreshold':0.75,'identifierNamesGenerator':e8(0x2e6),'selfDefending':!0x1,'target':e8(0x23d),'renameGlobals':!0x1};d[e8(0x1ae)]=function({outDir:i}){const e9=e8;return{'name':e9(0xfd),'closeBundle'(){const ea=e9;if(!i||!e[ea(0x329)](i))return;let j=e[ea(0x36a)](i)['filter'](l=>l[ea(0x268)](ea(0x7c)));if(j[ea(0x77)]===0x0)return;let k;try{k=require('javascript-obfuscator');}catch{throw new Error('obfuscate:\x20true\x20\u9700\u8981\u5B89\u88C5\x20javascript-obfuscator\uFF0C\u8BF7\u6267\u884C\x20npm\x20i\x20-D\x20javascript-obfuscator');}j[ea(0x203)](l=>{const eb=ea;let m=g[eb(0xab)](i,l),n=e['readFileSync'](m,'utf8'),p=k['obfuscate'](n,h)[eb(0x124)]();e['writeFileSync'](m,p),console[eb(0xb0)](eb(0xd5)+l,'('+(p[eb(0x77)]/0x400)['toFixed'](0x1)+'KB)');});}};};}());}),Sn=ge((c,d)=>{J(),(function(){const ec=b;let e=require(ec(0x2d4)),g=en(),h=['vue',ec(0x353),'vue-router',ec(0x157)],i={'vue':'Vue','vue-router':ec(0x2ba),'element-plus':ec(0x201),'vant':ec(0x157)};d[ec(0x1ae)]=function({outDir:j,extraEntries:k,ROOT:l,srcRoot:m}){return{'name':'zen-multi-entry',async 'closeBundle'(){const ed=b;if(!k||k[ed(0x77)]===0x0)return;let {default:n}=await import(ed(0x127)),{default:p}=await import(ed(0x272)),{build:q}=await import(ed(0x31e));for(let r of k){let s=e[ed(0x267)](r,ed(0x7c));await q({'configFile':!0x1,'root':l,'logLevel':'error','plugins':[n(),p({'include':/\.(jsx|js)/}),g({'outDir':j})],'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1},'resolve':{'extensions':['.js',ed(0x82),'.jsx',ed(0x332)],'alias':{'@':m,'@icons':e[ed(0x17b)](l,ed(0xd6))}},'css':{'cssCodeSplit':!0x1},'build':{'outDir':j,'emptyOutDir':!0x1,'copyPublicDir':!0x1,'minify':ed(0x23c),'target':ed(0x1ba),'sourcemap':!0x1,'lib':{'entry':r,'formats':[ed(0x15f)],'name':ed(0xa9),'fileName':()=>s+'.js','cssFileName':s},'rolldownOptions':{'external':h,'output':{'globals':i,'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':'none'}}}}}});}}};};}());}),En=ge((c,d)=>{J(),(function(){const ee=b;let e={'vue':ee(0x293),'vue-router':ee(0x2ba),'element-plus':'ElementPlus','vant':ee(0x157)},g=ee(0x2ab),i=new RegExp(ee(0x102)+g+ee(0x14b),'g'),j=new RegExp(ee(0x19e)+g+ee(0x14b),'g'),k=new RegExp('import\x5cs*\x5c{([^}]*)\x5c}\x5cs*from\x5cs*[\x27\x5c\x22]('+g+')[\x27\x5c\x22]','g'),l=new RegExp(ee(0x2ea)+g+ee(0x14b),'g'),m=new RegExp(ee(0x2b0)+g+ee(0x14b),'g');d['exports']=function({isDev:n}){const ef=ee;return{'name':ef(0x1f0),'transform'(p,q){const eg=ef;if(!n||!p||q[eg(0xca)]('node_modules')>-0x1)return null;let r=!0x1;return p=p[eg(0x2f2)](i,(s,t,u)=>(r=!0x0,eg(0x13b)+t+eg(0x294)+e[u])),p=p[eg(0x2f2)](j,(s,t,u,v)=>{const eh=eg;r=!0x0;let y=u[eh(0x2da)]()[eh(0x2f2)](/\s+as\s+/g,':\x20');return eh(0x13b)+t+eh(0x294)+e[v]+';\x0aconst\x20{\x20'+y+eh(0x156)+e[v];}),p=p[eg(0x2f2)](k,(s,t,u)=>(r=!0x0,'const\x20{\x20'+t[eg(0x2da)]()[eg(0x2f2)](/\s+as\s+/g,':\x20')+eg(0x156)+e[u])),p=p[eg(0x2f2)](l,(s,t,u)=>(r=!0x0,eg(0x13b)+t+eg(0x294)+e[u])),p=p[eg(0x2f2)](m,(s,t)=>(r=!0x0,eg(0x2a1)+e[t]+eg(0x262))),r?{'code':p,'map':null}:null;}};};}());}),_n=ge((c,d)=>{const ei=d8;J();var e=require('fs'),f=require('os'),g=require(ei(0x2d4)),h=['compile',ei(0x256),ei(0x1db),ei(0xdc),ei(0x27d),'createSSRApp','defineCustomElement',ei(0x309),ei(0x2ca),ei(0x2f8),ei(0x168),'patchProp','render',ei(0x19f),ei(0x169),ei(0x354),ei(0x1d2),'vModelCheckbox',ei(0x172),ei(0x1a9),'vModelSelect','vModelText','vShow',ei(0x220),ei(0x87),ei(0x2a8),'ReactiveEffect',ei(0x1a7),ei(0x276),ei(0x20b),ei(0xcf),ei(0x10b),ei(0x248),'getCurrentWatcher',ei(0x215),'isReactive',ei(0xf1),ei(0x34d),ei(0xc1),'markRaw','onScopeDispose',ei(0x1b5),ei(0xa0),'reactive','readonly','ref',ei(0x322),ei(0x367),ei(0x2fd),ei(0x2c0),'toRaw',ei(0xe7),ei(0x287),ei(0xaf),ei(0x2ad),'unref',ei(0x2cb),ei(0x357),ei(0x1dd),ei(0x227),ei(0x25e),ei(0x92),'toHandlerKey',ei(0x22b),ei(0x1fd),ei(0x1ce),'DeprecationTypes',ei(0x2fc),ei(0x148),ei(0x257),ei(0x107),ei(0x328),ei(0x363),ei(0x2d6),ei(0xbc),ei(0x109),ei(0x212),ei(0x2b3),ei(0x2c4),'compatUtils','computed',ei(0x11d),ei(0x2c1),ei(0x271),ei(0x237),ei(0x330),ei(0x1ef),ei(0x7e),ei(0x95),ei(0x21e),'createTextVNode',ei(0x31a),ei(0x255),ei(0x240),'defineEmits',ei(0x131),ei(0x217),'defineOptions','defineProps',ei(0x2e7),ei(0x1b8),ei(0x14c),ei(0x1c4),'guardReactiveProps','h','handleError',ei(0x1f8),ei(0x13d),ei(0x1f7),ei(0x1f6),'hydrateOnVisible','initCustomFormatter',ei(0x1f4),'isMemoSame',ei(0x2f5),'isVNode','mergeDefaults','mergeModels','mergeProps',ei(0x23b),ei(0x250),ei(0x2ee),ei(0x1be),ei(0xcb),'onDeactivated',ei(0x246),'onMounted',ei(0x1cc),ei(0x314),ei(0x30c),ei(0x21a),ei(0x238),ei(0x2ed),ei(0x2f6),ei(0x253),ei(0x2c6),ei(0x211),ei(0x210),'renderList',ei(0x70),ei(0x36b),ei(0xf3),'resolveDynamicComponent',ei(0x2bc),ei(0xfe),ei(0x110),ei(0x193),ei(0x206),ei(0x244),ei(0x280),ei(0x312),ei(0x1bc),ei(0x226),ei(0x30b),'useModel',ei(0x111),ei(0x1bd),ei(0xd2),ei(0x36c),ei(0x2a2),'warn','watch','watchEffect','watchPostEffect','watchSyncEffect',ei(0x1b2),ei(0x1b4),'withDefaults',ei(0x15e),ei(0x34e),ei(0x1e3)];d[ei(0x1ae)]=function(){const ej=ei;let i=g['join'](f['tmpdir'](),ej(0xb9)),j=ej(0x365)+h[ej(0x245)](k=>ej(0x164)+k+'\x20=\x20window.Vue['+JSON['stringify'](k)+']')[ej(0xab)]('\x0a')+ej(0x28f);try{e[ej(0x135)](i,j);}catch{return null;}return{'file':i,'rolldownPlugin':{'name':ej(0x18c),'resolveId'(k){const ek=ej;if(k===ek(0x2dc))return i;}}};};}),Bn=ge((c,d)=>{'use strict';const el=d8;J();var e=require('fs'),f=require('os'),g=require('path'),h=el(0xa9),i=g[el(0xab)](f[el(0xd8)](),el(0x2bb),el(0x161)),j='opencode.json',k='/'+j;function l(D){const em=el;return String(D||em(0x2aa))[em(0x2f2)](/[^a-zA-Z0-9._-]/g,'_');}function m(D){const eo=el;return g[eo(0xab)](i,eo(0x2ff)+l(D)+eo(0x332));}function n(D){const ep=el;try{return JSON[ep(0x24a)](e[ep(0x7f)](m(D),ep(0x33b)));}catch{return null;}}function o(D,E){const eq=el;let F=m(D);e[eq(0x344)](i,{'recursive':!0x0,'mode':0x1c0}),e[eq(0x135)](F,JSON['stringify'](E,null,0x2),{'mode':0x180});try{e['chmodSync'](F,0x180);}catch{}return F;}function p(D){const er=el;let E={};return(D||[])[er(0x203)](function(F){const es=er;let G=typeof F=='string'?F:F&&F['id'];if(!G)return;let H={'name':F&&F[es(0xaa)]||String(G)};F&&F['limit']&&(H[es(0x327)]=F['limit']),F&&F[es(0x349)]&&(H[es(0x349)]=F['capabilities']),E[G]=H;}),E;}function q(D){const et=el;return{'providerId':D[et(0x282)]||h,'entry':{'name':D['gateway']&&D['gateway'][et(0xaa)]||et(0x158),'package':et(0x263),'settings':{'baseURL':D[et(0x22d)][et(0x1ad)],'apiKey':D[et(0x22d)][et(0x16f)]},'models':p(D['models'])}};}function r(D,E){const eu=el;if(!D||!E||!E[eu(0x22d)]||!E[eu(0x22d)][eu(0x1ad)]||!E['gateway'][eu(0x16f)])throw new Error(eu(0x289));let F=g['join'](D,j);if(e['existsSync'](F)&&s(D,j))throw new Error(j+'\x20\u5DF2\u88AB\x20git\x20\u8DDF\u8E2A\uFF0C\u4E3A\u907F\u514D\u4EE4\u724C\u5165\u5E93\u800C\u62D2\u7EDD\u5199\u5165\uFF1B\u8BF7\u5C06\u5176\u52A0\u5165\x20.gitignore\x20\u540E\u91CD\u8BD5');let G={};try{G=JSON[eu(0x24a)](e[eu(0x7f)](F,eu(0x33b)))||{};}catch{G={};}let H=q(E);(!G[eu(0x21c)]||typeof G[eu(0x21c)]!=eu(0x31c))&&(G['providers']={}),G[eu(0x21c)][H['providerId']]=H['entry'],e['writeFileSync'](F,JSON[eu(0x133)](G,null,0x2),{'mode':0x180});try{e[eu(0xd9)](F,0x180);}catch{}return t(D),{'file':F,'providerId':H[eu(0x282)]};}function s(D,E){const ev=el;try{let {execFileSync:F}=require(ev(0x2df));return F(ev(0x1d1),[ev(0x11c),ev(0x18e),'--',E],{'cwd':D,'stdio':ev(0xa2)}),!0x0;}catch{return!0x1;}}function t(D){const ew=el;try{let E=g[ew(0xab)](D,ew(0x334));if(!e['existsSync'](E)||!e[ew(0x20a)](E)['isDirectory']())return;let F=g[ew(0xab)](E,ew(0x100),ew(0x2c9)),G='';try{G=e[ew(0x7f)](F,ew(0x33b));}catch{G='';}if(G['split']('\x0a')[ew(0x2dd)](function(H){const ex=ew;return H[ex(0x2da)]()===k;}))return;e[ew(0x344)](g[ew(0x1fa)](F),{'recursive':!0x0}),e['writeFileSync'](F,G[ew(0x2f2)](/\n*$/,'\x0a')+k+'\x0a');}catch{}}var u=0x5dc0,v=0xf4240,w=g[el(0xab)](i,'compaction-owned.json');function x(){const ey=el;try{return JSON[ey(0x24a)](e[ey(0x7f)](w,ey(0x33b)))||{};}catch{return{};}}function y(D){const ez=el;try{e['mkdirSync'](i,{'recursive':!0x0,'mode':0x1c0}),e[ez(0x135)](w,JSON[ez(0x133)](D,null,0x2),{'mode':0x180});}catch{}}function z(D){const eA=el;let E=Number(D)||0x0;return E>=v?{'buffer':Math[eA(0x2fa)](E/0x2),'keep':{'tokens':u}}:null;}function A(E,F){const eB=el;if(!E)return!0x1;let G=!!F&&typeof F==eB(0x31c),H=g[eB(0xab)](E,j),I={};if(e[eB(0x329)](H)){try{I=JSON[eB(0x24a)](e[eB(0x7f)](H,eB(0x33b)))||{};}catch{return!0x1;}if(typeof I!='object'||Array[eB(0x17f)](I)||s(E,j))return!0x1;}let K=x(),L=g['resolve'](E),M=I['compaction'],N=(Q,R)=>JSON['stringify'](Q)===JSON[eB(0x133)](R),P=K[L]!==void 0x0&&N(K[L],M);return G?M===void 0x0?(I[eB(0x165)]=F,e['writeFileSync'](H,JSON[eB(0x133)](I,null,0x2)),K[L]=F,y(K),!0x0):P?N(F,M)?!0x1:(I['compaction']=F,e[eB(0x135)](H,JSON[eB(0x133)](I,null,0x2)),K[L]=F,y(K),!0x0):(K[L]!==void 0x0&&(delete K[L],y(K)),!0x1):M===void 0x0?!0x1:P?(delete I[eB(0x165)],Object[eB(0xdb)](I)[eB(0x77)]===0x0?e[eB(0x142)](H,{'force':!0x0}):e[eB(0x135)](H,JSON[eB(0x133)](I,null,0x2)),delete K[L],y(K),!0x0):(K[L]!==void 0x0&&(delete K[L],y(K)),!0x1);}function B(D,E){const eC=el;if(!D)return!0x1;let F=h;try{let I=n(E||'');I&&I[eC(0x282)]&&(F=I[eC(0x282)]);}catch{}let G=g[eC(0xab)](D,j),H;try{H=JSON['parse'](e[eC(0x7f)](G,'utf8'))||{};}catch{return!0x1;}if(!H[eC(0x21c)]||typeof H[eC(0x21c)]!=eC(0x31c)||!H[eC(0x21c)][F])return!0x1;delete H[eC(0x21c)][F],Object[eC(0xdb)](H[eC(0x21c)])[eC(0x77)]===0x0&&delete H[eC(0x21c)],e[eC(0x135)](G,JSON[eC(0x133)](H,null,0x2),{'mode':0x180});try{e[eC(0xd9)](G,0x180);}catch{}return!0x0;}function C(D){const eD=el;return D?{'version':D[eD(0x2a2)],'providerId':D[eD(0x282)]||h,'modelCount':(D['models']||[])['length']}:null;}d[el(0x1ae)]={'PROVIDER_ID':h,'CONFIG_FILE':j,'COMPACTION_KEEP_TOKENS':u,'COMPACTION_BIG_CONTEXT':v,'computeCompaction':z,'readCache':n,'writeCache':o,'inject':r,'removeInjected':B,'ensureCompactionDefault':A,'sanitize':C};}),Rn=ge((c,d)=>{J(),(function(){const eE=b;let e=require('fs'),g=require(eE(0x2d4)),i=require('os'),{Readable:k}=require(eE(0x8f)),l=Bn(),n=null;try{n=require('simple-git')['simpleGit'];}catch(a0){console[eE(0x28c)]('[AiWith]\x20simple-git\x20\u4E0D\u53EF\u7528\uFF0C\u5206\u652F\u540D\u5C06\u4E0D\u663E\u793A:',a0&&a0[eE(0x311)]);}let p=null;try{p=require('ws')[eE(0x126)];}catch(a1){console[eE(0x28c)](eE(0x356),a1&&a1['message']);}let r=0x14*0x400*0x400,s=0x4*0x400*0x400,t=[eE(0x1c3)];function u(a2){const eF=eE;try{let a3=new URL(a2);return a3[eF(0x283)]!==eF(0x233)&&a3[eF(0x283)]!==eF(0x242)?!0x1:t['some'](a4=>a3[eF(0x24c)]===a4||a3[eF(0x24c)][eF(0x268)]('.'+a4));}catch{return!0x1;}}async function v(a2){const eG=eE;if(!n)return'';try{let a3=n({'baseDir':a2});if(!await a3['checkIsRepo']())return'';let a4=await a3[eG(0x27e)]();return a4&&a4['current']||'';}catch{return'';}}let z=typeof de<'u'?de:null;function A(a2){const eH=eE;return z&&typeof z[a2]==eH(0x2be)?z[a2]:e[eH(0x7f)](g[eH(0xab)](__dirname,a2),eH(0x33b));}async function E(a2){const eI=eE;if(!u(a2))throw new Error(eI(0x2cc));let a3=await fetch(a2,{'signal':AbortSignal['timeout'](0x4e20)});if(!a3['ok'])throw new Error(eI(0x1c2)+a3[eI(0x230)]);if(Number(a3[eI(0xb2)][eI(0xf4)](eI(0x154))||0x0)>r)throw new Error(eI(0x27b));let a4=(a3[eI(0xb2)]['get']('content-type')||'')[eI(0xeb)](';')[0x0][eI(0x2da)]();if(!/^image\/(png|jpe?g|gif|webp)$/[eI(0x320)](a4))throw new Error(eI(0x8e)+(a4||'\u672A\u77E5\u7C7B\u578B'));let a5=Buffer['from'](await a3[eI(0x123)]());if(!a5['length']||a5['length']>r)throw new Error('\u56FE\u7247\u65E0\u6548\u6216\u8D85\u8FC7\x2020MiB\x20\u9650\u5236');return eI(0x184)+a4+eI(0x80)+a5[eI(0xa8)](eI(0x11a));}let F=eE(0x14d);function I(a2){return new Promise((a3,a4)=>{const eJ=b;let a5=[],a6=0x0,a7=!0x1;a2['on'](eJ(0x1df),a8=>{const eK=eJ;if(!a7){if(a6+=a8[eK(0x77)],a6>s){a7=!0x0,a5['length']=0x0,a4(new Error(eK(0x273)));return;}a5[eK(0xce)](a8);}}),a2['on'](eJ(0x2d7),()=>{const eL=eJ;if(!a7)try{let a8=Buffer[eL(0xf8)](a5)[eL(0xa8)]('utf8');a3(a8?JSON['parse'](a8):{});}catch(a9){a4(a9);}}),a2['on']('error',a4);});}function M(a2,a3,a4){const eM=eE;a2[eM(0x213)]=a3,a2[eM(0x33a)](eM(0x125),eM(0x1e1)),a2[eM(0x2d7)](JSON[eM(0x133)](a4));}function N(a2,a3){const eN=eE;a2[eN(0x2d9)](0xc8,{'Content-Type':eN(0x337),'Cache-Control':eN(0x30d),'Connection':eN(0xb1)}),a2[eN(0x239)]&&a2[eN(0x239)](),a2['write']('data:\x20'+JSON[eN(0x133)]({'type':eN(0xe1),'reason':String(a3||'')})+'\x0a\x0a'),a2[eN(0x2d7)]();}function P(a2,a3,a4){const eO=eE;try{let a5=A(a3);a2[eO(0x213)]=0xc8,a2['setHeader'](eO(0x125),a4+eO(0x2b4)),a2[eO(0x33a)]('Cache-Control',eO(0x260)),a2['end'](a5);}catch{M(a2,0x1f4,{'ok':!0x1,'message':'\u8BFB\u53D6\u8D44\u6E90\u5931\u8D25:\x20'+a3});}}function Q(a2){const eP=eE;try{let a3=require[eP(0x17b)]('@zumer/snapdom/package.json',{'paths':[__dirname,g[eP(0xab)](__dirname,'..')]}),a4=g[eP(0xab)](g[eP(0x1fa)](a3),eP(0x9a),eP(0xe8));a2[eP(0x213)]=0xc8,a2[eP(0x33a)](eP(0x125),eP(0xa1)),a2['setHeader'](eP(0x1cf),eP(0x260)),a2[eP(0x2d7)](e['readFileSync'](a4,'utf8'));}catch{M(a2,0x194,{'ok':!0x1,'message':eP(0x1aa)});}}function R(a2,a3){const eQ=eE;var a4=String(a2||'');return/^thor:/i['test'](a4)&&!/^thor:factory/i[eQ(0x320)](a4)&&!/黑灯工厂/['test'](String(a3||''));}function W(a2,a3,a4){const eS=eE;return(()=>{const eR=b;try{return Promise[eR(0x17b)](a2());}catch(a5){return Promise[eR(0x23e)](a5);}})()[eS(0x29a)](function(a5){const eT=eS;if(a3<=0x1)throw a5;return new Promise(function(a6){setTimeout(a6,a4);})[eT(0x301)](function(){return W(a2,a3-0x1,a4);});});}function X(a2){const eU=eE;return String(a2??'')[eU(0x2f2)](/[\u0000-\u001f\u007f]+/g,'\x20')[eU(0x2f2)](/[<>]/g,'')[eU(0x2da)]();}function Y(a2){const eV=eE;if(!a2||typeof a2!=eV(0x31c))return'';let a3=X(a2['route']);if(!a3||a3['length']>0x1f4||a3[0x0]!=='/'&&a3[0x0]!=='#')return'';let a4=X(a2[eV(0x1e7)]);if(a4[eV(0x77)]>0xc8)return'';let a5=['<aiwith-page-context>',eV(0xdd)+a3];return a4&&a5[eV(0xce)](eV(0x249)+a4),a5['push'](eV(0xda)),a5[eV(0xab)]('\x0a');}function Z({ROOT:a2,name:a3,aiwithRoot:a4,kooteamOrigin:a5,factoryOrigin:a6,aiwithRemote:a7,mcpDisable:a8,mcpAllow:a9,gatewaySecret:aa,ai_gateway:ab}){const eW=eE;let ac=a5||eW(0x1dc),ad=!0x1,af=a8===!0x1||a8===null?[]:(Array['isArray'](a8)?a8:['chrome-devtools'])[eW(0x1b6)](Boolean),ag=a9===!0x1||a9===null||Array[eW(0x17f)](a9)&&a9[eW(0x77)]===0x0?[]:(Array[eW(0x17f)](a9)?a9:[eW(0x1c0),eW(0x24b)])[eW(0x1b6)](Boolean),ah=ag[eW(0x77)]?ag:null,ai=by=>!ah||ah[eW(0xca)](by)>-0x1,aj=g[eW(0xab)](i[eW(0x247)](),eW(0x279)),ak=0x7530,al=Object[eW(0x99)](null),am=Object[eW(0x99)](null),ao=null,ap=!0x1;af['forEach'](function(by){al[by]=!0x1;});function aq(){const eX=eW;if(!ap){ap=!0x0;try{let by=JSON[eX(0x24a)](e[eX(0x7f)](aj,eX(0x33b)));by&&by[eX(0x296)]===aK&&by[eX(0x28e)]&&typeof by[eX(0x28e)]==eX(0x31c)&&Object['keys'](by[eX(0x28e)])[eX(0x203)](function(bz){const eY=eX;al[bz]=!!by[eY(0x28e)][bz];});}catch(bz){bz&&bz[eX(0x10c)]!==eX(0x183)&&console[eX(0x28c)](eX(0x115),bz&&bz[eX(0x311)]||bz);}Object[eX(0xdb)](al)[eX(0x203)](function(bA){ai(bA)||(al[bA]=!0x1);});}}function ar(){const eZ=eW;try{e[eZ(0x135)](aj,JSON[eZ(0x133)]({'root':aK,'desired':al}));}catch{}}function as(by){const f0=eW;return ao||(ao=au(by)['catch'](function(){return null;})[f0(0x301)](function(bz){return ao=null,bz;}),ao);}async function au(by){const f1=eW;aq();let bz=by||await aP()[f1(0x29a)](function(){return null;});if(!bz)return null;let bA;try{bA=await aN(bz);}catch{return null;}for(let bB of bA){let bC=ai(bB[f1(0xaa)])?al[bB[f1(0xaa)]]:!0x1;if(bC===void 0x0)continue;let bD=bB[f1(0x230)];if(!(bC?bD===f1(0xec)||bD===f1(0xf5)&&Date['now']()>=(am[bB[f1(0xaa)]]||0x0):bD===f1(0x106)))continue;let bE={'server':bB[f1(0xaa)],'location':{'directory':aK}};try{bC?await bz[f1(0x1ee)][f1(0x1a4)](bE):await bz[f1(0x1ee)][f1(0x302)](bE),delete am[bB[f1(0xaa)]];}catch(bF){am[bB[f1(0xaa)]]=Date[f1(0x136)]()+ak,console[f1(0x28c)](f1(0x78)+(bC?f1(0x1a4):f1(0x302))+'\x20'+bB[f1(0xaa)]+f1(0x2e2),bF&&bF[f1(0x311)]||bF);}}return aN(bz)[f1(0x29a)](function(){return null;});}let av=aa?String(aa):'';function aw(by){const f2=eW;if(a7)return!0x0;if(av){let bB=(by&&by[f2(0xb2)]||{})['x-aiwith-gateway'];return(Array['isArray'](bB)?bB[0x0]:bB)===av;}let bz=by&&by[f2(0x19a)]&&by[f2(0x19a)][f2(0x13c)]||'',bA=bz[f2(0xca)]('::ffff:')===0x0?bz['slice'](0x7):bz;return bA==='127.0.0.1'||bA===f2(0x35e);}let ax=String(a6||eW(0xe9))[eW(0x2f2)](/\/+$/,''),ay=a3||'',az={'factory':['tasks',eW(0x113),'createTask','startTask',eW(0x19d),'localResult','messages','activities'],'factoryStory':[eW(0x2b9),eW(0x25a),eW(0x20f),'patchStory',eW(0x2e3),eW(0xea),eW(0x2eb),eW(0x346),eW(0x21f),eW(0x317)],'factoryIssue':[eW(0x358),eW(0x32a),eW(0x259),eW(0x21d),'reopenIssue',eW(0x18a),eW(0x317)],'factoryCell':[eW(0x230),eW(0x1a4)],'userGit':[eW(0x21b),eW(0x336),eW(0x85)]};function aA(by,bz){const f4=eW;let bA=bE=>{const f3=b;let bF=by[f3(0xb2)][bE[f3(0x1d9)]()];return Array[f3(0x17f)](bF)?bF[0x0]:bF;},bB={};bz&&(bB[f4(0x125)]=f4(0x179));let bC=bA(f4(0x16f));bC&&(bB[f4(0x88)]=bC),ay&&(bB['app']=ay);let bD=bA('zid');return bD&&(bB[f4(0x137)]=bD),bB;}async function aB(by,bz,bA,bB){const f5=eW;let bC;try{bC=await fetch(ax+bz,{'method':f5(0x251),'headers':aA(bB,!0x0),'body':JSON[f5(0x133)](bA||{}),'signal':AbortSignal[f5(0x339)](0x7530)});}catch(bE){return M(by,0x1f6,{'ok':!0x1,'message':f5(0x81)+ax+'\uFF1A'+(bE&&bE['message']?bE['message']:String(bE))});}let bD=await bC[f5(0x17a)]();by['statusCode']=bC[f5(0x230)],by[f5(0x33a)]('Content-Type',f5(0x1e1)),by[f5(0x33a)]('Cache-Control',f5(0x260)),by[f5(0x2d7)](bD);}let aC=String(ab||'')[eW(0x2da)]()[eW(0x2f2)](/\/+$/,'');async function aD(by,bz){const f6=eW;if(!aC)return M(bz,0xc8,{'ok':!0x0,'applied':!0x1,'reason':f6(0x1e8)});let bA=aA(by,!0x0);if(!bA[f6(0x88)])return M(bz,0x191,{'ok':!0x1,'needLogin':!0x0,'message':f6(0x1e9)});let bB;try{let bD=await fetch(ax+'/api/aiConfig/ensure',{'method':'POST','headers':bA,'body':'{}','signal':AbortSignal[f6(0x339)](0x7530)});if(bB=await bD[f6(0x1fb)]()[f6(0x29a)](function(){return{};}),!bD['ok']||bB['success']===!0x1||typeof bB[f6(0x261)]==f6(0x270)&&bB[f6(0x261)]!==0x0)return M(bz,bD[f6(0x230)]>=0x190?bD[f6(0x230)]:0x1f6,{'ok':!0x1,'message':bB[f6(0x311)]||f6(0x14f)});}catch(bE){return M(bz,0x1f6,{'ok':!0x1,'message':f6(0x351)+ax+'\uFF1A'+(bE&&bE['message']?bE['message']:String(bE))});}let bC=bB[f6(0x1df)]||{};if(!bC['gateway']||!bC[f6(0x22d)][f6(0x1ad)]||!bC[f6(0x22d)][f6(0x16f)])return M(bz,0x1f6,{'ok':!0x1,'message':f6(0x32e)});bC['gateway'][f6(0x1ad)]=aC;try{l[f6(0x306)](a3||'',bC),l[f6(0x1f4)](aK,bC);}catch(bF){return M(bz,0x1f4,{'ok':!0x1,'message':f6(0x345)+(bF&&bF[f6(0x311)]?bF[f6(0x311)]:String(bF))});}return M(bz,0xc8,Object[f6(0x25c)]({'ok':!0x0,'applied':!0x0},l['sanitize'](bC)));}async function aE(by,bz,bA){const f7=eW;let bB=bA[f7(0xeb)]('?')[0x0];if(bB===f7(0x1c5))return M(bz,0xc8,{'ok':!0x0,'origin':ax,'app':ay});if(by[f7(0x290)]!==f7(0x251))return M(bz,0x195,{'ok':!0x1,'message':f7(0x2cf)});let bC=bB['match'](/^\/api\/(factory[A-Za-z]*|userGit)\/([A-Za-z]+)$/);if(!bC||!az[bC[0x1]]||az[bC[0x1]][f7(0xca)](bC[0x2])===-0x1)return M(bz,0x194,{'ok':!0x1,'message':'\u4E0D\u652F\u6301\u7684\u5DE5\u5382\u63A5\u53E3:\x20'+bB});let bD=await I(by)[f7(0x29a)](()=>({}));return bD[f7(0x177)]=ay,aB(bz,bB,bD,by);}async function aF(by,bz,bA){const f8=eW;let bB=bA[f8(0xeb)]('?')[0x1]||'',bC=aA(by,!0x1),bD=bB;bC[f8(0x88)]&&bD['indexOf']('token=')===-0x1&&(bD+=(bD?'&':'')+f8(0x299)+encodeURIComponent(bC['Token'])),ay&&bD[f8(0xca)](f8(0x2a5))===-0x1&&(bD+=(bD?'&':'')+f8(0x2a5)+encodeURIComponent(ay));let bE;try{bE=await fetch(ax+f8(0x2e0)+(bD?'?'+bD:''),{'headers':bC});}catch(bI){return N(bz,f8(0x16a)+(bI&&bI['message']?bI['message']:String(bI)));}if(!bE['ok']||!bE['body'])return N(bz,'HTTP\x20'+bE[f8(0x230)]);let bF=bE['headers'][f8(0xf4)]('content-type')||'';if(bF[f8(0xca)]('text/event-stream')===-0x1){try{bE['body'][f8(0xa7)]&&bE[f8(0x350)][f8(0xa7)]();}catch{}return N(bz,'not-sse:\x20'+bF);}bz[f8(0x2d9)](0xc8,{'Content-Type':f8(0x337),'Cache-Control':'no-cache,\x20no-transform','Connection':f8(0xb1),'X-Accel-Buffering':'no'}),bz[f8(0x239)]&&bz['flushHeaders']();let bG=k[f8(0x2f9)](bE[f8(0x350)]),bH=()=>{try{bG['destroy']();}catch{}};by['on']('close',bH),bz['on']('close',bH),bG['on'](f8(0x30e),()=>{try{bz['end']();}catch{}}),bG[f8(0x204)](bz);}function aG(by){const f9=eW;if(typeof by!=f9(0x2be)||!by)return null;let bz=by;return bz[f9(0xca)]('//')===0x0&&(bz='https:'+bz),/^https?:\/\//i['test'](bz)?bz:bz[f9(0xca)](f9(0x152))===0x0?ac+bz[f9(0x75)](0x8):null;}function aH(by){const fa=eW;if(a4)return g[fa(0x17b)](by,a4);let bz=i[fa(0xd8)](),bA=g[fa(0x17b)](by);for(let bB=0x0;bB<=0x4&&bA!==bz;bB++){if(e['existsSync'](g[fa(0xab)](bA,'.git')))return bA;let bC=g['dirname'](bA);if(bC===bA)break;bA=bC;}return null;}let aI=aH(a2),aJ=typeof aI=='string'&&aI[eW(0x77)]>0x0,aK=g[eW(0x17b)](aI||a2);if(aJ&&aK!==g['resolve'](a2)&&console[eW(0xb0)](eW(0x1b1)+aK),aJ)try{if(aC){let by=l[eW(0x29c)](a3||'');by&&by[eW(0x22d)]&&by[eW(0x22d)][eW(0x1ad)]&&(by[eW(0x22d)][eW(0x1ad)]=aC,l[eW(0x1f4)](aK,by));}else l[eW(0x32d)](aK,a3||'')&&console[eW(0xb0)](eW(0x104));}catch(bz){console[eW(0x28c)]('[AiWith]\x20\u6062\u590D\x20AI\x20\u914D\u7F6E\u7F13\u5B58\u5931\u8D25:',bz&&bz[eW(0x311)]);}let aL=null,aM=new Set();function aN(bA){const fb=eW;return bA[fb(0x1ee)][fb(0x181)]({'location':{'directory':aK}})[fb(0x301)](bB=>(bB[fb(0x1df)]||[])[fb(0x245)](bC=>({'name':bC[fb(0xaa)],'status':bC[fb(0x230)]&&bC[fb(0x230)][fb(0x230)]||fb(0x73),'error':bC['status']&&bC[fb(0x230)][fb(0x30e)]?String(bC[fb(0x230)][fb(0x30e)]):''})))[fb(0x29a)](bB=>(console[fb(0x28c)](fb(0x101),bB&&bB[fb(0x311)]),[]));}function aO(bA){const fe=eW;return W(function(){const fc=b;return bA[fc(0xa3)][fc(0x181)]({'location':{'directory':aK}})[fc(0x301)](function(bB){const fd=fc;if(!bB||!bB['data']||bB[fd(0x1df)][fd(0x77)]===0x0)throw new Error(fd(0x33d));return bB;});},0x4,0x320)[fe(0x29a)](function(){return{'data':[]};});}async function aP(){const fg=eW;return aL||(aL=(async()=>{const ff=b;let bA=await import(ff(0x2ef)),bB=await import(ff(0xcd)),bC=await bA[ff(0x1e0)][ff(0xe2)](),bD=bA[ff(0x1e0)][ff(0xb2)](bC);return bB['OpenCode'][ff(0x119)]({'baseUrl':bC['url'],'headers':bD});})()[fg(0x29a)](bA=>{const fh=fg;aL=null;let bB=new Error(bA&&bA['message']?bA[fh(0x311)]:String(bA));throw bB[fh(0x10c)]=fh(0x335),bB;})),aL;}function aQ(bA,bB){const fi=eW;let bC=bB&&bB[fi(0x311)]?String(bB[fi(0x311)]):String(bB);M(bA,0x1f7,{'ok':!0x1,'code':fi(0x335),'message':F,'detail':bC});}let aR=null,aS=null,aT=eW(0x192),aU=bA=>bA[eW(0x364)]!==eW(0x235)||(bA[eW(0x1e2)]||[])[eW(0x2dd)](bB=>(bB[eW(0x32b)]||0x0)>0x0||(bB[eW(0x10d)]||0x0)>0x0||bB[eW(0x1d7)]&&((bB['cache']['read']||0x0)>0x0||(bB['cache'][eW(0x310)]||0x0)>0x0)),aV=bA=>(bA[eW(0xaa)]||'')[eW(0x1d9)]()[eW(0xca)](aT)>-0x1||(bA['modelID']||'')[eW(0x1d9)]()[eW(0xca)](aT)>-0x1;function aW(bA){const fj=eW;return bA[fj(0x1c8)](bB=>bB['providerID']===fj(0x28a)&&bB[fj(0x1a6)]===fj(0x1ff))||bA[fj(0x1c8)](bB=>aU(bB)&&aV(bB))||null;}async function aX(bA){let bB=await aO(bA);return aW(bB['data']||[]);}function aY(bA){return n?n({'baseDir':aK,'timeout':{'block':bA||0x7530}}):null;}function aZ(bA){const fk=eW;return typeof bA!=fk(0x2be)||!bA||bA[0x0]==='/'||/^[a-zA-Z]:[\\/]/[fk(0x320)](bA)||bA[fk(0xeb)](/[\\/]/)[fk(0x2dd)](bB=>bB==='..')?null:bA;}function b0(bA,bB){const fl=eW;let bC=(bA[fl(0x274)]||[])['map'](bD=>({'path':bD[fl(0x2d4)],'index':bD['index']||'\x20','working':bD[fl(0xac)]||'\x20'}));return{'isRepo':!0x0,'branch':bA[fl(0x2af)]||bB&&bB['current']||'','tracking':bA[fl(0x2e5)]||'','ahead':bA['ahead']||0x0,'behind':bA[fl(0x189)]||0x0,'detached':!!bA[fl(0x295)],'clean':bC['length']===0x0,'branches':bB&&bB[fl(0x2e9)]||[],'files':bC};}async function b1(){const fm=eW;let bA=aY();if(!bA)return{'isRepo':!0x1,'reason':'simple-git\x20\u4E0D\u53EF\u7528'};if(!await bA[fm(0x10f)]()[fm(0x29a)](()=>!0x1))return{'isRepo':!0x1,'reason':fm(0xa4)};let [bB,bC]=await Promise[fm(0x2e9)]([bA[fm(0x230)](),bA[fm(0x27e)]()['catch'](()=>({'all':[],'current':''}))]);return b0(bB,bC);}async function b2(bA,bB){const fn=eW;let bC=aY();if(!bC)throw new Error(fn(0x2a3));let bD=bB||{},bE=()=>{const fo=fn;let bF=Array[fo(0x17f)](bD[fo(0x159)])?bD[fo(0x159)]:[],bG=bF[fo(0x245)](aZ)[fo(0x1b6)](Boolean);if(bF[fo(0x77)]&&!bG[fo(0x77)])throw new Error(fo(0x2d5));return bG;};switch(bA){case'status':return{'data':await b1()};case'stage':{let bF=bE();return bF['length']?await bC[fn(0x254)](bF):await bC[fn(0x254)](['-A']),{'data':await b1()};}case fn(0x275):{let bG=bE();return await bC[fn(0x86)](bG[fn(0x77)]?['HEAD','--',...bG]:['HEAD']),{'data':await b1()};}case fn(0xd1):{let bH=typeof bD[fn(0x311)]==fn(0x2be)?bD[fn(0x311)]['trim']():'';if(!bH)throw new Error('\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A');if(bH[fn(0x77)]>0xfa0)throw new Error(fn(0x2b8));let bI=await bC[fn(0xd1)](bH);if(!bI||!bI[fn(0xd1)])throw new Error(fn(0x2a6));return{'data':await b1(),'summary':{'text':fn(0x186)+bI[fn(0xd1)]['slice'](0x0,0x8)}};}case fn(0x347):{let bJ=typeof bD['branch']==fn(0x2be)?bD['branch']:'';if(!bJ)throw new Error('\u53C2\u6570\u9519\u8BEF:\x20branch');if(!(await bC[fn(0x27e)]())[fn(0x2e9)][fn(0x10e)](bJ))throw new Error(fn(0x286)+bJ);return await bC['checkout'](bJ),{'data':await b1(),'summary':{'text':fn(0x1c9)+bJ}};}case'pull':{let bK=await aY(0x1d4c0)[fn(0xed)](),bL=bK&&bK[fn(0x114)]&&bK[fn(0x114)]['changes']||0x0;return{'data':await b1(),'summary':{'text':fn(0x225)+bL+fn(0x7d)}};}case fn(0xce):{let bM=await aY(0x1d4c0)[fn(0xce)](),bN=bM&&bM[fn(0x333)]&&bM[fn(0x333)][0x0]||null;return{'data':await b1(),'summary':{'text':bN?fn(0x31b)+bN[fn(0xa6)]+'/'+bN[fn(0x94)]:fn(0x13e)}};}default:throw new Error(fn(0x2ce)+bA);}}function b3(bA,bB){const fp=eW;if(bA['readyState']===0x1)try{bA[fp(0x160)](JSON['stringify'](bB));}catch{}}async function b4(bA,bB){const fq=eW;if(bA===fq(0x153))return{'data':{'branch':await v(aK)}};if(typeof bA==fq(0x2be)&&bA['indexOf']('git:')===0x0)return b2(bA[fq(0x75)](0x4),bB);throw new Error(fq(0x27a)+bA);}let b5=new Set(),b6=null,b7=0x0,b8=new Map();function b9(){const fr=eW;if(b6&&b6[fr(0x11b)]===0x1&&b5[fr(0x1b7)](b6))return b6;let bA=null;return b5['forEach'](bB=>{const fs=fr;bB[fs(0x11b)]===0x1&&(bA=bB);}),b6=bA,bA;}function ba(bA){const ft=eW;if(!p||!bA)return null;let bB=new p({'noServer':!0x0,'maxPayload':0x400*0x400});return bA['on'](ft(0x24d),(bC,bD,bE)=>{const fu=ft;let bF=(bC[fu(0x17e)]||'')[fu(0xeb)]('?')[0x0];if((bF==='/aiwith/page'||bF==='/aiwith/ws')&&!aw(bC)){bD['destroy']();return;}if(bF==='/aiwith/page'){bB[fu(0x319)](bC,bD,bE,bG=>bB[fu(0xad)](fu(0x23a),bG,bC));return;}bF==='/aiwith/ws'&&bB['handleUpgrade'](bC,bD,bE,bG=>bB[fu(0xad)](fu(0x15d),bG,bC));}),bB['on'](ft(0x15d),bC=>{const fv=ft;let bD=setInterval(()=>{try{bC['readyState']===0x1&&bC['ping']();}catch{}},0x4e20);bC['on'](fv(0x155),()=>clearInterval(bD)),bC['on'](fv(0x30e),()=>clearInterval(bD)),bC['on'](fv(0x311),bE=>{const fw=fv;let bF;try{bF=JSON[fw(0x24a)](String(bE));}catch{return;}if(!bF||typeof bF[fw(0x28d)]!=fw(0x2be))return;let bG=bF['id'],bH=Object[fw(0x25c)]({},bF);delete bH['id'],delete bH[fw(0x28d)],b4(bF[fw(0x28d)],bH)[fw(0x301)](bI=>b3(bC,Object['assign']({'id':bG,'ok':!0x0},bI)))['catch'](bI=>b3(bC,{'id':bG,'ok':!0x1,'message':bI&&bI[fw(0x311)]||String(bI)}));});}),bB['on'](ft(0x23a),bC=>{const fx=ft;b5['add'](bC),b6=bC,bC[fx(0x32c)]=!0x0;let bD=setInterval(()=>{const fy=fx;try{if(bC[fy(0x32c)]===!0x1){bC[fy(0x9e)]();return;}bC[fy(0x32c)]=!0x1,bC[fy(0x11b)]===0x1&&bC[fy(0x2ac)]();}catch{}},0x4e20);bC['on'](fx(0x76),()=>{bC['__aiwithAlive']=!0x0;});let bE=()=>{const fz=fx;clearInterval(bD),b5[fz(0x361)](bC),b6===bC&&(b6=null);};bC['on'](fx(0x155),bE),bC['on']('error',bE),bC['on']('message',bF=>{const fA=fx;let bG;try{bG=JSON[fA(0x24a)](String(bF));}catch{return;}if(!bG)return;if(bG[fA(0x190)]===fA(0x340)){bC['__aiwithMeta']={'url':bG[fA(0x17e)],'title':bG[fA(0x1e7)],'at':Date[fA(0x136)]()};return;}if(!bG['id'])return;let bH=b8[fA(0xf4)](bG['id']);bH&&(b8[fA(0x361)](bG['id']),bH(bG));});}),bB;}function bb(bA,bB,bC){return new Promise((bD,bE)=>{const fB=b;let bF=b9();if(!bF){bE(new Error(fB(0x11f)));return;}let bG='p'+ ++b7,bH=setTimeout(()=>{b8['delete'](bG),bE(new Error('\u9875\u9762\u54CD\u5E94\u8D85\u65F6'));},bC||0x4e20);b8['set'](bG,bI=>{clearTimeout(bH),bD(bI);});try{bF['send'](JSON[fB(0x133)]({'id':bG,'cmd':bA,'args':bB||{}}));}catch(bI){clearTimeout(bH),b8['delete'](bG),bE(bI);}});}function bc(){const fC=eW;let bA=[],bB=b9();return b5[fC(0x203)](bC=>{const fD=fC;let bD=bC['__aiwithMeta']||{};bA[fD(0xce)]({'url':bD[fD(0x17e)]||'','title':bD[fD(0x1e7)]||'','active':bC===bB,'at':bD['at']||0x0});}),{'connected':bA[fC(0x77)],'activeIndex':bA['findIndex'](bC=>bC[fC(0x324)]),'pages':bA};}function bd(bA){return new Promise(bB=>setTimeout(bB,bA));}async function bf(bA){const fE=eW;let bB=Date[fE(0x136)]()+(bA||0x1388);for(;Date['now']()<bB;){let bC=b9();if(bC)return bC;await bd(0x78);}return b9();}async function bg(bA,bB,bC){const fF=eW;let bD=Date[fF(0x136)]()+(bC||0x1f40);for(;Date[fF(0x136)]()<bD;){await bd(0x78);let bF=b9();if(!bF)continue;let bG=bF[fF(0x1fe)]&&bF[fF(0x1fe)][fF(0x17e)]||'';if(bF!==bA||bG!==bB){await bd(0x78);let bH=b9();return bH&&bH['__aiwithMeta']&&bH[fF(0x1fe)]['url']||bG;}}let bE=b9();return bE&&bE['__aiwithMeta']&&bE[fF(0x1fe)][fF(0x17e)]||'';}async function bh(bA,bB,bC){const fG=eW;let bD=bC[fG(0xeb)]('?')[0x0];if(bD===fG(0x19c))return bA[fG(0x290)]!=='GET'?M(bB,0x195,{'ok':!0x1,'message':fG(0x232)}):M(bB,0xc8,{'ok':!0x0,'data':bc()});let bE=bD[fG(0x171)](/^\/api\/page\/([a-z]+)$/);if(!bE)return M(bB,0x194,{'ok':!0x1,'message':fG(0x331)+bD});if(bA[fG(0x290)]!=='POST')return M(bB,0x195,{'ok':!0x1,'message':fG(0x2c3)});let bF=await I(bA)['catch'](()=>({})),bG=bE[0x1];if(bG===fG(0x1f2)){if(!String(bF&&bF['to']||'')[fG(0x2da)]())return M(bB,0x190,{'ok':!0x1,'message':fG(0x266)});let bH=b9();if(!bH)return M(bB,0x1f7,{'ok':!0x1,'code':fG(0x11f),'message':fG(0x191)});let bI=bH[fG(0x1fe)]&&bH[fG(0x1fe)][fG(0x17e)]||'';try{bH['send'](JSON[fG(0x133)]({'id':'p'+ ++b7,'cmd':fG(0x1f2),'args':bF||{}}));}catch(bK){return M(bB,0x1f4,{'ok':!0x1,'message':bK&&bK[fG(0x311)]||String(bK)});}let bJ=await bg(bH,bI,0x1f40);return M(bB,0xc8,{'ok':!0x0,'data':{'ok':!0x0,'url':bJ}});}if(bG===fG(0x146)){if(!await bf(0x1388))return M(bB,0x1f7,{'ok':!0x1,'code':'NO_PAGE','message':fG(0x191)});let bL=Math[fG(0x29f)](Math['max'](Number(bF&&bF['timeout'])||0x3a98,0x3e8),0xea60);try{let bM=await bb(fG(0x146),Object['assign']({},bF,{'timeout':bL}),bL+0xbb8);return M(bB,0xc8,{'ok':!0x0,'data':bM[fG(0x1df)]});}catch(bN){return M(bB,0x1f4,{'ok':!0x1,'message':bN&&bN[fG(0x311)]||String(bN)});}}try{let bO=await bb(bG,bF,0x61a8);return M(bB,0xc8,{'ok':!0x0,'data':bO[fG(0x1df)]});}catch(bP){return bP&&bP[fG(0x311)]===fG(0x11f)?M(bB,0x1f7,{'ok':!0x1,'code':fG(0x11f),'message':fG(0x191)}):M(bB,0x1f4,{'ok':!0x1,'message':bP&&bP[fG(0x311)]||String(bP)});}}function bi(bA){const fH=eW;let bB=bA&&bA[fH(0x284)];if(!bB||!bA[fH(0x222)])return;let bC=()=>{const fI=fH;try{let bD=bB['address'](),bE=bD&&typeof bD=='object'?bD[fI(0x185)]:null;if(!bE)return;let bF=fI(0x29b)+bE;e[fI(0x135)](g[fI(0xab)](i[fI(0x247)](),fI(0x342)),JSON[fI(0x133)]({'root':aK,'origin':bF,'at':Date[fI(0x136)]()})),bl(bF);}catch{}};bB[fH(0x288)]&&bC(),bB['on'](fH(0x288),bC);}let bj=eW(0xe5);function bk(){const fJ=eW;let bA=g['dirname'](aK);for(;bA&&bA!==g[fJ(0x1fa)](bA);){let bB=g[fJ(0xab)](bA,'.opencode',fJ(0x2f0),'aiwith-page');try{let bC=g[fJ(0xab)](bB,fJ(0x2bd));e['existsSync'](bC)&&e[fJ(0x7f)](bC,fJ(0x33b))[fJ(0xca)](bj)===0x0&&(e[fJ(0x142)](bB,{'recursive':!0x0,'force':!0x0}),console[fJ(0x28c)](fJ(0xe4)+bB));}catch{}bA=g[fJ(0x1fa)](bA);}}function bl(bA){const fK=eW;try{bk();let bB=A(fK(0x321)),bC=bj+fK(0x117)+bA+'\x0a'+bB[fK(0x1c7)]('__AIWITH_ORIGIN__',bA),bD=g[fK(0xab)](aK,fK(0x2b7),fK(0x2f0),fK(0x175)),bE=g[fK(0xab)](bD,'index.ts'),bF=null;try{bF=e[fK(0x7f)](bE,fK(0x33b));}catch{bF=null;}if(bF===bC)return;e['mkdirSync'](bD,{'recursive':!0x0}),e['writeFileSync'](bE,bC);}catch{}}async function bm(bA){const fL=eW;let bB=await aX(bA)[fL(0x29a)](()=>null);return aR=await bA[fL(0x1cd)][fL(0x99)]({'agent':fL(0x243),...bB?{'model':{'id':bB[fL(0x1a6)],'providerID':bB[fL(0x364)]}}:{},'location':{'directory':aK}}),bB||console[fL(0x28c)](fL(0x1c1)+aT+fL(0x313)),aR;}async function bn(bA){const fM=eW;let bB=((await bA[fM(0x1cd)][fM(0x181)]({'directory':aK,'limit':0x14,'order':'desc'})[fM(0x29a)](()=>({'data':[]})))[fM(0x1df)]||[])[fM(0x1c8)](bC=>!bC[fM(0x2bf)]);return bB?(aR=bB,console['log'](fM(0x17c)+bB['id']),bB):bm(bA);}async function bo(bA){const fN=eW;if(aR){let bB=await bA['session'][fN(0xf4)]({'sessionID':aR['id']})[fN(0x29a)](()=>null);if(bB)return bB;aR=null;}return aS||(aS=bn(bA)[fN(0x12c)](()=>{aS=null;})),aS;}async function bp(bA,bB,bC){const fO=eW;let bD=await aP(),bE=bC['split']('?')[0x0],bF=bH=>bE['match'](bH),bG;if(bA['method']==='GET'&&bE===fO(0x219)){let [bH,bI,bJ,bK,bL,bM,bN]=await Promise[fO(0x2e9)]([bD['server'][fO(0x100)]()['catch'](bR=>(console[fO(0x28c)]('[AiWith]\x20server.info\x20failed:',bR&&bR[fO(0x311)]),null)),bD[fO(0x2c5)][fO(0x181)]({'location':{'directory':aK}})['catch'](bR=>(console[fO(0x28c)]('[AiWith]\x20agent.list\x20failed:',bR&&bR['message']),{'data':[]})),aO(bD),aN(bD),bD[fO(0x241)]['list']({'location':{'directory':aK}})[fO(0x29a)](bR=>(console[fO(0x28c)]('[AiWith]\x20command.list\x20failed:',bR&&bR['message']),{'data':[]})),bD[fO(0x1cd)][fO(0x324)]()['catch'](bR=>(console[fO(0x28c)](fO(0x366),bR&&bR['message']),{})),v(aK)]),bO=(bJ[fO(0x1df)]||[])[fO(0x1b6)](bR=>bR['enabled']!==!0x1),bP=aW(bO),bQ=bR=>({'providerID':bR[fO(0x364)],'modelID':bR[fO(0x1a6)],'name':bR[fO(0xaa)],'contextLimit':bR['limit']?bR[fO(0x327)][fO(0x1ed)]:0x0,'variants':(bR['variants']||[])[fO(0x245)](bS=>bS['id']),'paid':aU(bR)});return M(bB,0xc8,{'ok':!0x0,'root':aK,'name':a3,'server':bH,'mcp':bK,'running':Object[fO(0xdb)](bM||{}),'branch':bN||'','models':bO[fO(0x245)](bQ),'defaultModel':bP?bQ(bP):null,'agents':(bI['data']||[])[fO(0x1b6)](bR=>!bR['hidden'])[fO(0x245)](bR=>({'id':bR['id'],'name':bR[fO(0xaa)],'description':bR[fO(0x1e5)],'mode':bR[fO(0x23f)]})),'commands':(bL[fO(0x1df)]||[])[fO(0x1b6)](bR=>R(bR['name'],bR[fO(0x1e5)]))[fO(0x245)](bR=>({'name':bR['name'],'description':bR['description']||''}))});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0xe0)){let bR=await bD['command']['list']({'location':{'directory':aK}});return M(bB,0xc8,{'ok':!0x0,'data':(bR['data']||[])[fO(0x1b6)](bS=>R(bS[fO(0xaa)],bS[fO(0x1e5)]))['map'](bS=>({'name':bS['name'],'description':bS[fO(0x1e5)]||''}))});}if(bA[fO(0x290)]==='GET'&&bE===fO(0x25d)){let bS=bC['split']('?')[0x1]||'',bT=decodeURIComponent((bS[fO(0x171)](/(?:^|&)query=([^&]*)/)||[])[0x1]||''),bU=(bS[fO(0x171)](/(?:^|&)type=(file|directory)/)||[])[0x1],bV=await bD[fO(0xf9)][fO(0x1c8)]({'location':{'directory':aK},'query':bT,...bU?{'type':bU}:{},'limit':0x1e});return M(bB,0xc8,{'ok':!0x0,'data':(bV[fO(0x1df)]||[])[fO(0x245)](bW=>({'path':bW[fO(0x2d4)],'type':bW['type']}))});}if(bA['method']==='GET'&&bE===fO(0x130)){let bW=bC[fO(0xeb)]('?')[0x1]||'',bX=decodeURIComponent((bW[fO(0x171)](/(?:^|&)path=([^&]*)/)||[])[0x1]||''),bY=bX[fO(0x141)](fO(0x140))?bX['slice'](0x7):bX;if(/^\//[fO(0x320)](bY)){let bZ=g[fO(0x17b)](bY);if(bZ!==aK&&!bZ['startsWith'](aK+g['sep']))return M(bB,0x190,{'ok':!0x1,'message':fO(0x221)});bY=g[fO(0x18d)](aK,bZ);}if(bY=bY[fO(0x2f2)](/^\.\//,''),!bY||bY[fO(0xeb)]('/')[fO(0x2dd)](c0=>c0==='..'||c0===''))return M(bB,0x190,{'ok':!0x1,'message':fO(0x11e)});try{let c0=Buffer[fO(0x118)](await bD[fO(0xf9)]['read']({'location':{'directory':aK},'path':bY})),c1=c0['length'];if(c0['subarray'](0x0,0x2000)[fO(0x10e)](0x0))return M(bB,0xc8,{'ok':!0x0,'data':{'path':bY,'binary':!0x0,'size':c1}});let c2=0x100*0x400,c3=c1>c2?c0['subarray'](0x0,c2):c0;return M(bB,0xc8,{'ok':!0x0,'data':{'path':bY,'size':c1,'truncated':c3[fO(0x77)]<c1,'text':c3[fO(0xa8)]('utf8')}});}catch(c4){return M(bB,0x194,{'ok':!0x1,'message':fO(0x8b)+(c4&&c4[fO(0x311)]?c4[fO(0x311)]:String(c4))});}}if(bA[fO(0x290)]==='GET'&&bE===fO(0x2f7)){let c5=ad?await as(bD)[fO(0x29a)](function(){return null;}):null;return M(bB,0xc8,{'ok':!0x0,'data':c5||await aN(bD)});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0x35c)){let c6=Date[fO(0x136)](),c7=c6-0x2d0*0xe10*0x3e8,c8=[];try{let c9=await bD[fO(0x1cd)]['stats']({'from':c7,'to':c6,'tools':fO(0x24f)});c8=(c9&&c9[fO(0x188)]||[])[fO(0x245)](ca=>{const fP=fO;let cb=ca['tokens']||{},cc=cb[fP(0x1d7)]||{};return{'providerID':ca[fP(0xa3)]?ca[fP(0xa3)][fP(0x364)]:'','modelID':ca['model']?ca[fP(0xa3)]['id']:'','steps':ca[fP(0x187)]||0x0,'tokens':(cb[fP(0x32b)]||0x0)+(cb[fP(0x10d)]||0x0)+(cb[fP(0x2e8)]||0x0)+(cc['read']||0x0)+(cc['write']||0x0)};})[fO(0x1b6)](ca=>ca[fO(0x364)]&&ca[fO(0x1a6)]);}catch(ca){console['warn']('[AiWith]\x20session.stats\x20failed:',ca&&ca['message']);}return M(bB,0xc8,{'ok':!0x0,'data':c8});}if(bA[fO(0x290)]===fO(0x251)&&bE===fO(0x297)){let cb=await I(bA)[fO(0x29a)](function(){return{};}),cc=String(cb&&cb['name']||'');if(!cc)return M(bB,0x190,{'ok':!0x1,'message':'\u7F3A\u5C11\x20MCP\x20\u540D\u79F0'});if(cb['on']&&!ai(cc))return M(bB,0x193,{'ok':!0x1,'message':fO(0x200)+cc+fO(0x34a)});al[cc]=!!cb['on'],delete am[cc],ap=!0x0,ar();let cd=await as(bD)[fO(0x29a)](function(){return null;});return M(bB,0xc8,{'ok':!0x0,'data':cd||await aN(bD)});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0xb3)){let cf=await bo(bD);return M(bB,0xc8,{'ok':!0x0,'data':cf});}if(bA[fO(0x290)]===fO(0x132)&&bE===fO(0x1de)){let cg=await bD[fO(0x1cd)][fO(0x181)]({'directory':aK,'limit':0x1e,'order':fO(0x2a9)});return M(bB,0xc8,{'ok':!0x0,'data':(cg[fO(0x1df)]||[])[fO(0x1b6)](ch=>!ch[fO(0x2bf)])[fO(0x245)](ch=>({'id':ch['id'],'title':ch['title']||'','agent':ch[fO(0x2c5)]||'','time':ch[fO(0x218)]||{},'cost':ch[fO(0x1e2)]||0x0,'tokens':ch[fO(0x2ec)]||null}))});}if(bA['method']===fO(0x251)&&bE==='/api/session/switch'){let ch=await I(bA);if(!ch[fO(0x209)]||typeof ch[fO(0x209)]!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':fO(0x207)});let ci=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':ch['sessionID']});return!ci||!ci[fO(0x20e)]||ci[fO(0x20e)][fO(0x93)]!==aK?M(bB,0x193,{'ok':!0x1,'message':fO(0x31d)}):(aR=ci,M(bB,0xc8,{'ok':!0x0,'data':ci}));}if(bA[fO(0x290)]===fO(0x251)&&bE===fO(0x323)){let cj=await bm(bD);return M(bB,0xc8,{'ok':!0x0,'data':cj});}if(bG=bF(/^\/api\/session\/([^/]+)$/)){let ck=bG[0x1];if(bA[fO(0x290)]===fO(0x132)){let cl=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':ck});return M(bB,0xc8,{'ok':!0x0,'data':cl});}return bA[fO(0x290)]==='DELETE'?(await bD[fO(0x1cd)]['remove']({'sessionID':ck}),aR&&aR['id']===ck&&(aR=null),M(bB,0xc8,{'ok':!0x0})):M(bB,0x195,{'ok':!0x1,'message':fO(0x2d1)});}if((bG=bF(/^\/api\/session\/([^/]+)\/messages$/))&&bA[fO(0x290)]==='GET'){let cm=bC['split']('?')[0x1]||'',co=Number((cm[fO(0x171)](/(?:^|&)limit=(\d+)/)||[])[0x1]||0x0),cp=co>0x0?Math[fO(0x29f)](co,0xc8):0xc8,cq=(cm[fO(0x171)](/(?:^|&)order=(asc|desc)/)||[])[0x1],cs=decodeURIComponent((cm[fO(0x171)](/(?:^|&)cursor=([^&]*)/)||[])[0x1]||''),cu={'sessionID':bG[0x1],'limit':cp};cs?cu[fO(0x278)]=cs:cu[fO(0x7b)]=cq||fO(0x84);let cv=await bD[fO(0x311)]['list'](cu);return M(bB,0xc8,{'ok':!0x0,'data':cv['data']||[],'cursor':cv['cursor']});}if((bG=bF(/^\/api\/session\/([^/]+)\/prompt$/))&&bA['method']===fO(0x251)){let cw=await I(bA);if(!cw[fO(0x17a)]||typeof cw['text']!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':fO(0x79)});let cx=[],cy=Array['isArray'](cw[fO(0x1bf)])?cw[fO(0x1bf)]:[];if(cy['length']>0x5)return M(bB,0x190,{'ok':!0x1,'message':fO(0x2ae)});let cz=[];for(let cE of cy){let cF=aG(cE);if(!cF||!u(cF))return M(bB,0x190,{'ok':!0x1,'message':fO(0x214)});cz[fO(0xce)](cF);}if(cz[fO(0x77)]){let cG=await Promise['all'](cz[fO(0x245)](async cH=>{const fQ=fO;let cI=await E(cH),cJ=fQ(0x96);try{cJ=decodeURIComponent(cH[fQ(0xeb)]('?')[0x0][fQ(0xeb)]('/')['pop']()||'')['slice'](0x0,0x78)||'image';}catch{}return{'uri':cI,'name':cJ};}));cx[fO(0xce)](...cG);}let cA=Array[fO(0x17f)](cw[fO(0xee)])?cw[fO(0xee)]:[];for(let cH of cA){if(!cH||typeof cH[fO(0x2d4)]!='string'||!cH[fO(0x2d4)])continue;let cI=g[fO(0x17b)](aK,cH[fO(0x2d4)]);cI!==aK&&cI['indexOf'](aK+g[fO(0x31f)])!==0x0||cx['push']({'uri':'file://'+cI,'name':cH[fO(0x2d4)],...cH['description']?{'description':cH['description']}:{},...cH[fO(0x197)]?{'mention':cH['mention']}:{}});}let cB=cw['delivery']===fO(0x2fe)||cw['delivery']==='queue'?cw['delivery']:void 0x0,cC=Y(cw['pageContext']),cD=await bD[fO(0x1cd)][fO(0x2d0)]({'sessionID':bG[0x1],'text':cC?cw[fO(0x17a)]+'\x0a\x0a'+cC:cw['text'],...cx['length']?{'files':cx}:{},...cz[fO(0x77)]?{'metadata':{'images':cz}}:{},...cB?{'delivery':cB}:{}});return M(bB,0xc8,{'ok':!0x0,'data':cD});}if((bG=bF(/^\/api\/session\/([^/]+)\/command$/))&&bA['method']===fO(0x251)){let cJ=await I(bA);return!cJ[fO(0xaa)]||typeof cJ[fO(0xaa)]!=fO(0x2be)?M(bB,0x190,{'ok':!0x1,'message':fO(0x105)}):(await bD['session'][fO(0x241)]({'sessionID':bG[0x1],'name':cJ['name'],'text':typeof cJ['text']==fO(0x2be)?cJ[fO(0x17a)]:'',...Array['isArray'](cJ[fO(0x274)])&&cJ[fO(0x274)][fO(0x77)]?{'files':cJ[fO(0x274)]}:{}}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/shell$/))&&bA['method']==='POST'){let cK=await I(bA);return!cK[fO(0x241)]||typeof cK[fO(0x241)]!=fO(0x2be)?M(bB,0x190,{'ok':!0x1,'message':fO(0x129)}):(await bD['session']['shell']({'sessionID':bG[0x1],'command':cK[fO(0x241)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/compact$/))&&bA['method']===fO(0x251)){let cL=await I(bA)['catch'](()=>({})),cM=cL[fO(0x12b)]==='steer'||cL['delivery']==='queue'?cL['delivery']:fO(0xef),cN=await bD[fO(0x1cd)]['compact']({'sessionID':bG[0x1],'delivery':cM});return M(bB,0xc8,{'ok':!0x0,'data':cN});}if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/stage$/))&&bA[fO(0x290)]===fO(0x251)){let cO=await I(bA);if(!cO[fO(0x12e)]||typeof cO[fO(0x12e)]!='string')return M(bB,0x190,{'ok':!0x1,'message':fO(0x35a)});let cP=await bD[fO(0x1cd)]['revert'][fO(0x228)]({'sessionID':bG[0x1],'messageID':cO[fO(0x12e)]});return M(bB,0xc8,{'ok':!0x0,'data':cP});}if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/clear$/))&&bA['method']===fO(0x251))return await bD['session'][fO(0x348)][fO(0x252)]({'sessionID':bG[0x1]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/revert\/commit$/))&&bA['method']===fO(0x251))return await bD[fO(0x1cd)][fO(0x348)]['commit']({'sessionID':bG[0x1]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/diff$/))&&bA[fO(0x290)]==='GET'){let cQ=await bD['session'][fO(0xd7)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cQ||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/children$/))&&bA[fO(0x290)]===fO(0x132)){let cR=await bD[fO(0x1cd)]['list']({'parentID':bG[0x1],'limit':0x14,'order':fO(0x84)})[fO(0x29a)](()=>({'data':[]}));return M(bB,0xc8,{'ok':!0x0,'data':(cR[fO(0x1df)]||[])[fO(0x245)](cS=>({'id':cS['id'],'title':cS[fO(0x1e7)]||'','agent':cS[fO(0x2c5)]||'','outcome':cS[fO(0x18f)]||'','time':cS['time']||{}}))});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms$/))&&bA[fO(0x290)]===fO(0x132)){let cS=await bD[fO(0x1cd)][fO(0x9b)][fO(0x181)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cS||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)$/))&&bA[fO(0x290)]==='GET'){let cT=await bD[fO(0x1cd)][fO(0x9b)][fO(0xf4)]({'sessionID':bG[0x1],'formID':bG[0x2]});return M(bB,0xc8,{'ok':!0x0,'data':cT});}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/reply$/))&&bA[fO(0x290)]===fO(0x251)){let cU=await I(bA);return!cU[fO(0x89)]||typeof cU[fO(0x89)]!=fO(0x31c)?M(bB,0x190,{'ok':!0x1,'message':fO(0x198)}):(await bD[fO(0x1cd)][fO(0x9b)][fO(0x8d)]({'sessionID':bG[0x1],'formID':bG[0x2],'answer':cU[fO(0x89)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/cancel$/))&&bA['method']===fO(0x251)){let cV=await I(bA)[fO(0x29a)](()=>({}));return await bD[fO(0x1cd)][fO(0x9b)][fO(0xa7)]({'sessionID':bG[0x1],'formID':bG[0x2],...cV[fO(0x311)]?{'message':cV[fO(0x311)]}:{}}),M(bB,0xc8,{'ok':!0x0});}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox$/))&&bA[fO(0x290)]==='GET'){let cW=await bD[fO(0x1cd)][fO(0x15b)]['list']({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cW||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/delivery$/))&&bA[fO(0x290)]===fO(0x251)){let cX=await I(bA);return cX[fO(0x12b)]!=='steer'&&cX[fO(0x12b)]!==fO(0xef)?M(bB,0x190,{'ok':!0x1,'message':fO(0x1d3)}):(await bD['session']['inbox'][fO(0xae)]({'sessionID':bG[0x1],'inboxID':bG[0x2],'delivery':cX[fO(0x12b)]}),M(bB,0xc8,{'ok':!0x0}));}if((bG=bF(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/cancel$/))&&bA['method']===fO(0x251))return await bD[fO(0x1cd)]['inbox']['cancel']({'sessionID':bG[0x1],'inboxID':bG[0x2]}),M(bB,0xc8,{'ok':!0x0});if((bG=bF(/^\/api\/session\/([^/]+)\/title$/))&&bA[fO(0x290)]===fO(0x251)){let cY=await I(bA);if(typeof cY[fO(0x1e7)]!='string'||!cY[fO(0x1e7)][fO(0x2da)]())return M(bB,0x190,{'ok':!0x1,'message':fO(0x1eb)});await bD[fO(0x1cd)]['update']({'sessionID':bG[0x1],'title':cY['title'][fO(0x2da)]()});let cZ=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':cZ});}if((bG=bF(/^\/api\/session\/([^/]+)\/interrupt$/))&&bA[fO(0x290)]===fO(0x251)){let d0=await bD[fO(0x1cd)]['interrupt']({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d0});}if((bG=bF(/^\/api\/session\/([^/]+)\/agent$/))&&bA[fO(0x290)]===fO(0x251)){let d1=await I(bA);if(!d1[fO(0x2c5)]||typeof d1[fO(0x2c5)]!=fO(0x2be))return M(bB,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20agent'});await bD[fO(0x1cd)][fO(0xd4)]({'sessionID':bG[0x1],'agent':d1['agent']});let d2=await bD[fO(0x1cd)][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d2});}if((bG=bF(/^\/api\/session\/([^/]+)\/model$/))&&bA[fO(0x290)]==='POST'){let d3=await I(bA);if(!d3['model']||!d3['model']['id']||!d3['model']['providerID'])return M(bB,0x190,{'ok':!0x1,'message':fO(0x116)});await bD[fO(0x1cd)]['switchModel']({'sessionID':bG[0x1],'model':{'id':d3[fO(0xa3)]['id'],'providerID':d3[fO(0xa3)][fO(0x364)],...d3[fO(0xa3)][fO(0x1d6)]?{'variant':d3[fO(0xa3)][fO(0x1d6)]}:{}}}),ad&&aJ&&bu(bD,d3[fO(0xa3)])['catch'](()=>{});let d4=await bD['session'][fO(0xf4)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d4});}if((bG=bF(/^\/api\/session\/([^/]+)\/permissions$/))&&bA[fO(0x290)]==='GET'){let d5=await bD['permission'][fO(0x181)]({'sessionID':bG[0x1]});return M(bB,0xc8,{'ok':!0x0,'data':d5||[]});}if((bG=bF(/^\/api\/session\/([^/]+)\/permissions\/([^/]+)\/reply$/))&&bA[fO(0x290)]===fO(0x251)){let d6=await I(bA);return[fO(0x224),fO(0x163),'reject'][fO(0xca)](d6[fO(0x2d3)])===-0x1?M(bB,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20decision'}):(await bD[fO(0x359)][fO(0x8d)]({'sessionID':bG[0x1],'requestID':bG[0x2],'decision':d6['decision']}),M(bB,0xc8,{'ok':!0x0}));}return bE==='/api/events'?bq(bA,bB,bD,bC):M(bB,0x194,{'ok':!0x1,'message':fO(0x331)+bC});}async function bq(bA,bB,bC,bD){const fR=eW;let bE=bD['split']('?')[0x1]||'',bF=decodeURIComponent((bE[fR(0x171)](/(?:^|&)session=([^&]*)/)||[])[0x1]||'');bB[fR(0x2d9)](0xc8,{'Content-Type':'text/event-stream','Cache-Control':'no-cache,\x20no-transform','Connection':fR(0xb1),'X-Accel-Buffering':'no'}),bB[fR(0x239)]&&bB[fR(0x239)](),bB[fR(0x310)](fR(0x304));let bG=setInterval(()=>{const fS=fR;try{bB[fS(0x310)](fS(0x24e));}catch{}},0x3a98),bH=!0x1,bI=bC['event'][fR(0x2db)]()[Symbol[fR(0x316)]](),bJ=()=>{const fT=fR;bI[fT(0x27f)]&&Promise[fT(0x17b)](bI[fT(0x27f)]())['catch'](()=>{});},bK=()=>{const fU=fR;bH=!0x0,clearInterval(bG),aM[fU(0x361)](bB),bJ();};bA['on'](fR(0x155),bK),bB['on']('close',bK),aM[fR(0x254)](bB);try{for(;!bH;){let bL=await bI['next']();if(bL[fR(0x2cd)]||bH)break;let bM=bL[fR(0x149)];if(!bM)continue;let bN=bM[fR(0x190)]||'',bO=bM[fR(0x1df)]||{},bP=bN[fR(0xca)]('permission.')===0x0;bF&&!bP&&bO[fR(0x209)]&&bO[fR(0x209)]!==bF||bB['write']('data:\x20'+JSON[fR(0x133)]({'type':bN,'data':bO})+'\x0a\x0a');}}catch{}finally{if(clearInterval(bG),bJ(),!bH)try{bB['end']();}catch{}}}function br(bA,bB){const fV=eW;let bC=bA[fV(0x17e)]||'/';if(!aw(bA))return M(bB,0x193,{'ok':!0x1,'message':fV(0x166)});if(bC===fV(0x30f))return P(bB,fV(0xfc),fV(0x134));if(bC===fV(0x1f5))return P(bB,fV(0x36d),fV(0x162));if(bC===fV(0x1ec))return P(bB,'panel.css',fV(0xb6));if(bC==='/panel.js')return P(bB,fV(0x2fb),'application/javascript');if(bC===fV(0xe3))return P(bB,fV(0x90),fV(0xb6));if(bC===fV(0x8c))return P(bB,fV(0xb7),'application/javascript');if(bC==='/debug.css')return P(bB,fV(0x22c),fV(0xb6));if(bC===fV(0x2a7))return P(bB,fV(0x29e),fV(0x134));if(bC===fV(0xf6))return P(bB,fV(0xde),fV(0xb6));if(bC===fV(0x2b5))return P(bB,'account.js',fV(0x134));if(bC===fV(0x180))return P(bB,fV(0x2e1),fV(0xb6));if(bC===fV(0xc3))return P(bB,fV(0x27c),fV(0x134));if(bC==='/hljs.js')return P(bB,'hljs.js',fV(0x134));if(bC===fV(0x16e))return P(bB,fV(0x2c7),fV(0x134));if(bC==='/snapdom.js')return Q(bB);if(bC['split']('?')[0x0][fV(0xca)](fV(0x234))===0x0){bh(bA,bB,bC)[fV(0x29a)](bD=>{const fW=fV;if(bB[fW(0xf0)]){try{bB[fW(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD[fW(0x311)]?bD[fW(0x311)]:String(bD)});});return;}if(bC[fV(0xeb)]('?')[0x0]===fV(0xff)){aD(bA,bB)['catch'](bD=>{const fX=fV;if(bB[fX(0xf0)]){try{bB[fX(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD[fX(0x311)]?bD[fX(0x311)]:String(bD)});});return;}if(bC[fV(0xeb)]('?')[0x0][fV(0xca)](fV(0xa5))===0x0){(bC[fV(0xeb)]('?')[0x0]===fV(0xb8)?aF(bA,bB,bC):aE(bA,bB,bC))['catch'](bD=>{const fY=fV;if(bB[fY(0xf0)]){try{bB[fY(0x2d7)]();}catch{}return;}M(bB,0x1f4,{'ok':!0x1,'message':bD&&bD['message']?bD[fY(0x311)]:String(bD)});});return;}if(bC[fV(0xca)]('/api/')===0x0){bp(bA,bB,bC)[fV(0x29a)](bD=>{const fZ=fV;if(bB['headersSent']){try{bB[fZ(0x2d7)]();}catch{}return;}if(bD&&bD['code']===fZ(0x335))return aQ(bB,bD);let bE=bD&&bD[fZ(0x311)]?bD[fZ(0x311)]:String(bD),bF=/not found|NoSuchKey|no such/i[fZ(0x320)](bE);M(bB,bF?0x194:0x1f4,{'ok':!0x1,'message':bE});});return;}M(bB,0x194,{'ok':!0x1,'message':fV(0x331)+bC});}let bs=null;async function bu(bA,bB){const g0=eW;let bC=((await aO(bA))['data']||[])['filter'](bG=>bG['enabled']!==!0x1),bD=bB?bC[g0(0x1c8)](bG=>bG[g0(0x364)]===bB[g0(0x364)]&&bG[g0(0x1a6)]===bB['id']):aW(bC),bE=bD&&bD[g0(0x327)]&&bD['limit']['context'];if(!bE)return;let bF=l[g0(0x2c2)](bE);l[g0(0x326)](aK,bF)&&console[g0(0xb0)](g0(0x34c)+(bB?bB[g0(0x364)]+'/'+bB['id']:'\u9ED8\u8BA4')+g0(0x16b)+bE+'\uFF09\uFF1A'+(bF?JSON[g0(0x133)](bF):g0(0x35f)));}function bv(bA,bB){const g1=eW;return ad=!!(bB||{})[g1(0x144)],aP()[g1(0x29a)](()=>{}),ad&&aP()[g1(0x301)](async function(bC){if(aJ)try{await bu(bC);}catch{}return as(bC);})[g1(0x29a)](()=>{}),bs=ba(bA),bs;}function bw(){const g2=eW;if(bs){bs[g2(0x1b9)]['forEach'](bA=>{try{bA['terminate']();}catch{}});try{bs[g2(0x155)]();}catch{}bs=null;}aM[g2(0x203)](bA=>{try{bA['destroy']();}catch{}}),aM['clear']();}function bx(){const g3=eW;return[{'tag':g3(0x10a),'attrs':{'src':g3(0x138)},'injectTo':'head-prepend'},{'tag':'script','attrs':{'src':'/aiwith/widget.js','defer':!0x0},'injectTo':g3(0x91)}];}return{'handle':br,'attachRuntime':bv,'close':bw,'transformIndexHtml':bx,'writeDevArtifacts':bi,'writeAgentPlugin':bl,get 'root'(){return aK;},get 'rootOk'(){return aJ;}};}d[eE(0x1ae)]={'createBridge':Z,'composePageContextSuffix':Y};}());}),Hn=ge((c,d)=>{const g4=d8;J();var {createBridge:e}=Rn();d[g4(0x1ae)]=function(g){const g5=g4;let h=e(g||{});return{'name':g5(0x298),'configureServer'(i){const g6=g5;h['rootOk']&&(h['attachRuntime'](i[g6(0x284)],{'devServer':!!(i&&i[g6(0x222)])}),h[g6(0x2b6)](i),i[g6(0x265)][g6(0x208)](g6(0x33e),(j,k)=>h[g6(0x1c6)](j,k)),i[g6(0x284)]&&i[g6(0x284)]['on'](g6(0x155),()=>h[g6(0x155)]()));},'transformIndexHtml'(){const g7=g5;return h[g7(0x1ca)]?h[g7(0x151)]():[];}};};});J(),(function(){const g8=d8;let c=require('path'),d=require('fs'),e=vn(),g=en(),i=wn(),j=Sn(),k=En(),l=_n(),m=Hn(),n=[g8(0x94),g8(0x12f),g8(0x1af),'oss',g8(0xa6)];module[g8(0x1ae)]=({core:p=g8(0x292),command:r,plugins:s=[],obfuscate:t=!0x1,ROOT:u,port:z,name:F,ws:I,apps:N={},moduled:Q,aiwith:W=!0x0,aiwithRoot:X,factoryOrigin:Y,aiwithRemote:a0=!0x1,mcpDisable:a1,mcpAllow:a2,ai_gateway:a3})=>{const g9=g8;let a4=r===g9(0xbe),a5=r==='build'&&n[g9(0x10e)](process.env.TARGET)?process.env.TARGET:'',a6=c['resolve'](u,g9(0x2de)),a7=(d['existsSync'](a6)?d[g9(0x36a)](a6):[])[g9(0x1b6)](ai=>ai[g9(0x268)](g9(0x7c)))[g9(0x245)](ai=>ai[g9(0x2f2)](/\.js$/,''))[g9(0x20c)](),a8=a7[0x0]||g9(0x177),a9=a7[g9(0x75)](0x1)[g9(0x245)](ai=>c['resolve'](a6,ai+g9(0x7c))),aa={[a8]:c[g9(0x17b)](a6,a8+g9(0x7c))},ab=JSON[g9(0x24a)](d[g9(0x7f)](c[g9(0x17b)](u,g9(0x143)),g9(0x33b))),ac=Q?c[g9(0x17b)](u,'..','vue',g9(0xd3),ab['name']):c['resolve'](u,g9(0x9a)),ad=a4?l():null,af=g9(0x1dc),ag={};a4&&(ag[g9(0x170)]={'target':'http://127.0.0.1:'+z,'secure':!0x1,'changeOrigin':!0x0},ag['/do']={'target':g9(0x29b)+z,'secure':!0x1,'changeOrigin':!0x0},ag[g9(0xc4)]={'target':g9(0xe9),'secure':!0x1,'changeOrigin':!0x0},ag['/'+F+'/']={'target':g9(0x29b)+z,'secure':!0x1,'changeOrigin':!0x0,'compress':!0x1,'headers':{'Content-Type':'no-transform'},'ws':!!I},ag[g9(0x152)]||(ag['/kooteam/']={'target':af,'secure':!0x1,'changeOrigin':!0x0}),Object[g9(0xdb)](N)[g9(0x203)](ai=>{const ga=g9;let aj=N[ai]+'';aj[ga(0xca)](':')===-0x1&&(aj=ga(0x29b)+aj),ag['/'+ai+'/']={'target':aj,'secure':!0x1,'changeOrigin':!0x0};}));let ah=JSON[g9(0x133)](a4?g9(0x199):'production');return{'root':u,'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1,'process.env':'{}','process.env.NODE_ENV':ah},'optimizeDeps':{'rolldownOptions':{'moduleTypes':{'.js':g9(0x1e4)},...ad?{'plugins':[ad[g9(0x74)]]}:{}},'exclude':['vue',g9(0x343),g9(0x353),g9(0x157)]},'plugins':[...s,k({'isDev':a4}),g({'outDir':ac}),j({'outDir':ac,'extraEntries':a9,'ROOT':u,'srcRoot':a6}),t&&i({'outDir':ac}),e({'target':a5,'ROOT':u,'name':F,'isDev':a4,'core':p}),a4&&W!==!0x1&&m({'ROOT':u,'name':F,'aiwithRoot':X,'kooteamOrigin':af,'factoryOrigin':Y,'aiwithRemote':a0,'mcpDisable':a1,'mcpAllow':a2,'ai_gateway':a3})]['filter'](Boolean),'resolve':{'extensions':['.js','.vue',g9(0x355),g9(0x332)],'alias':{'@':c[g9(0x17b)](u,g9(0x2de)),'@icons':c[g9(0x17b)](u,g9(0xd6)),...ad?{'vue':ad[g9(0xf9)]}:{}}},'css':{'cssCodeSplit':!0x1},'server':{'host':'0.0.0.0','open':!0x0,'cors':!0x0,'allowedHosts':!0x0,'hmr':F!=='thor','proxy':ag},'build':{'minify':g9(0x23c),'target':g9(0x1ba),'sourcemap':!0x1,'emptyOutDir':!0x0,'copyPublicDir':!0x1,'outDir':ac,'chunkSizeWarningLimit':0x200,'lib':{'entry':aa,'formats':[g9(0x15f)],'name':'zen','fileName':()=>a8+g9(0x7c),'cssFileName':a8},'rolldownOptions':{'external':['vue',g9(0x353),g9(0x343),'vant'],'output':{'globals':{'vue':'Vue','vue-router':g9(0x2ba),'element-plus':g9(0x201),'vant':g9(0x157)},'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':g9(0x24f)}}}}}};};}());
1
+ const dd=b;(function(c,d){const dc=b,e=c();while(!![]){try{const f=-parseInt(dc(0x2df))/0x1+-parseInt(dc(0x270))/0x2*(parseInt(dc(0x104))/0x3)+parseInt(dc(0x17c))/0x4+-parseInt(dc(0x17d))/0x5+-parseInt(dc(0x398))/0x6*(-parseInt(dc(0x24c))/0x7)+-parseInt(dc(0x2a0))/0x8*(-parseInt(dc(0x1d1))/0x9)+-parseInt(dc(0x177))/0xa*(-parseInt(dc(0x3c6))/0xb);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x1a969));function b(c,d){c=c-0xc6;const e=a();let f=e[c];if(b['jBtnpO']===undefined){var g=function(l){const m='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let n='',o='';for(let p=0x0,q,r,s=0x0;r=l['charAt'](s++);~r&&(q=p%0x4?q*0x40+r:r,p++%0x4)?n+=String['fromCharCode'](0xff&q>>(-0x2*p&0x6)):0x0){r=m['indexOf'](r);}for(let t=0x0,u=n['length'];t<u;t++){o+='%'+('00'+n['charCodeAt'](t)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(o);};b['FDSOxf']=g,b['wABAjb']={},b['jBtnpO']=!![];}const h=e[0x0],i=c+h,j=b['wABAjb'][i];return!j?(f=b['FDSOxf'](f),b['wABAjb'][i]=f):f=j,f;}var yn=Object['create'],dt=Object['defineProperty'],wn=Object[dd(0x34c)],Sn=Object[dd(0x2b7)],vn=Object['getPrototypeOf'],An=Object[dd(0x263)][dd(0x172)],In=(c,d,e)=>()=>{if(e)throw e[0x0];try{return c&&(d=c(c=0x0)),d;}catch(f){throw e=[f],f;}},pe=(c,d)=>()=>{const de=dd;try{return d||c((d={'exports':{}})[de(0x274)],d),d[de(0x274)];}catch(e){throw d=0x0,e;}},xn=(c,d,e,f)=>{const df=dd;if(d&&typeof d==df(0x183)||typeof d==df(0x1f4)){for(let h of Sn(d))!An[df(0x307)](c,h)&&h!==e&&dt(c,h,{'get':()=>d[h],'enumerable':!(f=wn(d,h))||f[df(0x27f)]});}return c;},De=(c,d,e)=>(e=c!=null?yn(vn(c)):{},xn(d||!c||!c[dd(0x3c8)]?dt(e,dd(0x203),{'value':c,'enumerable':!0x0}):e,c)),le,Y=In(()=>{const dg=dd;le={'panel.html':dg(0x27e),'panel.css':dg(0x2bf),'panel.js':'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','widget.js':dg(0x357),'factory.css':dg(0x34d),'factory.js':dg(0x250),'debug.css':dg(0x137),'debug.js':dg(0x2a8),'account.css':dg(0x3a7),'account.js':'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','viewer.css':dg(0x14c),'viewer.js':'H4sIAAAAAAAAE51WbU/jRhD+3l8RppXxKhvnhUsIzvkQSUA93V1btfQT5sNiT+wFe9fnXeeFkP9ere2EhNIDVUhmMhnPPPPMW+xZIQLNpbDJes7yBvNCGRQpCu1EqC8TNOJ49Tm0Yc5xgfnvc8wTtgIy4jP7iJEcdZGLkXk3e+vda64TBELlW4bfUDMgNH/LbizDFRBavGU3kZmxi9+0S6QyAIW3lhkK96hLM6ZjF4BqXGoXYDPaEtaY25qsq/Qbf+mci8jWxMkxS1iAdttqRxQslmYj2NN+LLWJPlB+KpXRoRJK5fdCHqqPS/XPJ2cjIJsdlpnBYmqAXtt37BvWeuy0zm6b5Jc2d3CJga2fngAI5R6e40331tHyqzQZM4U2cQFGVSbre+XCPZszFeQ800DTl4rgpeJeLQ8VWrmgVxk+f14eKu6VFC6YJ9BYp4kLyzQButxJ8wJrSc2jWrpXWS0FSrkQKAVUlaIq5QSNbJ5AVezCHVMxUPPcyo/PooFbgQaqvicuqO8J0DR0IWX5QygXAuhW2tetDMQVMyjMcytnKxeylY5NQpF0IZKwueG3hvLnGqm9ftHn+pPX7fQ+nH9jOnZStrS7tBRzWYjQ1m3zJSFN+DIGVzdhDO6+r6geV+0Jx3SmGUZN1nxmCzbnEdMyd4KEZ3eS5aFlvaJ0FjnXeI1LTXS+qnvnh3a2JiO0LHQCpoN4J9h7G2RDNpWOk/VGlsgmUmgU2gO/6E+ven7RP+tM/aLfOxkAVaiveYqy0PteDl8UToqalVTSbq/TIZtnGgKbrIVjRtU76lLmBAlT6itX2skxlXO0QcVyAYQyR6G+0Drnd4VGG1jOWSvmYYgCKOi8wP1pSmouc4cLgfmv19++egD0SDvy4SU8AFohNNL+C8cfQz5vlIi8er20MM30Cj4dN+e2dlJUikX49AR+MRxfjf2ifzIdGIJOun4xnPb6QJrwsR3y+afteG6qOmknZIaT9cYUHp07Lli+MlwYaHuYlI2O4o9ImtDwl+PThl98uBxO/GJ4NR1XVfCLQX94avRXA7+4uupMjGxqNOj3rvxicNLp+sXZcPjBL4ZnkyHQ1+rz3tTfG3/SP4xf2QxOe5N9LBU5x1ty6vSx/Gc6ZkvDzY4Hio7OCxEwjeH5ricHvd6FiXExbfT6gy/lsN06M55ozO2xlAkyQZx7yYVd82iu2Cs0lHeQP5+ZIEemsb40NgQyNOcl9Ga2cMxlIaPQshZchHLhxMm9siybV138G0vRg4SJqGARtqAZEspfRCwn30RM/zNilmN1qlOHZRmKcBLzJLQ5ofmBIiX0AIZZ13LW2NM5MY/ihEfx9nB6HmwnBsod8iNjm29Xw4Ks9yZ4aUZtO8IdWrHibc9pdbP+1dWmbr2Ljumi06nplt7UL3qd3gAOdgALw3cugBlLyrufvSDYgHm73QHoDE1q0GZ8wXXcZhlvz3iC52U20ERhKv/3n58nMs2kMHzU9SeOjlE8bz/cnQh0zIG0yaY2ScjLfYtkndhr+WB+ptTLxC0XdP3hfCe5NaFINuZv1ywsDC/nKLShCwXmNjyiaFVJtExNWiYLoLuQu18Z2glRM55Y1lYq8zEHYlmGoe8LcseCh5aWrSBmei/OticsK7DfcPaAq+o274PUzgOuPM+DSxWwDMGyDv3FrzgKEh48vHSjtMz+yGXGIlYBo5WD4v87iEoH7L0ONMsj1J7nsRr8hthk9NM/kGPCtLkLAAA=','hljs.js':'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','page-agent.js':'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','opencode-plugin.js':dg(0x305)};}),mt=pe(c=>{Y(),(function(){const dh=b;let d=/[\p{Lu}]/u,e=/[\p{Ll}]/u,f=/^[\p{Lu}](?![\p{Lu}])/gu,h=/([\p{Alpha}\p{N}_]|$)/u,j=/[_.\- ]+/,k=new RegExp('^'+j['source']),l=new RegExp(j[dh(0x267)]+h['source'],'gu'),m=new RegExp(dh(0x24e)+h['source'],'gu'),n=(s,t,u,y)=>{const di=dh;let z=!0x1,A=!0x1,B=!0x1,F=!0x1;for(let G=0x0;G<s['length'];G++){let H=s[G];F=G>0x2?s[G-0x3]==='-':!0x0,z&&d[di(0x29d)](H)?(s=s[di(0x2a6)](0x0,G)+'-'+s['slice'](G),z=!0x1,B=A,A=!0x0,G++):A&&B&&e[di(0x29d)](H)&&(!F||y)?(s=s[di(0x2a6)](0x0,G-0x1)+'-'+s[di(0x2a6)](G-0x1),B=A,A=!0x1,z=!0x0):(z=t(H)===H&&u(H)!==H,B=A,A=u(H)===H&&t(H)!==H);}return s;},q=(s,t)=>(f[dh(0x25b)]=0x0,s[dh(0x2b2)](f,u=>t(u))),r=(s,t)=>(l[dh(0x25b)]=0x0,m[dh(0x25b)]=0x0,s[dh(0x2b2)](m,(u,y,z)=>['_','-'][dh(0xef)](s['charAt'](z+u['length']))?u:t(u))['replaceAll'](l,(u,y)=>t(y)));c[dh(0x3c5)]=function(s,t){const dj=dh;if(!(typeof s==dj(0x24b)||Array['isArray'](s)))throw new TypeError('Expected\x20the\x20input\x20to\x20be\x20`string\x20|\x20string[]`');if(t={'pascalCase':!0x1,'preserveConsecutiveUppercase':!0x1,...t},Array[dj(0x1ab)](s)?s=s[dj(0x14a)](z=>z[dj(0x2de)]())[dj(0x159)](z=>z[dj(0x334)])[dj(0x22c)]('-'):s=s[dj(0x2de)](),s[dj(0x334)]===0x0)return'';let u=t[dj(0x19f)]===!0x1?z=>z[dj(0x27b)]():z=>z[dj(0x1aa)](t[dj(0x19f)]),y=t[dj(0x19f)]===!0x1?z=>z[dj(0x2f5)]():z=>z[dj(0x1cb)](t[dj(0x19f)]);return s['length']===0x1?j['test'](s)?'':t[dj(0x386)]?y(s):u(s):(s!==u(s)&&(s=n(s,u,y,t[dj(0x340)])),s=s[dj(0x1a6)](k,''),s=t[dj(0x340)]?q(s,u):u(s),t[dj(0x386)]&&(s=y(s[dj(0x19c)](0x0))+s[dj(0x2a6)](0x1)),r(s,y));};}());}),ht=pe(c=>{Y(),(function(){const dk=b;let d=require(dk(0x2ec)),e=require('fs'),f=[dk(0xc9),dk(0x29b)],{camelCase:h}=mt(),j=function(m){const dl=dk;let n=[],q=[],r=[];e[dl(0x1b9)](m)['sort']((u,y)=>u[dl(0x158)](y))[dl(0x2dd)](u=>{const dm=dl;let y=d[dm(0x22c)](m,u,dm(0x2c3));if(e['existsSync'](y))n[dm(0x351)]('import\x20'+u+dm(0x3ac)+u+'/index\x27;'),q[dm(0x351)](u);else{let z=d[dm(0x22c)](m,u,u+dm(0x2cf));if(e[dm(0xd4)](z))n['push'](dm(0x14f)+u+'\x20from\x20\x27./'+u+'/'+u+'.vue\x27;'),r[dm(0x351)](''+u);else{if(u[dm(0x234)]('.')>-0x1)return;k(d[dm(0x22c)](m,u),u,m)&&(n[dm(0x351)](dm(0x14f)+u+'\x20from\x20\x27./'+u+dm(0x114)),q[dm(0x351)](u));}}});let s=r[dl(0x334)]>0x0?dl(0x1f3)+r['join'](dl(0x164))+'\x0a};':'',t=n[dl(0x22c)]('\x0a')+'\x0a'+s+'\x0aexport\x20default\x20{'+(s?'\x0a\x09...vueFiles,':'')+dl(0xe0)+(q[dl(0x334)]>0x0?'...'+q[dl(0x22c)](dl(0x2d0)):'')+dl(0x291);e[dl(0x314)](d[dl(0x22c)](m,dl(0x2c3)),t,()=>{});},k=function(m,n,q){const dn=dk;let r=d[dn(0x22c)](m,'index.js'),s=[],t=[];if(!e[dn(0xd4)](m)||n[0x0]==='.'||f['includes'](n))return!0x1;let u=!e[dn(0xd4)](r);if(e[dn(0x1b9)](m)[dn(0x103)]((z,A)=>z[dn(0x158)](A))[dn(0x2dd)](z=>{const dp=dn;let A=d['join'](m,z,dp(0x2c3)),B=[];if(e[dp(0xd4)](A)){B[dp(0x351)](z),s[dp(0x351)](dp(0x14f)+z+'\x20from\x20\x22./'+z+dp(0x18d)),t[dp(0x351)](dp(0xdb)+z);return;}let F=d[dp(0x22c)](m,z,z+'.vue');if(z[dp(0x234)]('.')>-0x1||!e[dp(0xd4)](F))return;let G=h(n['replace'](/\//gi,'_')+'_'+z,{'pascalCase':!0x0});s[dp(0x351)](dp(0x14f)+G+dp(0x222)+z+'/'+z+'\x22;'),t[dp(0x351)]('\x27'+n+'/'+z+'\x27:\x20'+G);}),s['length']===0x0)return!0x1;let y=s['join']('\x0a')+dn(0x16b)+t[dn(0x22c)](',\x0a\x09')+'\x0a}';return e[dn(0x314)](r,y),j(q),u&&j(q),!0x0;};function l(m){const dq=dk;let n=d[dq(0x22c)](m,dq(0x2c3)),q=e[dq(0x1b9)](m),r=[],s=[];q[dq(0x14a)](u=>{const dr=dq;if(u['indexOf']('.')>-0x1)return;let y=d['join'](m,u,u+dr(0x2cf));e['existsSync'](y)&&(s['push'](u),r[dr(0x215)](dr(0x14f)+u+dr(0x222)+u+'/'+u+'\x22;'));});let t=r['join']('\x0a')+dq(0x10d)+s[dq(0x22c)](dq(0x164))+'\x0a}\x0a';return e['writeFileSync'](n,t);}c[dk(0x2aa)]=j,c[dk(0x15f)]=k,c[dk(0x1ed)]=l;}());}),gt=pe(c=>{Y(),(function(){const ds=b;let e=require('os'),f=require('shelljs'),k=require('pako'),m=new RegExp(ds(0x34e),'gi'),n=[ds(0x323),'.css',ds(0x2e4)],q=[ds(0x323),'.css',ds(0x33a)],r=require('fs'),{join:s,dirname:t,resolve:u,extname:y}=require('path'),B='-fsSL\x20--connect-timeout\x2015\x20--max-time\x20300\x20--retry\x203\x20--retry-delay\x202\x20--retry-connrefused',H='/',K=require(ds(0x140)),M=require('ali-oss'),{TosClient:O}=require('@volcengine/tos-sdk'),U,W,a0,a1,a2;function a3(af){const du=ds;let ag=s(af,'package.json'),ah=r[du(0x3b5)](ag,du(0x366));return JSON[du(0x341)](ah);}function a4(af,ag){const dv=ds;let ah={'Bucket':a0[dv(0x139)],'Region':a0[dv(0x372)],'Key':af,'StorageClass':'STANDARD'},ai=af[dv(0x234)](dv(0x323))>-0x1;ai||af['indexOf'](dv(0x304))>-0x1?(ah['Headers']={'Content-Encoding':dv(0x2e8),'Content-Type':ai?'application/javascript':dv(0x162)},ah[dv(0x23f)]=Buffer[dv(0x116)](k[dv(0x2e8)](r[dv(0x3b5)](ag,'utf8')))):ah[dv(0x23f)]=r[dv(0x230)](ag),W['putObject'](ah,(aj,ak)=>{const dw=dv;if(aj)return console[dw(0xe7)](aj,ak);console[dw(0xe7)](H+af);});}function a5(af,ag){const dx=ds;let ah={'bucket':a0[dx(0x3c0)],'key':af},ai=af[dx(0x234)](dx(0x323))>-0x1;ai||af[dx(0x234)](dx(0x304))>-0x1?(ah[dx(0x198)]={'Content-Encoding':dx(0x2e8),'Content-Type':ai?dx(0x10c):dx(0x162)},ah[dx(0x160)]=Buffer[dx(0x116)](k[dx(0x2e8)](r[dx(0x3b5)](ag,dx(0x366))))):ah[dx(0x160)]=r[dx(0x230)](ag),W[dx(0x31f)](ah,(aj,ak)=>{const dy=dx;if(aj)return console[dy(0xe7)](aj,ak);console[dy(0xe7)](H+af);});}function a6(af,ag){const dz=ds;let ah,ai,aj=af[dz(0x234)](dz(0x323))>-0x1;aj||af[dz(0x234)]('.css')>-0x1?(ai={'Content-Encoding':'gzip','Content-Type':aj?dz(0x10c):dz(0x162)},ah=Buffer['from'](k[dz(0x2e8)](r['readFileSync'](ag,'utf8')))):(ah=r['createReadStream'](ag),ai={}),W[dz(0x35a)](af,ah,{'headers':ai});}function a7(af,ag){const dA=ds;r[dA(0x1b9)](af)[dA(0x2dd)](ah=>{const dB=dA;if(ah[dB(0x234)]('.')===0x0||ah[dB(0x234)]('.html')>-0x1)return;let ai=s(af,ah),aj=r[dB(0x288)](ai);if(aj[dB(0xe9)]()&&a7(ai,s(ag,ah)),aj[dB(0x362)]()){let ak=s(ag,ah)[dB(0x1a6)](/\\/gi,'/');console['log'](ak),a2(ak,ai);}});}function a8(af){const dC=ds;let ag=af[dC(0x37c)](af['indexOf']('.vip')+0x4);ag[dC(0xee)](dC(0x122))&&(ag=ag['substr'](0x4));let ah=s(U,ag),ai=y(ah);if(!r['existsSync'](ah)||q['includes'](ai)){f[dC(0xf5)]('-p',t(ah));let aj=af[dC(0x234)](':')>-0x1?af:dC(0x35f)+af,ak=dC(0x1fd)+B+'\x20-o\x20\x22'+ah+dC(0x202)+aj+'\x22';if(ah['indexOf']('.js')>-0x1||ah['indexOf']('.css')>-0x1){let am=ah+dC(0x107);ak=dC(0x1fd)+B+dC(0x26d)+am+dC(0x202)+aj+'\x22\x20&&\x20gzip\x20-c\x20\x22'+am+dC(0x179)+ah+dC(0x13b)+am+dC(0x2bc);}let al=f[dC(0x1d5)](ak);if(al['code']!==0x0)return console['error'](dC(0x1cf)+ak+':\x20'+al[dC(0x1fe)]),af;}return ag;}function a9(af){const dD=ds;let ag=y(af);if(af['indexOf']('.')===0x0||ag==='.html')return;let ah;if(af[dD(0x234)](dD(0x37d))>-0x1?ah=U+af['substr'](a1[dD(0x334)]+0x5):ah=U+af[dD(0x37c)](a1['length']+0x7),f[dD(0xf5)]('-p',t(ah)),!n[dD(0xef)](ag))return f['cp'](af,ah);let ai=r['readFileSync'](af,dD(0x366))[dD(0x1a6)](m,aj=>aj['indexOf']('\x27')>-0x1||aj['indexOf']('\x22')>-0x1?aj:a8(aj));r[dD(0x314)](ah,Buffer[dD(0x116)](k[dD(0x2e8)](ai)),dD(0x366));}function aa(af){const dE=ds;let ag=r[dE(0x1b9)](af);for(let ah of ag){if(ah['startsWith']('.'))continue;let ai=s(af,ah),aj=r['statSync'](ai);aj['isDirectory']()?aa(ai):aj[dE(0x362)]()&&a9(ai);}}function ab(af,ag,ah){const dF=ds;let ai=r[dF(0x1b9)](af);for(let aj of ai){let ak=s(af,aj);if(r[dF(0x288)](ak)[dF(0xe9)]())ab(ak,ag,ah);else{if(af[dF(0x234)](dF(0x384))>-0x1&&aj===dF(0x292)){let al=r[dF(0x3b5)](ak,dF(0x366)),{path:am,basic:an,actions:ao=[]}=JSON[dF(0x341)](al);if(!am)continue;let ap=an[dF(0x201)];ap&&(ah[ap]?ah[ap]['push'](am):ah[ap]=[am]);let aq=[];an[dF(0xe3)][dF(0x2dd)](({_id:ar,label:as,mode:at,href:au,url:av})=>{const dG=dF;let aw=ar+'',ax={'id':aw,'label':as};at==='link'&&au&&(ax['link']=au[dG(0x37c)](0x1)),aq[dG(0x351)](ax),av&&(ah[av]?ah[av]['push'](aw):ah[av]=[aw]);}),ao[dF(0x2dd)](({_id:ar,label:as,mode:at,href:au,url:av})=>{const dH=dF;let aw=ar+'',ax={'id':aw,'label':as};at==='link'&&au&&(ax[dH(0x2e0)]=au[dH(0x37c)](0x1)),aq[dH(0x351)](ax),av&&(ah[av]?ah[av][dH(0x351)](aw):ah[av]=[aw]);}),aq[dF(0x334)]>0x0&&(ag[am]=aq);}}}}function ac(){const dI=ds;let af=new Date(),ag=af['getFullYear']()[dI(0x2cd)]()[dI(0x2a6)](-0x2),ah=(af['getMonth']()+0x1)[dI(0x2cd)]()['padStart'](0x2,'0'),ai=af[dI(0x1fc)]()[dI(0x2cd)]()['padStart'](0x2,'0'),aj=af[dI(0x253)]()[dI(0x2cd)]()[dI(0x310)](0x2,'0'),ak=af[dI(0x30a)]()['toString']()[dI(0x310)](0x2,'0');return ag+ah+ai+aj+ak;}function ad(af){const dJ=ds;let ag=s(U,'..');if(!r[dJ(0xd4)](ag))return;let ah={},ai={};ab(s(af,'src'),ah,ai);let aj=s(ag,dJ(0x191)),ak=s(ag,dJ(0x176));r[dJ(0x314)](ak,JSON[dJ(0x156)](ai),dJ(0x366)),r[dJ(0x314)](aj,JSON[dJ(0x156)](ah),dJ(0x366));}async function ae(af){const dK=ds;let ag=s(U,'..'),ah=ac();if(!r[dK(0xd4)](ag)){let aj=s(af,dK(0x3b0));return r[dK(0x314)](aj,ah,dK(0x366)),ah;}let ai=s(ag,dK(0x1f5),dK(0x205));r['existsSync'](ai)||f[dK(0xf5)]('-p',t(ai));try{let ak={};return r[dK(0xd4)](ai)&&(ak=JSON[dK(0x341)](r[dK(0x3b5)](ai,dK(0x366)))),ak['fd']=ah,r['writeFileSync'](ai,JSON[dK(0x156)](ak),dK(0x366)),ah;}catch(al){return console[dK(0xe7)](al),'';}}c[ds(0x206)]=async function(af,ag,ah){const dL=ds;if(!ag)return;a1=af,a0=JSON[dL(0x341)](r[dL(0x3b5)](s(e[dL(0x38e)](),'.cc.json'))),ag==='tos'?(W=new O({'accessKeyId':a0[dL(0x2e2)],'accessKeySecret':a0[dL(0x300)],'region':a0[dL(0x311)],'endpoint':a0[dL(0xd2)]}),H=a0[dL(0xdf)]+'/',a2=a5):ag===dL(0xf0)?(W=new M({'accessKeyId':a0[dL(0x1d9)],'accessKeySecret':a0[dL(0x31e)],'bucket':a0[dL(0x332)],'region':dL(0x3bf)+a0[dL(0x379)],'authorizationV4':!0x0}),H=a0['ossDomain']+'/',a2=a6):(W=new K({'SecretId':a0['id'],'SecretKey':a0[dL(0x163)]}),H=a0[dL(0x1ea)]+'/',a2=a4);let ai=a3(af),aj=ai['name'],ak,al;if(ak=s(af,dL(0x37d)),al=s(af,dL(0x239)),ai[dL(0x29e)]!==dL(0x2d1)){let ao=['zen.js',dL(0x146),dL(0x393),'zen.wap.css'];f[dL(0xf5)]('-p',al),ao[dL(0x2dd)](ap=>{const dM=dL;let aq=s(al,ap),ar=aq+'.tmp',as=dM(0x1fd)+B+'\x20-o\x20\x22'+ar+dM(0x236)+ah+'/'+ap+dM(0x1b6)+ar+dM(0x179)+aq+dM(0x13b)+ar+dM(0x2bc);console[dM(0xe7)](as);let at=f['exec'](as);at['code']!==0x0&&console['error'](dM(0x1cf)+as+':\x20'+at[dM(0x1fe)]);});}U=u(af,'..',aj,dL(0x18a),dL(0x3ba),dL(0x35d),dL(0x29a));let am=await ae(ak),an=aj+'/'+am;ad(af),a7(ak,an),r['existsSync'](al)&&a7(al,an);},c['locale']=async function(af,ag){const dN=ds;a1=af;let ah=a3(af)[dN(0x21f)];U=u(af,'..',ah,dN(0x18a),dN(0x3ba),dN(0x35d),dN(0x29a)),ad(af);let ai=s(af,dN(0x37d));await ae(ai);let aj=s(af,dN(0x239));f[dN(0xf5)]('-p',aj),[dN(0x1b0),dN(0x146),dN(0x393),dN(0x13c)][dN(0x2dd)](ak=>{const dO=dN;let al=s(aj,ak),am=al+dO(0x107),an=dO(0x1fd)+B+dO(0x26d)+am+dO(0x236)+ag+'/'+ak+dO(0x1b6)+am+dO(0x179)+al+dO(0x13b)+am+'\x22;\x20exit\x20$status';console[dO(0xe7)](an);let ao=f[dO(0x1d5)](an);ao[dO(0x3c4)]!==0x0&&console['error'](dO(0x1cf)+an+':\x20'+ao[dO(0x1fe)]);}),aa(ai),r[dN(0xd4)](aj)&&aa(aj);};}());}),wt=pe((c,d)=>{Y(),(function(){const dP=b;let e=require(dP(0x2ec)),f=require('fs'),k=require(dP(0x17f)),m=require(dP(0x303)),n=ht(),{remote:q,locale:r}=gt(),{makeRootIndex:s,makeSonIndex:t,makeComponentIndex:u}=n,y=[dP(0xc9),dP(0x29b)];function z(P){return'<!DOCTYPE\x20html><html><head>\x20<meta\x20charset=\x22utf-8\x22/>\x20<meta\x20http-equiv=\x22X-UA-Compatible\x22\x20content=\x22chrome,IE=edge\x22/>\x20<meta\x20name=\x22HandheldFriendly\x22\x20content=\x22true\x22/><link\x20rel=\x22icon\x22\x20href=\x22data:image/ico;base64,aWNv\x22/><meta\x20name=\x22format-detection\x22\x20content=\x22telephone=no,email=no\x22/>\x20<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0,\x20maximum-scale=1.0,\x20user-scalable=0,\x20user-scalable=no,\x20minimal-ui,\x20viewport-fit=cover\x22/>\x20<meta\x20name=\x22renderer\x22\x20content=\x22webkit\x22/>\x20<meta\x20name=\x22msapplication-tap-highlight\x22\x20content=\x22no\x22/>\x20<title>AI编程引擎</title>\x20<script\x20src=\x22//b.ebus.vip/zeto/latest/zen.js\x22></script>\x20<link\x20rel=\x22stylesheet\x22\x20type=\x22text/css\x22\x20href=\x22//b.ebus.vip/zeto/latest/zen.css\x22>\x20<script>\x20window.coderHost\x20=\x20\x22https://thor.zeto.me\x22;window.appName=\x27'+P+'\x27\x20</script></head><body><script\x20src=\x22https://b.ebus.vip/thor/v0.0.2/detail.js\x22></script></body></html>';}function A(P){const dQ=dP;return dQ(0x138)+P+'\x22</script><body><script\x20src=https://b.ebus.vip/datav/v0.0.1/editor.js></script>';}function B(P,Q){const dR=dP;if(Q[dR(0x334)]<0x2)return;let U,W=Q[dR(0x159)]((a0,a1)=>(a1===0x0&&(U=e[dR(0x22c)](P,a0),f['existsSync'](U)||f[dR(0x1c8)](U)),a1>0x0));B(U,W);}let F=dP(0x17b),G=dP(0x1ae);function H(P,Q){const dS=dP;P[dS(0xd9)](dS(0x33f),dS(0xd1)),P['end'](JSON[dS(0x156)](Q));}function J(P,Q){const dT=dP;P['setHeader'](dT(0x33f),dT(0x2c2)),P[dT(0x16c)](Q);}function K(P,Q){const dU=dP;let U=e[dU(0x22c)](P,'src',dU(0x321)),W=m[dU(0x38b)]();return function(a0,a1,a2){const dV=dU;let {url:a3,method:a4}=a0;if(a4===dV(0x2c9)&&a3===dV(0x1ad))return J(a1,z(Q));if(a4==='GET'&&a3===dV(0x18f))return J(a1,A(Q));if(a4===dV(0x145)&&a3==='/coder/read')return W(a0,a1,()=>{const dW=dV;let {file:a5}=a0[dW(0x160)]||{};if(!a5)return H(a1,{'code':0x2711,'message':dW(0x193)});let a6=e[dW(0x22c)](U,a5);return f['existsSync'](a6)?H(a1,{'code':0x2710,'data':f[dW(0x3b5)](a6,dW(0x28b))}):H(a1,{'code':0x2710,'data':null});});if(a4===dV(0x145)&&a3===dV(0x285))return W(a0,a1,()=>{const dX=dV;let {file:a5,content:a6,type:a7}=a0[dX(0x160)]||{};if(!a5)return H(a1,{'code':0x2711,'message':'\u53C2\u6570\u9519\u8BEF'});let a8=a5['split']('/');B(U,a8);let a9=e[dX(0x22c)](U,a5);if(f[dX(0x314)](a9,a6),a7===dX(0xed)){let aa=a8['splice'](0x0,a8[dX(0x334)]-0x2),ab=e['join'](U,aa[dX(0x22c)](e[dX(0x39e)]));if(aa[dX(0x334)]===0x0)return s(U);t(ab,aa[dX(0x22c)]('/'),U);}return H(a1,{'code':0x2710,'message':dX(0x284)});});a2();};}function M(P){const dY=dP;let Q=e[dY(0x22c)](P,dY(0x18a),'pages');if(!f[dY(0xd4)](Q))return null;let U=k['watch'](Q,{'depth':0x2,'usePolling':!0x1});return U['on'](dY(0x1a7),W=>{const dZ=dY;let a0=e['join'](W,dZ(0x2c3));if(f[dZ(0xd4)](a0)||W['indexOf'](dZ(0x384))>-0x1)return;let a1=e[dZ(0x2f6)](W)[dZ(0x228)](e[dZ(0x39e)]),a2=a1[dZ(0x26a)](),a3=a1[a1[dZ(0x334)]-0x1],a4=e['join'](W,a2+dZ(0x2cf));f[dZ(0xd4)](a4)||y[dZ(0xef)](a2)||y[dZ(0xef)](a3)||(a1['length']-a1[dZ(0x234)](a3)===0x1&&a1['length']-a1[dZ(0x234)](dZ(0x321))!==0x2&&(a3=a1[a1[dZ(0x334)]-0x2]+e[dZ(0x39e)]+a3),f['writeFileSync'](a4,F),t(a1[dZ(0x22c)](e[dZ(0x39e)]),a3,Q));}),U['on']('unlinkDir',W=>{const e0=dY;let a0=e[e0(0x2f6)](W)[e0(0x228)](e[e0(0x39e)]);a0[e0(0x26a)]();let a1=a0[e0(0x22c)](e[e0(0x39e)]),a2=a0[e0(0x26a)]();a2===e0(0x321)?s(Q):(a0[e0(0x334)]-a0[e0(0x234)](e0(0x321))===0x2&&(a2=a0[e0(0x26a)]()+e[e0(0x39e)]+a2),t(a1,a2,Q));}),s(Q),U['on'](dY(0x302),function(W){const e1=dY;console[e1(0x302)](e1(0x3af),W);}),U;}function O(P){const e2=dP;let Q=e[e2(0x22c)](P,e2(0x18a),e2(0xc9));if(!f[e2(0xd4)](Q))return null;let U=k['watch'](Q,{'depth':0x1,'usePolling':!0x1});return U['on'](e2(0x1a7),W=>{const e3=e2;let a0=e[e3(0x2f6)](W)['split'](e['sep']),a1=a0['pop'](),a2=e[e3(0x22c)](W,a1+'.vue'),a3=e[e3(0x22c)](W,a1+e3(0x323));f[e3(0xd4)](a2)||f['existsSync'](a3)||a1==='components'||a0[a0[e3(0x334)]-0x1]!==e3(0xc9)||(f[e3(0x314)](a2,G),u(Q));}),U['on']('unlinkDir',W=>{const e4=e2;let a0=e['resolve'](W)['split'](e[e4(0x39e)]);a0[a0[e4(0x334)]-0x2]===e4(0xc9)&&u(Q);}),U['on'](e2(0x302),function(W){const e5=e2;console['error'](e5(0x3af),W);}),U;}d[dP(0x274)]=function({target:Q,ROOT:T,name:U,core:W,isDev:a0}){return{'name':'zen-auto-code','configureServer'(a1){const e6=b;a1[e6(0x343)][e6(0x134)](K(T,U));let a2=[M(T),O(T)];a1[e6(0x30f)]&&a1[e6(0x30f)]['on']('close',()=>{const e7=e6;a2[e7(0x2dd)](a3=>a3&&a3[e7(0x283)]());});},'closeBundle'(){a0||setTimeout(()=>{const e8=b;Q===e8(0x20b)?r(T,W):Q&&q(T,Q,W);},0x64);}};};}());}),et=pe((c,d)=>{Y(),(function(){let e=require('fs'),f=require('path');d['exports']=function({outDir:h}){return{'name':'zen-css-inject','closeBundle'(){const e9=b;if(!h||!e[e9(0xd4)](h))return;e[e9(0x1b9)](h)['filter'](j=>j[e9(0x235)](e9(0x304)))[e9(0x2dd)](j=>{const ea=e9;let k=e[ea(0x3b5)](f[ea(0x22c)](h,j),ea(0x366)),l=f['join'](h,j[ea(0x1a6)](/\.css$/,ea(0x323)));if(e[ea(0xd4)](l)){let m=e[ea(0x3b5)](l,ea(0x366)),n=';(function(){var\x20s=document.createElement(\x27style\x27);s.appendChild(document.createTextNode('+JSON[ea(0x156)](k)+'));document.head.appendChild(s)})();';e[ea(0x314)](l,n+m);}e[ea(0x1b3)](f[ea(0x22c)](h,j));});}};};}());}),At=pe((c,d)=>{Y(),(function(){const eb=b;let e=require('fs'),f=require(eb(0x2ec)),g={'compact':!0x0,'stringArray':!0x0,'stringArrayEncoding':[eb(0x12f)],'stringArrayThreshold':0.75,'identifierNamesGenerator':eb(0x19e),'selfDefending':!0x1,'target':eb(0x2ac),'renameGlobals':!0x1};d[eb(0x274)]=function({outDir:h}){return{'name':'zen-obfuscate','closeBundle'(){const ec=b;if(!h||!e[ec(0xd4)](h))return;let j=e[ec(0x1b9)](h)[ec(0x159)](l=>l['endsWith'](ec(0x323)));if(j[ec(0x334)]===0x0)return;let k;try{k=require('javascript-obfuscator');}catch{throw new Error(ec(0xde));}j[ec(0x2dd)](l=>{const ed=ec;let m=f['join'](h,l),n=e[ed(0x3b5)](m,ed(0x366)),q=k[ed(0x380)](n,g)[ed(0x1c9)]();e[ed(0x314)](m,q),console[ed(0xe7)](ed(0x346)+l,'('+(q['length']/0x400)[ed(0x290)](0x1)+ed(0x32f));});}};};}());}),xt=pe((c,d)=>{Y(),(function(){const ee=b;let e=require('path'),f=et(),h=[ee(0x29c),ee(0x1ce),ee(0x110),'vant'],j={'vue':ee(0x282),'vue-router':ee(0x117),'element-plus':'ElementPlus','vant':ee(0x369)};d['exports']=function({outDir:k,extraEntries:l,ROOT:m,srcRoot:n}){const ef=ee;return{'name':ef(0x30b),async 'closeBundle'(){const eg=ef;if(!l||l[eg(0x334)]===0x0)return;let {default:q}=await import(eg(0x354)),{default:r}=await import(eg(0x279)),{build:s}=await import(eg(0x19a));for(let t of l){let u=e[eg(0x2f7)](t,'.js');await s({'configFile':!0x1,'root':m,'logLevel':eg(0x302),'plugins':[q(),r({'include':/\.(jsx|js)/}),f({'outDir':k})],'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1},'resolve':{'extensions':[eg(0x323),eg(0x2cf),'.jsx','.json'],'alias':{'@':n,'@icons':e[eg(0x2f6)](m,'node_modules/zen-app-icon/extend')}},'css':{'cssCodeSplit':!0x1},'build':{'outDir':k,'emptyOutDir':!0x1,'copyPublicDir':!0x1,'minify':eg(0x2b1),'target':eg(0x194),'sourcemap':!0x1,'lib':{'entry':t,'formats':['umd'],'name':'zen','fileName':()=>u+eg(0x323),'cssFileName':u},'rolldownOptions':{'external':h,'output':{'globals':j,'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':'none'}}}}}});}}};};}());}),kt=pe((c,d)=>{Y(),(function(){const eh=b;let e={'vue':eh(0x282),'vue-router':eh(0x117),'element-plus':eh(0x2f0),'vant':'vant'},f=eh(0x214),h=new RegExp(eh(0x374)+f+eh(0x35c),'g'),j=new RegExp(eh(0x259)+f+eh(0x35c),'g'),k=new RegExp('import\x5cs*\x5c{([^}]*)\x5c}\x5cs*from\x5cs*[\x27\x5c\x22]('+f+')[\x27\x5c\x22]','g'),l=new RegExp('import\x5cs+([\x5cw$]+)\x5cs*from\x5cs*[\x27\x5c\x22]('+f+eh(0x35c),'g'),m=new RegExp(eh(0x1b7)+f+eh(0x35c),'g');d['exports']=function({isDev:n}){const ei=eh;return{'name':ei(0x320),'transform'(q,r){const ej=ei;if(!n||!q||r['indexOf'](ej(0x1a9))>-0x1)return null;let s=!0x1;return q=q[ej(0x1a6)](h,(t,u,w)=>(s=!0x0,ej(0xfe)+u+ej(0x1e2)+e[w])),q=q[ej(0x1a6)](j,(t,u,w,y)=>{const ek=ej;s=!0x0;let z=w[ek(0x2de)]()[ek(0x1a6)](/\s+as\s+/g,':\x20');return ek(0xfe)+u+ek(0x1e2)+e[y]+';\x0aconst\x20{\x20'+z+ek(0x39b)+e[y];}),q=q[ej(0x1a6)](k,(t,u,w)=>(s=!0x0,ej(0x370)+u[ej(0x2de)]()['replace'](/\s+as\s+/g,':\x20')+ej(0x39b)+e[w])),q=q[ej(0x1a6)](l,(t,u,w)=>(s=!0x0,ej(0xfe)+u+ej(0x1e2)+e[w])),q=q[ej(0x1a6)](m,(t,u)=>(s=!0x0,'/*\x20global\x20'+e[u]+'\x20*/')),s?{'code':q,'map':null}:null;}};};}());}),Rt=pe((c,d)=>{const el=dd;Y();var e=require('fs'),f=require('os'),g=require(el(0x2ec)),h=[el(0x376),el(0x21e),el(0x262),el(0x3a1),el(0x20c),el(0x296),el(0x223),el(0x2a1),el(0x36d),el(0x1be),el(0x2a7),el(0x1b4),el(0x2f8),'useCssModule',el(0x171),'useHost',el(0x2ff),'vModelCheckbox',el(0x382),el(0x244),el(0x383),el(0x2f1),el(0x326),el(0x2d8),el(0x130),el(0x1c4),el(0xcc),'TrackOpTypes',el(0x1e9),el(0x108),el(0x142),el(0xcb),el(0x1ba),'getCurrentWatcher',el(0x2b3),el(0x147),el(0x2e6),el(0x19b),el(0x129),el(0x1fb),el(0x392),'onWatcherCleanup','proxyRefs',el(0xf8),el(0x388),el(0x38f),el(0x264),el(0x3b4),el(0x337),el(0x221),'toRaw',el(0x1bc),el(0x32a),el(0x219),el(0x213),'unref',el(0x20a),'capitalize',el(0xff),el(0x14e),el(0x2a5),'toDisplayString',el(0xc6),el(0x11e),el(0x23e),'Comment','DeprecationTypes',el(0x2c4),'ErrorTypeStrings','Fragment',el(0x333),'Static',el(0x10f),el(0x11a),el(0x294),el(0x208),'callWithAsyncErrorHandling',el(0x342),'cloneVNode',el(0x11d),el(0xe2),'createBlock','createCommentVNode',el(0x287),'createElementVNode',el(0x28d),'createPropsRestProxy',el(0x3c7),el(0x29f),'createStaticVNode',el(0x3c3),el(0x180),el(0xe4),'defineComponent','defineEmits','defineExpose',el(0x38c),el(0x2c5),el(0x36e),el(0x3ae),el(0x21d),'getCurrentInstance',el(0x33c),'guardReactiveProps','h','handleError',el(0x258),el(0xe1),el(0x293),el(0x153),el(0x13e),el(0x3ad),el(0x121),el(0x1c1),el(0x3ab),el(0x154),el(0xd5),el(0x306),el(0x25f),el(0x27a),'onActivated',el(0x152),'onBeforeUnmount','onBeforeUpdate',el(0x2d2),el(0x1ec),el(0x23b),'onRenderTracked',el(0x155),el(0x2a9),el(0xf2),el(0x199),el(0x10e),el(0x1d2),'provide',el(0x1c5),'queuePostFlushCb',el(0x1c7),el(0xf4),el(0xec),el(0x2eb),el(0xc7),'resolveDynamicComponent',el(0x17e),el(0x2b8),'setBlockTracking',el(0x20d),el(0x368),el(0x186),el(0x26c),el(0x32d),el(0x395),el(0x12e),el(0x1bf),el(0x1c6),el(0x20e),el(0x272),el(0x169),el(0x389),el(0x148),el(0x1ca),'watch',el(0x297),el(0x2b4),'watchSyncEffect',el(0x240),el(0x128),'withDefaults',el(0x100),el(0x225),el(0x254)];d[el(0x274)]=function(){const em=el;let j=g[em(0x22c)](f['tmpdir'](),em(0x350)),k='//\x20自动生成:vue\x20具名导出指向宿主\x20window.Vue(dev\x20双\x20Vue\x20修复)\x0a'+h[em(0x14a)](l=>'export\x20const\x20'+l+em(0x229)+JSON[em(0x156)](l)+']')[em(0x22c)]('\x0a')+em(0x2c7);try{e[em(0x314)](j,k);}catch{return null;}return{'file':j,'rolldownPlugin':{'name':em(0x1de),'resolveId'(l){const en=em;if(l===en(0x29c))return j;}}};};}),Lt=pe((c,d)=>{'use strict';const eo=dd;Y();var e=require('fs'),f=require('os'),g=require(eo(0x2ec)),h=eo(0x2d1),i=g[eo(0x22c)](f[eo(0x38e)](),eo(0x237),eo(0x2ed)),j='opencode.json',k='/'+j;function l(D){const ep=eo;return String(D||'default')[ep(0x1a6)](/[^a-zA-Z0-9._-]/g,'_');}function m(D){const eq=eo;return g['join'](i,eq(0x2f2)+l(D)+eq(0x32b));}function n(D){const er=eo;try{return JSON['parse'](e[er(0x3b5)](m(D),er(0x366)));}catch{return null;}}function o(D,E){const es=eo;let F=m(D);e['mkdirSync'](i,{'recursive':!0x0,'mode':0x1c0}),e[es(0x314)](F,JSON[es(0x156)](E,null,0x2),{'mode':0x180});try{e[es(0x2ce)](F,0x180);}catch{}return F;}function p(D){const eu=eo;let E={};return(D||[])[eu(0x2dd)](function(F){const ev=eu;let G=typeof F=='string'?F:F&&F['id'];if(!G)return;let H={'name':F&&F[ev(0x21f)]||String(G)};F&&F[ev(0x1b5)]&&(H[ev(0x1b5)]=F[ev(0x1b5)]),F&&F[ev(0x23c)]&&(H['capabilities']=F['capabilities']),E[G]=H;}),E;}function q(D){const ew=eo;return{'providerId':D['providerId']||h,'entry':{'name':D[ew(0x210)]&&D[ew(0x210)][ew(0x21f)]||ew(0x2fc),'package':ew(0x3b7),'settings':{'baseURL':D[ew(0x210)][ew(0x247)],'apiKey':D[ew(0x210)][ew(0x21a)]},'models':p(D['models'])}};}function r(D,E){const ex=eo;if(!D||!E||!E['gateway']||!E[ex(0x210)][ex(0x247)]||!E['gateway'][ex(0x21a)])throw new Error(ex(0x2f3));let F=g[ex(0x22c)](D,j);if(e[ex(0xd4)](F)&&s(D,j))throw new Error(j+ex(0x2e7));let G={};try{G=JSON[ex(0x341)](e[ex(0x3b5)](F,ex(0x366)))||{};}catch{G={};}let H=q(E);(!G[ex(0x2bd)]||typeof G[ex(0x2bd)]!='object')&&(G[ex(0x2bd)]={}),G['providers'][H[ex(0x170)]]=H[ex(0x1fa)],e[ex(0x314)](F,JSON[ex(0x156)](G,null,0x2),{'mode':0x180});try{e[ex(0x2ce)](F,0x180);}catch{}return t(D),{'file':F,'providerId':H[ex(0x170)]};}function s(D,E){const ey=eo;try{let {execFileSync:F}=require('child_process');return F(ey(0x1e8),['ls-files',ey(0xdc),'--',E],{'cwd':D,'stdio':ey(0x271)}),!0x0;}catch{return!0x1;}}function t(D){const ez=eo;try{let E=g['join'](D,ez(0x12a));if(!e[ez(0xd4)](E)||!e[ez(0x288)](E)[ez(0xe9)]())return;let F=g[ez(0x22c)](E,'info','exclude'),G='';try{G=e['readFileSync'](F,ez(0x366));}catch{G='';}if(G['split']('\x0a')['some'](function(H){const eA=ez;return H[eA(0x2de)]()===k;}))return;e[ez(0x1c8)](g[ez(0x31d)](F),{'recursive':!0x0}),e[ez(0x314)](F,G[ez(0x1a6)](/\n*$/,'\x0a')+k+'\x0a');}catch{}}var u=0x5dc0,v=0xf4240,w=g[eo(0x22c)](i,'compaction-owned.json');function x(){const eB=eo;try{return JSON[eB(0x341)](e[eB(0x3b5)](w,eB(0x366)))||{};}catch{return{};}}function y(D){const eC=eo;try{e['mkdirSync'](i,{'recursive':!0x0,'mode':0x1c0}),e[eC(0x314)](w,JSON[eC(0x156)](D,null,0x2),{'mode':0x180});}catch{}}function z(D){const eD=eo;let E=Number(D)||0x0;return E>=v?{'buffer':Math[eD(0x18c)](E/0x2),'keep':{'tokens':u}}:null;}function A(D,E){const eE=eo;if(!D)return!0x1;let F=!!E&&typeof E==eE(0x183),G=g[eE(0x22c)](D,j),H={};if(e[eE(0xd4)](G)){try{H=JSON[eE(0x341)](e[eE(0x3b5)](G,'utf8'))||{};}catch{return!0x1;}if(typeof H!=eE(0x183)||Array['isArray'](H)||s(D,j))return!0x1;}let J=x(),K=g[eE(0x2f6)](D),M=H['compaction'],O=(Q,R)=>JSON['stringify'](Q)===JSON['stringify'](R),P=J[K]!==void 0x0&&O(J[K],M);return F?M===void 0x0?(H['compaction']=E,e[eE(0x314)](G,JSON[eE(0x156)](H,null,0x2)),J[K]=E,y(J),!0x0):P?O(E,M)?!0x1:(H[eE(0x397)]=E,e[eE(0x314)](G,JSON[eE(0x156)](H,null,0x2)),J[K]=E,y(J),!0x0):(J[K]!==void 0x0&&(delete J[K],y(J)),!0x1):M===void 0x0?!0x1:P?(delete H['compaction'],Object['keys'](H)[eE(0x334)]===0x0?e[eE(0x217)](G,{'force':!0x0}):e[eE(0x314)](G,JSON[eE(0x156)](H,null,0x2)),delete J[K],y(J),!0x0):(J[K]!==void 0x0&&(delete J[K],y(J)),!0x1);}function B(D,E){const eF=eo;if(!D)return!0x1;let F=h;try{let J=n(E||'');J&&J['providerId']&&(F=J['providerId']);}catch{}let G=g[eF(0x22c)](D,j),H;try{H=JSON[eF(0x341)](e[eF(0x3b5)](G,eF(0x366)))||{};}catch{return!0x1;}if(!H[eF(0x2bd)]||typeof H[eF(0x2bd)]!=eF(0x183)||!H[eF(0x2bd)][F])return!0x1;delete H['providers'][F],Object[eF(0x1dc)](H[eF(0x2bd)])[eF(0x334)]===0x0&&delete H['providers'],e['writeFileSync'](G,JSON[eF(0x156)](H,null,0x2),{'mode':0x180});try{e[eF(0x2ce)](G,0x180);}catch{}return!0x0;}function C(D){const eG=eo;return D?{'version':D[eG(0x148)],'providerId':D[eG(0x170)]||h,'modelCount':(D[eG(0x277)]||[])['length']}:null;}d[eo(0x274)]={'PROVIDER_ID':h,'CONFIG_FILE':j,'COMPACTION_KEEP_TOKENS':u,'COMPACTION_BIG_CONTEXT':v,'computeCompaction':z,'readCache':n,'writeCache':o,'inject':r,'removeInjected':B,'ensureCompactionDefault':A,'sanitize':C};}),Pt=pe((c,d)=>{Y(),(function(){const eH=b;let e=require('fs'),f=require(eH(0x2ec)),k=require('os'),m=require('zlib'),{Readable:n}=require('stream'),q=Lt(),r=null;try{r=require(eH(0x1dd))['simpleGit'];}catch(a7){console['warn'](eH(0xea),a7&&a7['message']);}let s=null;try{s=require('ws')[eH(0x276)];}catch(a8){console[eH(0x1ca)](eH(0x15b),a8&&a8[eH(0xdd)]);}let t=0x14*0x400*0x400,u=0x4*0x400*0x400,y=[eH(0x2b9)];function z(a9){const eI=eH;try{let aa=new URL(a9);return aa[eI(0x30c)]!==eI(0x2e9)&&aa[eI(0x30c)]!==eI(0x35f)?!0x1:y[eI(0x1ff)](ab=>aa[eI(0x396)]===ab||aa[eI(0x396)]['endsWith']('.'+ab));}catch{return!0x1;}}async function A(a9){const eJ=eH;if(!r)return'';try{let aa=r({'baseDir':a9});if(!await aa['checkIsRepo']())return'';let ab=await aa[eJ(0x1e6)]();return ab&&ab[eJ(0x31a)]||'';}catch{return'';}}let B=typeof le<'u'?le:null,H=new Map();function K(a9){const eK=eH;let aa=B&&B[a9];if(typeof aa=='string'){if(H[eK(0x175)](a9))return H['get'](a9);let ab=m[eK(0x330)](Buffer[eK(0x116)](aa,eK(0x12f)))['toString'](eK(0x366));return H[eK(0x30d)](a9,ab),ab;}return e[eK(0x3b5)](f[eK(0x22c)](__dirname,a9),'utf8');}async function M(a9){const eL=eH;if(!z(a9))throw new Error(eL(0x1e7));let aa=await fetch(a9,{'signal':AbortSignal['timeout'](0x4e20)});if(!aa['ok'])throw new Error(eL(0x220)+aa[eL(0xf9)]);if(Number(aa[eL(0x198)][eL(0x322)](eL(0xe6))||0x0)>t)throw new Error(eL(0x28e));let ab=(aa[eL(0x198)][eL(0x322)](eL(0x211))||'')[eL(0x228)](';')[0x0][eL(0x2de)]();if(!/^image\/(png|jpe?g|gif|webp)$/[eL(0x29d)](ab))throw new Error(eL(0x30e)+(ab||eL(0x150)));let ac=Buffer[eL(0x116)](await aa['arrayBuffer']());if(!ac['length']||ac[eL(0x334)]>t)throw new Error(eL(0x174));return eL(0x227)+ab+eL(0x298)+ac[eL(0x2cd)]('base64');}let O='\u672A\u68C0\u6D4B\u5230\u53EF\u7528\u7684\x20AiWith\x20\u8FD0\u884C\u670D\u52A1\u3002\u8BF7\u5148\u5B8C\u6210\u8FD0\u884C\u73AF\u5883\u5B89\u88C5\uFF08https://opencode.ai\uFF09\uFF0C\u5E76\u786E\u8BA4\u670D\u52A1\u53EF\u7528\u540E\u91CD\u542F\x20dev\x20server\u3002';function Q(a9){return new Promise((aa,ab)=>{const eN=b;let ac=[],ad=0x0,ae=!0x1;a9['on']('data',af=>{const eM=b;if(!ae){if(ad+=af['length'],ad>u){ae=!0x0,ac[eM(0x334)]=0x0,ab(new Error(eM(0x14d)));return;}ac[eM(0x351)](af);}}),a9['on'](eN(0x16c),()=>{const eO=eN;if(!ae)try{let af=Buffer[eO(0x3bb)](ac)[eO(0x2cd)]('utf8');aa(af?JSON[eO(0x341)](af):{});}catch(ag){ab(ag);}}),a9['on'](eN(0x302),ab);});}function U(a9,aa,ab){const eP=eH;a9[eP(0x188)]=aa,a9['setHeader'](eP(0x33f),eP(0x105)),a9[eP(0x16c)](JSON[eP(0x156)](ab));}function W(a9,aa){const eQ=eH;a9[eQ(0x19d)](0xc8,{'Content-Type':'text/event-stream;\x20charset=utf-8','Cache-Control':eQ(0x1b2),'Connection':eQ(0x109)}),a9['flushHeaders']&&a9[eQ(0x157)](),a9['write']('data:\x20'+JSON['stringify']({'type':eQ(0x212),'reason':String(aa||'')})+'\x0a\x0a'),a9['end']();}function a0(a9,aa,ab){const eR=eH;try{let ac=K(aa);a9[eR(0x188)]=0xc8,a9[eR(0xd9)](eR(0x33f),ab+';\x20charset=utf-8'),a9[eR(0xd9)](eR(0xd3),eR(0x151)),a9[eR(0x16c)](ac);}catch{U(a9,0x1f4,{'ok':!0x1,'message':eR(0x102)+aa});}}function a1(a9){const eS=eH;try{let aa=require['resolve'](eS(0x34b),{'paths':[__dirname,f[eS(0x22c)](__dirname,'..')]}),ab=f[eS(0x22c)](f[eS(0x31d)](aa),eS(0x37d),eS(0x2c0));a9[eS(0x188)]=0xc8,a9[eS(0xd9)]('Content-Type',eS(0x133)),a9[eS(0xd9)](eS(0xd3),eS(0x3bd)),a9[eS(0x16c)](e['readFileSync'](ab,'utf8'));}catch{U(a9,0x194,{'ok':!0x1,'message':eS(0x2cb)});}}function a2(a9,aa){const eT=eH;var ab=String(a9||'');return/^thor:/i['test'](ab)&&!/^thor:factory/i[eT(0x29d)](ab)&&!/黑灯工厂/[eT(0x29d)](String(aa||''));}function a3(a9,aa,ab){const eU=eH;return(()=>{try{return Promise['resolve'](a9());}catch(ac){return Promise['reject'](ac);}})()[eU(0x3b9)](function(ac){if(aa<=0x1)throw ac;return new Promise(function(ad){setTimeout(ad,ab);})['then'](function(){return a3(a9,aa-0x1,ab);});});}function a4(a9){const eV=eH;return String(a9??'')['replace'](/[\u0000-\u001f\u007f]+/g,'\x20')[eV(0x1a6)](/[<>]/g,'')[eV(0x2de)]();}function a5(a9){const eW=eH;if(!a9||typeof a9!=eW(0x183))return'';let aa=a4(a9[eW(0x375)]);if(!aa||aa['length']>0x1f4||aa[0x0]!=='/'&&aa[0x0]!=='#')return'';let ab=a4(a9[eW(0x23a)]);if(ab[eW(0x334)]>0xc8)return'';let ac=[eW(0x2ea),'\u5F53\u524D\x20dev\x20\u9875\u9762\uFF1A'+aa];return ab&&ac[eW(0x351)](eW(0x25a)+ab),ac['push']('</aiwith-page-context>'),ac[eW(0x22c)]('\x0a');}function a6({ROOT:a9,name:aa,aiwithRoot:ab,kooteamOrigin:ac,factoryOrigin:ad,aiwithRemote:af,mcpDisable:ag,mcpAllow:ah,gatewaySecret:ai,ai_gateway:aj}){const eX=eH;let ak=ac||eX(0x275),al=!0x1,am=ag===!0x1||ag===null?[]:(Array['isArray'](ag)?ag:[eX(0x31b)])[eX(0x159)](Boolean),ao=ah===!0x1||ah===null||Array['isArray'](ah)&&ah[eX(0x334)]===0x0?[]:(Array[eX(0x1ab)](ah)?ah:[eX(0x2db),'chrome-devtools'])[eX(0x159)](Boolean),ap=ao[eX(0x334)]?ao:null,aq=bE=>!ap||ap[eX(0x234)](bE)>-0x1,ar=f['join'](k[eX(0x2b6)](),eX(0x378)),as=0x7530,au=Object[eX(0x2ee)](null),av=Object[eX(0x2ee)](null),aw=null,ax=!0x1;am[eX(0x2dd)](function(bE){au[bE]=!0x1;});function ay(){const eY=eX;if(!ax){ax=!0x0;try{let bE=JSON[eY(0x341)](e[eY(0x3b5)](ar,eY(0x366)));bE&&bE[eY(0x2d7)]===aR&&bE[eY(0x2f4)]&&typeof bE[eY(0x2f4)]=='object'&&Object['keys'](bE[eY(0x2f4)])['forEach'](function(bF){const eZ=eY;au[bF]=!!bE[eZ(0x2f4)][bF];});}catch(bF){bF&&bF[eY(0x3c4)]!==eY(0x2d5)&&console['warn'](eY(0x1eb),bF&&bF[eY(0xdd)]||bF);}Object[eY(0x1dc)](au)[eY(0x2dd)](function(bG){aq(bG)||(au[bG]=!0x1);});}}function az(){const f0=eX;try{e['writeFileSync'](ar,JSON[f0(0x156)]({'root':aR,'desired':au}));}catch{}}function aA(bE){return aw||(aw=aB(bE)['catch'](function(){return null;})['then'](function(bF){return aw=null,bF;}),aw);}async function aB(bE){const f1=eX;ay();let bF=bE||await aW()[f1(0x3b9)](function(){return null;});if(!bF)return null;let bG;try{bG=await aU(bF);}catch{return null;}for(let bH of bG){let bI=aq(bH[f1(0x21f)])?au[bH[f1(0x21f)]]:!0x1;if(bI===void 0x0)continue;let bJ=bH['status'];if(!(bI?bJ===f1(0x2e3)||bJ===f1(0xd8)&&Date['now']()>=(av[bH[f1(0x21f)]]||0x0):bJ===f1(0x12c)))continue;let bK={'server':bH[f1(0x21f)],'location':{'directory':aR}};try{bI?await bF['mcp']['connect'](bK):await bF[f1(0x119)]['disconnect'](bK),delete av[bH[f1(0x21f)]];}catch(bL){av[bH[f1(0x21f)]]=Date[f1(0x1e4)]()+as,console[f1(0x1ca)](f1(0x2ba)+(bI?f1(0x278):'disconnect')+'\x20'+bH[f1(0x21f)]+f1(0x204),bL&&bL[f1(0xdd)]||bL);}}return aU(bF)['catch'](function(){return null;});}let aC=ai?String(ai):'';function aD(bE){const f2=eX;if(af)return!0x0;if(aC){let bH=(bE&&bE[f2(0x198)]||{})[f2(0x3a9)];return(Array[f2(0x1ab)](bH)?bH[0x0]:bH)===aC;}let bF=bE&&bE[f2(0x1e0)]&&bE[f2(0x1e0)][f2(0x266)]||'',bG=bF['indexOf'](f2(0x358))===0x0?bF[f2(0x2a6)](0x7):bF;return bG==='127.0.0.1'||bG===f2(0x27d);}let aE=String(ad||eX(0x377))[eX(0x1a6)](/\/+$/,''),aF=aa||'',aG={'factory':['tasks','task',eX(0x149),eX(0x331),eX(0x313),eX(0x1ef),eX(0x3c1),'activities'],'factoryStory':['stories',eX(0x143),eX(0x3b3),'patchStory',eX(0x1ac),'orderTask','unorder',eX(0x3a8),eX(0x21b),eX(0x390)],'factoryIssue':[eX(0x24f),eX(0x325),'createIssue',eX(0x209),eX(0x2dc),eX(0x3c1),eX(0x390)],'factoryCell':[eX(0xf9),eX(0x278)],'userGit':[eX(0x299),eX(0x328),'removeKey']};function aH(bE,bF){const f4=eX;let bG=bK=>{const f3=b;let bL=bE[f3(0x198)][bK['toLowerCase']()];return Array[f3(0x1ab)](bL)?bL[0x0]:bL;},bH={};bF&&(bH[f4(0x33f)]=f4(0xd1));let bI=bG('token');bI&&(bH[f4(0x131)]=bI),aF&&(bH[f4(0x205)]=aF);let bJ=bG(f4(0x22d));return bJ&&(bH['zid']=bJ),bH;}async function aI(bE,bF,bG,bH){const f5=eX;let bI;try{bI=await fetch(aE+bF,{'method':f5(0x145),'headers':aH(bH,!0x0),'body':JSON[f5(0x156)](bG||{}),'signal':AbortSignal[f5(0x15e)](0x7530)});}catch(bK){return U(bE,0x1f6,{'ok':!0x1,'message':f5(0x18b)+aE+'\uFF1A'+(bK&&bK[f5(0xdd)]?bK['message']:String(bK))});}let bJ=await bI[f5(0x317)]();bE['statusCode']=bI[f5(0xf9)],bE[f5(0xd9)](f5(0x33f),f5(0x105)),bE[f5(0xd9)](f5(0xd3),'no-cache'),bE[f5(0x16c)](bJ);}let aJ=String(aj||'')[eX(0x2de)]()[eX(0x1a6)](/\/+$/,'');async function aK(bE,bF){const f6=eX;if(!aJ)return U(bF,0xc8,{'ok':!0x0,'applied':!0x1,'reason':f6(0x120)});let bG=aH(bE,!0x0);if(!bG[f6(0x131)])return U(bF,0x191,{'ok':!0x1,'needLogin':!0x0,'message':f6(0x189)});let bH;try{let bJ=await fetch(aE+f6(0xe8),{'method':f6(0x145),'headers':bG,'body':'{}','signal':AbortSignal['timeout'](0x7530)});if(bH=await bJ[f6(0x38b)]()['catch'](function(){return{};}),!bJ['ok']||bH[f6(0x167)]===!0x1||typeof bH[f6(0x365)]==f6(0xf6)&&bH[f6(0x365)]!==0x0)return U(bF,bJ[f6(0xf9)]>=0x190?bJ[f6(0xf9)]:0x1f6,{'ok':!0x1,'message':bH['message']||f6(0x3aa)});}catch(bK){return U(bF,0x1f6,{'ok':!0x1,'message':f6(0x101)+aE+'\uFF1A'+(bK&&bK[f6(0xdd)]?bK[f6(0xdd)]:String(bK))});}let bI=bH[f6(0x292)]||{};if(!bI[f6(0x210)]||!bI[f6(0x210)][f6(0x247)]||!bI[f6(0x210)][f6(0x21a)])return U(bF,0x1f6,{'ok':!0x1,'message':'\u914D\u7F6E\u670D\u52A1\u8FD4\u56DE\u4E0D\u5B8C\u6574\uFF08\u7F3A\u5C11\x20gateway.baseURL/token\uFF09'});bI[f6(0x210)][f6(0x247)]=aJ;try{q[f6(0x27c)](aa||'',bI),q[f6(0x121)](aR,bI);}catch(bL){return U(bF,0x1f4,{'ok':!0x1,'message':'\u914D\u7F6E\u5199\u5165\u5931\u8D25\uFF1A'+(bL&&bL['message']?bL[f6(0xdd)]:String(bL))});}return U(bF,0xc8,Object[f6(0x353)]({'ok':!0x0,'applied':!0x0},q[f6(0x2c1)](bI)));}async function aL(bE,bF,bG){const f7=eX;let bH=bG[f7(0x228)]('?')[0x0];if(bH===f7(0x192))return U(bF,0xc8,{'ok':!0x0,'origin':aE,'app':aF});if(bE[f7(0x22a)]!=='POST')return U(bF,0x195,{'ok':!0x1,'message':'\u5DE5\u5382\u63A5\u53E3\u4EC5\u652F\u6301\x20POST'});let bI=bH[f7(0x224)](/^\/api\/(factory[A-Za-z]*|userGit)\/([A-Za-z]+)$/);if(!bI||!aG[bI[0x1]]||aG[bI[0x1]][f7(0x234)](bI[0x2])===-0x1)return U(bF,0x194,{'ok':!0x1,'message':f7(0xfa)+bH});let bJ=await Q(bE)[f7(0x3b9)](()=>({}));return bJ[f7(0x205)]=aF,aI(bF,bH,bJ,bE);}async function aM(bE,bF,bG){const f8=eX;let bH=bG[f8(0x228)]('?')[0x1]||'',bI=aH(bE,!0x1),bJ=bH;bI[f8(0x131)]&&bJ[f8(0x234)](f8(0x256))===-0x1&&(bJ+=(bJ?'&':'')+f8(0x256)+encodeURIComponent(bI[f8(0x131)])),aF&&bJ[f8(0x234)](f8(0x126))===-0x1&&(bJ+=(bJ?'&':'')+f8(0x126)+encodeURIComponent(aF));let bK;try{bK=await fetch(aE+f8(0x231)+(bJ?'?'+bJ:''),{'headers':bI});}catch(bO){return W(bF,f8(0x118)+(bO&&bO['message']?bO[f8(0xdd)]:String(bO)));}if(!bK['ok']||!bK[f8(0x160)])return W(bF,f8(0x15d)+bK[f8(0xf9)]);let bL=bK[f8(0x198)][f8(0x322)](f8(0x211))||'';if(bL[f8(0x234)]('text/event-stream')===-0x1){try{bK[f8(0x160)][f8(0x136)]&&bK[f8(0x160)][f8(0x136)]();}catch{}return W(bF,f8(0x1ee)+bL);}bF[f8(0x19d)](0xc8,{'Content-Type':f8(0x25d),'Cache-Control':f8(0x1b2),'Connection':f8(0x109),'X-Accel-Buffering':'no'}),bF[f8(0x157)]&&bF[f8(0x157)]();let bM=n[f8(0xf7)](bK[f8(0x160)]),bN=()=>{const f9=f8;try{bM[f9(0x345)]();}catch{}};bE['on'](f8(0x283),bN),bF['on'](f8(0x283),bN),bM['on'](f8(0x302),()=>{const fa=f8;try{bF[fa(0x16c)]();}catch{}}),bM[f8(0x3a5)](bF);}function aN(bE){const fb=eX;if(typeof bE!=fb(0x24b)||!bE)return null;let bF=bE;return bF[fb(0x234)]('//')===0x0&&(bF=fb(0x35f)+bF),/^https?:\/\//i['test'](bF)?bF:bF[fb(0x234)]('/kooteam/')===0x0?ak+bF[fb(0x2a6)](0x8):null;}function aO(bE){const fc=eX;if(ab)return f['resolve'](bE,ab);let bF=k[fc(0x38e)](),bG=f[fc(0x2f6)](bE);for(let bH=0x0;bH<=0x4&&bG!==bF;bH++){if(e[fc(0xd4)](f[fc(0x22c)](bG,fc(0x12a))))return bG;let bI=f[fc(0x31d)](bG);if(bI===bG)break;bG=bI;}return null;}let aP=aO(a9),aQ=typeof aP==eX(0x24b)&&aP[eX(0x334)]>0x0,aR=f[eX(0x2f6)](aP||a9);if(aQ&&aR!==f[eX(0x2f6)](a9)&&console['log'](eX(0x3a4)+aR),aQ)try{if(aJ){let bE=q[eX(0x360)](aa||'');bE&&bE[eX(0x210)]&&bE[eX(0x210)][eX(0x247)]&&(bE['gateway'][eX(0x247)]=aJ,q[eX(0x121)](aR,bE));}else q[eX(0xfd)](aR,aa||'')&&console[eX(0xe7)](eX(0x161));}catch(bF){console[eX(0x1ca)](eX(0x3a0),bF&&bF['message']);}let aS=null,aT=new Set();function aU(bG){const fd=eX;return bG[fd(0x119)]['list']({'location':{'directory':aR}})[fd(0xd6)](bH=>(bH['data']||[])[fd(0x14a)](bI=>({'name':bI['name'],'status':bI[fd(0xf9)]&&bI['status'][fd(0xf9)]||fd(0x144),'error':bI[fd(0xf9)]&&bI[fd(0xf9)]['error']?String(bI['status']['error']):''})))[fd(0x3b9)](bH=>(console['warn'](fd(0x1a4),bH&&bH[fd(0xdd)]),[]));}function aV(bG){return a3(function(){const fe=b;return bG[fe(0x226)]['list']({'location':{'directory':aR}})[fe(0xd6)](function(bH){const ff=fe;if(!bH||!bH[ff(0x292)]||bH['data'][ff(0x334)]===0x0)throw new Error(ff(0x2f9));return bH;});},0x4,0x320)['catch'](function(){return{'data':[]};});}async function aW(){const fh=eX;return aS||(aS=(async()=>{const fg=b;let bG=await import(fg(0x37a)),bH=await import(fg(0x23d)),bI=await bG['Service'][fg(0x2ae)](),bJ=bG[fg(0x1af)][fg(0x198)](bI);return bH[fg(0x12b)][fg(0x2fe)]({'baseUrl':bI[fg(0x201)],'headers':bJ});})()[fh(0x3b9)](bG=>{const fi=fh;aS=null;let bH=new Error(bG&&bG['message']?bG[fi(0xdd)]:String(bG));throw bH['code']=fi(0x37e),bH;})),aS;}function aX(bG,bH){const fj=eX;let bI=bH&&bH[fj(0xdd)]?String(bH[fj(0xdd)]):String(bH);U(bG,0x1f7,{'ok':!0x1,'code':fj(0x37e),'message':O,'detail':bI});}let aY=null,aZ=null,b0=eX(0x381),b1=bG=>bG[eX(0xc8)]!==eX(0x20f)||(bG[eX(0x22e)]||[])['some'](bH=>(bH[eX(0x32c)]||0x0)>0x0||(bH[eX(0x33d)]||0x0)>0x0||bH['cache']&&((bH[eX(0x1a2)][eX(0x178)]||0x0)>0x0||(bH[eX(0x1a2)][eX(0x125)]||0x0)>0x0)),b2=bG=>(bG['name']||'')['toLowerCase']()[eX(0x234)](b0)>-0x1||(bG['modelID']||'')['toLowerCase']()[eX(0x234)](b0)>-0x1;function b3(bG){const fk=eX;return bG[fk(0x265)](bH=>bH[fk(0xc8)]==='deepseek'&&bH[fk(0x31c)]===fk(0x36a))||bG[fk(0x265)](bH=>b1(bH)&&b2(bH))||null;}async function b4(bG){const fl=eX;let bH=await aV(bG);return b3(bH[fl(0x292)]||[]);}function b5(bG){return r?r({'baseDir':aR,'timeout':{'block':bG||0x7530}}):null;}function b6(bG){const fm=eX;return typeof bG!=fm(0x24b)||!bG||bG[0x0]==='/'||/^[a-zA-Z]:[\\/]/['test'](bG)||bG[fm(0x228)](/[\\/]/)['some'](bH=>bH==='..')?null:bG;}function b7(bG,bH){const fn=eX;let bI=(bG[fn(0x26e)]||[])[fn(0x14a)](bJ=>({'path':bJ[fn(0x2ec)],'index':bJ['index']||'\x20','working':bJ[fn(0x33e)]||'\x20'}));return{'isRepo':!0x0,'branch':bG[fn(0x31a)]||bH&&bH[fn(0x31a)]||'','tracking':bG[fn(0x2c8)]||'','ahead':bG[fn(0x2d4)]||0x0,'behind':bG['behind']||0x0,'detached':!!bG[fn(0x3a6)],'clean':bI[fn(0x334)]===0x0,'branches':bH&&bH[fn(0x200)]||[],'files':bI};}async function b8(){const fo=eX;let bG=b5();if(!bG)return{'isRepo':!0x1,'reason':fo(0x1e5)};if(!await bG[fo(0x1df)]()[fo(0x3b9)](()=>!0x1))return{'isRepo':!0x1,'reason':fo(0x257)};let [bH,bI]=await Promise[fo(0x200)]([bG[fo(0xf9)](),bG[fo(0x1e6)]()[fo(0x3b9)](()=>({'all':[],'current':''}))]);return b7(bH,bI);}async function b9(bG,bH){const fp=eX;let bI=b5();if(!bI)throw new Error(fp(0x1e5));let bJ=bH||{},bK=()=>{const fq=fp;let bL=Array[fq(0x1ab)](bJ[fq(0x348)])?bJ[fq(0x348)]:[],bM=bL['map'](b6)['filter'](Boolean);if(bL[fq(0x334)]&&!bM[fq(0x334)])throw new Error(fq(0x135));return bM;};switch(bG){case fp(0xf9):return{'data':await b8()};case fp(0x11c):{let bL=bK();return bL[fp(0x334)]?await bI[fp(0x309)](bL):await bI['add'](['-A']),{'data':await b8()};}case fp(0x2a2):{let bM=bK();return await bI['reset'](bM[fp(0x334)]?[fp(0x3be),'--',...bM]:['HEAD']),{'data':await b8()};}case fp(0xce):{let bN=typeof bJ[fp(0xdd)]==fp(0x24b)?bJ[fp(0xdd)][fp(0x2de)]():'';if(!bN)throw new Error(fp(0x124));if(bN['length']>0xfa0)throw new Error(fp(0x1d8));let bO=await bI[fp(0xce)](bN);if(!bO||!bO[fp(0xce)])throw new Error(fp(0x1e1));return{'data':await b8(),'summary':{'text':fp(0x238)+bO[fp(0xce)][fp(0x2a6)](0x0,0x8)}};}case fp(0x391):{let bP=typeof bJ[fp(0xeb)]=='string'?bJ[fp(0xeb)]:'';if(!bP)throw new Error('\u53C2\u6570\u9519\u8BEF:\x20branch');if(!(await bI[fp(0x1e6)]())[fp(0x200)][fp(0xef)](bP))throw new Error(fp(0x241)+bP);return await bI[fp(0x391)](bP),{'data':await b8(),'summary':{'text':fp(0x260)+bP}};}case fp(0x34a):{let bQ=await b5(0x1d4c0)[fp(0x34a)](),bR=bQ&&bQ['summary']&&bQ['summary'][fp(0x2ab)]||0x0;return{'data':await b8(),'summary':{'text':fp(0x255)+bR+fp(0x28c)}};}case fp(0x351):{let bS=await b5(0x1d4c0)[fp(0x351)](),bT=bS&&bS[fp(0x1d4)]&&bS[fp(0x1d4)][0x0]||null;return{'data':await b8(),'summary':{'text':bT?fp(0x36c)+bT['remote']+'/'+bT[fp(0x20b)]:'\u5DF2\u63A8\u9001'}};}default:throw new Error(fp(0x22b)+bG);}}function ba(bG,bH){const fr=eX;if(bG['readyState']===0x1)try{bG[fr(0x123)](JSON[fr(0x156)](bH));}catch{}}async function bb(bG,bH){const fs=eX;if(bG===fs(0xeb))return{'data':{'branch':await A(aR)}};if(typeof bG==fs(0x24b)&&bG['indexOf'](fs(0x3b6))===0x0)return b9(bG[fs(0x2a6)](0x4),bH);throw new Error('\u672A\u77E5\u6307\u4EE4:\x20'+bG);}let bc=new Set(),bd=null,bf=0x0,bg=new Map();function bh(){const ft=eX;if(bd&&bd[ft(0x371)]===0x1&&bc[ft(0x175)](bd))return bd;let bG=null;return bc[ft(0x2dd)](bH=>{const fu=ft;bH[fu(0x371)]===0x1&&(bG=bH);}),bd=bG,bG;}function bi(bG){if(!s||!bG)return null;let bH=new s({'noServer':!0x0,'maxPayload':0x400*0x400});return bG['on']('upgrade',(bI,bJ,bK)=>{const fv=b;let bL=(bI[fv(0x201)]||'')[fv(0x228)]('?')[0x0];if((bL===fv(0x3b8)||bL===fv(0x2c6))&&!aD(bI)){bJ[fv(0x345)]();return;}if(bL===fv(0x3b8)){bH['handleUpgrade'](bI,bJ,bK,bM=>bH[fv(0x2fa)](fv(0xed),bM,bI));return;}bL===fv(0x2c6)&&bH[fv(0x1db)](bI,bJ,bK,bM=>bH[fv(0x2fa)](fv(0x249),bM,bI));}),bH['on']('connection',bI=>{const fx=b;let bJ=setInterval(()=>{const fw=b;try{bI[fw(0x371)]===0x1&&bI['ping']();}catch{}},0x4e20);bI['on']('close',()=>clearInterval(bJ)),bI['on'](fx(0x302),()=>clearInterval(bJ)),bI['on'](fx(0xdd),bK=>{const fy=fx;let bL;try{bL=JSON[fy(0x341)](String(bK));}catch{return;}if(!bL||typeof bL[fy(0x24a)]!=fy(0x24b))return;let bM=bL['id'],bN=Object[fy(0x353)]({},bL);delete bN['id'],delete bN[fy(0x24a)],bb(bL[fy(0x24a)],bN)[fy(0xd6)](bO=>ba(bI,Object['assign']({'id':bM,'ok':!0x0},bO)))[fy(0x3b9)](bO=>ba(bI,{'id':bM,'ok':!0x1,'message':bO&&bO[fy(0xdd)]||String(bO)}));});}),bH['on']('page',bI=>{const fz=b;bc[fz(0x309)](bI),bd=bI,bI[fz(0x216)]=!0x0;let bJ=setInterval(()=>{const fA=fz;try{if(bI[fA(0x216)]===!0x1){bI[fA(0x165)]();return;}bI[fA(0x216)]=!0x1,bI[fA(0x371)]===0x1&&bI[fA(0x24d)]();}catch{}},0x4e20);bI['on']('pong',()=>{bI['__aiwithAlive']=!0x0;});let bK=()=>{clearInterval(bJ),bc['delete'](bI),bd===bI&&(bd=null);};bI['on'](fz(0x283),bK),bI['on'](fz(0x302),bK),bI['on']('message',bL=>{const fB=fz;let bM;try{bM=JSON[fB(0x341)](String(bL));}catch{return;}if(!bM)return;if(bM['type']===fB(0x16d)){bI[fB(0x3bc)]={'url':bM[fB(0x201)],'title':bM['title'],'at':Date[fB(0x1e4)]()};return;}if(!bM['id'])return;let bN=bg[fB(0x322)](bM['id']);bN&&(bg[fB(0x301)](bM['id']),bN(bM));});}),bH;}function bj(bG,bH,bI){return new Promise((bJ,bK)=>{const fC=b;let bL=bh();if(!bL){bK(new Error(fC(0x26b)));return;}let bM='p'+ ++bf,bN=setTimeout(()=>{const fD=fC;bg[fD(0x301)](bM),bK(new Error(fD(0x195)));},bI||0x4e20);bg[fC(0x30d)](bM,bO=>{clearTimeout(bN),bJ(bO);});try{bL[fC(0x123)](JSON[fC(0x156)]({'id':bM,'cmd':bG,'args':bH||{}}));}catch(bO){clearTimeout(bN),bg['delete'](bM),bK(bO);}});}function bk(){const fE=eX;let bG=[],bH=bh();return bc[fE(0x2dd)](bI=>{const fF=fE;let bJ=bI[fF(0x3bc)]||{};bG[fF(0x351)]({'url':bJ[fF(0x201)]||'','title':bJ[fF(0x23a)]||'','active':bI===bH,'at':bJ['at']||0x0});}),{'connected':bG['length'],'activeIndex':bG[fE(0xfc)](bI=>bI[fE(0x1e3)]),'pages':bG};}function bl(bG){return new Promise(bH=>setTimeout(bH,bG));}async function bm(bG){const fG=eX;let bH=Date[fG(0x1e4)]()+(bG||0x1388);for(;Date[fG(0x1e4)]()<bH;){let bI=bh();if(bI)return bI;await bl(0x78);}return bh();}async function bn(bG,bH,bI){const fH=eX;let bJ=Date[fH(0x1e4)]()+(bI||0x1f40);for(;Date[fH(0x1e4)]()<bJ;){await bl(0x78);let bL=bh();if(!bL)continue;let bM=bL[fH(0x3bc)]&&bL[fH(0x3bc)]['url']||'';if(bL!==bG||bM!==bH){await bl(0x78);let bN=bh();return bN&&bN['__aiwithMeta']&&bN[fH(0x3bc)]['url']||bM;}}let bK=bh();return bK&&bK['__aiwithMeta']&&bK['__aiwithMeta'][fH(0x201)]||'';}async function bo(bG,bH,bI){const fI=eX;let bJ=bI[fI(0x228)]('?')[0x0];if(bJ===fI(0xfb))return bG['method']!=='GET'?U(bH,0x195,{'ok':!0x1,'message':fI(0x1a8)}):U(bH,0xc8,{'ok':!0x0,'data':bk()});let bK=bJ[fI(0x224)](/^\/api\/page\/([a-z]+)$/);if(!bK)return U(bH,0x194,{'ok':!0x1,'message':fI(0x127)+bJ});if(bG[fI(0x22a)]!==fI(0x145))return U(bH,0x195,{'ok':!0x1,'message':fI(0x28a)});let bL=await Q(bG)[fI(0x3b9)](()=>({})),bM=bK[0x1];if(bM===fI(0x336)){if(!String(bL&&bL['to']||'')[fI(0x2de)]())return U(bH,0x190,{'ok':!0x1,'message':fI(0xf3)});let bN=bh();if(!bN)return U(bH,0x1f7,{'ok':!0x1,'code':fI(0x26b),'message':fI(0x3a3)});let bO=bN['__aiwithMeta']&&bN[fI(0x3bc)][fI(0x201)]||'';try{bN[fI(0x123)](JSON['stringify']({'id':'p'+ ++bf,'cmd':fI(0x336),'args':bL||{}}));}catch(bQ){return U(bH,0x1f4,{'ok':!0x1,'message':bQ&&bQ[fI(0xdd)]||String(bQ)});}let bP=await bn(bN,bO,0x1f40);return U(bH,0xc8,{'ok':!0x0,'data':{'ok':!0x0,'url':bP}});}if(bM===fI(0x1bd)){if(!await bm(0x1388))return U(bH,0x1f7,{'ok':!0x1,'code':fI(0x26b),'message':fI(0x3a3)});let bR=Math[fI(0x2b0)](Math[fI(0x25e)](Number(bL&&bL[fI(0x15e)])||0x3a98,0x3e8),0xea60);try{let bS=await bj(fI(0x1bd),Object[fI(0x353)]({},bL,{'timeout':bR}),bR+0xbb8);return U(bH,0xc8,{'ok':!0x0,'data':bS[fI(0x292)]});}catch(bT){return U(bH,0x1f4,{'ok':!0x1,'message':bT&&bT['message']||String(bT)});}}try{let bU=await bj(bM,bL,0x61a8);return U(bH,0xc8,{'ok':!0x0,'data':bU[fI(0x292)]});}catch(bV){return bV&&bV[fI(0xdd)]===fI(0x26b)?U(bH,0x1f7,{'ok':!0x1,'code':fI(0x26b),'message':'\u6CA1\u6709\u5DF2\u8FDE\u63A5\u7684\u9875\u9762\uFF08\u8BF7\u786E\u8BA4\x20dev\x20\u9875\u9762\u5DF2\u6253\u5F00\u5E76\u5B8C\u6210\u52A0\u8F7D\uFF09'}):U(bH,0x1f4,{'ok':!0x1,'message':bV&&bV[fI(0xdd)]||String(bV)});}}function bp(bG){const fJ=eX;let bH=bG&&bG[fJ(0x30f)];if(!bH||!bG[fJ(0x1f5)])return;let bI=()=>{const fK=fJ;try{let bJ=bH[fK(0xca)](),bK=bJ&&typeof bJ==fK(0x183)?bJ['port']:null;if(!bK)return;let bL=fK(0x261)+bK;e[fK(0x314)](f[fK(0x22c)](k[fK(0x2b6)](),fK(0x182)),JSON[fK(0x156)]({'root':aR,'origin':bL,'at':Date['now']()})),bs(bL);}catch{}};bH[fJ(0x181)]&&bI(),bH['on'](fJ(0x181),bI);}let bq=eX(0x111);function br(){const fL=eX;let bG=f[fL(0x31d)](aR);for(;bG&&bG!==f['dirname'](bG);){let bH=f[fL(0x22c)](bG,fL(0x13d),'plugins',fL(0x25c));try{let bI=f[fL(0x22c)](bH,fL(0x352));e[fL(0xd4)](bI)&&e[fL(0x3b5)](bI,fL(0x366))['indexOf'](bq)===0x0&&(e[fL(0x217)](bH,{'recursive':!0x0,'force':!0x0}),console[fL(0x1ca)](fL(0x3c2)+bH));}catch{}bG=f['dirname'](bG);}}function bs(bG){const fM=eX;try{br();let bH=K(fM(0x1da)),bI=bq+'\x0a//\x20目标\x20dev\x20server:\x20'+bG+'\x0a'+bH[fM(0x2b2)](fM(0x364),bG),bJ=f[fM(0x22c)](aR,'.opencode',fM(0x3b1),'aiwith-page'),bK=f[fM(0x22c)](bJ,fM(0x352)),bL=null;try{bL=e[fM(0x3b5)](bK,'utf8');}catch{bL=null;}if(bL===bI)return;e['mkdirSync'](bJ,{'recursive':!0x0}),e[fM(0x314)](bK,bI);}catch{}}async function bt(bG){const fN=eX;let bH=await b4(bG)[fN(0x3b9)](()=>null);return aY=await bG['session'][fN(0x2ee)]({'agent':fN(0x2ad),...bH?{'model':{'id':bH[fN(0x31c)],'providerID':bH[fN(0xc8)]}}:{},'location':{'directory':aR}}),bH||console[fN(0x1ca)](fN(0x1d6)+b0+fN(0x185)),aY;}async function bu(bG){const fO=eX;let bH=((await bG[fO(0x347)][fO(0x17a)]({'directory':aR,'limit':0x14,'order':fO(0x35e)})[fO(0x3b9)](()=>({'data':[]})))[fO(0x292)]||[])[fO(0x265)](bI=>!bI['parentID']);return bH?(aY=bH,console[fO(0xe7)](fO(0xd0)+bH['id']),bH):bt(bG);}async function bv(bG){const fP=eX;if(aY){let bH=await bG[fP(0x347)][fP(0x322)]({'sessionID':aY['id']})['catch'](()=>null);if(bH)return bH;aY=null;}return aZ||(aZ=bu(bG)[fP(0x338)](()=>{aZ=null;})),aZ;}async function bw(bG,bH,bI){const fQ=eX;let bJ=await aW(),bK=bI[fQ(0x228)]('?')[0x0],bL=bN=>bK['match'](bN),bM;if(bG['method']==='GET'&&bK===fQ(0x233)){let [bN,bO,bP,bQ,bR,bS,bT]=await Promise['all']([bJ['server']['info']()[fQ(0x3b9)](bX=>(console[fQ(0x1ca)](fQ(0x3a2),bX&&bX['message']),null)),bJ[fQ(0x315)]['list']({'location':{'directory':aR}})[fQ(0x3b9)](bX=>(console[fQ(0x1ca)](fQ(0x22f),bX&&bX[fQ(0xdd)]),{'data':[]})),aV(bJ),aU(bJ),bJ[fQ(0x344)]['list']({'location':{'directory':aR}})['catch'](bX=>(console[fQ(0x1ca)]('[AiWith]\x20command.list\x20failed:',bX&&bX[fQ(0xdd)]),{'data':[]})),bJ[fQ(0x347)][fQ(0x1e3)]()[fQ(0x3b9)](bX=>(console[fQ(0x1ca)](fQ(0x2bb),bX&&bX[fQ(0xdd)]),{})),A(aR)]),bU=(bP[fQ(0x292)]||[])[fQ(0x159)](bX=>bX[fQ(0xcd)]!==!0x1),bV=b3(bU),bW=bX=>({'providerID':bX[fQ(0xc8)],'modelID':bX[fQ(0x31c)],'name':bX[fQ(0x21f)],'contextLimit':bX[fQ(0x1b5)]?bX[fQ(0x1b5)][fQ(0x39c)]:0x0,'variants':(bX['variants']||[])[fQ(0x14a)](bY=>bY['id']),'paid':b1(bX)});return U(bH,0xc8,{'ok':!0x0,'root':aR,'name':aa,'server':bN,'mcp':bQ,'running':Object[fQ(0x1dc)](bS||{}),'branch':bT||'','models':bU[fQ(0x14a)](bW),'defaultModel':bV?bW(bV):null,'agents':(bO[fQ(0x292)]||[])[fQ(0x159)](bX=>!bX[fQ(0x1d7)])[fQ(0x14a)](bX=>({'id':bX['id'],'name':bX[fQ(0x21f)],'description':bX[fQ(0x37b)],'mode':bX[fQ(0x16e)]})),'commands':(bR[fQ(0x292)]||[])['filter'](bX=>a2(bX[fQ(0x21f)],bX[fQ(0x37b)]))['map'](bX=>({'name':bX[fQ(0x21f)],'description':bX[fQ(0x37b)]||''}))});}if(bG['method']==='GET'&&bK===fQ(0x1cd)){let bX=await bJ[fQ(0x344)][fQ(0x17a)]({'location':{'directory':aR}});return U(bH,0xc8,{'ok':!0x0,'data':(bX[fQ(0x292)]||[])[fQ(0x159)](bY=>a2(bY[fQ(0x21f)],bY[fQ(0x37b)]))[fQ(0x14a)](bY=>({'name':bY[fQ(0x21f)],'description':bY[fQ(0x37b)]||''}))});}if(bG['method']===fQ(0x2c9)&&bK==='/api/files'){let bY=bI[fQ(0x228)]('?')[0x1]||'',bZ=decodeURIComponent((bY[fQ(0x224)](/(?:^|&)query=([^&]*)/)||[])[0x1]||''),c0=(bY[fQ(0x224)](/(?:^|&)type=(file|directory)/)||[])[0x1],c1=await bJ[fQ(0x373)][fQ(0x265)]({'location':{'directory':aR},'query':bZ,...c0?{'type':c0}:{},'limit':0x1e});return U(bH,0xc8,{'ok':!0x0,'data':(c1[fQ(0x292)]||[])[fQ(0x14a)](c2=>({'path':c2[fQ(0x2ec)],'type':c2[fQ(0x289)]}))});}if(bG[fQ(0x22a)]==='GET'&&bK==='/api/file'){let c2=bI[fQ(0x228)]('?')[0x1]||'',c3=decodeURIComponent((c2[fQ(0x224)](/(?:^|&)path=([^&]*)/)||[])[0x1]||''),c4=c3[fQ(0xee)](fQ(0x1f6))?c3[fQ(0x2a6)](0x7):c3;if(/^\//[fQ(0x29d)](c4)){let c5=f[fQ(0x2f6)](c4);if(c5!==aR&&!c5[fQ(0xee)](aR+f[fQ(0x39e)]))return U(bH,0x190,{'ok':!0x1,'message':'\u8DEF\u5F84\u4E0D\u5728\u5F53\u524D\u9879\u76EE\u5185'});c4=f[fQ(0xcf)](aR,c5);}if(c4=c4['replace'](/^\.\//,''),!c4||c4[fQ(0x228)]('/')[fQ(0x1ff)](c6=>c6==='..'||c6===''))return U(bH,0x190,{'ok':!0x1,'message':fQ(0x32e)});try{let c6=Buffer['from'](await bJ[fQ(0x373)][fQ(0x178)]({'location':{'directory':aR},'path':c4})),c7=c6[fQ(0x334)];if(c6['subarray'](0x0,0x2000)[fQ(0xef)](0x0))return U(bH,0xc8,{'ok':!0x0,'data':{'path':c4,'binary':!0x0,'size':c7}});let c8=0x100*0x400,c9=c7>c8?c6[fQ(0x356)](0x0,c8):c6;return U(bH,0xc8,{'ok':!0x0,'data':{'path':c4,'size':c7,'truncated':c9[fQ(0x334)]<c7,'text':c9[fQ(0x2cd)](fQ(0x366))}});}catch(ca){return U(bH,0x194,{'ok':!0x1,'message':fQ(0xe5)+(ca&&ca[fQ(0xdd)]?ca[fQ(0xdd)]:String(ca))});}}if(bG[fQ(0x22a)]===fQ(0x2c9)&&bK==='/api/mcp'){let cb=al?await aA(bJ)['catch'](function(){return null;}):null;return U(bH,0xc8,{'ok':!0x0,'data':cb||await aU(bJ)});}if(bG[fQ(0x22a)]==='GET'&&bK===fQ(0x2a4)){let cc=Date[fQ(0x1e4)](),cd=cc-0x2d0*0xe10*0x3e8,cf=[];try{let cg=await bJ[fQ(0x347)][fQ(0x11b)]({'from':cd,'to':cc,'tools':fQ(0x339)});cf=(cg&&cg[fQ(0x277)]||[])[fQ(0x14a)](ch=>{const fR=fQ;let ci=ch[fR(0x34f)]||{},cj=ci[fR(0x1a2)]||{};return{'providerID':ch[fR(0x226)]?ch['model'][fR(0xc8)]:'','modelID':ch[fR(0x226)]?ch[fR(0x226)]['id']:'','steps':ch[fR(0xf1)]||0x0,'tokens':(ci[fR(0x32c)]||0x0)+(ci[fR(0x33d)]||0x0)+(ci[fR(0x361)]||0x0)+(cj['read']||0x0)+(cj['write']||0x0)};})[fQ(0x159)](ch=>ch[fQ(0xc8)]&&ch['modelID']);}catch(ch){console[fQ(0x1ca)](fQ(0x112),ch&&ch[fQ(0xdd)]);}return U(bH,0xc8,{'ok':!0x0,'data':cf});}if(bG['method']===fQ(0x145)&&bK===fQ(0x387)){let ci=await Q(bG)[fQ(0x3b9)](function(){return{};}),cj=String(ci&&ci[fQ(0x21f)]||'');if(!cj)return U(bH,0x190,{'ok':!0x1,'message':fQ(0x13f)});if(ci['on']&&!aq(cj))return U(bH,0x193,{'ok':!0x1,'message':'MCP\x20'+cj+'\x20\u4E0D\u5728\u767D\u540D\u5355\u5185\uFF08mcpAllow\uFF09\uFF0C\u5DF2\u9650\u5236\u4E3A\u65AD\u5F00'});au[cj]=!!ci['on'],delete av[cj],ax=!0x0,az();let ck=await aA(bJ)['catch'](function(){return null;});return U(bH,0xc8,{'ok':!0x0,'data':ck||await aU(bJ)});}if(bG['method']===fQ(0x2c9)&&bK===fQ(0x319)){let cl=await bv(bJ);return U(bH,0xc8,{'ok':!0x0,'data':cl});}if(bG[fQ(0x22a)]===fQ(0x2c9)&&bK===fQ(0x1f9)){let cm=await bJ[fQ(0x347)]['list']({'directory':aR,'limit':0x1e,'order':'desc'});return U(bH,0xc8,{'ok':!0x0,'data':(cm[fQ(0x292)]||[])[fQ(0x159)](co=>!co[fQ(0x1b1)])[fQ(0x14a)](co=>({'id':co['id'],'title':co[fQ(0x23a)]||'','agent':co[fQ(0x315)]||'','time':co[fQ(0x190)]||{},'cost':co[fQ(0x22e)]||0x0,'tokens':co[fQ(0x34f)]||null}))});}if(bG['method']===fQ(0x145)&&bK==='/api/session/switch'){let co=await Q(bG);if(!co['sessionID']||typeof co[fQ(0x132)]!=fQ(0x24b))return U(bH,0x190,{'ok':!0x1,'message':fQ(0x2ef)});let cp=await bJ['session'][fQ(0x322)]({'sessionID':co['sessionID']});return!cp||!cp[fQ(0x243)]||cp[fQ(0x243)][fQ(0x10a)]!==aR?U(bH,0x193,{'ok':!0x1,'message':fQ(0x1bb)}):(aY=cp,U(bH,0xc8,{'ok':!0x0,'data':cp}));}if(bG[fQ(0x22a)]===fQ(0x145)&&bK===fQ(0x232)){let cq=await bt(bJ);return U(bH,0xc8,{'ok':!0x0,'data':cq});}if(bM=bL(/^\/api\/session\/([^/]+)$/)){let cr=bM[0x1];if(bG[fQ(0x22a)]===fQ(0x2c9)){let cs=await bJ[fQ(0x347)][fQ(0x322)]({'sessionID':cr});return U(bH,0xc8,{'ok':!0x0,'data':cs});}return bG[fQ(0x22a)]==='DELETE'?(await bJ['session'][fQ(0x2d6)]({'sessionID':cr}),aY&&aY['id']===cr&&(aY=null),U(bH,0xc8,{'ok':!0x0})):U(bH,0x195,{'ok':!0x1,'message':fQ(0x2a3)});}if((bM=bL(/^\/api\/session\/([^/]+)\/messages$/))&&bG['method']===fQ(0x2c9)){let cu=bI['split']('?')[0x1]||'',cv=Number((cu[fQ(0x224)](/(?:^|&)limit=(\d+)/)||[])[0x1]||0x0),cw=cv>0x0?Math[fQ(0x2b0)](cv,0xc8):0xc8,cx=(cu[fQ(0x224)](/(?:^|&)order=(asc|desc)/)||[])[0x1],cy=decodeURIComponent((cu['match'](/(?:^|&)cursor=([^&]*)/)||[])[0x1]||''),cz={'sessionID':bM[0x1],'limit':cw};cy?cz[fQ(0x39a)]=cy:cz[fQ(0x10b)]=cx||fQ(0x38a);let cA=await bJ[fQ(0xdd)][fQ(0x17a)](cz);return U(bH,0xc8,{'ok':!0x0,'data':cA[fQ(0x292)]||[],'cursor':cA[fQ(0x39a)]});}if((bM=bL(/^\/api\/session\/([^/]+)\/prompt$/))&&bG[fQ(0x22a)]===fQ(0x145)){let cB=await Q(bG);if(!cB['text']||typeof cB[fQ(0x317)]!=fQ(0x24b))return U(bH,0x190,{'ok':!0x1,'message':fQ(0x13a)});let cC=[],cD=Array[fQ(0x1ab)](cB[fQ(0x218)])?cB[fQ(0x218)]:[];if(cD[fQ(0x334)]>0x5)return U(bH,0x190,{'ok':!0x1,'message':'\u56FE\u7247\u6700\u591A\x205\x20\u5F20'});let cE=[];for(let cJ of cD){let cK=aN(cJ);if(!cK||!z(cK))return U(bH,0x190,{'ok':!0x1,'message':fQ(0x1a5)});cE[fQ(0x351)](cK);}if(cE[fQ(0x334)]){let cL=await Promise[fQ(0x200)](cE[fQ(0x14a)](async cM=>{const fS=fQ;let cN=await M(cM),cO=fS(0x14b);try{cO=decodeURIComponent(cM[fS(0x228)]('?')[0x0][fS(0x228)]('/')[fS(0x26a)]()||'')['slice'](0x0,0x78)||'image';}catch{}return{'uri':cN,'name':cO};}));cC[fQ(0x351)](...cL);}let cF=Array[fQ(0x1ab)](cB[fQ(0x385)])?cB[fQ(0x385)]:[];for(let cM of cF){if(!cM||typeof cM[fQ(0x2ec)]!=fQ(0x24b)||!cM[fQ(0x2ec)])continue;let cN=f[fQ(0x2f6)](aR,cM[fQ(0x2ec)]);cN!==aR&&cN[fQ(0x234)](aR+f['sep'])!==0x0||cC[fQ(0x351)]({'uri':fQ(0x1f6)+cN,'name':cM[fQ(0x2ec)],...cM[fQ(0x37b)]?{'description':cM[fQ(0x37b)]}:{},...cM[fQ(0x168)]?{'mention':cM[fQ(0x168)]}:{}});}let cG=cB[fQ(0x2ca)]===fQ(0x184)||cB[fQ(0x2ca)]===fQ(0x1f1)?cB[fQ(0x2ca)]:void 0x0,cH=a5(cB[fQ(0x324)]),cI=await bJ[fQ(0x347)][fQ(0x394)]({'sessionID':bM[0x1],'text':cH?cB[fQ(0x317)]+'\x0a\x0a'+cH:cB['text'],...cC[fQ(0x334)]?{'files':cC}:{},...cE[fQ(0x334)]?{'metadata':{'images':cE}}:{},...cG?{'delivery':cG}:{}});return U(bH,0xc8,{'ok':!0x0,'data':cI});}if((bM=bL(/^\/api\/session\/([^/]+)\/command$/))&&bG['method']===fQ(0x145)){let cO=await Q(bG);return!cO[fQ(0x21f)]||typeof cO['name']!=fQ(0x24b)?U(bH,0x190,{'ok':!0x1,'message':fQ(0x1cc)}):(await bJ['session']['command']({'sessionID':bM[0x1],'name':cO[fQ(0x21f)],'text':typeof cO[fQ(0x317)]==fQ(0x24b)?cO[fQ(0x317)]:'',...Array[fQ(0x1ab)](cO['files'])&&cO[fQ(0x26e)]['length']?{'files':cO[fQ(0x26e)]}:{}}),U(bH,0xc8,{'ok':!0x0}));}if((bM=bL(/^\/api\/session\/([^/]+)\/shell$/))&&bG['method']===fQ(0x145)){let cP=await Q(bG);return!cP['command']||typeof cP['command']!=fQ(0x24b)?U(bH,0x190,{'ok':!0x1,'message':fQ(0x173)}):(await bJ[fQ(0x347)][fQ(0x15c)]({'sessionID':bM[0x1],'command':cP[fQ(0x344)]}),U(bH,0xc8,{'ok':!0x0}));}if((bM=bL(/^\/api\/session\/([^/]+)\/compact$/))&&bG[fQ(0x22a)]===fQ(0x145)){let cQ=await Q(bG)[fQ(0x3b9)](()=>({})),cR=cQ[fQ(0x2ca)]===fQ(0x184)||cQ[fQ(0x2ca)]===fQ(0x1f1)?cQ['delivery']:fQ(0x1f1),cS=await bJ[fQ(0x347)]['compact']({'sessionID':bM[0x1],'delivery':cR});return U(bH,0xc8,{'ok':!0x0,'data':cS});}if((bM=bL(/^\/api\/session\/([^/]+)\/revert\/stage$/))&&bG[fQ(0x22a)]===fQ(0x145)){let cT=await Q(bG);if(!cT[fQ(0xda)]||typeof cT['messageID']!=fQ(0x24b))return U(bH,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20messageID'});let cU=await bJ[fQ(0x347)]['revert'][fQ(0x11c)]({'sessionID':bM[0x1],'messageID':cT[fQ(0xda)]});return U(bH,0xc8,{'ok':!0x0,'data':cU});}if((bM=bL(/^\/api\/session\/([^/]+)\/revert\/clear$/))&&bG[fQ(0x22a)]==='POST')return await bJ[fQ(0x347)][fQ(0x37f)]['clear']({'sessionID':bM[0x1]}),U(bH,0xc8,{'ok':!0x0});if((bM=bL(/^\/api\/session\/([^/]+)\/revert\/commit$/))&&bG[fQ(0x22a)]===fQ(0x145))return await bJ[fQ(0x347)][fQ(0x37f)]['commit']({'sessionID':bM[0x1]}),U(bH,0xc8,{'ok':!0x0});if((bM=bL(/^\/api\/session\/([^/]+)\/diff$/))&&bG[fQ(0x22a)]==='GET'){let cV=await bJ[fQ(0x347)][fQ(0x16a)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':cV||[]});}if((bM=bL(/^\/api\/session\/([^/]+)\/children$/))&&bG[fQ(0x22a)]===fQ(0x2c9)){let cW=await bJ[fQ(0x347)][fQ(0x17a)]({'parentID':bM[0x1],'limit':0x14,'order':fQ(0x38a)})['catch'](()=>({'data':[]}));return U(bH,0xc8,{'ok':!0x0,'data':(cW[fQ(0x292)]||[])[fQ(0x14a)](cX=>({'id':cX['id'],'title':cX[fQ(0x23a)]||'','agent':cX['agent']||'','outcome':cX[fQ(0x2e1)]||'','time':cX[fQ(0x190)]||{}}))});}if((bM=bL(/^\/api\/session\/([^/]+)\/forms$/))&&bG[fQ(0x22a)]==='GET'){let cX=await bJ[fQ(0x347)][fQ(0x268)][fQ(0x17a)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':cX||[]});}if((bM=bL(/^\/api\/session\/([^/]+)\/forms\/([^/]+)$/))&&bG[fQ(0x22a)]===fQ(0x2c9)){let cY=await bJ['session']['form'][fQ(0x322)]({'sessionID':bM[0x1],'formID':bM[0x2]});return U(bH,0xc8,{'ok':!0x0,'data':cY});}if((bM=bL(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/reply$/))&&bG[fQ(0x22a)]===fQ(0x145)){let cZ=await Q(bG);return!cZ[fQ(0x316)]||typeof cZ[fQ(0x316)]!=fQ(0x183)?U(bH,0x190,{'ok':!0x1,'message':fQ(0x318)}):(await bJ[fQ(0x347)][fQ(0x268)][fQ(0x1c3)]({'sessionID':bM[0x1],'formID':bM[0x2],'answer':cZ['answer']}),U(bH,0xc8,{'ok':!0x0}));}if((bM=bL(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/cancel$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d0=await Q(bG)['catch'](()=>({}));return await bJ['session'][fQ(0x268)][fQ(0x136)]({'sessionID':bM[0x1],'formID':bM[0x2],...d0[fQ(0xdd)]?{'message':d0[fQ(0xdd)]}:{}}),U(bH,0xc8,{'ok':!0x0});}if((bM=bL(/^\/api\/session\/([^/]+)\/inbox$/))&&bG[fQ(0x22a)]===fQ(0x2c9)){let d1=await bJ[fQ(0x347)][fQ(0x28f)][fQ(0x17a)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':d1||[]});}if((bM=bL(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/delivery$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d2=await Q(bG);return d2[fQ(0x2ca)]!==fQ(0x184)&&d2[fQ(0x2ca)]!==fQ(0x1f1)?U(bH,0x190,{'ok':!0x1,'message':fQ(0x1f7)}):(await bJ[fQ(0x347)][fQ(0x28f)][fQ(0x21c)]({'sessionID':bM[0x1],'inboxID':bM[0x2],'delivery':d2[fQ(0x2ca)]}),U(bH,0xc8,{'ok':!0x0}));}if((bM=bL(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/cancel$/))&&bG[fQ(0x22a)]==='POST')return await bJ[fQ(0x347)]['inbox'][fQ(0x136)]({'sessionID':bM[0x1],'inboxID':bM[0x2]}),U(bH,0xc8,{'ok':!0x0});if((bM=bL(/^\/api\/session\/([^/]+)\/title$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d3=await Q(bG);if(typeof d3[fQ(0x23a)]!=fQ(0x24b)||!d3[fQ(0x23a)]['trim']())return U(bH,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20title'});await bJ[fQ(0x347)]['update']({'sessionID':bM[0x1],'title':d3[fQ(0x23a)][fQ(0x2de)]()});let d4=await bJ[fQ(0x347)][fQ(0x322)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':d4});}if((bM=bL(/^\/api\/session\/([^/]+)\/interrupt$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d5=await bJ['session'][fQ(0x1a0)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':d5});}if((bM=bL(/^\/api\/session\/([^/]+)\/agent$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d6=await Q(bG);if(!d6['agent']||typeof d6[fQ(0x315)]!='string')return U(bH,0x190,{'ok':!0x1,'message':fQ(0x363)});await bJ[fQ(0x347)][fQ(0x399)]({'sessionID':bM[0x1],'agent':d6[fQ(0x315)]});let d7=await bJ[fQ(0x347)][fQ(0x322)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':d7});}if((bM=bL(/^\/api\/session\/([^/]+)\/model$/))&&bG[fQ(0x22a)]===fQ(0x145)){let d8=await Q(bG);if(!d8[fQ(0x226)]||!d8['model']['id']||!d8[fQ(0x226)][fQ(0xc8)])return U(bH,0x190,{'ok':!0x1,'message':fQ(0x327)});await bJ[fQ(0x347)]['switchModel']({'sessionID':bM[0x1],'model':{'id':d8[fQ(0x226)]['id'],'providerID':d8['model'][fQ(0xc8)],...d8[fQ(0x226)][fQ(0x1f0)]?{'variant':d8[fQ(0x226)][fQ(0x1f0)]}:{}}}),al&&aQ&&bA(bJ,d8['model'])[fQ(0x3b9)](()=>{});let d9=await bJ['session'][fQ(0x322)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':d9});}if((bM=bL(/^\/api\/session\/([^/]+)\/permissions$/))&&bG[fQ(0x22a)]===fQ(0x2c9)){let da=await bJ['permission'][fQ(0x17a)]({'sessionID':bM[0x1]});return U(bH,0xc8,{'ok':!0x0,'data':da||[]});}if((bM=bL(/^\/api\/session\/([^/]+)\/permissions\/([^/]+)\/reply$/))&&bG[fQ(0x22a)]===fQ(0x145)){let db=await Q(bG);return[fQ(0x2e5),fQ(0x1b8),'reject'][fQ(0x234)](db[fQ(0x196)])===-0x1?U(bH,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20decision'}):(await bJ[fQ(0x11f)][fQ(0x1c3)]({'sessionID':bM[0x1],'requestID':bM[0x2],'decision':db[fQ(0x196)]}),U(bH,0xc8,{'ok':!0x0}));}return bK===fQ(0x115)?bx(bG,bH,bJ,bI):U(bH,0x194,{'ok':!0x1,'message':'Not\x20Found:\x20'+bI});}async function bx(bG,bH,bI,bJ){const fT=eX;let bK=bJ[fT(0x228)]('?')[0x1]||'',bL=decodeURIComponent((bK[fT(0x224)](/(?:^|&)session=([^&]*)/)||[])[0x1]||'');bH['writeHead'](0xc8,{'Content-Type':'text/event-stream','Cache-Control':fT(0x1b2),'Connection':fT(0x109),'X-Accel-Buffering':'no'}),bH[fT(0x157)]&&bH[fT(0x157)](),bH[fT(0x125)](fT(0x2fb));let bM=setInterval(()=>{const fU=fT;try{bH[fU(0x125)](fU(0x286));}catch{}},0x3a98),bN=!0x1,bO=bI['event'][fT(0x207)]()[Symbol['asyncIterator']](),bP=()=>{const fV=fT;bO[fV(0x187)]&&Promise[fV(0x2f6)](bO[fV(0x187)]())['catch'](()=>{});},bQ=()=>{const fW=fT;bN=!0x0,clearInterval(bM),aT[fW(0x301)](bH),bP();};bG['on'](fT(0x283),bQ),bH['on'](fT(0x283),bQ),aT[fT(0x309)](bH);try{for(;!bN;){let bR=await bO[fT(0x12d)]();if(bR[fT(0x15a)]||bN)break;let bS=bR[fT(0x2af)];if(!bS)continue;let bT=bS[fT(0x289)]||'',bU=bS[fT(0x292)]||{},bV=bT[fT(0x234)](fT(0x36b))===0x0;bL&&!bV&&bU[fT(0x132)]&&bU['sessionID']!==bL||bH[fT(0x125)]('data:\x20'+JSON[fT(0x156)]({'type':bT,'data':bU})+'\x0a\x0a');}}catch{}finally{if(clearInterval(bM),bP(),!bN)try{bH[fT(0x16c)]();}catch{}}}function by(bG,bH){const fX=eX;let bI=bG[fX(0x201)]||'/';if(!aD(bG))return U(bH,0x193,{'ok':!0x1,'message':fX(0x39f)});if(bI==='/widget.js')return a0(bH,fX(0x1d3),fX(0x10c));if(bI===fX(0x2be))return a0(bH,fX(0x281),fX(0x166));if(bI===fX(0x2d3))return a0(bH,'panel.css',fX(0x162));if(bI==='/panel.js')return a0(bH,fX(0x246),fX(0x10c));if(bI===fX(0x2cc))return a0(bH,fX(0x2da),fX(0x162));if(bI==='/factory.js')return a0(bH,fX(0x280),fX(0x10c));if(bI===fX(0x308))return a0(bH,fX(0x273),fX(0x162));if(bI==='/debug.js')return a0(bH,fX(0x36f),fX(0x10c));if(bI===fX(0x1a1))return a0(bH,fX(0x1f8),fX(0x162));if(bI===fX(0x1d0))return a0(bH,'account.js','application/javascript');if(bI===fX(0x248))return a0(bH,'viewer.css',fX(0x162));if(bI===fX(0x1c0))return a0(bH,fX(0x39d),fX(0x10c));if(bI==='/hljs.js')return a0(bH,fX(0x141),fX(0x10c));if(bI===fX(0x18e))return a0(bH,'page-agent.js',fX(0x10c));if(bI===fX(0x38d))return a1(bH);if(bI[fX(0x228)]('?')[0x0][fX(0x234)](fX(0x355))===0x0){bo(bG,bH,bI)[fX(0x3b9)](bJ=>{const fY=fX;if(bH[fY(0x113)]){try{bH[fY(0x16c)]();}catch{}return;}U(bH,0x1f4,{'ok':!0x1,'message':bJ&&bJ[fY(0xdd)]?bJ[fY(0xdd)]:String(bJ)});});return;}if(bI[fX(0x228)]('?')[0x0]===fX(0x1c2)){aK(bG,bH)[fX(0x3b9)](bJ=>{const fZ=fX;if(bH[fZ(0x113)]){try{bH[fZ(0x16c)]();}catch{}return;}U(bH,0x1f4,{'ok':!0x1,'message':bJ&&bJ[fZ(0xdd)]?bJ[fZ(0xdd)]:String(bJ)});});return;}if(bI[fX(0x228)]('?')[0x0][fX(0x234)](fX(0x242))===0x0){(bI['split']('?')[0x0]===fX(0x367)?aM(bG,bH,bI):aL(bG,bH,bI))[fX(0x3b9)](bJ=>{const g0=fX;if(bH[g0(0x113)]){try{bH[g0(0x16c)]();}catch{}return;}U(bH,0x1f4,{'ok':!0x1,'message':bJ&&bJ[g0(0xdd)]?bJ[g0(0xdd)]:String(bJ)});});return;}if(bI[fX(0x234)]('/api/')===0x0){bw(bG,bH,bI)[fX(0x3b9)](bJ=>{const g1=fX;if(bH[g1(0x113)]){try{bH['end']();}catch{}return;}if(bJ&&bJ['code']===g1(0x37e))return aX(bH,bJ);let bK=bJ&&bJ[g1(0xdd)]?bJ[g1(0xdd)]:String(bJ),bL=/not found|NoSuchKey|no such/i[g1(0x29d)](bK);U(bH,bL?0x194:0x1f4,{'ok':!0x1,'message':bK});});return;}U(bH,0x194,{'ok':!0x1,'message':'Not\x20Found:\x20'+bI});}let bz=null;async function bA(bG,bH){const g2=eX;let bI=((await aV(bG))[g2(0x292)]||[])[g2(0x159)](bM=>bM[g2(0xcd)]!==!0x1),bJ=bH?bI[g2(0x265)](bM=>bM[g2(0xc8)]===bH[g2(0xc8)]&&bM[g2(0x31c)]===bH['id']):b3(bI),bK=bJ&&bJ[g2(0x1b5)]&&bJ[g2(0x1b5)]['context'];if(!bK)return;let bL=q[g2(0x349)](bK);q[g2(0x106)](aR,bL)&&console['log'](g2(0x2d9)+(bH?bH[g2(0xc8)]+'/'+bH['id']:'\u9ED8\u8BA4')+g2(0xd7)+bK+'\uFF09\uFF1A'+(bL?JSON[g2(0x156)](bL):'\u4E0D\u5199\uFF08\u8D70\x20opencode\x20\u9ED8\u8BA4\uFF09'));}function bB(bG,bH){const g3=eX;return al=!!(bH||{})[g3(0x335)],aW()[g3(0x3b9)](()=>{}),al&&aW()[g3(0xd6)](async function(bI){if(aQ)try{await bA(bI);}catch{}return aA(bI);})[g3(0x3b9)](()=>{}),bz=bi(bG),bz;}function bC(){const g4=eX;if(bz){bz['clients'][g4(0x2dd)](bG=>{const g5=g4;try{bG[g5(0x165)]();}catch{}});try{bz[g4(0x283)]();}catch{}bz=null;}aT[g4(0x2dd)](bG=>{const g6=g4;try{bG[g6(0x345)]();}catch{}}),aT[g4(0x251)]();}function bD(){const g7=eX;return[{'tag':g7(0x359),'attrs':{'src':g7(0x252)},'injectTo':'head-prepend'},{'tag':g7(0x359),'attrs':{'src':'/aiwith/widget.js','defer':!0x0},'injectTo':'body-end'}];}return{'handle':by,'attachRuntime':bB,'close':bC,'transformIndexHtml':bD,'writeDevArtifacts':bp,'writeAgentPlugin':bs,get 'root'(){return aR;},get 'rootOk'(){return aQ;}};}d[eH(0x274)]={'createBridge':a6,'composePageContextSuffix':a5};}());}),Ut=pe((c,d)=>{Y();var {createBridge:e}=Pt();d['exports']=function(f){const g8=b;let g=e(f||{});return{'name':g8(0x2fd),'configureServer'(h){const g9=g8;g['rootOk']&&(g[g9(0x1a3)](h[g9(0x30f)],{'devServer':!!(h&&h[g9(0x1f5)])}),g[g9(0x33b)](h),h[g9(0x343)][g9(0x134)]('/aiwith',(j,k)=>g['handle'](j,k)),h[g9(0x30f)]&&h[g9(0x30f)]['on']('close',()=>g['close']()));},'transformIndexHtml'(){const ga=g8;return g['rootOk']?g[ga(0x1f2)]():[];}};};});function a(){const ge=['BwfRzq','DxnLu2HHzg93uM9VDa','Dg9Zu2vJCMv0','zgvSzxrL','zxjYB3i','yM9KEs1WyxjZzxi','lMnZCW','sdrZsufbqufbqufbrtGXyvDyzMj1CLyRnZy5zZbdnKHQqMLlrxPQsvn5zfHStwCYwJDvBLDyvJyRmKm1t2jrsvDzD3bvDvzNuJfMv2y3oxjbEhHbu1O2u1b2uKzWAMTbr3H2zI92yuvLtdnkog5lm3zVm2KVr0TItg9tD0vhn2SREND1u1jbBNbmBteYAs96yKKZu0Xds2PAwuHpws9IwNr5Ee80weHgugq2rtvHCdLVvNH2B2PPsfy1yMnlmw1cEMHKwLDWvenLB3KRzNaXoc9pzKHmmY81k3vUDKGVlZG4yMv2wdLgnvDnqZb5ExbKBeHhv0nVv1L5CevJu3P2mLruwK95yJb3Dwm3EwnWCwXAwJrSq2nUueuXsuSRzMLovMC5y2PNDfnMB25ysKT0s1vAveD2k3P5ofj2mxznEtn1mhDknfz0uJjPl0nJCKvtrtjTmZm4CZjnu1DAAK9TCMO3ntfiCcTKAvrgn1fXsvbssLjhC1jkr2TyouGWDKT2y1zhu2XpuwLVCYTsve9szgXPn0K2sti2BhLrCvLfz0zdtwzOzLjPwhDWtef3t3ncr29IEgzwExvODuvTsg03q0D6sKvNmvrLCLvTnxLXsviRDNPWngD1u1z5u01trJznzgDNv1rKthKVwMz0AhfbuKnQzwjkrJzfB0TUAhr5sKWWvJyRENfmDdzozuXunZHWuLPUsdzvmJGZsxjsDZHoDuW4BezMsK9hEvnOvdjnv2vxmty1Exjon0fyvhi1m21xAs9Rse5lown4ogj6q21Zt25SzvDnwuzYD3PMBwXut2PKm0jNEMfZz1vcmwjmzwPgtKnkm1f2t1PHmxm2l1ndwvy0ngf6t2fwwMv1vgvzwe42v3HLwwq4mtzuy3vhCuy1nvfrEM44mgHut0OVEhvws2DlruTRDcTswePOwdjevtbTrMjiyKvjmfDbofeREhGRDffRywLnBLPxyuTZu1zhru4RvgHjwKDRl1rkt3D5vfO3AfLkq2znr0rXvwT4mMrUC1PlvgrywKHLBNyZEu8XDvm2vtL3owvTm3nouufAmKXRC0Xvq1bcsNf5u1j6Du9Sk0DIEJHmqLjZDhmZnc9fyLzuCfu3k2jZyK5nsIS0u3eRExzysM4VntH1v3PNqwfOvxbsAfDswfnLvtDls2SRrMPss0zAyMH2ELDzCNb0s3vMBfP1tNLsyKn1BdrQqMDRmeLMmevdr3aXsdi3quPoCNz0n0iXEu9vwfG4AML4tePTENPIA0X5tvnurKS1wNO4DtrWEKvVmMLOngzms3PTtw9Oz0DdsLbqm1z0DNrimdm4AJbIBvDREeHNlY9cvuTqng5wnfeRwKq4veO4lZm5weeRBJHpAxLjwMnXAtHRnZyWmufOmZHSq3zlq0nbBZrsA3bOkZr5t2XVBMXSnLjsAvzNqM93CLLlExjuB3rrl1GWEg1LvJq0tgLYvNnwmfHtzwnnCtHHvJjouJzqmgjJtNvvrwyWtgzorfjYqLbuA2zLovz5u1HjrKDfEu1ml1vYr1rfqMTtu1HzofnZoxOWyxPns1nlr2WYtdbVrdLcne4VAgfxs3Lvudb5AgjPnuPtwNzvs0rfDfnPAvjLruzhweHxBufgrfrjwKrlk3jnuLvWDNO0zfOXrLzvsuTkq05Srvm1v0jnBJfirwHhEfnVCKn5vePSyMDvCgvIkYSVCNvgv09Ay1nxu1m2swTktdbWvISRmuS3Bvv6CgrAthrIuuzIs2Xrq1jNB2H0EeKRoxLZCwP5sxi1ALjdv3z4rxjJEuTvAZu1su1joeGXk1Hwt3DSDu9dv3rNqu5LuffUA2rYogTVwtDVrdfKsgrirKK5ANvWlZbdrgi3ogWZy0fWq1jkwMHSwLm3t0jYvJHPDKfLA2HTDKyRuxn0B0fKCg00mfrOvMTVD1iZtMXAzdyXrwnvnfDAwLP2shG0mMvIwwDsyuvZn2LouK9TzvDTu3bSBgLws21zzhbZy3P5DfjPugy5BKztAhf1u2jfsKyWvgn3zvvjC2fRALvPENLLqu1eAJfetLaVtuTcEgDnvurKBNDQr3yYwLPQEML0BNfNswrLz0fYmdfKosTkmLK4t3zXrgv0AdnMvvLHney5BtHdre14ttqWwJndsgn0Eufluu8VtNfTvvHqAxzRtM1qDJzgDwHUEev6vKjku3LbDMnwzfj1vxrsCNqYvwzwEtLUCZvSnLr6CKzSALjlnNjTne5gz3rdqKj5uxPZmtyVmhnewdvWv2Xxz0HQCefqr3r3mfzMAZeXu0jKCe5wuM1Xq3a4wNfZCtvyDxrhzg95sMPItwj0qtnbl3jvqLHTmfLosJLcwfP0r1jQCZeVrhnLzvzPELfxqNDmmNDKk3DbDZy4l205tfyYv0r2Chm0y0uYEuPumgWXt21Ty2TXDum5oenhqvHMC1DJrgTfv2fMl2LIuvLtAePvquzon01cu0Hjmu9cv3yWtuf6DMvuq2TXn1zPog9mEM5Nk3jZt1bzmwuXnxbHDweYzNHPEJuYqvbNrvzoDfLKqvrIDZy3ohjRBtLWtfbdvJnjvKPZD0XmmxfMEKnZl29pALfIzerzmvP2ueSXyvLcreTlCLfRrvnHAfvdveL3BJG4CLDKs3nwAM00Ag5XB2DPCwXtBuTXD2vswLDTnfH4mIT4Atm0zxrKuJbzwfDqD2rAAwDjthbQtKPjnuT0t3DdDumYouTeuhD6qxLRDu4WvtvxAMHIAhjAqNPwBNfwmLnzzJr4svKVnMf2ztHxrgXItMnZm1HJyJq4r21qwvbAovzTreTinvbTzuC1l2D6rZHJqtrmv3LIreXjq3HfCu54y25Yofb0DLDvu0TsCKmWv2WRvc9fqxDOBZzLv0XVrfzXsJzIBcTOveryzhHjs21Xotfxz2HfquHNuKHwzezLqM1quev2tgSXtLjXwuHvv2PAvtrpmKLrEezptLDVCwXUyKLWqZfqy0jeudDOr2C2EuveqwLunJKRDgvjD0j2B3ntnwD3CfnvlZDiwM5QyITNnLH1sLjTAwLXB2Tjk3aXEez3DuLMuM5SrxzXnKS0uuCRBZHztJrxs0PXDxrQDw5XndbdtLPxDvrgzujOk1H5n0T5CZqRmg1xsu41suLNzMjvvwK3vuDHBhfZwfnIEtq3yxzOtfndwLD0Evrmrtn4AhPwrZzVwuX0r0iYqNfhqLO3rM5ouuPcrNHXwuy5ww40sgy4v1H1tMrJCMvQthrXogDAALLUCtbkELLQvhfduvflv3DnBNPOwwHwrZjumhDAEe9uzZGXELPhuMHtz3fhCwDUvgL3DtrVv3nxm0HIC2X0zgfVuvzvA3uVBeDcntDjsxnMvezerfq0EdDutI94yvj4shHrtKe4rZryBsTdsw1JqLLJm3jvu2PKvuDmsI82qZDqsZnMAvvoqK10wtCYm1nTyJHLm3jLt3n0vZKWEfi5vM1YmNrxDhPVrfHUte5PzdHXD2PfzdLiys9SEtLstxHTnMvPBfvHk1rRzMnerLm1r2nUuKvSDxGYuhGYkZbVnunAs0jtme5bwhbrywHotZLbuMfVr2nAmevqy3DjyuHht1P1CKvQte5Mtfb0s1fAuu0Vt1O2DNz5z2u0uKz0k1nWmtDIAK9eC3z3wMHOshCWvvngC1vrDeqYrvDirJrgEgz4zfvlnNrkrwLTz01vnZqYwKjwzZbwELveue8ZufDby2XLAenJv3nWthDnk0j2tJm2l3L6A0HWl2WWq1vlnZvOtZn1n2XkrJDiEJvgEtq3EufNDNnfvfqWuhPICu9HqMuVAg5ACJvcEgORute1zuHNq3PjrdbeCZG5uKqYqJu2muLStgDRnNDluZjbtu1NEuORAuK1wJbgEuHNEgfTDwDLmJbSEtn2y094m3LfCem4DhnvuLz0zK5vEw5vq3HnvNLZD3ztr0ncuZriDNPxBfjNs1v4DcTqyZHwl3jJAxD0mZDKuMfsnurxodnjseDvzte1wLH1mMz3s21cmxPZmevPtw1PqJjmsZLKnLv1nuDbtgrbEtCRrvDnnhbMt1rIt3C4wJrXmvfKEuztvvDLq1zwwKHnAhzIwJnzDej1tsTXuxvjENjZEtHTzhDMqw51sJbyn2TyyZnUmgDVruD1tKTmm3jxtvPkog1stMT5zNHNv2vuBK5fEuHNCZnyywjos1v2q0zdstzvt3eWqu1rBdeWEhC3qtHtALaWzLjPwLLrytbbCw1HrfDttueWzhqRs2Pek2PjBvnwu01mmxyWC0eZzfGZvNbzzueXtxzpmu5TELLsCe5vv0i3tMeZm2jHCwXpChHvnNbPBLbzytvKCfjuz0HPvtHusvLhutjhzwG5DMPIswrItw1outi1k2fmtdaRrMG3sMXlouDQowzTshjpvZa0q0DPA0zuEwPZrJa4y3jLD0jYDhi2wgC1BwG1CfzNn3finwnvqJf5qJyWANu1D213utbfswTtwLnTAgHgovH5z1PjyvbHudvVtxzoqtbTovnlCJbSs2LrEKe0zc91sITPyxP5vwXsseCVlZH4nMXQChv3ENzQvtHKt1m1ru8Vv0LryK12D1nyB01OzuTItey4vJDQDu9xyKTqC1bOm2vRBtiXt2vRnxPnq2rNzMf3sMz4s3vAr2iWyLPVmM1wmNzNCtDQAZq5EK8Vl1e0zfvdqwOWzxPol1yRvJq5nJrWrfPNse1WmNfOr0HeAfvjttfVsISWDtq0sNjwv1KVthvyu3ndoti3seH3tfzesLyVCgPHwKfrDLL1zYTfv21pmfbntgLxtNvSz1mVtMDWz21TzfjZzKf1yKrRohnMzwXzAe5PtePKDtK3ttL5BKLTqKL1rK5IzePUDfvJAunentrowdbJtKTfCtLHDtHHEMzbzwjputLVq1fIC24Yr1KVr05OmMjZudDHzwnomK04me9cwvK2wvfOyvjiDJu1uLDKtMX5DwCYoeXlA3DZEK9bvMm5CgO5mvGRAezkzdvTnxz5zMjSCezuyJvvkZrxtJvJwhvsAxv3k29PnZbSmNO1vNjmsZD3k2DIogLKmuf0DwGWCfnRvhrHn2rmk3zPuu1lv0DKvLfxrffjyJjPqNnZDw9LzdfRAe5JuhrjnZrbzwvfk3fbAdvntK1bzw1HAZe5y09dytjOyuXZywS2AMnqA1P6Ee5fBLzNywDAqxeVyLu5B1rMuJfrENy4ug9MreHwowLJqMzACYTWC0DRCMjvv3PJEKPTrtbAu3D3yMzYqMrlrZLzt2PzyunwAgHVmw4VqLbuCfrWDKLKyKHlC3PwnuG1rtDHrefvDgfhEuTMl2jnnZHMtfmZvvfqD1OYk0jck3LmyMfeotrjDNHnDZD2nePPEc9lruzQBLzABKzRqZvpn0fNnLPNEeDNwhbbs2LYC0LbDvvqoti2l25rsdrKwKHWrJHTtvjgmMjHAxDuoePgntHUD3fRsKDZnvDxyZbLyKnTqxLUwfrpBwC2neSWBcTeB3rzr29LBgnkCfPnr0iWnNrPotjKAdLZtwnhqtvzBJK1ver4ws9ov2L0EtuRy3L1v1LmzfrSugm2tdLfywDLuJfRzeKVvtfznffyv2jqDuLLzu0YAdDtr3D2l2PQtxm2B2T0q2XiChCVvxbSmxPLChvTvfLTEer2DxDIuxiVk1b0zKvruZzTD1i2wMjvDZeXBvDRree5tg5muu5Nwtj3y2XzvMTetJjotdDMAdbIrgL1DLeRuevVn1Hlqu9oALP5vxn3nLfNDKDZCxm1zgjyngz5BJHUl3zbqwD6CM95tdHYl3vbognmverHvuXMs2S0zuHyq216zZbVsMLiDtHWEhDnBJq1DwzAl0S1qMXosgfUEff0uMPJrJzotMrKC3C2C0rXsvLHDu9ctu82z3nim3DcEe5PofHzt0vNEhmYwMPtutfpCxPmvLDLouLnDxz0m0vZA1mRq0zzwgjmz0rnDxDKuhjKA0PZzffAzNiWBeLKrK80yLv6sgLKsgrJBZy2ztzACMn4CJi3wxPnAuHAuLLxCgrczJHzoteZm2DOB084BvbpwNj1Cw5rwgDItNzTtgDqAdKZsxjor0GXodLRyxm4zwnyqs9MmMT4v0zuotvXqNnzzha1r0HVsurjn0z2uMninhjIvdH2ELbrz0PACwu2u3HWvZfJtxuZmvfoqK8Zne5Qvc9mrLzwwdfnwvPvyJjjAdrNu3iYmeq3mernCJjoufrQrZfuztL1DvHpr1nItgKWzvbKqtK0l1qVtK1qD3n0yNz2EITjmfPmt0DnEwnfvhyXA3qYmuS3EdzRmuzbnI9lr01xCMzZthjgA1jtC1bdnYThzcTfrKHvCg9PAJy4z2znzeLOqvz6BevkseDhneO4DwOZr0vmvM5gAufyr3zAs3G3B0Hws1GZEKrUBZf6r0XZswS4ogz1oe1srujdneT1mKz6rxL2ywveEKi2qu9Hr0fcsNPgzLv0wgTSvvq5yLu4owX1oundtZjVmMDhngfyAKeRtwTkueOVmZjcrfDhze5um05TCgXUBePfueXSzNbmqJrhzunwrZzWEI9rtfLnAwngrLztsg5QqLLWrvrRC0TcCKjnBhzZqJLcCeCXrwjmzuTczdviwNHUy1b2BKSYCvGWExbtk1b6yM40v0Dqnw1wofLfAK82zKvqCLyXmdi1q1zxz1PKs1vNtdjNowPOv1Luv0rlv2LXmNjrs0nMuu9nEuTAn1jXC2PyzhyWB0W5C1fgDLD0u3Huyue5whnLzu9ql0HHnuHgBtfMrwy1r2e2qIS1munWELnnsxvXDg1vALD3Du9hBKKVzNnHrtzAswe1ExzpBuj3vMnRnMznv21qBhHttdHoA0riBMfNDtz5BKrSwKnQou9JyNfLmxLzAfPcmgDprLe4n3Pvrw54nK5xntfjuxfwqw9YwhvSwgXnz2y0wgi0vKG5CZaWnurYzZLjmK9uAhvon01AsuPqy3O2AI96nhHnuMXYvcTjtKjdte53neG1zxu4uKXTueK2ANr6CI9qyLbOm1jLs2jwvMS3A21UAMzZEgDoCu54z2rpy0PNnfzptJi0BcT2CgXUrKnRrNPStwjZy0rzzK5lk3O0wtzQquG1BhLbthv2rKPZA0XZwgG1whCRDKjWs3LPyMjPtKWRq3rOAuWRmZm1mY80zNPAsvLLntHmD0fb','BwvYz2vnB2rLBhm','y2fSBa','l2rLyNvNlMnZCW','ywrK','z2v0twLUDxrLCW','EMvUlw11BhrPlwvUDhj5','ChjVDg9JB2W','C2v0','5PYn5yQH5zMO6l+u5zUE55Qe5lIn5PIV5PsV5OYb55Qe5zU+54MhoIa','Ahr0CfnLCNzLCG','CgfKu3rHCNq','Dg9ZuMvNAw9U','mc4WlJaUma','y2fUy2vSvgfZAW','D3jPDgvgAwXLu3LUyW','ywDLBNq','yw5ZD2vY','Dgv4Da','5y+c5PwW6zsz6k+VoIbHBNn3zxi','l2fWAs9ZzxnZAw9U','y3vYCMvUDa','y2HYB21LlwrLDNrVB2XZ','Bw9KzwXjra','zgLYBMfTzq','B3nZu2vJCMv0','Chv0t2jQzwn0','EMvUlxvTzc1NBg9IywXZ','CgfNzxm','z2v0','lMPZ','CgfNzunVBNrLEhq','AxnZDwu','DLnOB3C','5y+c5PwW6zsz6k+VoIbTB2rLBc57AwqSChjVDMLKzxjjrh0','A2v5u3rHDhvZ','Dw1K','Dg9szwzZ','lMPZB24','Aw5WDxq','Dg9iyw5KBgvYCW','5lUf5PsV5OYb6Ag555UU5yAf55U45A+56lEV5B6e','s0iP','z3vUEMLWu3LUyW','C3rHCNruyxnR','B3nZqNvJA2v0','s2vLCefSAxzL','BgvUz3rO','zgv2u2vYDMvY','BMf2AwDHDgu','C2HHBgXVD1jLzG','zMLUywXSEq','BM9Uzq','lNHTBa','D3jPDgvezxzbCNrPzMfJDhm','z2v0vhjHBNnPDgLVBLjHD0nOAwXKCMvU','B3v0Chv0','D29YA2LUz19KAxi','q29UDgvUDc1uExbL','ChjLC2vYDMvdB25Zzwn1DgL2zvvWCgvYy2fZzq','CgfYC2u','y2fSBfDPDgHfCNjVCKHHBMrSAw5N','BwLKzgXLD2fYzxm','y29TBwfUza','zgvZDhjVEq','5RE35REg5A6m5OIq77YA','C2vZC2LVBG','Cgf0Ahm','y29TChv0zunVBxbHy3rPB24','ChvSBa','qhP1BwvYl3nUyxbKB20VCgfJA2fNzs5QC29U','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','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','Dg9Rzw5Z','DNvLlwDSB2jHBc5TANm','ChvZAa','Aw5KzxGUDhm','yxnZAwDU','qhzPDgvQCY9WBhvNAw4TDNvL','l2fWAs9WywDLlW','C3vIyxjYyxK','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','oJPMzMzMoG','C2nYAxb0','Chv0','ANn4','kvSNxcjD','CMvZB3vYy2vZ','zgvZyW','Ahr0Chm6','CMvHzenHy2HL','CMvHC29UAw5N','AxngAwXL','5y+c5PwW6zsz6k+VoIbHz2vUDa','x19bsvDjveHFt1jjr0Lox18','ywn0Aw9U','DxrMoa','l2fWAs9Mywn0B3j5l3n0CMvHBq','C2v0vhjHBNnPDgLVBKHVB2TZ','DMfUDa','zgvLChnLzwSTzMXHC2G','CgvYBwLZC2LVBI4','5BEY5O6O6ycb5yIWia','AhLKCMf0zq','zgvMAw5LuhjVChm','zgvIDwCUANm','y29UC3qGEYa','CMvHzhLtDgf0zq','CMvNAw9U','zMLSzq','Aw1WB3j0xhmQxcPCCYPHC1XZkYHBxhCKxsSPxhmQzNjVBvXZkLSNxcjDka','CM91Dgu','y29TCgLSzq','Ahr0Chm6lY90Ag9YlNPLDg8UBwu','ywL3AxrOlw1JCc5QC29U','B3nZuMvNAw9U','qg9Wzw5JB2rLl2nSAwvUDc9Zzxj2AwnL','zgvZy3jPChrPB24','C3vIC3rY','zgLZDa','u0vsvKLdrv9vtKfwquLmqujmrq','CMv2zxj0','B2jMDxnJyxrL','zgvLChnLzwSTDJqTzMXHC2G','DK1VzgvSrhLUyw1PyW','DK1VzgvSu2vSzwn0','lMXVD2nVzgu','BwvUDgLVBNm','CgfZy2fSq2fZzq','l2fWAs9Ty3aVDg9Nz2XL','CMvHzg9UBhK','DxnLvhjHBNnPDgLVBLn0yxrL','yxnJ','ANnVBG','zgvMAw5Ltw9KzwW','l3nUyxbKB20UANm','Ag9TzwrPCG','CMvM','ywn0AxzPDgLLCW','y2HLy2TVDxq','B25ty29WzurPC3bVC2u','EMvUlNDHCc5QCW','ChjVBxb0','DhjHBNnMB3jTvK5VzgvbCMDZ','Ag9ZDg5HBwu','y29TCgfJDgLVBG','nLnHz3vRAq','C3DPDgnOqwDLBNq','y3vYC29Y','ih0Gpsb3Aw5KB3CU','y29UDgv4Da','DMLLD2vYlMPZ','C2vW','qwLxAxrOioAoP+wiTUMDOUs7HEMzKoACRoACUUIUV+MxRU+8IowMGUMCGowXGowFN+E9Ks/MIyVMNlROGztOSipOR7FLVidLKk8GywL3AxrOuMvTB3rL77Yj','w0fPv2L0Af0G5OgI5AsniefjioMfJEE9RUE8K+wTMowKSEI0PtO','vNvLrwXLBwvUDa','w0fPv2L0Af0GC2vYDMvYlMLUzM8GzMfPBgvKoG','5RkH5PYj5BEY6l+E5O6L55Qe6Ag16z2I77Yi6k+356gU6k6KigrLDIdPOBxPNAlLT7lMIzpLVidLUBBLROZMIjdLIQdOVB3VViK','w0fPv2L0Af0G5Qoa5Rwl5yIWigDPDcdMOlNVViZLT6xKVzZNM67LVzxKUiRNP7VOH7m6ia','CgLWzq','zgv0ywnOzwq','sdrZsufbqufbqufbrtCXvNDzn2LpqKm5nZfJz2PwwwfksxHjrdr0BYS3yuH2yZfSoxD1y3vcsZHhsMzSvKPVDZbMEJD5AZrbsJzhseDIvZbrA0PNDtf6mvHYmvHyC3vPD01zu3D6zNDsBdq2AdDvBwPAyvH1z1vSDeSYqIThwvjqDhvKytHvm3bXmKnSDs8ZuxvUyuDyBMHgAtjjmgTetgXqwLf4t2DdvfHpEuLWzKzZzKXzv01yzNbql01xrJr0uLLfrY9Mq2zVs1DSs05fu3eVvtm0tMTymtm1zLq0CgeXD2m4zdLKmeLKudL5quDRr20WsMfyuMXTu1K0mwj3qvmRqKzkuJnMDtfznhfAuZjgyZGYCMWXA0W2nfzpwg9gBNvwswHdzwv1wfPsBZLgCu1wuwjKnwr6r0ngCKnlDJzqzvHsC1zjyKfZoxOWl2PqztLJDtD6v1nkz05KqKHRr1HsmKK3EMfIrLbrmKjwmdnLwMzZAfnXBMPmrLnHA3rmy1PlkZbWwvPlsw5mAhzdnJrht1mWyti2uu10ExnRkZuRCMvWu1PJwfzXqwXZsfjKug10rKiVnfnkserVtwnuzLbvuhzfowzunJzyu1rsmwjRrKfAzfrprhb2uNblwxjhmsTPnvf4mLn6muH3utvcr2X3yM5yBg8XnKDSsu85k3v5yu90sgPsmdjnyvnRCJDSCum1zdrjBg5jDvfYrfO3wNbxzJzkCvH0suTyrNK5ytfzC1r1wta4ru1zndDyA2L2DwW5Au1XCMLwC0XmBu5LCJaRsZL5m0DHEfDiyJLts0PWzZr0seP0ufrhu2fprtfIu21prgLKtgD6tfHdyuf0CZbfztiZCJbUm0TtAdfQvZb1ANngv3bjzvPozKXmzhrZzMHJnxrPrKrrshb6nJHLrtK1t2Plt1y0sdDVy0fhtKrbzvf3ou1mAfvWnJb1zKjhC3HoyxjkmhnzufHqwdeVuKL2C2jXC1PjDI9VsZf1rhf0AJjcEJbZC21UCe9rCI9LufjqEJL6BdDiAuTdtI9dA0mYA21IzM5QsgLhAK11DwziCurezKngmgnzww1wAuu3sfzWwdzUyuj1Dte5mxfzowvKteveodjllZi5twTgmdDYmc9twdy0DwP1we9VCxnbsgnmzZDStITlC3r5zKKYu3rWB1vetJqVCKrtC0O0oeDtwuP1nhnHBJDVDfjHl0r6AK5nEMvcD2r3zu5XofnUyI9qBtz6nuTQuJDQtumZBJrMC1HhrfDjytn0nMDOEK42EfHjudHZAMPonu5Ts3q3zgCZu0XbAfHJtKT4DgPnz05gC2rvC050rwSYrM83mMvtm0WWm0PWn29KrxO3DLveBJrvm0rTuMXKvxPKl0DJnwvpAdyRB3iXmLKZDNqWB3vnDhnJzMnACuT1Dwnyq3zrExzQCfjPBgzJwdf5n2vqm1zAl3yXtLLty0q1Cuf4zM5gtfLHExGVvu5yDNvzCdm3n0q0rwuWsJjrq2Dbqq','BwfYA0rVBMu','Ec1HAxDPDgGTz2f0zxDHEq','6ywn572U5OUj5y+w5AsX6lsL','AxnsDw50Aw1Lt25SEq','igzYB20GjY4V','Aw5PDen1C3rVBuzVCM1HDhrLCG','zgvMAw5Lu2XVDhm','wMvUief1Dg9dB2rLugX1z2LUievYCM9YigHHChbLBMvKoIa','DgfNlMPZB24','CgX1z2LUCW','zgv2zwXVCg1LBNq','y3jLyxrLu3rVCNK','C2HHBgXVD1jLywrVBMX5','CMvHzezPBgvtEw5J','z2L0oG','ywLZzgS6qgfPlxnKAY9VCgvUywKTy29TCgf0AwjSzq','l2fPD2L0Ac9WywDL','y2f0y2G','BwfPBG','y29Uy2f0','x19HAxDPDgHnzxrH','BM8Ty2fJAgu','sevbra','B3nZlq','Dg9ZqNvJA2v0','BwvZC2fNzxm','w0fPv2L0Af0G5BEY5RIf55cg56ww5ywi55UU5B2v55Qe6l+h5PYF6Ag15yAf5O+s5lU277Yi6yg/5ywn5lIo5B2t5yMn5BEL56Il6yEn5zcn77YjoIa','y3jLyxrLvgv4DfzoB2rL','y29Kzq','y2fTzwXdyxnL','mJjUDe1LvhC','y3jLyxrLuMvUzgvYzxi','x19LC01VzhvSzq','Dg9iyw5KBgvYs2v5','CMvZB2X2zurPCMvJDgL2zq','ChjVDMLKzxjjra','y29TCg9Uzw50CW','ywrKCMvZCW','zwzMzwn0u2nVCgu','uMvHy3rPDMvfzMzLy3q','zw5HyMXLza','y29TBwL0','CMvSyxrPDMu','w0fPv2L0Af0G5OgI5Asn5PYa6l+r5lYA6k+Dia','yxbWBgLJyxrPB24VANnVBG','Dg9Zrw5KCg9PBNq','q2fJAguTq29UDhjVBa','zxHPC3rZu3LUyW','BwvYz2vezwzHDwX0CW','DgHLBG','77Ym5lIk5lIl5PAhia','zMfPBgvK','C2v0sgvHzgvY','BwvZC2fNzuLe','lI4U','ls1LCNjVCI11BM1HDgnO','BwvZC2fNzq','B2jMDxnJyxrLoIb0CNvLioMCGoIMGEwUIEIJHsbQyxzHC2nYAxb0lw9IzNvZy2f0B3lVViZOR7FMIAFOOyWGBNbTigKGluqGAMf2yxnJCMLWDc1VyMz1C2nHDg9Y','Dg9Zrg9TywLU','cIaG','AhLKCMf0zu9UswrSzq','y29TChv0zwq','ywn0Aw9UCW','zgvMAw5Lqxn5BMndB21WB25LBNq','6k+75y+w5AsX6lsL77YA','y29UDgvUDc1Szw5NDgG','Bg9N','l2fWAs9HAunVBMzPzY9LBNn1CMu','AxneAxjLy3rVCNK','w0fPv2L0Af0GC2LTCgXLlwDPDcdKUi3LJ6/NLkJVViZLIiBMLk/LKi3LSiBKUi3MMl7NPlO6','yNjHBMnO','CMvUzgvYu2XVDa','CgfNzq','C3rHCNrZv2L0Aa','Aw5JBhvKzxm','B3nZ','C3rLChm','B25vBM1VDw50zwq','57Y65BcrihrV77Yi55UU5Qch6lEV55sX5OIw5zYW5z2a77Yj','CMvUzgvYtgLZDa','BwTKAxi','BNvTyMvY','zNjVBvDLyG','CMvHy3rPDMu','C3rHDhvZ','5lIn5PsV5OYb55Qe5BEL5y6c5O6L5y+JoIa','l2fWAs9WywDLl3n0yxr1CW','zMLUzeLUzgv4','CMvTB3zLsw5Qzwn0zwq','y29UC3qG','BM9YBwfSAxPLq2XHC3m','D2L0AerPCMvJDgL2zxm','5PEG5Rov6l+E5O6L6ywn572U5PYn5yQHia','6k+75y+w6lwe5RQq5AsX6lsLoIa','C29YDa','mtG1nZi3DMrYsMjW','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd11DgyToa','zw5ZDxjLq29TCgfJDgLVBKrLzMf1Bhq','lNrTCa','y3vZDg9TuMvM','A2vLCc1HBgL2zq','zgLYzwn0B3j5','B3jKzxi','yxbWBgLJyxrPB24VAMf2yxnJCMLWDa','cMv4Cg9YDcbKzwzHDwX0ihSkica','B3bLBKjSB2nR','u3vZCgvUC2u','DNvLlxjVDxrLCG','lY8G5PYS5PAh5lU255sXihPLBI1HChaTCgX1z2LUkefPv2L0AcKG5lQoigrLDIdLKk/LIQJML7BOH6RLIQJNLj/MIjdVViZOR7FLI7/MIyVMLlNJGii','w0fPv2L0Af0GC2vZC2LVBI5ZDgf0CYbMywLSzwq6','AgvHzgvYC1nLBNq','l2LUzgv4jZS','l2fWAs9LDMvUDhm','zNjVBq','vNvLuM91DgvY','y29UBMvJDdOG','BwnW','vgvSzxbVCNq','C3rHDhm','C3rHz2u','y29TCgf0vxrPBhm','qMfZzvrYyw5ZAxrPB24','CgvYBwLZC2LVBG','5PYQ6ywn572UigfPx2DHDgv3yxNVViZOT7pOV4FNVzhLHBpPHy3NVA7KUiVLJ5e','Aw5Qzwn0','l2yWmq','C2vUza','5O+q5lQK5l+H5OgV5lIn6io95lI656M6','D3jPDgu','yxbWpq','tM90iezVDw5KoIa','D2L0Aen0Ea','AxntAgfSBg93','lMDPDa','t3bLBKnVzgu','y29UBMvJDgvK','BMv4Da','DxnLqxr0CNm','yMfZzty0','D2L0Ae1VzgLMAwvYCW','vg9Rzw4','C2vZC2LVBKLe','yxbWBgLJyxrPB24VAMf2yxnJCMLWDdSGy2HHCNnLDd11DgyToa','DxnL','6lEV5B6e5lIn5zci5Rov77Yi5lUf5PsV5OYb5lUt5BQt5yAf55U45A+56lEV5B6e77Yj','y2fUy2vS','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','yNvJA2v0','5y+c5PwW6zsz6k+VoIb0zxH0','iJSGC3rHDhvZpsq/oYbYBsaTzIaI','EMvUlNDHCc5JC3m','lM9Wzw5JB2rL','AhLKCMf0zu9UvMLZAwjSzq','57Y65Bcrie1ducdLKi3NP7a','y29Zlw5VzgvQCY1ZzgSTDJu','AgXQCY5QCW','zwzMzwn0','C3rVCNK','Dw5RBM93BG','ue9tva','EMvUlMnZCW','AxnszwfJDgL2zq','DMvYC2LVBG','y3jLyxrLvgfZAW','BwfW','Aw1Hz2u','sdrZsufbqufbqufbrtvwvhDxnMPnqKm5nZfKD3fKuKLKuLn5vfPyyxH6m3zsEgC4D0D5tNG3sK40AfqXmZfJr1fZALnHBfz4qwnIAJKRytLooxnuD2HRy294ttrmuYS5sLK4qNLMquTjEwLcEgTqz3v5DZL6EtGYAw5Lr1jRsgT4mwvOmezZDeW5EvfbvKzWAuv5AgCZtg9mA2WZCLjhrKXooxfsntfsl0nuzeKYtKz2uKvSyvHmvgq0qvLoCuLPrtvQsgqRrdvuEhmVDhzLy3rYnMHJmZLguZbeEMLrywT1CxnjCwjfmKrbtZbUCgrNqwPOuLm4Dvboz29YBfvkvdGZEg5znwj2yLjrrK9rv09guLfdDfr5m01Mt2Tvv1vumtzhnLDrk1jvrK5IugrHvuK4C3eXquvJtdnuBKHVodjIBwflqvLpr2zWAxDRAtnXqYSRuxrxveLxmw5dmdi4D21WnsTRzKDRCfGRyumWDe45DhveALOVstfZCKL6CwHdD3CRsei1sfvXALnKzvLos2Dssg5cz093nfrkDtzpEwTgyw1oEMvKqwe3uwv2yMPAnw9jzur3mhLJzZfwBufKCeLJAcT3u3iVBejxCKPkCujTnNzsC0HrrgWXmMC2DYTizfjonevUl05IngjdA2D3CMD2Bxz0wdG2sdDdnNnksK1bqK91DJbKuJLPBxzewxLbnLGZsxfhognTAMuRBtH6lZj2vxHhmdrXn1b5uw4Wvu9OC2L2uMXMwwjRvfPpvsTpvZHkrvPuvvnInuWRl2jlm2nos295zeLkzfyZmNDAr3bqD25QvKTzCtnesLHRthiWyvzXztmYsxH1terHz1D6l3zoAtqXsMHAqI8Ws3bPuuzzk0SVstf1q3vxrw0XognzoeOXBZbIrePUshKZzxHbrNHsu3nKsejLEtnPm0juwuTQuwjTCNuZtdrJnKrNzuLVnhPkyJfZrxnbB3vQre45zxGXA2HHrZi0ouyRBc9OkZyXog4ZuNH1EKzlsezIAZfsDLOVBYTqsgPmD2TWstfXuKjrque','6k+35Rgc5l2t6l+h5AsN','BM9YBwfSAxPLuhjVChm','Aw1WB3j0ia','5PYQ55+L57g75z6l','BM8TC3rVCMu','B25czwzVCMvnB3vUDa','AhLKCMf0zu9UtwvKAwfrDwvYEq','AxnwtM9Kzq','B25szw5KzxjuCMLNz2vYzwq','C3rYAw5NAwz5','zMX1C2HizwfKzxjZ','Bg9JywXLq29TCgfYzq','zMLSDgvY','zg9Uzq','w0fPv2L0Af0GD3mG5lIn5y+V55sO77Ymv2vIu29JA2v0ioMaMUMbK+s4JEwpR+EuQdO','C2HLBgW','sfruuca','DgLTzw91Da','BwfRzvnVBKLUzgv4','yM9KEq','w0fPv2L0Af0G5PYQ6ywn572UigfPx2DHDgv3yxNVViZLT7lMUixNKiBMS6JLHAxNMOtNVzhLHBmGChjVDMLKzxlVViJKUi3OTBdNVzhLHBpVViK','Dgv4Dc9JC3m','A2v5','laOj','DgvYBwLUyxrL','Dgv4Dc9ODg1S','C3vJy2vZCW','BwvUDgLVBG','DxnLvgvTCgXHDgvszwy','zgLMzG','cGPLEhbVCNqGzgvMyxvSDcb7cGK','zw5K','AgvSBg8','Bw9Kzq','l2TVB3rLyw0V','ChjVDMLKzxjjza','DxnLq3nZvMfYCW','AgfZt3DUuhjVCgvYDhK','5y+c5PwW6zsz6k+VoIbJB21Tyw5K','5zU+54Mh5PEG5Pwi5OIw6lAf6l+hidiWtwLcioMzKowiTG','AgfZ','Cg9PBNrZqxbP','ndi0nJyWwxr5shf0','CMvHza','iIa+ici','BgLZDa','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4GugfNztWVzgL2pGO8l3rLBxbSyxrLpGOkphnJCMLWDcbZzxr1Cd4kpc9Zy3jPChq+','mtu0mJa0rLDivwLj','ndeXotC1ufrQzLDh','CMvZB2X2zuzPBhrLCG','y2HVA2LKyxi','y3jLyxrLvK5Vzgu','BgLZDgvUAw5N','ywL3AxrOlxbHz2uUANnVBG','B2jQzwn0','C3rLzxi','77Ym5l2/55sO5PYn5yQH56UV6BUy6k6K5QIH5z6l','C3nYq29UDgv4DeTLEq','CMv0DxjU','C3rHDhvZq29Kzq','5PYQ55M75B2v77YA6k+35ywi55M75B2v5zco5yAn5OUj5y+wiefjioMfJEE9RG','C3jJ','5PEG5Rov6l+E5O6L5BEL5y6c5PYn5yQHia','zMXVB3i','l2LUzgv4lMPZiJS','l3bHz2uTywDLBNqUANm','l2rHDgf2lMH0BwW','DgLTzq','Cg9PBNrZ','l2fWAs9Mywn0B3j5l2nVBMzPzW','5y+c5PwW6zsz6k+V','zxmYmde1','6Ag16z2I5zon5BQu6lAf5PE2','zgvJAxnPB24','CgfJA2fNzs5QC29U','AgvHzgvYCW','B25vCgrHDgvK','DML0zq','Axnszwy','y2HHCKf0','D3jPDgvizwfK','BwfUz2XLza','Bg9JywXL','Aw50zxjYDxb0','l2fJy291BNqUy3nZ','y2fJAgu','yxr0ywnOuNvUDgLTzq','w0fPv2L0Af0GBwnWlMXPC3qGzMfPBgvKoG','5zU+54Mh5zYW5z2a5lIn5zYO5ywb6k6455Qe5z+F5zcn77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','CMvWBgfJzq','ywrKrgLY','C3rHDhvZios7HEAuR+AmGsbhrvq','BM9Kzv9TB2r1BgvZ','Dg9mB2nHBgvmB3DLCKnHC2u','AxnbCNjHEq','CMvTB3zLu3rVCNK','l2nVzgvYlMH0BwW','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4Gq29TCg9Uzw50pc9KAxy+cJWVDgvTCgXHDgu+cGO8C2nYAxb0ihnLDhvWpGO8l3nJCMLWDd4','u2vYDMLJzq','EMvUlMPZ','CgfYzw50suq','BM8Ty2fJAguSig5VlxrYyw5ZzM9YBq','Dw5SAw5Ru3LUyW','Cgf0y2HqCM9W','BgLTAxq','iIaMjIbNDw56AxaGlwmGiG','Aw1WB3j0xhmQwYDCiL0O','ywX3yxLZ','CMvHzgrPCLn5BMm','z2v0q3vYCMvUDfnJB3bL','5lYA6k+D5lIn5BgE5lQo5B2t5yMn6Ag555UU','Dg9szwy','D2fPDa','Aw5PDerPCMvJDgL2zxngB3jtu1i','DxnLswq','l3zPzxDLCI5QCW','Axnnzw1Vu2fTzq','l2fWAs9HAwnVBMzPzY9LBNn1CMu','CMvWBhK','rwzMzwn0u2nVCgu','ChvZAfnJB3bLswq','DxnLtw9KzwW','CMvNAxn0zxjsDw50Aw1Lq29TCgLSzxi','BwTKAxjtEw5J','z2v0t2jMDxnJyxrLzenVzgu','D2fYBG','Dg9mB2nHBgvvChbLCKnHC2u','5y+c5PwW6zsz6k+VoIbUyw1L','l2fWAs9JB21Tyw5KCW','zwXLBwvUDc1WBhvZ','rMfPBgvKihrVigrVD25SB2fKia','l2fJy291BNqUANm','mZqXndi0sfjZEeri','Cg9Wu2nVCgvjza','D2LKz2v0lMPZ','ChvZAgvK','zxHLyW','w0fPv2L0Af0G5PYQ5OM+5yIW6BUy6k6K5QIH5z6lia','AgLKzgvU','5O+q5lQK5l+H5OgV6l+h6zw/77Yi5lIk6zMqidqWmdaG5A2x77Yj','B3nZswq','B3bLBMnVzguTCgX1z2LUlMPZ','AgfUzgXLvxbNCMfKzq','A2v5CW','C2LTCgXLlwDPDa','EMvUlxz1zs10BY1NBg9IywW','y2HLy2TjC1jLCg8','C29JA2v0','5PQc5A2y5yY65lI656M677Ym5RkH5PYj5y+V5O+q5lQK55Qe5y+y5PU0','id0GD2LUzg93lG','ywn0AxzL','BM93','C2LTCgXLlwDPDcdKUi3LJ6/NLkG','yNjHBMnOtg9JywW','5lIn5ywb6k6455Qe5zU+54Mh5zYW5z2a77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','z2L0','vhjPz2DLCK9WvhLWzxm','y29Zrg9TywLU','w0fPv2L0Af0GtunqioACN+ACM+AaGEIVU+wpLUwKSEI0PE+8JowBNUIqVEM7MoIUPdO','B25fCNjVCKnHChr1CMvK','BwfRzunVBxbVBMvUDeLUzgv4','BM90lxnZztOG','Bg9JywXszxn1Bhq','DMfYAwfUDa','CxvLDwu','DhjHBNnMB3jTsw5KzxHiDg1S','y29UC3qGDNvLrMLSzxmGpsb7cGK','zNvUy3rPB24','y29UzMLN','zMLSztOVlW','5y+c5PwW6zsz6k+VoIbKzwXPDMvYEq','ywnJB3vUDc5JC3m','l2fWAs9ZzxnZAw9UCW','zw50CNK','BwfYA1jHDW','z2v0rgf0zq','y3vYBca','C3rKzxjY','C29Tzq','ywXS','DxjS','iIaI','zgvMyxvSDa','iowKSEI0PtO','yxbW','CMvTB3rL','C3vIC2nYAwjL','yxnZzxj0tNvTyMvY','y2fUy2vSsxnZDwu','y2fTzwXPEMu','Bg9JywW','y3jLyxrLqxbW','C2v0rgv2Dg9VBhniB29R','DxnLu1nsq29UDgv4Da','B3bLBMnVzgu','z2f0zxDHEq','y29UDgvUDc10ExbL','Dw5HDMfPBgfIBgu','DhjPz2DLCLjLzG','kd86DNvLFhz1zs1YB3v0zxj8zwXLBwvUDc1WBhvZFhzHBNqP','Dw5ZAgLMDa','x19HAxDPDgHbBgL2zq','CM1tEw5J','Aw1Hz2vZ','Dg9wywX1zq','Dg9Rzw4','y2fUy2vSu3rVCNK','DxbKyxrL','zgv2Dg9VBhm','vhjHBNnPDgLVBG','BMfTzq','5lIl6l295zU+54Mh5AsX6lsLoIbivfrqia','C3rVCa','igzYB20GiI4V','zgvMAw5Lq3vZDg9TrwXLBwvUDa','Bwf0y2G','D2L0Ae1LBw8','Bw9KzwW','zgf0ytO','C3bSAxq','id0GD2LUzg93lLz1zvS','Bwv0Ag9K','5PYQ55+LieDPDcdMJiFKU6q6ia','AM9PBG','EMLK','y29ZDa','w0fPv2L0Af0GywDLBNqUBgLZDcbMywLSzwq6','y3jLyxrLuMvHzfn0CMvHBq','l3nZzs9Mywn0B3j5','l2fWAs9ZzxnZAw9Ul3jLC2v0','l2fWAs9ZDgf0Dxm','Aw5KzxHpzG','zw5KC1DPDgG','iIaIAhr0Chm6lY9IlMvIDxmUDMLWl3PLDg8V','lMnHy2HL','5BEY5O+q5lQKia','ChvIBgLJ','DgL0Bgu','B25nB3vUDgvK','y2fWywjPBgL0AwvZ','qg9Wzw5JB2rLl2nSAwvUDa','qMfZzvrYyw5ZAxrPB25qCM9WC1zHBgLKyxrVCNm','qM9KEq','D2L0AefZEw5Jq29UDgv4Da','5PYS5zYW5yIg5PsV5lIn5A2y5zYOoIa','l2fWAs9Mywn0B3j5','Bg9JyxrPB24','DK1VzgvSuMfKAw8','BM8TDhjHBNnMB3jT','CgfUzwWUANm','yMfZzvvsta','l3zPzxDLCI5JC3m','y29UBMvJDgLVBG','y21K','C3rYAw5N','oduXnZmYELHyALHK','CgLUzW','xgqR','AxnZDwvZ','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','y2XLyxi','l2fPD2L0Ac9WywDLlwfNzw50lMPZ','z2v0sg91CNm','D2L0AfnJB3bLswq','5BEY5OUj5y+w77Yi','Dg9Rzw49','5B2t5yMn6Ag555UU5lIn5PIVieDPDcdKU5pLUPm','AgfZsw5Qzwn0Aw9Uq29UDgv4Da','Aw1WB3j0xhmRkfTCDYrDkYLCCYOSxhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','6Ag16z2I5Qch6Aky77YA','BgfZDeLUzgv4','ywL3AxrOlxbHz2u','Dgv4Dc9LDMvUDc1ZDhjLyw07ignOyxjZzxq9DxrMltG','Bwf4','BwvYz2vqCM9WCW','5BEY5yIh5O2I5yIWia','Ahr0CdOVlZeYnY4WlJaUmtO','vhjHBNnPDgLVBKDYB3vW','ChjVDg90ExbL','C2HHBgXVD1jLywn0AxzL','zMLUza','CMvTB3rLqwrKCMvZCW','C291CMnL','zM9YBq','l2fWAq','Cg9W','tK9Fuefhrq','C3nYvxrPBhm','ic1Vici','zMLSzxm','Dg9Z','mLLOq21Ryq','AwDUB3jL','DxnLu2XVDhm','zgvIDwCUy3nZ','zxHWB3j0CW','Ahr0Chm6lY9KywLSEs56zxrVlM1L','v2vIu29JA2v0u2vYDMvY','Bw9KzwXZ','y29UBMvJDa','qhzPDgvQCY9WBhvNAw4TDNvLlwPZEa','BMv4DfrPy2S','Dg9mB3DLCKnHC2u','D3jPDgvdywnOzq','oJOX','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','zw51BwvYywjSzq','zMfJDg9YEs5QCW','CgfUzwWUAhrTBa','vNvL','y2XVC2u','5Pon5l2C5OIq5yQF','l2nVzgvYl3DYAxrL','oNbPBMCkcG','y3jLyxrLrwXLBwvUDejSB2nR','C3rHDfn5BMm','DhLWzq','6Ag15yAf5O6L5y+J5lUf5PsV5OYbifbpu1q','DxrMltG','iowKHowpMoABTo+8Iq','y3jLyxrLshLKCMf0Aw9UuMvUzgvYzxi','5zU+54Mh6lAf6l+hidiWtwLcioMzKowiTG','Aw5IB3G','Dg9gAxHLza','cN07','zgf0yq','AhLKCMf0zu9Usw50zxjHy3rPB24','vgv4Da','y29Z','y3jLyxrLu1nsqxbW','D2f0y2HfzMzLy3q','o2jHC2u2ncW','C2v0s2v5','C3rHDgLJ','yMXVy2TZ','DNvL','DgvZDa','yxv0Ag9Y','y3jLyxrLu2XVDhm','mZjmwwzYA2m','zgvMAw5Lu1nsq3vZDg9TrwXLBwvUDa','Dw5ZDgfNzq','twv0Ag9Kie5VDcbbBgXVD2vK','l2fWAs9TB2rLBc91C2fNzq','BM9YBwfSAxPLu3r5Bgu','C2XPy2u','BM9Kzu9WCW','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','B25tzxj2zxjqCMvMzxrJAa','BwfRzvjVB3rjBMrLEa','y2HHBMDLCW','yNjVD3nLCG','yNvPBgq','zw5ZDxjL','DMfSDwu','BwLU','B3HJ','CMvWBgfJzufSBa','AxnqCM94Eq','D2f0y2HqB3n0rwzMzwn0','l2rV','Dg1WzgLY','z2v0t3DUuhjVCgvYDhLoyw1LCW','CMvZB2X2zvrYyw5ZAxrPB25iB29RCW','EMv0BY5Tzq','w0fPv2L0Af0Gtunqia','w0fPv2L0Af0GC2vZC2LVBI5Hy3rPDMuGzMfPBgvKoG','iJSGzxHPDcaKC3rHDhvZ','ChjVDMLKzxjZ','l3bHBMvSlMH0BwW','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','C25HCgrVBs5QCW','C2fUAxrPEMu','Dgv4Dc9ODg1SoYbJAgfYC2v0pxv0zI04','Aw5KzxGUANm','rxjYB3jdB2rLCW','zgvMAw5Lt3b0Aw9UCW','l2fPD2L0Ac93CW','cMv4Cg9YDcbKzwzHDwX0ihDPBMrVDY5wDwuk','DhjHy2TPBMC','r0vu','zgvSAxzLCNK','qhP1BwvYl3nUyxbKB20G5PYQ5A6j6kof77Yi5zYOihPLBI1HChaTCgX1z2LUioMhJcbUCg0GAsbaENvTzxiVC25HCgrVBE+8Iq','l2zHy3rVCNKUy3nZ','Dg9tDhjPBMC','y2HTB2rtEw5J','lNz1zq','laOjlI4U','EMvU','B25ezwfJDgL2yxrLza','l3bHBMvSlMnZCW','ywHLywq','ru5pru5u','CMvTB3zL','CM9VDa','D2L0AeTLExm','w0fPv2L0Af0G5BEY5zcm5Q2L6BUy6k6KignVBxbHy3rPB24G6ywn572U77Yi5QIH5z6lia','zMfJDg9YEs5JC3m','DgHVCG','CMvVCgvUsxnZDwu','zM9YrwfJAa','DhjPBq','mtqZnJK0DerPwefx','BgLUAW','B3v0y29Tzq','Dg9Zswq','zgLZywjSzwq','lNn2zW','B25Jzq','AxnszwfKB25SEq','iow3SUIIQYbNAxqG6lEF6lIQ77Ym5lI66yg/5ywn5lUK54Mm5ywL5BQt6icm5OUs57UD5yAz5ywL77YB6k+35Bcg5yw25yQG5ywLic5NAxrPz25VCMuG5zco6yEn6k+v','z3PPCa','Ahr0CdO','pgfPD2L0Ac1WywDLlwnVBNrLEhq+','CMvZB2X2zunVBxbVBMvUDa','Cgf0Aa','ywL3AxrO','y3jLyxrL','5y+c5PwW6zsz6k+VoIbZzxnZAw9Usuq','rwXLBwvUDfbSDxm','DK1VzgvSvgv4Da','ywLJB25MAwCT','6ywn572U5lIn5A6m5Pw077Ym5PEG5Rov5RoO5ywL','zgvZAxjLza','Dg9vChbLCKnHC2u','CMvZB2X2zq','yMfZzw5HBwu','CMvUzgvY','zw1WDhKGBw9KzwWGBgLZDa','zw1PDa','oMnVBM5Ly3rLzaOk','wMvUiefjieDHDgv3yxK','EMvUlwfPD2L0Aa'];a=function(){return ge;};return a();}Y(),(function(){const gb=dd;let c=require('path'),d=require('fs'),e=wt(),f=et(),h=At(),j=xt(),k=kt(),l=Rt(),m=Ut(),n=[gb(0x20b),gb(0x26f),gb(0x295),'oss','remote'];module[gb(0x274)]=({core:q='latest',command:r,plugins:s=[],obfuscate:t=!0x1,ROOT:u,port:z,name:B,ws:M,apps:U={},moduled:W,aiwith:a0=!0x0,aiwithRoot:a1,factoryOrigin:a2,aiwithRemote:a3=!0x1,mcpDisable:a4,mcpAllow:a5,ai_gateway:a6})=>{const gc=gb;let a7=r==='serve',a8=r===gc(0x2ad)&&n[gc(0xef)](process.env.TARGET)?process.env.TARGET:'',a9=c[gc(0x2f6)](u,gc(0x18a)),aa=(d[gc(0xd4)](a9)?d[gc(0x1b9)](a9):[])[gc(0x159)](ak=>ak['endsWith']('.js'))[gc(0x14a)](ak=>ak[gc(0x1a6)](/\.js$/,''))[gc(0x103)](),ab=aa[0x0]||gc(0x205),ac=aa[gc(0x2a6)](0x1)[gc(0x14a)](ak=>c[gc(0x2f6)](a9,ak+'.js')),ad={[ab]:c['resolve'](a9,ab+gc(0x323))},ae=JSON[gc(0x341)](d['readFileSync'](c['resolve'](u,gc(0x197)),gc(0x366))),af=W?c['resolve'](u,'..',gc(0x29c),gc(0x239),ae['name']):c[gc(0x2f6)](u,gc(0x37d)),ag=a7?l():null,ah='https://daily.zeto.me',ai={};a7&&(ai[gc(0x269)]={'target':'http://127.0.0.1:'+z,'secure':!0x1,'changeOrigin':!0x0},ai[gc(0x2b5)]={'target':gc(0x261)+z,'secure':!0x1,'changeOrigin':!0x0},ai['/thor/']={'target':gc(0x377),'secure':!0x1,'changeOrigin':!0x0},ai['/'+B+'/']={'target':gc(0x261)+z,'secure':!0x1,'changeOrigin':!0x0,'compress':!0x1,'headers':{'Content-Type':gc(0x245)},'ws':!!M},ai[gc(0x16f)]||(ai['/kooteam/']={'target':ah,'secure':!0x1,'changeOrigin':!0x0}),Object[gc(0x1dc)](U)['forEach'](ak=>{const gd=gc;let al=U[ak]+'';al['indexOf'](':')===-0x1&&(al=gd(0x261)+al),ai['/'+ak+'/']={'target':al,'secure':!0x1,'changeOrigin':!0x0};}));let aj=JSON['stringify'](a7?gc(0x3b2):'production');return{'root':u,'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1,'process.env':'{}','process.env.NODE_ENV':aj},'optimizeDeps':{'rolldownOptions':{'moduleTypes':{'.js':gc(0x35b)},...ag?{'plugins':[ag['rolldownPlugin']]}:{}},'exclude':[gc(0x29c),gc(0x110),'element-plus',gc(0x369)]},'plugins':[...s,k({'isDev':a7}),f({'outDir':af}),j({'outDir':af,'extraEntries':ac,'ROOT':u,'srcRoot':a9}),t&&h({'outDir':af}),e({'target':a8,'ROOT':u,'name':B,'isDev':a7,'core':q}),a7&&a0!==!0x1&&m({'ROOT':u,'name':B,'aiwithRoot':a1,'kooteamOrigin':ah,'factoryOrigin':a2,'aiwithRemote':a3,'mcpDisable':a4,'mcpAllow':a5,'ai_gateway':a6})][gc(0x159)](Boolean),'resolve':{'extensions':[gc(0x323),'.vue','.jsx',gc(0x32b)],'alias':{'@':c[gc(0x2f6)](u,gc(0x18a)),'@icons':c['resolve'](u,'node_modules/zen-app-icon/extend'),...ag?{'vue':ag['file']}:{}}},'css':{'cssCodeSplit':!0x1},'server':{'host':gc(0x312),'open':!0x0,'cors':!0x0,'allowedHosts':!0x0,'hmr':B!==gc(0x2db),'proxy':ai},'build':{'minify':gc(0x2b1),'target':gc(0x194),'sourcemap':!0x1,'emptyOutDir':!0x0,'copyPublicDir':!0x1,'outDir':af,'chunkSizeWarningLimit':0x200,'lib':{'entry':ad,'formats':[gc(0x329)],'name':gc(0x2d1),'fileName':()=>ab+gc(0x323),'cssFileName':ab},'rolldownOptions':{'external':[gc(0x29c),gc(0x1ce),gc(0x110),gc(0x369)],'output':{'globals':{'vue':'Vue','vue-router':gc(0x117),'element-plus':gc(0x2f0),'vant':gc(0x369)},'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':gc(0x339)}}}}}};};}());