zen-app-plugin 0.6.24 → 0.6.25

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 (4) hide show
  1. package/index.js +1 -1
  2. package/package.json +2 -2
  3. package/zen +2 -0
  4. 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+r5lY877YjicOVcIaGicaTlwHSlwnVBw1LBNq6icm4yJK0owu7ic0TAgWTA2v5D29YzdOGi2zMn2i3mJSGls1OBc1ZDhjPBMC6icnHnwq2zMy7cIaGicaTlwHSlw51BwjLCJOGiZC5yZbMzJSGls1OBc10AxrSztOGi2qYytHMzJSGls1OBc1HDhrYoIaJzMzHnJu3oYaTlwHSlxrHzZOGiZDLztC4nZSkicb9cIaGkIb7igjVEc1ZAxPPBMC6igjVCMrLCI1IB3G7ig1HCMDPBJOGmdSGCgfKzgLUzZOGmdSGFqOGigH0BwWSigjVzhKGEYbOzwLNAhq6ideWmcu7ih0kicbIB2r5ihSkicaGigrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47cIaGicbIywnRz3jVDw5KoIbYywrPywWTz3jHzgLLBNqOmtiWmhb4idyWmhb4igf0ideWmcuGmcuSihzHCIGTlwjNlwDSB3CPlcb0CMfUC3bHCMvUDca2mcuPlcb2yxiOls1IzYK7cIaGicbJB2XVCJOGDMfYkc0TDgv4DcK7cIaGicbMB250oIaXnhb4lZeUnJuGlwfWCgXLlxn5C3rLBsWGqMXPBMTnywntExn0zw1gB250lcaIu2vNB2uGvuKIlcaIugLUz0zHBMCGu0mIlcaItwLJCM9ZB2z0ifLHsgvPiIWGC2fUCY1ZzxjPzJSkicaGigHLAwDODdOGmtaWzhzOoYbVDMvYzMXVDZOGAgLKzgvUoWOGicaGCgfKzgLUzY1Szwz0oIa0nNb4oWOGicaGlxDLyMTPDc1MB250lxnTB290AgLUzZOGyw50AwfSAwfZzwq7cIaGicb0CMfUC2L0Aw9UoIbIywnRz3jVDw5KlwnVBg9Yic4YnxmGzwfZzsWGy29SB3iGlJi1CYbLyxnLoWOGih0kica6oI13zwjRAxqTC2nYB2XSyMfYihSGD2LKDgG6idzWEdSGAgvPz2H0oIa2ChG7ih0kica6oI13zwjRAxqTC2nYB2XSyMfYlxrODw1IihSGyMfJA2DYB3vUzdOGDMfYkc0TC2nYB2XSyMfYktSGyM9YzgvYlxjHzgL1CZOGm3b4oYb9cIaGoJOTD2vIA2L0lxnJCM9SBgjHCI10AhvTyJPOB3zLCIb7igjHy2TNCM91BMq6ihzHCIGTlxrLEhqTzMfPBNqPoYb9cIaGoJOTD2vIA2L0lxnJCM9SBgjHCI10CMfJAYb7igjHy2TNCM91BMq6ihrYyw5ZCgfYzw50oYb9cIaGAgvHzgvYihSkicaGigrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnNb4oYbMBgv4lxnOCMLUAZOGmdSkicaGihbVC2L0Aw9UoIbYzwXHDgL2ztSGB3zLCMzSB3C6igHPzgrLBJSkicaGihbHzgrPBMC6idLWEca4ChGGoxb4ide0ChG7cIaGicbIywnRz3jVDw5KoIb2yxiOls1OzwfKzxiTyMCPoYbIywnRzhjVCc1MAwX0zxi6igjSDxiOmtjWEcK7cIaGicbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicb9cIaGAgvHzgvYic5SB2DVihSGzgLZCgXHEtOGBM9UztSGFqOGic5Py29Ulwj0BIb7cIaGicbIB3jKzxi6ig5VBMu7igjHy2TNCM91BMq6ig5VBMu7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7ign1CNnVCJOGCg9PBNrLCJSkicaGigzVBNqTC2L6ztOGmtvWEdSGBgLUzs1OzwLNAhq6ide7ihbHzgrPBMC6idvWEdSGyM9YzgvYlxjHzgL1CZOGoxb4oWOGicaGD2LKDgG6idmWChG7igHLAwDODdOGmZbWEdSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGANvZDgLMEs1JB250zw50oIbJzw50zxi7cIaGicb0CMfUC2L0Aw9UoIbJB2XVCIaUmtvZlcbIywnRz3jVDw5Kic4XnxmSihrYyw5ZzM9YBsaUmtvZoWOGih0kicaUAwnVBI1IDg46Ag92zxiGEYbJB2XVCJOGDMfYkc0TDgv4DcK7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGFqOGic5Py29Ulwj0BJPHy3rPDMuGEYb0CMfUC2zVCM06ihnJywXLkc45mIK7ih0kcIaGlYOG5lYA6k+D5Qch562+5Qcp77Yi5AsA5lYA6k+D5BM25y+r77YjicOVcIaGlNrHyNmGEWOGicaGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa1ChG7igzSzxGTC2HYAw5RoIaWoWOGicaGCgfKzgLUzZOGnxb4ideWChG7ig92zxjMBg93lxG6igf1Dg87ig92zxjMBg93lxK6igHPzgrLBJSkicaGigjHy2TNCM91BMq6ihzHCIGTlwHLywrLCI1IzYK7igjHy2TKCM9WlwzPBhrLCJOGyMX1CIGXmNb4ktSkicaGigjVCMrLCI1IB3r0B206idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGih0kicaUDgfICZO6lxDLyMTPDc1Zy3jVBgXIyxiGEYbOzwLNAhq6ida7ih0kicaUDgfIihSkicaGigrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnxb4oYbMBgv4lxnOCMLUAZOGmdSkicaGig1HEc13Awr0AdOGmtyWChG7ihbHzgrPBMC6idrWEca2ChGGnhb4idLWEdSGy3vYC29YoIbWB2LUDgvYoWOGicaGyM9YzgvYlxjHzgL1CZOGohb4oYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGicaGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7cIaGicbMB250lxnPEMu6ideYChG7igXPBMuTAgvPz2H0oIaXlJi7cIaGicb0CMfUC2L0Aw9UoIbJB2XVCIaUmtvZlcbIywnRz3jVDw5Kic4XnxmSigjVCMrLCI1JB2XVCIaUmtvZoWOGih0kicaUDgfIoMHVDMvYihSGy29SB3i6ihzHCIGTlxrLEhqPoYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ih0kicaUDgfIlMfJDgL2zsb7ignVBg9YoIb2yxiOls1ICMfUzc10zxH0ktSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1ZDhjVBMCPoYbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1ZB2z0ktSGFqOGic50ywiTDgL0BguGEYb3AgL0zs1ZCgfJztOGBM93CMfWoYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGBwf4lxDPzhrOoIaXmtjWEdSGFqOGic50ywiTzg90ihSGD2LKDgG6idDWEdSGAgvPz2H0oIa3ChG7igjVCMrLCI1YywrPDxm6iduWjtSGzMXLEc1ZAhjPBMS6ida7igjHy2TNCM91BMq6ihrYyw5ZCgfYzw50oYb9cIaGlNrHyI1KB3qUCNvUBMLUzYb7igjHy2TNCM91BMq6ihzHCIGTlwjYyw5KktSGyw5PBwf0Aw9UoIb0ywiTChvSC2uGms4XCYbLyxnLlwLUlw91DcbPBMzPBML0ztSGFqOGic50ywiTzg90lNvUCMvHzcb7igjHy2TNCM91BMq6ihzHCIGTlxDHCM4PoYb9cIaGlNrHyI1JBg9Zzsb7cIaGicbIB3jKzxi6ig5VBMu7igjHy2TNCM91BMq6ig5VBMu7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGy3vYC29YoIbWB2LUDgvYoWOGicaGCgfKzgLUzZOGmxb4oYbIB3jKzxiTCMfKAxvZoIa2ChG7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7cIaGFqOGic50ywiTy2XVC2u6Ag92zxiGEYbJB2XVCJOGDMfYkc0TzxjYktSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYb9cIaGqgTLEwzYyw1LCYb0ywiTChvSC2uGEYaWjsWGmtaWjsb7ig9WywnPDhK6ide7ih0GntaLihSGB3bHy2L0EtOGlJm7ih0GFqOkicaVkIdLT6BKVQFNQ5BMJPlLT6xLHBFMOi8GkI8kicaUDg9VBc1YywLSihSkicaGihbVC2L0Aw9UoIbMAxHLzdSGEI1PBMrLEdOGota7igXLzNq6ida7ihrVCdOGmdSGyM90Dg9ToIaWoYb3Awr0AdOGndzWEdSkicaGigrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGm3b4oWOGicaGCgfKzgLUzZOGmtbWEcaWignHBgmOmtbWEcaRigvUDIHZywzLlwfYzweTAw5ZzxqTyM90Dg9TksK7cIaGicbIywnRz3jVDw5KoIb2yxiOls1OzwfKzxiTyMCPoYbIywnRzhjVCc1MAwX0zxi6igjSDxiOmtjWEcK7cIaGicbIB3jKzxiTCMLNAhq6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGih0kicaUDg9VBc1YywLSic5Py29Ulwj0BIb7ihDPzhrOoIaZnhb4oYbOzwLNAhq6idm0ChG7ih0kicaUDg9VBc1YywLSic5Py29Ulwj0BI5WDxnOlwjVDhrVBsb7ig1HCMDPBI10B3a6igf1Dg87ih0kicaUDg9VBc1YywLSic5Ty3aTyMfKz2uGEWOGicaGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGz2fWoIaWoYbWywrKAw5NoIaZChGGnxb4oYbMB250lxnPEMu6ideWChG7cIaGicbTyxGTD2LKDgG6idqWChG7ig1HCMDPBI1IB3r0B206idrWEdSkicb9cGOGic8QioIhQUwUMUs5Isb0B29SDgLW77Yizgf0ys10AxaG5PAh5PYS77YjicOVcIaGlMHHCY10AxaGEYbWB3nPDgLVBJOGCMvSyxrPDMu7ih0kicaUAgfZlxrPCdO6ywz0zxiGEWOGicaGy29UDgvUDdOGyxr0CIHKyxrHlxrPCcK7cIaGicbWB3nPDgLVBJOGywjZB2X1Dgu7ihOTAw5KzxG6idiWmdSkicaGigjHy2TNCM91BMq6ihjNyMeOmJaSidi2lcaZncWGlJK2ktSGy29SB3i6icnLnMvKzJy7cIaGicbMB250lxnPEMu6ideXlJvWEdSGBgLUzs1OzwLNAhq6ideUndSGCgfKzgLUzZOGnxb4idHWEdSGyM9YzgvYlxjHzgL1CZOGn3b4oWOGicaGD2HPDguTC3bHy2u6ig5VD3jHCdSGCg9PBNrLCI1LDMvUDhm6ig5VBMu7cIaGicbVCgfJAxr5oIaWoYb0CMfUC2L0Aw9UoIbVCgfJAxr5ic4XnhmGzwfZzsaUmdrZoWOGicaGyM94lxnOywrVDZOGmca0ChGGmtrWEcbYz2jHkdaSidaSidaSic4ZnsK7cIaGFqOGic5OyxmTDgLWoMHVDMvYoJPHzNrLCIb7ig9WywnPDhK6ide7ih0kicaUAgfZlxrPCfTKyxrHlxrPCc1WB3m9iNjPz2H0iL06oMfMDgvYihSGBgvMDdOGy2fSyYGXmdaLicSGohb4ktSGDg9WoIa1mcu7ihrYyw5ZzM9YBtOGDhjHBNnSyxrLwsGTntaLktSGFqOGic5OyxmTDgLWw2rHDgeTDgLWlxbVCZ0IBgvMDcjDoJPHzNrLCIb7ihjPz2H0oIbJywXJkdeWmcuGkYa4ChGPoYb0B3a6iduWjtSGDhjHBNnMB3jToIb0CMfUC2XHDgvzkc01mcuPoYb9cGOGic5Py28GEYbKAxnWBgf5oIbPBMXPBMuTyMXVy2S7ihzLCNrPy2fSlwfSAwDUoIaTlJe1zw07igzSzxGTC2HYAw5RoIaWoYb9cIaGlMLJB24TyNrUic5Py28GEYbKAxnWBgf5oIbIBg9JAZSGFqOkicaVkIbnq1aG54Q25Ocb5OYh56s677Yi6Ag25Qcp5BEM5lIk6kEs77Ym5OkS5ygC5PI+56s66k+M5Oof77YjicOVcIaGlM1JCc1IywrNzsb7cIaGicbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idrWEdSGzMXLEc1ZAhjPBMS6ida7ign1CNnVCJOGzgvMyxvSDdSkicaGigzVBNqTC2L6ztOGmtfWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGzM9UDc12yxjPyw50lw51BwvYAwm6ihrHyNvSyxiTBNvTCZSkicaGigjHy2TNCM91BMq6ihzHCIGTlwzVBgqTyMCPoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGicaGyM9YzgvYlxjHzgL1CZOGohb4oYbWywrKAw5NoIaZChGGohb4idnWEca3ChG7igXPBMuTAgvPz2H0oIaXlJm7cIaGicb0CMfUC2L0Aw9UoIbJB2XVCIaUmtvZlcbIB3jKzxiTy29SB3iGlJe1CYWGyMfJA2DYB3vUzcaUmtvZoWOGih0kicaUBwnWlwjHzgDLoMHVDMvYihSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYbJB2XVCJOGDMfYkc0TDgv4DcK7ih0kicaUBwnWlwjHzgDLlMfSBc1VAYb7ignVBg9YoIb2yxiOls1VAYK7ih0kicaUBwnWlwjHzgDLlNDHCM4GEYbJB2XVCJOGDMfYkc0TD2fYBIK7ih0kicaUBwnWlwjHzgDLlMjHzcb7ignVBg9YoIb2yxiOls1LCNiPoYb9cIaGlM1JCc10AxaGEWOGicaGCg9ZAxrPB246igzPEgvKoYb0B3a6idq4ChG7igXLzNq6idu0ChG7ihOTAw5KzxG6idCWoYbTAw4TD2LKDgG6ide5mhb4oYbTyxGTD2LKDgG6idmYmhb4oWOGicaGCgfKzgLUzZOGoxb4ideXChG7igjVCMrLCI1YywrPDxm6ideWChG7igrPC3bSyxK6ig5VBMu7cIaGicbIywnRz3jVDw5KoIb2yxiOls1VDMvYBgf5lwjNktSGyMfJA2rYB3aTzMLSDgvYoIbIBhvYkdeYChGPoWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYlxn0CM9UzYK7igjVEc1ZAgfKB3C6ihzHCIGTlxnOywrVDYK7cIaGicbMB250lxnPEMu6ideYChG7cIaGFqOGic5Ty3aTDgLWlNnOB3CGEYbKAxnWBgf5oIbIBg9JAZSGyw5PBwf0Aw9UoIbOAxn0B3j5sw4GlJe2CYbLyxnLoYb9cIaGlM1JCc10AxaGlNjVDYb7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGn3b4oYbWywrKAw5NoIaYlJvWEcaWoYb9cIaGlM1JCc10AxaGlMrVDcb7ihDPzhrOoIa3ChG7igHLAwDODdOGn3b4oYbIB3jKzxiTCMfKAxvZoIa1mcu7igjHy2TNCM91BMq6ihzHCIGTlxrLEhqTzMfPBNqPoYbMBgv4lxnOCMLUAZOGmdSGFqOGic5Ty3aTDgLWic5KB3qUy29UBMvJDgvKihSGyMfJA2DYB3vUzdOGDMfYkc0TB2SPoYb9cIaGlM1JCc10AxaGlMrVDc5MywLSzwqGEYbIywnRz3jVDw5KoIb2yxiOls1LCNiPoYb9cIaGlM1JCc10AxaGlMrVDc5UzwvKC19HDxrOihSGyMfJA2DYB3vUzdOGDMfYkc0TD2fYBIK7ih0kicaUBwnWlxrPCcaUBMfTzsb7ignVBg9YoIb2yxiOls10zxH0ktSGFqOGic5Ty3aTDgLWic5ZDgf0zsb7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7ig1HCMDPBI1Szwz0oIbHDxrVoYb3AgL0zs1ZCgfJztOGBM93CMfWoYb9cIaGlM1JCc10AxaGlMvYCIb7ignVBg9YoIb2yxiOls1LCNiPoYbMB250lxnPEMu6ideXChG7ihbHzgrPBMC6idaGmcaZChGGmtrWEdSGD29Yzc1ICMvHAZOGyNjLywSTywXSoYb9cIaGlM1JCc10AxaGlM1JCc1OzwfKihSGzM9UDc1ZAxPLoIaXmxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1MywLUDcK7ihbHzgrPBMC6idaGmca1ChG7ih0kicaUBwnWlxrPCcaUBwnWlwHPBNqGEYbMB250lxnPEMu6ideXChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGCgfKzgLUzZOGnxb4idaGmdSGyM9YzgvYlxrVCdOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7ig1HCMDPBI10B3a6idvWEdSGBgLUzs1OzwLNAhq6ideUntSGFqOGic8Qie1ducdLVidLHBpVViJNUQ8Gq1ntioA7KEwDL++8IsaQlWOGic5Ty3aTC3DPDgnOihSGCg9ZAxrPB246ihjLBgf0AxzLoYbKAxnWBgf5oIbPBMXPBMuTzMXLEdSGzMXLEc1ZAhjPBMS6ida7ig1HCMDPBI1Szwz0oIa2ChG7ign1CNnVCJOGCg9PBNrLCJSGFqOGic5Ty3aTC3DPDgnOigLUChv0ihSGCg9ZAxrPB246igfIC29SDxrLoYbVCgfJAxr5oIaWoYb3Awr0AdOGmdSGAgvPz2H0oIaWoYb9cIaGlM1JCc1ZD2L0y2GGlNrYywnRihSkicaGihDPzhrOoIaYnNb4oYbOzwLNAhq6ide1ChG7igjVCMrLCI1YywrPDxm6idK5oxb4oYbIywnRz3jVDw5KoIb2yxiOls1IB3jKzxiTC3rYB25NktSkicaGihrYyw5ZAxrPB246igjHy2TNCM91BMqGlJe4CYbLyxnLoYbWB3nPDgLVBJOGCMvSyxrPDMu7igrPC3bSyxK6igjSB2nRoWOGih0kicaUBwnWlxn3AxrJAcaUDhjHy2S6oMfMDgvYihSkicaGignVBNrLBNq6icCNoYbWB3nPDgLVBJOGywjZB2X1Dgu7ihrVCdOGmNb4oYbSzwz0oIaYChG7ihDPzhrOoIaXmxb4oYbOzwLNAhq6ideXChG7igjVCMrLCI1YywrPDxm6iduWjtSkicaGigjHy2TNCM91BMq6icnMzMy7ihrYyw5ZAxrPB246ihrYyw5ZzM9YBsaUmtHZigvHC2u7igjVEc1ZAgfKB3C6idaGmxb4idjWEcbYz2jHkdaSidaSidaSic4YnsK7cIaGFqOGic5Ty3aTC3DPDgnOigLUChv0oMnOzwnRzwqGkYaUDhjHy2SGEYbIywnRz3jVDw5KoIb2yxiOls1VAYK7ih0kicaUBwnWlxn3AxrJAcbPBNb1DdPJAgvJA2vKicSGlNrYywnRoJPHzNrLCIb7ihrYyw5ZzM9YBtOGDhjHBNnSyxrLwcGXmxb4ktSGFqOGic5Ty3aTC3DPDgnOigLUChv0oMrPC2fIBgvKicSGlNrYywnRihSGB3bHy2L0EtOGlJu1oYb9cIaGlM1JCc10AxaGlMrVDc5KAxnHyMXLzcb7igjHy2TNCM91BMq6ihzHCIGTlxrLEhqTzMfPBNqPoYb9cGOGic8QioAOOEwEI+MaIEAlQEwzQo+8IoMHTUAGJ++8IsaQlWOGic5TB2rLBc1WAwnRzxiGEWOGicaGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa0ChG7igzSzxGTC2HYAw5RoIaWoYbJDxjZB3i6ihbVAw50zxi7cIaGicbMB250lxnPEMu6ideXChG7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7ig1HEc13Awr0AdOGmtmYChG7cIaGicbIywnRz3jVDw5KoIb2yxiOls1MB2XKlwjNktSGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicaGigjVCMrLCI1YywrPDxm6idHWEdSGCgfKzgLUzZOGm3b4idHWEcaZChGGn3b4oYbSAw5LlwHLAwDODdOGms4ZoWOGicaGzM9UDc1Myw1PBhK6igLUAgvYAxq7ihrYyw5ZAxrPB246ignVBg9Yic4XnxmSigjVCMrLCI1JB2XVCIaUmtvZlcbIywnRz3jVDw5Kic4Xnxm7cIaGFqOGic5TB2rLBc1WAwnRzxi6Ag92zxiGEYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ignVBg9YoIb2yxiOls10zxH0ktSGyM9YzgvYlwnVBg9YoIb2yxiOls1IB3jKzxiTC3rYB25NktSGFqOGic5TB2rLBc1WAwnRzxiGlMXHyMvSihSGB3zLCMzSB3C6igHPzgrLBJSGDgv4Dc1VDMvYzMXVDZOGzwXSAxbZAxm7ihDOAxrLlxnWywnLoIbUB3DYyxa7ih0kicaUBw9KzwWTCgfUzwWGEWOGicaGCg9ZAxrPB246igzPEgvKoYb0B3a6idC5ChG7igXLzNq6idu0ChG7ihOTAw5KzxG6idCXoYb3Awr0AdOGBwLUkdmWmhb4lcbJywXJkdeWmcuGlsaYnhb4ksK7cIaGicbTyxGTAgvPz2H0oIa1nIu7igrPC3bSyxK6ig5VBMu7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47ig92zxjMBg93oIbOAwrKzw47cIaGicbIywnRz3jVDw5KoIb2yxiOls1VDMvYBgf5lwjNktSGyMfJA2rYB3aTzMLSDgvYoIbIBhvYkde2ChGPoWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYlxn0CM9UzYK7igjVCMrLCI1YywrPDxm6ideYChG7igjVEc1ZAgfKB3C6ihzHCIGTlxnOywrVDYK7cIaGicbHBMLTyxrPB246igHPC3rVCNLjBIaUmtzZigvHC2u7cIaGFqOGic5TB2rLBc1Wyw5LBc5ZAg93ihSGzgLZCgXHEtOGzMXLEdSGFqOGic5TB2rLBc1OzwfKihSGCgfKzgLUzZOGmtbWEcaXm3b4idHWEdSGzM9UDc1ZAxPLoIaXms41ChG7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7igjVCMrLCI1IB3r0B206idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYb9cIaGlM1VzgvSlwXPC3qGEYbVDMvYzMXVDY15oIbHDxrVoYbWywrKAw5NoIa2ChG7ih0kicaUBw9KzwWTAxrLBsb7ihbHzgrPBMC6idDWEcaXmhb4oYbIB3jKzxiTCMfKAxvZoIa5ChG7ign1CNnVCJOGCg9PBNrLCJSGDhjHBNnPDgLVBJOGyMfJA2DYB3vUzcaUmtvZoYb9cIaGlM1VzgvSlwL0zw06Ag92zxiGEYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ih0kicaUBw9KzwWTAxrLBs5JDxjYzw50ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7igjVEc1ZAgfKB3C6igLUC2v0idjWEcaWidaGDMfYkc0TyNjHBMqPoYb9cIaGlM1VzgvSlwL0zw0GlM0TBMfTzsb7igzVBNqTC2L6ztOGmtiUnxb4oYbJB2XVCJOGDMfYkc0TDgv4DcK7ihDOAxrLlxnWywnLoIbUB3DYyxa7ig92zxjMBg93oIbOAwrKzw47ihrLEhqTB3zLCMzSB3C6igvSBgLWC2LZoYb9cIaGlM1VzgvSlwL0zw0GlM0TBwv0ysb7igzVBNqTC2L6ztOGmtfWEdSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYbTyxjNAw4TDg9WoIaYChG7ih0kicaUBw9KzwWTz3jVDxaGkYaUBw9KzwWTz3jVDxaGEYbTyxjNAw4TDg9WoIa0ChG7ih0kicaUBw9KzwWTz3jVDxaTAgvHzcb7cIaGicbWywrKAw5NoIa3ChGGmtbWEdSGzM9UDc1ZAxPLoIaXmc41ChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSkicaGigXLDhrLCI1ZCgfJAw5NoIaUnhb4oYb0zxH0lxrYyw5ZzM9YBtOGDxbWzxjJyxnLoYbJDxjZB3i6ihbVAw50zxi7cIaGicbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idzWEdSGyM9YzgvYlxjHzgL1CZOGohb4oWOGicaGDhjHBNnPDgLVBJOGyMfJA2DYB3vUzcaUmtvZlcbJB2XVCIaUmtvZoWOGih0kicaUBw9KzwWTz3jVDxaTAgvHzdPOB3zLCIb7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGFqOGic5TB2rLBc1NCM91Cc1OzwfKic5JAgv2CM9UihSGDhjHBNnPDgLVBJOGDhjHBNnMB3jTic4XohmGzwfZztSGB3bHy2L0EtOGlJG7ih0kicaUBw9KzwWTz3jVDxaUzxHWyw5KzwqGlM1VzgvSlwDYB3vWlwHLywqGlMnOzxzYB24GEYb0CMfUC2zVCM06ihjVDgf0zsG5mgrLzYK7ih0kicaUBw9KzwWTz3jVDxaTAgvHzcaUBwCTBMfTzsb7ig92zxjMBg93oIbOAwrKzw47ihrLEhqTB3zLCMzSB3C6igvSBgLWC2LZoYb3AgL0zs1ZCgfJztOGBM93CMfWoYb9cIaGlM1VzgvSlwDYB3vWlwjVzhKGEYbKAxnWBgf5oIbUB25LoYb9cIaGlM1VzgvSlwDYB3vWlMv4CgfUzgvKic5TB2rLBc1NCM91Cc1IB2r5ihSGzgLZCgXHEtOGyMXVy2S7ih0kicaUy3vYlwLUlwDYB3vWihSkicaGig1HCMDPBI1Szwz0oIbHDxrVoYbJB2XVCJOGDMfYkc0TyNjHBMqTDgv4DcK7igzVBNqTC2L6ztOGmtaUnxb4oYb0zxH0lxrYyw5ZzM9YBtOGBM9UztSkicaGigXLDhrLCI1ZCgfJAw5NoIaWoYb3AgL0zs1ZCgfJztOGBM93CMfWoYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGBwf4lxDPzhrOoIa1ocu7cIaGFqOkicaUAgLZDg9YEs1Wyw5LBcb7cIaGicbWB3nPDgLVBJOGzML4zwq7ihrVCdOGnZLWEdSGCMLNAhq6ideWChG7ihDPzhrOoIbTAw4OmZaWChGSignHBgmOmtaWjsaTidiWChGPktSkicaGig1HEc1OzwLNAhq6idyYjtSGzgLZCgXHEtOGBM9UztSGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGEI1PBMrLEdOGnJa7cIaGicbIywnRz3jVDw5KoIb2yxiOls1VDMvYBgf5lwjNktSGyMfJA2rYB3aTzMLSDgvYoIbIBhvYkde2ChGPoWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYlxn0CM9UzYK7igjVCMrLCI1YywrPDxm6ide0ChG7cIaGicbIB3GTC2HHzg93oIb2yxiOls1ZAgfKB3CPoYbVDMvYzMXVDZOGAgLKzgvUoWOGicaGyw5PBwf0Aw9UoIbOAxn0B3j5sw4GlJjZign1yMLJlwjLEMLLCIGUmJiSideSic4ZnIWGmsK7cIaGFqOGic5OAxn0B3j5lxbHBMvSlNnOB3CGEYbKAxnWBgf5oIbMBgv4oYb9cIaGqgTLEwzYyw1LCYbOAxn0B3j5sw4GEYbMCM9TihSGB3bHy2L0EtOGmdSGDhjHBNnMB3jToIb0CMfUC2XHDgvzkc04ChGPihnJywXLkc45ocK7ih0GDg8GEYbVCgfJAxr5oIaXoYb0CMfUC2zVCM06ig5VBMu7ih0GFqOGic5OAxn0B3j5lwHLywqGEWOGicaGCgfKzgLUzZOGmtfWEcaXnhb4idLWEdSGzM9UDc1ZAxPLoIaXms41ChG7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7cIaGicbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGBgv0DgvYlxnWywnPBMC6ic4ZChG7cIaGicbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idzWEdSkicb9cIaGlMHPC3rVCNKTBgLZDcb7ig92zxjMBg93lxK6igf1Dg87ihbHzgrPBMC6idzWEdSGFqOGic5OAxn0B3j5lwL0zw0GEYbWywrKAw5NoIa5ChGGmtfWEdSGyM9YzgvYlxjHzgL1CZOGmtbWEdSGy3vYC29YoIbWB2LUDgvYoYb0CMfUC2L0Aw9UoIbIywnRz3jVDw5Kic4Xnxm7ih0kicaUAgLZDg9YEs1PDgvToMHVDMvYihSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYb9cIaGlMHPC3rVCNKTAxrLBs5JDxjYzw50ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7igjVEc1ZAgfKB3C6igLUC2v0idjWEcaWidaGDMfYkc0TyNjHBMqPoYb9cIaGlMHPC3rVCNKTAxrLBsaUAgKTDgL0BguGEYbMB250lxnPEMu6ideZChG7ignVBg9YoIb2yxiOls10zxH0ktSGD2HPDguTC3bHy2u6ig5VD3jHCdSGB3zLCMzSB3C6igHPzgrLBJSGDgv4Dc1VDMvYzMXVDZOGzwXSAxbZAxm7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnhb4oYb9cIaGlMHPC3rVCNKTAxrLBsaUAgKTDgL0BguGlMLJBYb7ignVBg9YoIb2yxiOls1ICMfUzcK7ih0kicaUAgLZDg9YEs1PDgvTic5OAs1TzxrHihSGzM9UDc1ZAxPLoIaXmxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1MywLUDcK7ig1HCMDPBI10B3a6idnWEdSGFqOGic5OAxn0B3j5lwvTChr5ihSGCgfKzgLUzZOGmJjWEcaXmNb4oYb0zxH0lwfSAwDUoIbJzw50zxi7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGzM9UDc1ZAxPLoIaXmNb4oYb9cGOGic5JDhGTDhjHy2SGEYbWB3nPDgLVBJOGywjZB2X1Dgu7igXLzNq6ida7ihjPz2H0oIaWoYbIB3r0B206ida7igHLAwDODdOGmNb4oYbIywnRz3jVDw5KoIbYz2jHkde0ocWGmtyZlcaXodqSic4XktSGCg9PBNrLCI1LDMvUDhm6ig5VBMu7ih0kicaUy3r4lwzPBgWGEYbOzwLNAhq6ideWmcu7ihDPzhrOoIaWoYbIywnRz3jVDw5KoIb2yxiOls1NCMfKAwvUDcK7ihrYyw5ZAxrPB246ihDPzhrOic40nxmGy3vIAwmTyMv6AwvYkc4YmIWGmsWGlJm2lcaXksWGyMfJA2DYB3vUzcaUndvZigvHC2u7ih0kicaUy3r4lwzPBgWUD2fYBIb7igjHy2TNCM91BMq6igXPBMvHCI1NCMfKAwvUDcG5mgrLzYWGi2vHyJmWocWGi2y1owuWyIK7ih0kicaUy3r4lwzPBgWUzgfUz2vYihSGyMfJA2DYB3vUzdOGBgLUzwfYlwDYywrPzw50kdKWzgvNlcaJzJqZzJvLlcaJzwy0ndq0ktSGFqOGic5JDhGTDgv4Dcb7cIaGicbWB3nPDgLVBJOGCMvSyxrPDMu7igzSzxG6ide7igzVBNqTC2L6ztOGmteUnxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1KAw0PoYbSAw5LlwHLAwDODdOGmtSkicaGihDOAxrLlxnWywnLoIbUB3DYyxa7ig92zxjMBg93oIbOAwrKzw47ihrLEhqTB3zLCMzSB3C6igvSBgLWC2LZoWOGicaGzM9UDc12yxjPyw50lw51BwvYAwm6ihrHyNvSyxiTBNvTCZSGBgv0DgvYlxnWywnPBMC6ic4YChG7cIaGFqOGic5JDhGTDgv4DcbIihSGy29SB3i6ihzHCIGTlxrLEhqPoYbMB250lxDLAwDODdOGnJaWoYb9cIaGlYOG5y+Z5lIk6kEs77YA5B2t5yMnieDPDcdLIiBMLk8GkI8kicaUyNjHBMnOlwjHzgDLihSkicaGigzSzxGTC2HYAw5RoIaWoYbTyxGTD2LKDgG6ide0mhb4oYbKAxnWBgf5oIbPBMXPBMuTzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa0ChG7ign1CNnVCJOGCg9PBNrLCJSkicaGigzVBNqTC2L6ztOGmtfWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGBgLUzs1OzwLNAhq6ideUmZSkicaGigjHy2TNCM91BMq6ihzHCIGTlwzVBgqTyMCPoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIa4ChG7cIaGicbWywrKAw5NoIaZChGGohb4oYb3AgL0zs1ZCgfJztOGBM93CMfWoYbVDMvYzMXVDZOGAgLKzgvUoYbSzxr0zxiTC3bHy2LUzZOGlJjWEdSkicaGihrYyw5ZAxrPB246ignVBg9Yic4XnxmSigjVCMrLCI1JB2XVCIaUmtvZlcbIywnRz3jVDw5Kic4Xnxm7cIaGFqOGic5ICMfUy2GTyMfKz2u6Ag92zxiGEYbJB2XVCJOGDMfYkc0TDgv4DcK7igjVCMrLCI1JB2XVCJOGDMfYkc0TyM9YzgvYlxn0CM9UzYK7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGFqOGic5ICMfUy2GTyMfKz2uGlMjIlw5HBwuGEYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGFqOkicaJCgvYBwLZC2LVBKjHCIb7cIaGicbMBgv4lxnOCMLUAZOGmdSGzgLZCgXHEtOGBM9UztSGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGz2fWoIa4ChG7cIaGicbWywrKAw5NoIaXmhb4ideYChG7igjHy2TNCM91BMq6ihjNyMeOmJuXlcaXoteSidm2lcaUmduPoYbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicaGig1HEc1OzwLNAhq6idm0jtSGB3zLCMzSB3C6igf1Dg87cIaGFqOGic5WzxjTlwnHCMqGEWOGicaGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1Szwz0oIaZChGGC29SAwqGDMfYkc0TD2fYBIK7cIaGicbIB3jKzxiTCMfKAxvZoIaXmNb4oYbWywrKAw5NoIaXmxb4ideZChG7igjVEc1ZAgfKB3C6idaGnhb4ide2ChGGCMDIysGWlcaWlcaWlcaUmJuPoWOGih0kicaUCgvYBs1JyxjKic5WzxjTlxrPDgXLihSGzM9UDc13zwLNAhq6idyWmdSGzM9UDc1ZAxPLoIaXm3b4oYbJB2XVCJOGDMfYkc0TD2fYBIK7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnNb4oYb9cIaGlNbLCM0Ty2fYzcaUCgvYBs1YzxmGEWOGicaGzM9UDc1ZAxPLoIaXmNb4oYbJB2XVCJOGDMfYkc0TDgv4DcK7ig1HCMDPBJOGohb4ida7ihDVCMqTyNjLywS6igjYzwfRlwfSBdSkicaGigjHy2TNCM91BMq6ihzHCIGTlwLUC2v0lwjNktSGyM9YzgvYlxjHzgL1CZOGohb4oYbWywrKAw5NoIa3ChGGoxb4oWOGicaGzM9UDc1Myw1PBhK6ihvPlw1VBM9ZCgfJzsWGtwvUBg8SienVBNnVBgfZlcbTB25VC3bHy2u7igXPBMuTAgvPz2H0oIaXlJu1oWOGih0kicaUCgvYBs1JyxjKic5WzxjTlw1ZzYb7igzVBNqTC2L6ztOGmtjWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGBwfYz2LUlwjVDhrVBtOGnNb4oYb9cIaGlNbLCM0Tywn0Aw9UCYb7igrPC3bSyxK6igzSzxG7igDHCdOGohb4oYbMBgv4lxDYyxa6ihDYyxa7ih0kicaUCgvYBs1Hy3rPB25Zigj1DhrVBIb7cIaGicbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbJDxjZB3i6ihbVAw50zxi7igjVCMrLCI1YywrPDxm6idLWEdSGCgfKzgLUzZOGnNb4ideZChG7igzVBNqTC2L6ztOGmtjWEdSkicaGigjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGy29SB3i6ihzHCIGTlxrLEhqPoYb0CMfUC2L0Aw9UoIbMAwX0zxiGlJe1CYWGDhjHBNnMB3jTic4XCYWGyM9YzgvYlwnVBg9Yic4Xnxm7cIaGFqOGic5WzxjTlwfJDgLVBNmGyNv0Dg9UoMfJDgL2zsb7ihrYyw5ZzM9YBtOGC2nHBguOlJK3ktSGFqOGic5WzxjTlwfJDgLVBNmGlMfSBg93ihSGyMfJA2DYB3vUzdOGDMfYkc0TB2SPoYbIB3jKzxiTy29SB3i6ihrYyw5ZCgfYzw50oYbJB2XVCJOGDMfYkc0TB2STDgv4DcK7igzVBNqTD2vPz2H0oIa2mda7ih0kicaUCgvYBs1Hy3rPB25Zic5HBhDHExmGEYbIywnRz3jVDw5KoIb2yxiOls1NCMfKAwvUDcK7igjVCMrLCI1JB2XVCJOGDhjHBNnWyxjLBNq7ignVBg9YoIaJzMzMoYbMB250lxDLAwDODdOGnJaWoYb9cIaGlNbLCM0Tywn0Aw9UCYaUCMvQzwn0ihSGyMfJA2DYB3vUzdOGDhjHBNnWyxjLBNq7ignVBg9YoIb2yxiOls1LCNiPoYbIB3jKzxiTy29SB3i6ihjNyMeOmJq4lcaXmtmSideXmYWGlJq1ktSGFqOkicbTywLUihSGzMXLEdOGmtSGB3zLCMzSB3CTEtOGyxv0BZSGCgfKzgLUzZOGmtHWEcaXnhb4ideWChG7ih0kicbTywLUic5LBxb0Esb7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7ihrLEhqTywXPz246ignLBNrLCJSGBwfYz2LUlxrVCdOGmtyLoYbMB250lxnPEMu6ideZChG7ih0kicbTywLUic5LBxb0EsaUyMLNihSkicaGigrPC3bSyxK6igzSzxG7igP1C3rPzNKTy29UDgvUDdOGy2vUDgvYoYbTyxjNAw4TyM90Dg9ToIaXnNb4oYbSAw5LlwHLAwDODdOGmtSkicaGignVBg9YoIb2yxiOls1ICMfUzcK7igzPBhrLCJOGzhjVCc1ZAgfKB3COmca2ChGGmJjWEcb2yxiOls1ICMfUzc1ZAgfKB3CPktSkicb9cIaGBwfPBIaUzw1WDhKGlMjPzYbZDMCGEYb3Awr0AdOGndrWEdSGAgvPz2H0oIa0nhb4oYb9cIaGqgTLEwzYyw1LCYbTC2DjBIb7igzYB20GEYbVCgfJAxr5oIaWoYb0CMfUC2zVCM06ihrYyw5ZBgf0zvKOohb4ktSGFsb0BYb7ig9WywnPDhK6ide7ihrYyw5ZzM9YBtOGBM9UztSGFsb9cIaGlM1ZzYb7igrPC3bSyxK6igzSzxG7igDHCdOGmtbWEdSGBwfYz2LUlwjVDhrVBtOGmtHWEdSGyw5PBwf0Aw9UoIbTC2DjBIaUmJrZign1yMLJlwjLEMLLCIGUmJiSideSic4ZnIWGmsK7ih0kicaUBxnNlNvZzxiGEYbMBgv4lwrPCMvJDgLVBJOGCM93lxjLDMvYC2u7ih0kicaUyxzHDgfYihSkicaGihDPzhrOoIaYohb4oYbOzwLNAhq6idi4ChG7igjVCMrLCI1YywrPDxm6idLWEdSGzMXLEc1ZAhjPBMS6ida7ignVBg9YoIaJzMzMoWOGicaGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGANvZDgLMEs1JB250zw50oIbJzw50zxi7igzVBNqTC2L6ztOGmtrWEdSkicaGigjHy2TNCM91BMq6ihzHCIGTlwDYywrPzw50ktSGyM94lxnOywrVDZOGmcaZChGGmtjWEcb2yxiOls1ICMfUzc1ZAgfKB3CPoWOGih0kicaUyxzHDgfYic5ICMfUzc1SB2DVihSGD2LKDgG6ide3ChG7igHLAwDODdOGyxv0BZSGzgLZCgXHEtOGyMXVy2S7ih0kicaUyNvIyMXLihSkicaGig1HEc13Awr0AdOGy2fSyYGXmdaLic0GndbWEcK7igjVCMrLCI1YywrPDxm6ihzHCIGTlxjHzgL1CYK7ihbHzgrPBMC6ideWChGGmtnWEdSkicaGigjHy2TNCM91BMq6ihzHCIGTlwjNlwnHCMqPoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGicaGD29Yzc1ICMvHAZOGyNjLywSTD29YzdSGB3zLCMzSB3CTD3jHCdOGyw55D2HLCMu7igzVBNqTC2L6ztOGmtmUnxb4oWOGih0kicaUBxnNlMfPic5IDwjIBguGEYbIB3jKzxiTDg9WlwXLzNqTCMfKAxvZoIa1ChG7ih0kicaUBxnNlNvZzxiGlMj1yMjSzsb7cIaGicbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1ZB2z0ktSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1YAw5NktSkicaGigjVCMrLCI10B3aTCMLNAhqTCMfKAxvZoIa1ChG7igjVEc1ZAgfKB3C6idaGm3b4ide0ChGGDMfYkc0TyNjHBMqTz2XVDYK7cIaGFqOGic5IDwjIBguGChjLihSkicaGigjHy2TNCM91BMq6ihzHCIGTlwnVzguTyMCPoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIaXmhb4oWOGicaGCgfKzgLUzZOGmtfWEcaXmNb4oYbVDMvYzMXVDY14oIbHDxrVoYbTyxjNAw46idLWEcaWoYbMB250lxnPEMu6ideYChG7igXPBMuTAgvPz2H0oIaXlJy7cIaGicbMB250lwzHBwLSEtOGDwKTBw9UB3nWywnLlcbnzw5SBYWGq29UC29SyxmSig1VBM9ZCgfJztSGy29SB3i6ihzHCIGTlwnVzguTDgv4DcK7cIaGFqOGic5IDwjIBguGy29Kzsb7igzVBNqTzMfTAwX5oIb1As1TB25VC3bHy2uSie1LBMXVlcbdB25ZB2XHCYWGBw9UB3nWywnLoYbMB250lxnPEMu6ideYChG7igjHy2TNCM91BMq6ihzHCIGTlwLUBgLUzs1JB2rLlwjNktSGyM9YzgvYlxjHzgL1CZOGnxb4oYbWywrKAw5NoIaXlJvWEca1ChG7ih0kicaUyNvIyMXLihbYzsbJB2rLihSGyMfJA2DYB3vUzdOGBM9UztSGCgfKzgLUzZOGmdSGFqOGic8Qios7O+EGGEwDL+wINUw8UU+8MUwKJEwiTUAmIEMsRU+8IgvUAgfUy2vdB2rLioAZQowfPE+8JgHVDMvYioA1RUEoSo+8IsaQlWOGic5IDwjIBguGChjLihSGCg9ZAxrPB246ihjLBgf0AxzLoYb9cIaGlMnVzguTy29WEsb7cIaGicbWB3nPDgLVBJOGywjZB2X1Dgu7ihrVCdOGnNb4oYbYAwDODdOGnNb4oYb6lwLUzgv4oIaYoYbMB250lxnPEMu6ideXChG7ihbHzgrPBMC6idjWEca5ChG7cIaGicbIB3jKzxiTCMfKAxvZoIa3ChG7ign1CNnVCJOGCg9PBNrLCJSGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicaGigjHy2TNCM91BMq6ihzHCIGTlwjNktSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGB3bHy2L0EtOGmdSGDhjHBNnPDgLVBJOGB3bHy2L0EsaUmtvZoWOGih0kicaUyNvIyMXLihbYztPOB3zLCIaUy29Kzs1JB3b5ihSGB3bHy2L0EtOGmtSGFqOGic5JB2rLlwnVChK6Ag92zxiGEYbJB2XVCJOGDMfYkc0TyNjHBMqTDgv4DcK7igjVCMrLCI1JB2XVCJOGDMfYkc0TyNjHBMqTC3rYB25NktSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7ih0kicaUy29Kzs1Syw5NihSkicaGihbVC2L0Aw9UoIbHyNnVBhv0ztSGDg9WoIa3ChG7ihjPz2H0oIa1nhb4oYbMB250lxnPEMu6ideWlJvWEdSGBgv0DgvYlxnWywnPBMC6ic41ChG7cIaGicbJB2XVCJOGDMfYkc0TDgv4Dc1MywLUDcK7ihbVAw50zxiTzxzLBNrZoIbUB25LoYb1C2vYlxnLBgvJDdOGBM9UztSkicb9cIaGlYOG5y+V54k55PAh5lU2ignOAxdVViJLT6xLHBFLJAeGzMLSzsdLHOxLRRKGlYbKAwzMioAwH+s7TUwqJsdIHPiG5OMt5BYa5P+L55Yl5zMO77YjicOVcIaGyNv0Dg9UlMnVzguTzMLSzsb7cIaGicbKAxnWBgf5oIbPBMXPBMuTzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa1ChG7ign1CNnVCJOGCg9PBNrLCJSGBwf4lxDPzhrOoIaXmdaLoWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyM9YzgvYlxjHzgL1CZOGn3b4oYbIywnRz3jVDw5KoIbUB25LoWOGicaGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGzM9UDc1ZAxPLoIaXms41ChG7ihbHzgrPBMC6idjWEca3ChG7igXPBMuTAgvPz2H0oIaXlJu7cIaGFqOGigj1DhrVBI5JB2rLlwzPBgu6Ag92zxiGEYbJB2XVCJOGDMfYkc0TyNjHBMqTDgv4DcK7igjVCMrLCI1JB2XVCJOGDMfYkc0TyNjHBMqTC3rYB25NktSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7ih0kicbIDxr0B24Uy29Kzs1MAwXLic5JzI1Uyw1LihSGB3zLCMzSB3C6igHPzgrLBJSGDgv4Dc1VDMvYzMXVDZOGzwXSAxbZAxm7ihDOAxrLlxnWywnLoIbUB3DYyxa7ih0kicaVkIdOR63MS5xPQ5JKUQ7KU6tNIyZVViHOBgPZ77Ym6iMY5yc86lwW5lI76Aky5y+y6yEp77YjicOVcIaGlMHSANmGEYbJB2XVCJOGDMfYkc0Ty29Kzs10zxH0ktSGyMfJA2DYB3vUzdOGBM9UztSGFqOGic5OBgPZlwnVBw1LBNqSic5OBgPZlxf1B3rLihSGy29SB3i6ihzHCIGTlwHSlwnVBw1LBNqPoYbMB250lxn0EwXLoIbPDgfSAwm7ih0kicaUAgXQCY1RzxL3B3jKlcaUAgXQCY1ZzwXLy3rVCI10ywCSic5OBgPZlw1LDgeTA2v5D29YzcWGlMHSANmTzg9JDgfNlcaUAgXQCY10zw1WBgf0zs10ywCGEYbJB2XVCJOGDMfYkc0TAgWTA2v5D29YzcK7ih0kicaUAgXQCY1ZDhjPBMCSic5OBgPZlxjLz2v4CcWGlMHSANmTBwv0ys1ZDhjPBMCSic5OBgPZlxn5BwjVBcWGlMHSANmTBgLUAYb7ignVBg9YoIb2yxiOls1OBc1ZDhjPBMCPoYb9cIaGlMHSANmTBNvTyMvYlcaUAgXQCY1SAxrLCMfSlcaUAgXQCY1TzxrHihSGy29SB3i6ihzHCIGTlwHSlw51BwjLCIK7ih0kicaUAgXQCY10AxrSzsWGlMHSANmTDgL0BguUzNvUy3rPB25FlcaUAgXQCY10AxrSzs5JBgfZC18Sic5OBgPZlxnLy3rPB24GEYbJB2XVCJOGDMfYkc0TAgWTDgL0BguPoYb9cIaGlMHSANmTyxr0CIWGlMHSANmTyxr0CMLIDxrLlcaUAgXQCY12yxjPywjSzsWGlMHSANmTDgvTCgXHDguTDMfYAwfIBguSic5OBgPZlxbHCMfTCYb7ignVBg9YoIb2yxiOls1OBc1HDhrYktSGFqOGic5OBgPZlxrHzYWGlMHSANmTBMfTzsWGlMHSANmTC2vSzwn0B3iTAwqSic5OBgPZlxnLBgvJDg9YlwnSyxnZlcaUAgXQCY1IDwLSDf9PBIWGlMHSANmTDhLWzsb7ignVBg9YoIb2yxiOls1OBc10ywCPoYb9cIaGlMHSANmTzw1WAgfZAxmGEYbMB250lxn0EwXLoIbPDgfSAwm7ih0kicaUAgXQCY1ZDhjVBMCGEYbMB250lxDLAwDODdOGnJaWoYb9cIaGlMj1yMjSzsbWihSGBwfYz2LUoIa0ChGGmdSGFqOGic5IDwjIBguGAdeSic5IDwjIBguGAdiSic5IDwjIBguGAdmGEYbMB250lxnPEMu6ide0ChG7ig1HCMDPBJOGoxb4idaGnhb4oYb9cIaGlMj1yMjSzsb1BcWGlMj1yMjSzsbVBcb7ihbHzgrPBMCTBgvMDdOGmtHWEdSGBwfYz2LUoIa0ChGGmdSGFqOGic5IDwjIBguGysb7ignVBg9YoIaJotnIngzMoYb9cIaGlMj1yMjSzsaUy3vYC29YihSkicaGigrPC3bSyxK6igLUBgLUzs1IBg9JAZSGD2LKDgG6idDWEdSGAgvPz2H0oIaXnhb4oYb2zxj0AwnHBc1HBgLNBJOGltjWEdSGBwfYz2LUlwXLzNq6idnWEdSGyM9YzgvYlxjHzgL1CZOGmNb4oWOGicaGyMfJA2DYB3vUzdOGDMfYkc0Tz3jHzgLLBNqPoYbHBMLTyxrPB246igjSAw5RidfZihn0zxaTC3rHCNqGAw5MAw5PDgu7cIaGFqOGiebRzxLMCMfTzxmGyMXPBMSGEYa1mcuGEYbVCgfJAxr5oIaWoYb9ih0kicbKzxrHAwXZlMzVBgqSic5IBg9JAYb7cIaGicbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIaXmhb4oYbTyxjNAw46idDWEcaWoWOGicaGyMfJA2DYB3vUzdOGDMfYkc0TzM9Szc1IzYK7igzVBNqTC2L6ztOGmtjWEdSGB3zLCMzSB3C6igHPzgrLBJSkicb9cIaGzgv0ywLSCY5MB2XKihn1Bw1HCNKGEWOGicaGy3vYC29YoIbWB2LUDgvYoYbWywrKAw5NoIa3ChGGmtfWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa2ChG7cIaGicbSAxn0lxn0EwXLoIbUB25LoYb0CMfUC2L0Aw9UoIbIywnRz3jVDw5Kic4XnxmSignVBg9Yic4Xnxm7cIaGFqOGigrLDgfPBhmUzM9SzcbZDw1Tyxj5oMHVDMvYihSGyMfJA2DYB3vUzdOGDMfYkc0TzM9Szc1OB3zLCI1IzYK7ignVBg9YoIb2yxiOls10zxH0ktSGFqOGigrLDgfPBhmUzM9SzcbZDw1Tyxj5oJOTD2vIA2L0lwrLDgfPBhmTBwfYA2vYihSGzgLZCgXHEtOGBM9UztSGFqOGic8QioMDMEAaGEwDL+wKTo+8IoAaNEIaG+I/H+EOIYaViow3PEwfT+IWG+EuQo+8MUs4JEAkMowpOo+8JoATO+AwH+w4UoAyVU+8IsaQlWOGic5IBg9JAY1OzwfKihSGCgfKzgLUzZOGn3b4ideXChG7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnNb4oYb9cIaGzgv0ywLSCY5MB2XKic5MB2XKlwjVzhKSic5IBg9JAYaUzM9Szc1IB2r5ihSGCgfKzgLUzZOGmNb4ideXChGGmtbWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGD2HPDguTC3bHy2u6ihbYzs13CMfWoYb3B3jKlwjYzwfRoIbICMvHAY1HBgW7ig1HEc1OzwLNAhq6idiYmhb4oYbVDMvYzMXVDZOGyxv0BZSGFqOGic8QioEZU+E7N+wqIoAiKoApKoEKUU+8IowiH+AOOEw8J+ETIE+8IE+8MUAVLoAzRUMaMUAkMowpOownOEABToI9U++8JoMbV+wfJEwwP+wUVUwKUUs4UYaQlWOGigrLDgfPBhmUzM9Szc5ZExmTzM9Szcb7ig1HCMDPBJOGnxb4ida7igjHy2TNCM91BMq6ig5VBMu7igjVCMrLCI1ZDhLSztOGzgfZAgvKoYb9cIaGzgv0ywLSCY5MB2XKlNn5CY1MB2XKihn1Bw1HCNKGEYbWywrKAw5NoIa0ChGGoxb4oYbMB250lxnPEMu6ideXlJvWEdSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYb9cIaGlNrVB2WTy2HPCcb7igrPC3bSyxK6igLUBgLUzs1MBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idzWEdSGFqOGic50B29SlwXPC3qGEYbKAxnWBgf5oIbMBgv4oYbMBgv4lwrPCMvJDgLVBJOGy29SDw1UoYbNyxa6idzWEdSGFqOGic50B29SlwL0zw0GEYbWywrKAw5NoIa2ChGGmdSGyM9YzgvYlxrVCdOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7ih0kicaUDg9VBc1PDgvToMzPCNn0lwnOAwXKihSGyM9YzgvYlxrVCdOGBM9UztSGCgfKzgLUzY10B3a6ida7ih0kicaUDg9VBc1SAw5LihSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa2ChG7ih0kicaUDg9VBc1Uyw1LihSGy29SB3i6ihzHCIGTlxrLEhqPoYbMB250lxnPEMu6ideYChG7ih0kicaUDg9VBc1ZA2LWihSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYbMB250lxnPEMu6ideXChG7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idvWEdSGCgfKzgLUzZOGmca1ChG7ih0kicaUDg9VBc1PBNb1Dcb7cIaGicbTyxjNAw4TDg9WoIa0ChG7ihbHzgrPBMC6idzWEca4ChG7igjVCMrLCI1YywrPDxm6idDWEdSGyMfJA2DYB3vUzdOGDMfYkc0TAw5ZzxqTyMCPoWOGicaGzM9UDc1Myw1PBhK6ihvPlw1VBM9ZCgfJzsWGtwvUBg8SienVBNnVBgfZlcbTB25VC3bHy2u7igzVBNqTC2L6ztOGmtfWEdSGBgLUzs1OzwLNAhq6ideUntu7cIaGicb3AgL0zs1ZCgfJztOGChjLlxDYyxa7ihDVCMqTyNjLywS6igjYzwfRlwfSBdSGBwf4lwHLAwDODdOGmtqWChG7ig92zxjMBg93oIbHDxrVoWOGih0kicaUDg9VBc1KB3qGEYb3Awr0AdOGn3b4oYbOzwLNAhq6idDWEdSGyM9YzgvYlxjHzgL1CZOGntaLoYbIywnRz3jVDw5KoIb2yxiOls10zxH0lwzHAw50ktSGzMXLEc1ZAhjPBMS6ida7ih0kicaUDg9VBc1KB3qUCNvUBMLUzYb7igjHy2TNCM91BMq6ihzHCIGTlxDHCM4PoYbHBMLTyxrPB246igjSAw5RidfZigLUzMLUAxrLoYb9cIaGlNrVB2WTzg90lMnVBxbSzxrLzcb7igjHy2TNCM91BMq6ihzHCIGTlw9RktSGFqOGic50B29SlwrVDc5LCNjVCIb7igjHy2TNCM91BMq6ihzHCIGTlwvYCIK7ih0kicaUC3LZlwXPBMuGEYbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6ideWChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGzM9UDc1ZAxPLoIaXms41ChG7ig1HCMDPBJOGmtrWEcaYChG7ih0kicaUC3LZlwXPBMu6oMjLzM9YzsWGlNn5CY1SAw5LoJPHzNrLCIb7ignVBNrLBNq6icCNoYbMBgv4oIaXoYbOzwLNAhq6idfWEdSGyMfJA2DYB3vUzdOGDMfYkc0TyM9YzgvYktSGFqOGic5ZExmTBgLUzs5JB21Wywn0Aw9UlwvYCM9YihSGy29SB3i6ihzHCIGTlwvYCIK7ih0kicbKzxrHAwXZlMzVBgqUy29TCgfJDgLVBI1ZDw1Tyxj5ic5MB2XKlwjVzhKGEYb3AgL0zs1ZCgfJztOGBM9YBwfSoYb9cIaGlMvYCI10zxH0ihSGy29SB3i6ihzHCIGTlwvYCIK7ig1HCMDPBI10B3a6idzWEdSGFqOGic50B29SlwvYCM9YihSGy29SB3i6ihzHCIGTlwvYCIK7ig1HCMDPBI1IB3r0B206idzWEdSGFqOkicbMB290zxiGEWOGicaGzMXLEc1ZAhjPBMS6ida7ihbHzgrPBMC6ideYChGGmtrWEdSGCgfKzgLUzY1IB3r0B206ignHBgmOmtjWEcaRigvUDIHZywzLlwfYzweTAw5ZzxqTyM90Dg9TksK7cIaGicbIywnRz3jVDw5KoIb2yxiOls1MB290zxiTyMCPoWOGicaGyMfJA2rYB3aTzMLSDgvYoIbIBhvYkdeYChGPoYbIB3jKzxiTDg9WoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicb9cIaGlYOG5lIa5l2t5BYp6l6t5ywL5yY677Yi5y+c6icd55M+5BQM5PcC57sI5Qgg77Yj77YA6l6t5ywL5Qgg5BEM5zYg6kEsicSG57sN6ls055Qe5OYj6zkU5y+Z5zYg6kEsicOVcIaGlMLUChv0lxjVDYb7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbZDhjLDgnOoYb9cIaGlMLUChv0lwjVEcb7cIaGicbWB3nPDgLVBJOGCMvSyxrPDMu7igzSzxG6ide7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7cIaGicbIB3jKzxi6ideUnxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YAwDODdOGBM9UztSkicaGigjVCMrLCI1YywrPDxm6ideZChGGmcaWideZChG7cIaGicbIywnRz3jVDw5KoIb2yxiOls1IzY1JyxjKktSkicaGihrYyw5ZAxrPB246igjVCMrLCI1JB2XVCIaUmtHZlcbIywnRz3jVDw5Kic4Xohm7cIaGFqOGic5PBNb1Dc1IB3G6zM9JDxmTD2L0AgLUihSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1YAw5NktSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ih0kicaUAw5WDxqTyM94lMrYywDVDMvYihSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzcK7igjVCMrLCI1ZDhLSztOGzgfZAgvKoYbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1ZB2z0ktSGFqOGic5PBNb1Dc1IB3GGDgv4DgfYzweGEWOGicaGzMXLEdOGmtSGzgLZCgXHEtOGyMXVy2S7ihDPzhrOoIaXmdaLoYbTAw4TAgvPz2H0oIa0nNb4oWOGicaGCgfKzgLUzZOGmtjWEca0mNb4ideYChGGnJjWEdSkicaGihjLC2L6ztOGBM9UztSGyM9YzgvYoIbUB25LoYbVDxrSAw5LoIbUB25LoYbIywnRz3jVDw5KoIb0CMfUC3bHCMvUDdSGy29SB3i6ihzHCIGTlxrLEhqPoWOGicaGzM9UDdOGAw5OzxjPDdSGBgLUzs1OzwLNAhq6ideUntSGBwf4lwHLAwDODdOGmtmYChG7cIaGicbJyxjLDc1JB2XVCJOGDMfYkc0TyNjHBMqPoWOGih0kicaUAw5WDxqTyM94ihrLEhrHCMvHoJPWBgfJzwHVBgrLCIb7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGFqOGic5Hz2vUDc1ZD2L0y2GGEYbWB3nPDgLVBJOGywjZB2X1Dgu7igXLzNq6ideXChG7ihrVCdOGntaLoYb0CMfUC2zVCM06ihrYyw5ZBgf0zvKOltuWjsK7igrPC3bSyxK6igzSzxG7ih0kicaUywDLBNqTC3DPDgnOigj1DhrVBIb7cIaGicbIB3jKzxi6ig5VBMu7ign1CNnVCJOGCg9PBNrLCJSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7ignVBg9YoIb2yxiOls1ICMfUzc10zxH0ktSkicaGigjVCMrLCI1YywrPDxm6idDWEdSGCgfKzgLUzZOGm3b4ideWChG7igzVBNqTC2L6ztOGmteUnxb4oYbSAw5LlwHLAwDODdOGms41oYb3AgL0zs1ZCgfJztOGBM93CMfWoWOGicaGBgv0DgvYlxnWywnPBMC6ic4ZChG7ihrYyw5ZAxrPB246ignVBg9Yic4XnxmSigjHy2TNCM91BMqGlJe1CYWGDhjHBNnMB3jTic4XmNm7cIaGFqOGic5Hz2vUDc1ZD2L0y2GGyNv0Dg9UoMHVDMvYihSGy29SB3i6icnMzMy7igjHy2TNCM91BMq6ihzHCIGTlwjYyw5Klxn0CM9UzYK7ih0kicaUywDLBNqTC3DPDgnOigj1DhrVBJPHy3rPDMuGEYb0CMfUC2zVCM06ihnJywXLkc45nsK7ih0kicaUywDLBNqTC3DPDgnOigj1DhrVBJPKAxnHyMXLzcb7ig9WywnPDhK6ic41oYbJDxjZB3i6ig5VDc1HBgXVD2vKoYb9cIaGlMLTzY1IDg4GEWOGicaGCg9ZAxrPB246igfIC29SDxrLoYbYAwDODdOGoxb4oYb0B3a6iduWjtSGDhjHBNnMB3jToIb0CMfUC2XHDgvzkc01mcuPoWOGicaGD2LKDgG6idi4ChG7igHLAwDODdOGmJHWEdSkicaGigjVCMrLCJOGBM9UztSGyMfJA2DYB3vUzdOGBM9UztSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYbIB3jKzxiTCMfKAxvZoIa4ChG7cIaGicbJDxjZB3i6ihbVAw50zxi7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igP1C3rPzNKTy29UDgvUDdOGy2vUDgvYoWOGicaGDhjHBNnPDgLVBJOGy29SB3iGlJe1CYWGyMfJA2DYB3vUzcaUmtvZoWOGih0kicaUAw1Nlwj0BJPOB3zLCIb7ignVBg9YoIb2yxiOls1ICMfUzcK7igjHy2TNCM91BMq6ihzHCIGTlwjYyw5KlxnVzNqPoYb9cIaGlMf0DgfJAc1IyxiGEYbKAxnWBgf5oIbUB25LoYbNyxa6idHWEdSGzMXLEc13CMfWoIb3CMfWoYbTyxjNAw4TyM90Dg9ToIa5ChG7ihbHzgrPBMC6idjWEdSGFqOGic5HDhrHy2GTyMfYlNnOB3CGEYbKAxnWBgf5oIbMBgv4oYb9cIaGlMf0DgfJAc10AhvTyIb7cIaGicbWB3nPDgLVBJOGCMvSyxrPDMu7ihDPzhrOoIa1nhb4oYbOzwLNAhq6idu0ChG7igjVCMrLCI1YywrPDxm6idLWEdSGB3zLCMzSB3C6igHPzgrLBJSkicaGigjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGzMXLEc1ZAhjPBMS6ida7cIaGFqOGic5HDhrHy2GTDgH1BwiGAw1NihSGD2LKDgG6ideWmcu7igHLAwDODdOGmtaWjtSGB2jQzwn0lwzPDdOGy292zxi7igrPC3bSyxK6igjSB2nRoYb9cIaGlMf0DgfJAc10AhvTyIaUCMvTB3zLihSkicaGihbVC2L0Aw9UoIbHyNnVBhv0ztSGDg9WoIaZChG7ihjPz2H0oIaZChG7ihDPzhrOoIaXn3b4oYbOzwLNAhq6ide3ChG7igjVCMrLCI1YywrPDxm6idvWEdSkicaGigjVCMrLCJOGBM9UztSGy3vYC29YoIbWB2LUDgvYoYbWywrKAw5NoIaWoYbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbQDxn0Awz5lwnVBNrLBNq6ignLBNrLCJSkicaGigjHy2TNCM91BMq6ihjNyMeOmcWGmcWGmcWGlJu1ktSGy29SB3i6icnMzMy7cIaGFqOGic5HDhrHy2GTDgH1BwiUCgvUzgLUzYb7ig9WywnPDhK6ic41ntSGFqOGic5HDhrHy2GTDgH1BwiUCgvUzgLUzZO6ywz0zxiGEWOGicaGy29UDgvUDdOGjYC7ihbVC2L0Aw9UoIbHyNnVBhv0ztSGAw5Zzxq6ida7ig1HCMDPBJOGyxv0BZSGD2LKDgG6ide2ChG7igHLAwDODdOGmtzWEdSkicaGigjVCMrLCJOGmNb4ihnVBgLKihzHCIGTlwjVCMrLCI1ZDhjVBMCPoYbIB3jKzxiTDg9WlwnVBg9YoIb2yxiOls1ICMfUzcK7igjVCMrLCI1YywrPDxm6iduWjtSkicaGigfUAw1HDgLVBJOGC3bPBIaUohmGBgLUzwfYigLUzMLUAxrLoWOGih0kicbaA2v5zNjHBwvZihnWAw4GEYb0BYb7ihrYyw5ZzM9YBtOGCM90yxrLkdm2mgrLzYK7ih0GFqOGic5IDwjIBguGlMf0DgfJAc1NCMLKihSGzgLZCgXHEtOGzMXLEdSGz2fWoIa2ChG7igzSzxGTD3jHCdOGD3jHCdSGBwfYz2LUoIa2ChGGmca0ChG7igP1C3rPzNKTy29UDgvUDdOGzMXLEc1LBMq7ih0kicaUyNvIyMXLic5HDhrHy2GTz3jPzcbPBwCGEWOGicaGBwf4lxDPzhrOoIaXmZjWEdSGBwf4lwHLAwDODdOGotzWEdSGyM9YzgvYlxjHzgL1CZOGohb4oYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGicaGB2jQzwn0lwzPDdOGy292zxi7ign1CNnVCJOGEM9VBs1PBJSGzgLZCgXHEtOGyMXVy2S7cIaGFqOGic5Zzw5Klwj0BIb7cIaGicbMBgv4lxnOCMLUAZOGmdSGD2LKDgG6idy4ChG7ig1PBI1OzwLNAhq6idq2ChG7cIaGicbIB3jKzxi6ig5VBMu7ign1CNnVCJOGCg9PBNrLCJSGyM9YzgvYlxjHzgL1CZOGmcaXm3b4ideZChGGmdSkicaGigjHy2TNCM91BMq6ihzHCIGTlwDYywrPzw50ktSGy29SB3i6icnMzMy7cIaGicbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbQDxn0Awz5lwnVBNrLBNq6ignLBNrLCJSkicaGigjVEc1ZAgfKB3C6idaGnhb4ide2ChGGDMfYkc0TyNjHBMqTC2HHzg93ktSkicaGihrYyw5ZAxrPB246igzPBhrLCIaUmtvZlcbIB3GTC2HHzg93ic4Xnxm7cIaGFqOGic5Zzw5Klwj0BJPOB3zLCJPUB3qOoMrPC2fIBgvKksb7igzPBhrLCJOGyNjPz2H0BMvZCYGXlJePoYbIB3GTC2HHzg93oIaWidzWEcaYmNb4ihzHCIGTlwjYyw5KlxnOywrVDYK7ih0kicaUC2vUzc1IDg46zgLZywjSzwqGEYbVCgfJAxr5oIaUndu7ign1CNnVCJOGBM90lwfSBg93zwq7igjVEc1ZAgfKB3C6ig5VBMu7ih0kicaUC2vUzc1IDg4UC3rVCcb7igjHy2TNCM91BMq6igXPBMvHCI1NCMfKAwvUDcGXmZvKzwCSicnLzJq0ndqSicnKyZi2mJyPoYbIB3GTC2HHzg93oIaWidrWEcaXnNb4ihjNyMeOmJm5lca2ocWGnJGSic40ktSGFqOGic8QioA2IoAbR+wmUUwgHEEAHoEkTUAaGs/PLjNOR6/MJ5dNPlOGkI8kicaUy2HHDc1UB3rPy2uGEYbJB2XVCJOGDMfYkc0TDgv4Dc1MywLUDcK7ih0kicaUy2HHDc1UB3rPy2uUzxjYB3iGEYbJB2XVCJOGDMfYkc0TzxjYktSGFqOkicaVkIaTls0Tls0Tls0TioMxRUMIMo+8Ihf1zxn0Aw9Ul2zVCM3VViKGls0Tls0Tls0TlsaQlWOGicnXDwvZDgLVBKjHCIb7cIaGicbMBgv4lxnOCMLUAZOGmdSGzgLZCgXHEtOGBM9UztSGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGz2fWoIa4ChG7cIaGicbWywrKAw5NoIaXmhb4ideYChG7igjHy2TNCM91BMq6ihjNyMeOncWGmti1lcaYnteSic4WnIK7igjVCMrLCI1IB3r0B206idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoWOGicaGBwf4lwHLAwDODdOGndyLoYbVDMvYzMXVDZOGyxv0BZSkicb9cIaGlNeTy2fYzcb7cIaGicbIywnRz3jVDw5KoIb2yxiOls1IzY1JyxjKktSGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyM9YzgvYlwXLzNq6idnWEcbZB2XPzcb2yxiOls1ICMfUzcK7cIaGicbIB3jKzxiTCMfKAxvZoIaXmNb4oYbWywrKAw5NoIaXmxb4ideZChG7igjVEc1ZAgfKB3C6idaGnhb4ide2ChGGCMDIysGWlcaWlcaWlcaUmJuPoWOGih0kicaUCs10AxrSzsb7igzVBNqTD2vPz2H0oIa2mda7igzVBNqTC2L6ztOGmtnWEdSGy29SB3i6ihzHCIGTlwjYyw5KlxrLEhqPoYbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idzWEdSGBwfYz2LUlwjVDhrVBtOGohb4oYb9cIaGlNeTChjVz3jLC3mGEYbTyxjNAw4TBgvMDdOGyxv0BZSGzM9UDc1ZAxPLoIaXmxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1MywLUDcK7igzVBNqTD2vPz2H0oIa0mda7ih0kicaUCs1MAwvSzcb7ig1HCMDPBI1IB3r0B206idLWEdSGFqOGic5XlwzPzwXKic5XlwXHyMvSihSGzM9UDc1ZAxPLoIaXmNb4oYbJB2XVCJOGDMfYkc0TDgv4DcK7ig1HCMDPBI1IB3r0B206idrWEdSGFqOGic5XlwzPzwXKic5XlwrLC2mGEYbMB250lxnPEMu6ideXChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGBwfYz2LUlwjVDhrVBtOGnhb4oYb9cIaGlNeTzMLLBgqGAw5WDxrBDhLWzt10zxH0xsWGlNeTzMLLBgqGAw5WDxrBDhLWzt1UDw1IzxjDlcaUCs1MAwvSzcb0zxH0yxjLysWGlNeTzMLLBgqGC2vSzwn0ihSkicaGihDPzhrOoIaXmdaLoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIa4ChG7ihbHzgrPBMC6idzWEca4ChG7cIaGicbIywnRz3jVDw5KoIb2yxiOls1IzY1JyxjKktSGy29SB3i6ihzHCIGTlxrLEhqPoYbMB250oIbPBMHLCML0oYbMB250lxnPEMu6ideYlJvWEdSGB3v0BgLUztOGBM9UztSkicb9cIaGlNeTzMLLBgqGAw5WDxq6zM9JDxmSic5XlwzPzwXKihrLEhrHCMvHoMzVy3vZlcaUCs1MAwvSzcbZzwXLy3q6zM9JDxmGEYbIB3jKzxiTy29SB3i6ihzHCIGTlwjYyw5KlxjPBMCPoYb9cIaGlNeTB3b0Aw9UCYb7igrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47igDHCdOGnxb4oYb9cIaGlNeTB3b0ihSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa3ChG7igzVBNqTC2L6ztOGmtiUnxb4oYbJDxjZB3i6ihbVAw50zxi7ihbHzgrPBMC6idrWEca2ChG7igjVCMrLCI1YywrPDxm6idDWEdSGFqOGic5Xlw9WDdPOB3zLCIb7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGFqOGic5XlwfJDgLVBNmGEYbKAxnWBgf5oIbMBgv4oYbNyxa6idHWEdSGBwfYz2LUlxrVCdOGohb4oYb9cIaGlNeTywn0Aw9UCYbIDxr0B24GEYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbJDxjZB3i6ihbVAw50zxi7igjVCMrLCI1YywrPDxm6idLWEdSGCgfKzgLUzZOGnNb4ide0ChG7igzVBNqTC2L6ztOGmtjWEdSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYbJB2XVCJOGDMfYkc0TDgv4DcK7ih0kicaUCs1Hy3rPB25Zic5XlxnLBMqGEYbIywnRz3jVDw5KoIb2yxiOls1NCMfKAwvUDcK7igjVCMrLCI1JB2XVCJOGDhjHBNnWyxjLBNq7ignVBg9YoIaJzMzMoYbMB250lxDLAwDODdOGnJaWoYb9cIaGlNeTywn0Aw9UCYaUCs1Jyw5JzwWGEYbIywnRz3jVDw5KoIb0CMfUC3bHCMvUDdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGFqOGic5XlwfJDgLVBNmGyNv0Dg9UoMrPC2fIBgvKihSGB3bHy2L0EtOGlJu7ign1CNnVCJOGBM90lwfSBg93zwq7ih0kicaUCs1SAw5RihSGy29SB3i6ihzHCIGTlwjYyw5KlxrLEhqPoYbMB250lxnPEMu6ideYlJvWEdSGD29Yzc1ICMvHAZOGyNjLywSTywXSoYb9cGOGic8Qic0Tls0Tls0Tls0G5zUE6yca5QIQ5BMfic8G5O6s6zIF5P2Hic0Tls0Tls0Tls0GkI8kicaUCMv2zxj0lwjHCIb7cIaGicbKAxnWBgf5oIbUB25LoYbHBgLNBI1PDgvTCZOGy2vUDgvYoYbNyxa6idHWEdSGzMXLEc1ZAhjPBMS6ida7cIaGicbWywrKAw5NoIa4ChGGmtjWEdSGzM9UDc1ZAxPLoIaXmNb4oYbJB2XVCJOGDMfYkc0TD2fYBIK7cIaGicbIywnRz3jVDw5KoIbYz2jHkdi1msWGmtKXlcaZnIWGlJa4ktSGyM9YzgvYlwjVDhrVBtOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7cIaGFqOGic5YzxzLCNqTyMfYlNnOB3CGEYbKAxnWBgf5oIbMBgv4oYb9cIaGlNjLDMvYDc1IyxiGyNv0Dg9UihSkicaGig1HCMDPBI1Szwz0oIbHDxrVoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ignVBg9YoIb2yxiOls10zxH0ktSkicaGigjVCMrLCI1YywrPDxm6idHWEdSGCgfKzgLUzZOGm3b4ideWChG7igzVBNqTC2L6ztOGmteUnxb4oYbJDxjZB3i6ihbVAw50zxi7cIaGFqOGic5XDwv1zs1IyxiGEWOGicaGzgLZCgXHEtOGBM9UztSGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGz2fWoIa0ChG7igzSzxGTC2HYAw5RoIaWoWOGicaGCgfKzgLUzZOGn3b4ideYChG7igjVCMrLCI1IB3r0B206idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIywnRz3jVDw5KoIb2yxiOls1MB2XKlwjNktSkicb9cIaGlNf1zxvLlwjHCI5ZAg93ihSGzgLZCgXHEtOGzMXLEdSGFqOGic5XDwv1zs1PDgvTihSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa3ChG7igzVBNqTC2L6ztOGmteUnxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1KAw0PoYb9cIaGlNf1zxvLlwL0zw0GlNfPlxrLEhqGEYbMBgv4oIaXoYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGD2HPDguTC3bHy2u6ig5VD3jHCdSGFqOGic5XDwv1zs1PDgvTic5XAs1IywrNzsb7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idvWEdSGCgfKzgLUzZOGmca1ChG7igzVBNqTC2L6ztOGmtbWEdSGFqOGic5XDwv1zs1PDgvTigj1DhrVBIb7igjVCMrLCJOGBM9UztSGyMfJA2DYB3vUzdOGBM9UztSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYbJDxjZB3i6ihbVAw50zxi7igzVBNqTC2L6ztOGmtjWEdSGCgfKzgLUzZOGmcaZChG7ih0kicaUCxvLDwuTAxrLBsbIDxr0B246Ag92zxiGEYbJB2XVCJOGDMfYkc0TzxjYktSGFqOkicaVkIaTls0Tls0Tls0TioI+K+wfPEwmUUw8UEwXGU+8MUwrVEs7PcaVioAwH+s7TUw8LEEuQcaTls0Tls0Tls0TicOVcIaGlMnTzc1Wyw5LBcWGlM1LBNrPB24TCgfUzwWGEWOGicaGzgLZCgXHEtOGBM9UztSGzMXLEc1KAxjLy3rPB246ignVBhvTBJSGBwf4lwHLAwDODdOGmJqWChG7ig92zxjMBg93oIbHDxrVoWOGicaGBwfYz2LUlwjVDhrVBtOGohb4oYbIywnRz3jVDw5KoIb2yxiOls1VDMvYBgf5lwjNktSGyMfJA2rYB3aTzMLSDgvYoIbIBhvYkde2ChGPoWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYlxn0CM9UzYK7igjVCMrLCI1YywrPDxm6ideYChG7igjVEc1ZAgfKB3C6ihzHCIGTlxnOywrVDYK7cIaGFqOGic5JBwqTCgfUzwWUC2HVDYWGlM1LBNrPB24TCgfUzwWUC2HVDYb7igrPC3bSyxK6igzSzxG7ih0kicaUy21KlwL0zw0Sic5Tzw50Aw9UlwL0zw0GEWOGicaGCgfKzgLUzZOGn3b4ideXChG7ign1CNnVCJOGCg9PBNrLCJSGzM9UDc1ZAxPLoIaXmI41ChG7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGohb4oWOGih0kicaUy21KlwL0zw06Ag92zxiSic5JBwqTAxrLBs5Hy3rPDMuSic5Tzw50Aw9UlwL0zw06Ag92zxiSic5Tzw50Aw9UlwL0zw0Uywn0AxzLihSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYb9cIaGlMnTzc1PDgvTic5JAs1Uyw1LihSGy29SB3i6ihzHCIGTlwjYyw5KlxrLEhqPoYbMB250lwzHBwLSEtOGDwKTBw9UB3nWywnLlcbnzw5SBYWGq29UC29SyxmSig1VBM9ZCgfJztSGFqOGic5JBwqTAxrLBsaUy2KTzgvZyYb7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGzM9UDc1ZAxPLoIaXms41ChG7ig1HCMDPBI1Szwz0oIbHDxrVoYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGD2HPDguTC3bHy2u6ig5VD3jHCdSGBwf4lxDPzhrOoIa2mIu7ih0kicaUBwvUDgLVBI1PDgvTic5TAs1WyxrOihSGB3zLCMzSB3C6igHPzgrLBJSGDgv4Dc1VDMvYzMXVDZOGzwXSAxbZAxm7ihDOAxrLlxnWywnLoIbUB3DYyxa7ih0kicaUBwvUDgLVBI1PDgvTic5TAs10ExbLihSGBwfYz2LUlwXLzNq6igf1Dg87ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGzM9UDc1ZAxPLoIaXmxb4oYb9cIaGlNnOzwXSlwjHzgDLihSkicaGihbVC2L0Aw9UoIbHyNnVBhv0ztSGBgvMDdOGmtfWEdSGDg9WoIa1mcu7ihrYyw5ZzM9YBtOGDhjHBNnSyxrLwsGTntaLktSkicaGigjHy2TNCM91BMq6ihzHCIGTlwjYyw5KlxnVzNqPoYbJB2XVCJOGDMfYkc0TyNjHBMqTDgv4DcK7igjVCMrLCI1YywrPDxm6idDWEdSkicaGihbHzgrPBMC6idnWEcaXmhb4oYbMB250lxnPEMu6ideXlJvWEdSGBgLUzs1OzwLNAhq6ideUntSGD2HPDguTC3bHy2u6ig5VD3jHCdSkicb9cGOGic8Qic0Tls0Tls0Tls0G5A6H5P+L77Yi5lYA6k+D5PU05Ps5igrPzMBVViKGls0Tls0Tls0TlsaQlWOGic5KAwzMlxbHBMvSihSkicaGihbVC2L0Aw9UoIbMAxHLzdSGDg9WoIa3oxb4oYbYAwDODdOGmtbWEdSGD2LKDgG6ig1PBIG0ndbWEcWGy2fSyYGXmdaLic0GmJbWEcKPoWOGicaGBwf4lwHLAwDODdOGnZaLoYbKAxnWBgf5oIbUB25LoYbMBgv4lwrPCMvJDgLVBJOGy29SDw1UoYb6lwLUzgv4oIa2mJSkicaGigjHy2TNCM91BMq6ihzHCIGTlw92zxjSyxKTyMCPoYbIywnRzhjVCc1MAwX0zxi6igjSDxiOmtzWEcK7cIaGicbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiTC3rYB25NktSGyM9YzgvYlxjHzgL1CZOGmtrWEdSGyM94lxnOywrVDZOGDMfYkc0TC2HHzg93ktSGB3zLCMzSB3C6igHPzgrLBJSkicb9cIaGlMrPzMyTCgfUzwWUC2HVDYb7igrPC3bSyxK6igzSzxG7ih0kicaUzgLMzI1Wyw5LBcaUAgLZDg9YEs1OzwfKicnKAwzMu3rHDcb7ig1HCMDPBI1Szwz0oIbHDxrVoYbMB250lxnPEMu6ideXChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGFqOGic5KAwzMlwjVzhKGEYbVDMvYzMXVDZOGyxv0BZSGCgfKzgLUzZOGohb4oYb9cIaGlMrPzMyTzMLSzsb7ig1HCMDPBI1IB3r0B206idHWEdSGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyM9YzgvYlxjHzgL1CZOGoxb4oYbVDMvYzMXVDZOGAgLKzgvUoYb9cIaGlMrPzMyTzMLSzs1OzwfKihSGCgfKzgLUzZOGnNb4idLWEdSGzM9UDc1ZAxPLoIaXmNb4oYbJB2XVCJOGDMfYkc0TDgv4DcK7igjHy2TNCM91BMq6ihzHCIGTlwzVBgqTyMCPoYbKAxnWBgf5oIbMBgv4oYbNyxa6idzWEdSGFqOGic5KAwzMlwzPBguTAgvHzcaUzgyTywrKihSGy29SB3i6ihzHCIGTlw9RktSGFsaUzgLMzI1MAwXLlwHLywqGlMrMlwrLBcb7ignVBg9YoIb2yxiOls1LCNiPoYb9cIaGlMrPzMyTAhvUAYb7igzVBNqTzMfTAwX5oIb1As1TB25VC3bHy2uSie1LBMXVlcbdB25ZB2XHCYWGBw9UB3nWywnLoYbMB250lxnPEMu6ideXChG7igXPBMuTAgvPz2H0oIaXlJu7ihDOAxrLlxnWywnLoIbWCMuTD3jHCdSGD29Yzc1ICMvHAZOGyNjLywSTywXSoYb9cIaGlMrPzMyTBgLUzsb7ihbHzgrPBMC6idaGohb4oYb9cIaGlMrPzMyTBgLUzs5HzgqGEYbIywnRz3jVDw5KoIbYz2jHkduSide1mcWGmta1lcaUmtiPoYbJB2XVCJOGDMfYkc0TB2SPoYb9cIaGlMrPzMyTBgLUzs5KzwWGEYbIywnRz3jVDw5KoIbYz2jHkdiYmcWGmZGSidm4lcaUmtiPoYbJB2XVCJOGDMfYkc0TzxjYktSGFqOkicaVkIaTls0Tls0Tls0TieDPDcdLN7RNOydNRQhNKiBVViJNGRNLH7VLJ7pKUiROP5lLIiBMLk/LVR3MOiFMIzpLVidVViKGls0Tls0Tls0TlsaQlWOGic5NAxqTCgfUzwWGEWOGicaGCg9ZAxrPB246igzPEgvKoYb0B3a6idC5ChG7ihjPz2H0oIaXmhb4oYb3Awr0AdOGBwLUkdm2mhb4lcbJywXJkdeWmcuGlsaYmhb4ksK7cIaGicbTyxGTAgvPz2H0oIa3ocu7igrPC3bSyxK6ig5VBMu7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47ihOTAw5KzxG6idy2oWOGicaGyMfJA2DYB3vUzdOGDMfYkc0TB3zLCMXHEs1IzYK7igjHy2TKCM9WlwzPBhrLCJOGyMX1CIGXnNb4ktSkicaGigjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCI1ZDhjVBMCPoYbIB3jKzxiTCMfKAxvZoIaXnhb4oYbIB3GTC2HHzg93oIb2yxiOls1ZAgfKB3CPoYbVDMvYzMXVDZOGAgLKzgvUoWOGicaGyw5PBwf0Aw9UoIbOAxn0B3j5sw4GlJe4CYbJDwjPyY1IzxPPzxiOlJiYlcaXlcaUmZySidePoWOGih0kicaUz2L0lxbHBMvSlNnOB3CGEYbKAxnWBgf5oIbMBgv4oYb9cIaGlMDPDc1OzwfKihSkicaGigrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnNb4oYbMBgv4lxnOCMLUAZOGmdSkicaGihbHzgrPBMC6idHWEcaXmhb4idHWEcaXmNb4oYbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSkicb9cIaGlMDPDc1ICMfUy2GGEYbKAxnWBgf5oIbPBMXPBMuTzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa1ChG7ig1PBI13Awr0AdOGmdSGzM9UDc1ZAxPLoIaXmNb4oYbJB2XVCJOGDMfYkc0TDgv4DcK7ih0kicaUz2L0lwjYyw5JAcaJz2L0qNjHBMnOtgfIzwWGEYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGD2HPDguTC3bHy2u6ig5VD3jHCdSGBwf4lxDPzhrOoIaXmtzWEdSGFqOGic5NAxqTyNjHBMnOlxnLBgvJDcb7cIaGicbTyxjNAw4TBgvMDdOGyxv0BZSGBwf4lxDPzhrOoIaXmZjWEdSGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyM9YzgvYlxjHzgL1CZOGn3b4oWOGicaGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ignVBg9YoIb2yxiOls10zxH0ktSGzM9UDdOGAw5OzxjPDdSGzM9UDc1ZAxPLoIaXmxb4oYbWywrKAw5NoIaYChGGnhb4oYbVDxrSAw5LoIbUB25LoWOGih0kicaUz2L0lwjYyw5JAc1ZzwXLy3q6zM9JDxmGEYbIB3jKzxiTy29SB3i6ihzHCIGTlwjYyw5KlxjPBMCPoYb9cIaGlMDPDc1Py29Ulwj0BIb7cIaGicbMBgv4lxnOCMLUAZOGmdSGD2LKDgG6idi0ChG7igHLAwDODdOGmJrWEdSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGANvZDgLMEs1JB250zw50oIbJzw50zxi7cIaGicbIB3jKzxi6ig5VBMu7igjHy2TNCM91BMq6ig5VBMu7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7ign1CNnVCJOGCg9PBNrLCJSGyM9YzgvYlxjHzgL1CZOGn3b4oWOGih0kicaUz2L0lwLJB24TyNrUoMHVDMvYihSGy29SB3i6ihzHCIGTlxrLEhqPoYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ih0kicaUz2L0lwjVzhKGEYbKAxnWBgf5oIbMBgv4oYbMBgv4lwrPCMvJDgLVBJOGy29SDw1UoYbTAw4TAgvPz2H0oIaWoYbVDMvYzMXVDZOGyxv0BZSGFqOGic5NAxqTy2HHBMDLCY1OzwfKihSkicaGigrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnNb4oYbMBgv4lxnOCMLUAZOGmdSkicaGihbHzgrPBMC6idHWEcaXmNb4idvWEdSGzM9UDc1ZAxPLoIaXmxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1KAw0PoWOGih0kicaUz2L0lwnOyw5NzxmTAgvHzcaUz2L0lw1PBMKGEYbTyxjNAw4TBgvMDdOGmdSGFqOGic5NAxqTy2HHBMDLCY1OzwfKic5NAxqTBwLUAtPMAxjZDc1VzI10ExbLihSGBwfYz2LUlwXLzNq6igf1Dg87ih0kicaUz2L0lw1PBMKSic5NAxqTyNrUlcaUz2L0lwfJDcb7cIaGicbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIa3ChG7igjHy2TNCM91BMq6ihzHCIGTlwjNlwHVDMvYktSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSkicaGign1CNnVCJOGCg9PBNrLCJSGzM9UDdOGAw5OzxjPDdSGzM9UDc1ZAxPLoIaXmxb4oYbWywrKAw5NoIaZChGGohb4oWOGicaGDhjHBNnPDgLVBJOGy29SB3iGlJe1CYWGyM9YzgvYlwnVBg9Yic4XnxmSigjHy2TNCM91BMqGlJe1CZSkicb9cIaGlMDPDc1TAw5PoMHVDMvYlcaUz2L0lwj0BJPOB3zLCIWGlMDPDc1Hy3q6Ag92zxiGEYbJB2XVCJOGDMfYkc0TDgv4DcK7igjVCMrLCI1JB2XVCJOGDMfYkc0TyM9YzgvYlxn0CM9UzYK7ih0kicaUz2L0lwj0BI5WCMLTyxj5ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7ignVBg9YoIb2yxiOls1ICMfUzc10zxH0ktSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1ZDhjVBMCPoYb9cIaGlMDPDc1MAwXLCYb7ig1HEc1OzwLNAhq6idi0mhb4oYbVDMvYzMXVDZOGyxv0BZSGCgfKzgLUzZOGmca2ChGGnNb4oYbMBgv4lxnOCMLUAZOGmdSGFqOGic5NAxqTzMLSzsb7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGn3b4oYbWywrKAw5NoIaZChGGnNb4oYbIB3jKzxiTCMfKAxvZoIa3ChG7igzVBNqTC2L6ztOGmteUnxb4oYb9cIaGlMDPDc1MAwXLoMHVDMvYihSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoYb9cIaGlMDPDc1JB2rLihSkicaGigzSzxGTC2HYAw5RoIaWoYb3Awr0AdOGmJbWEdSGDgv4Dc1HBgLNBJOGy2vUDgvYoYbIB3jKzxiTCMfKAxvZoIa0ChG7ihbHzgrPBMC6idfWEcaWoYb3AgL0zs1ZCgfJztOGChjLoWOGicaGzM9UDc1Myw1PBhK6ihvPlw1VBM9ZCgfJzsWGtwvUBg8SienVBNnVBgfZlcbTB25VC3bHy2u7igzVBNqTC2L6ztOGmtaUnxb4oYbIywnRz3jVDw5KoIb2yxiOls1MB2XKlwjNktSkicb9cIaGlMDPDc1JB2rLlNn0ywDLzcb7ignVBg9YoIb2yxiOls1VAYK7ih0kicaUz2L0lwnVzguUDw5ZDgfNzwqGEYbJB2XVCJOGDMfYkc0TD2fYBIK7ih0kicaUz2L0lwnVzguUDw50CMfJA2vKihSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYb9cIaGlMDPDc1WyxrOihSGzMXLEdOGmtSGBwLUlxDPzhrOoIaWoYbVDMvYzMXVDZOGAgLKzgvUoYb0zxH0lw92zxjMBg93oIbLBgXPChnPCZSGD2HPDguTC3bHy2u6ig5VD3jHCdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGFqOGic5NAxqTywn0ihSGzMXLEc1ZAhjPBMS6ida7ihbHzgrPBMC6idfWEca3ChG7igzVBNqTC2L6ztOGmtaUnxb4oYb9cIaGlMDPDc1JB21TAxqGEWOGicaGzMXLEc1ZAhjPBMS6ida7igrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47igDHCdOGn3b4oYbWywrKAw5NoIa4ChGGmtjWEcaXmhb4oWOGicaGyM9YzgvYlxrVCdOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7cIaGFqOGic5NAxqTy29TBwL0ihrLEhrHCMvHihSkicaGihDPzhrOoIaXmdaLoYbTAw4TAgvPz2H0oIa0nhb4oYbTyxGTAgvPz2H0oIaXmJbWEdSGCMvZAxPLoIb2zxj0AwnHBdSGB3v0BgLUztOGBM9UztSkicaGigjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idHWEdSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ignVBg9YoIb2yxiOls10zxH0ktSkicaGigzVBNq6igLUAgvYAxq7igzVBNqTC2L6ztOGmtjWEdSGCgfKzgLUzZOGnNb4idHWEdSkicb9cIaGlMDPDc1JB21TAxqGDgv4DgfYzwe6zM9JDxmGEYbIB3jKzxiTy29SB3i6ihzHCIGTlwjYyw5KlxjPBMCPoYb9cIaGlMDPDc1JB21TAxqTywn0Aw9UCYb7igrPC3bSyxK6igzSzxG7igDHCdOGnNb4oYb9cIaGlMDPDc1TC2CGEWOGicaGzMXLEc1ZAhjPBMS6ida7ig1PBI1OzwLNAhq6ide0ChG7ihbHzgrPBMC6idaGmtjWEcaXmhb4oYbMB250lxnPEMu6ideXChG7cIaGicbJB2XVCJOGDMfYkc0TDgv4Dc1KAw0PoYb3B3jKlwjYzwfRoIbICMvHAY13B3jKoWOGih0kicaUz2L0lw1ZzY5LCNjVCIb7ignVBg9YoIb2yxiOls1LCNiPoYb9cGOGic8Qic0Tls0Tls0Tls0G5A2q5lUJ55cg77YiC3vIywDLBNqG5A2q5lYA6k+D77Yjic0Tls0Tls0Tls0GkI8kicaUy2HPBgqTyMfYihSkicaGigrPC3bSyxK6ig5VBMu7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47igDHCdOGnNb4oYbMBgv4lxnOCMLUAZOGmdSkicaGihbHzgrPBMC6idHWEcaXmNb4oYbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyMfJA2DYB3vUzdOGDMfYkc0TzM9Szc1IzYK7cIaGicbTyxGTAgvPz2H0oIa0ncu7ig92zxjMBg93oIbHDxrVoWOGih0kicaUy2HPBgqTyMfYlNnOB3CGEYbKAxnWBgf5oIbMBgv4oYb9cIaGlMnOAwXKlxrPDgXLihSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa2ChG7igzVBNqTC2L6ztOGmteUnxb4oYbJB2XVCJOGDMfYkc0TDgv4Dc1KAw0PoYb9cIaGlMnOAwXKlxrPDgXLic5JyI1IDg4GEWOGicaGyM9YzgvYoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7cIaGicbIB3jKzxiTCMfKAxvZoIa3ChG7ihbHzgrPBMC6idfWEca3ChG7igzVBNqTC2L6ztOGmtfWEdSGBgLUzs1OzwLNAhq6ideUntSGy3vYC29YoIbWB2LUDgvYoWOGicaGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSkicb9cIaGlMnOAwXKlxrPDgXLic5JyI1IDg46Ag92zxiGEYbJB2XVCJOGDMfYkc0TDgv4DcK7igjVCMrLCI1JB2XVCJOGDMfYkc0TyM9YzgvYlxn0CM9UzYK7ih0kicaUy2HPBgqTDgL0BguGlMnIlwj0BLTKyxrHlwnIpsjJB2XSyxbZzsjDihSGBwfYz2LUlwXLzNq6igf1Dg87ih0kicaUy2HPBgqTAxrLBsb7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idLWEdSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ig92zxjMBg93oIbOAwrKzw47ih0kicaUy2HPBgqTAxrLBsaUy2KTAgvHzcb7igrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGohb4oYbWywrKAw5NoIa2ChGGoxb4oYb9cIaGlMnOAwXKlwL0zw0GlMnPlwfNzw50ihSGzM9UDc1ZAxPLoIaXmI41ChG7ignVBg9YoIb2yxiOls10zxH0ktSGFqOGic5JAgLSzc1PDgvTic5JAs1VDxrJB21LihSGzM9UDc1ZAxPLoIaXmc41ChG7igjVCMrLCJOGmxb4ihnVBgLKihzHCIGTlwjVCMrLCIK7igjVCMrLCI1YywrPDxm6idvWEdSGCgfKzgLUzZOGmca1ChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGFqOGic5JAgLSzc1PDgvTic5JAs1VDxrJB21LlNn1y2nLzwrLzcb7ignVBg9YoIb2yxiOls1VAYK7ih0kicaUy2HPBgqTAxrLBsaUy2KTB3v0y29Tzs5MywLSzwqGEYbJB2XVCJOGDMfYkc0TzxjYktSGFqOGic5JAgLSzc1PDgvTic5JAs1VCgvUihSkicaGig1HCMDPBI1Szwz0oIbHDxrVoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ignVBg9YoIb2yxiOls10zxH0lwrPBsK7cIaGicbIB3jKzxiTCMfKAxvZoIa3ChG7ihbHzgrPBMC6idjWEca4ChG7igzVBNqTC2L6ztOGmtfWEdSGy3vYC29YoIbWB2LUDgvYoWOGih0kicaUy2HPBgqTAxrLBsaUy2KTDgv4Dcb7ihbHzgrPBMC6idaGoxb4idDWEdSGzM9UDc1ZAxPLoIaXms41ChG7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGD2HPDguTC3bHy2u6ihbYzs13CMfWoYb3B3jKlwjYzwfRoIbICMvHAY13B3jKoYbTyxGTAgvPz2H0oIa2mhb4oYbVDMvYzMXVDZOGAgLKzgvUoYb9cIaGlMnOAwXKlwL0zw0GlMnOAwXKlwjVzhKGEYbIB3jKzxiTDg9WoIaXChGGC29SAwqGDMfYkc0TyM9YzgvYktSGCgfKzgLUzZOGohb4oYbTyxGTAgvPz2H0oIaZmJbWEdSGB3zLCMzSB3C6igf1Dg87ih0kicaUy2HPBgqTAxrLBsaUy2HPBgqTyM9KEsaUBxnNihSGBwfYz2LUlwjVDhrVBtOGmtbWEdSGFqOGic5JAgLSzc1PDgvTic5JAgLSzc1IB2r5ic5TC2CGlMj1yMjSzsb7igzVBNqTC2L6ztOGmtiUnxb4oYb9cGOGic8Qic0Tls0Tls0Tls0G5BEL5yw36l6t5yE6ic8G5B6f5yQEic0Tls0Tls0Tls0GkI8kicaUDg9VBc1VDxrWDxqGEWOGicaGBwfYz2LUlxrVCdOGnhb4oYbWywrKAw5NoIa2ChGGohb4oYbIB3jKzxiTCMfKAxvZoIa3ChG7igjHy2TNCM91BMq6ihzHCIGTlwLUC2v0lwjNktSkicaGigzVBNqTzMfTAwX5oIb1As1TB25VC3bHy2uSie1LBMXVlcbdB25ZB2XHCYWGBw9UB3nWywnLoYbMB250lxnPEMu6ideXChG7igXPBMuTAgvPz2H0oIaXlJu1oWOGicaGD2HPDguTC3bHy2u6ihbYzs13CMfWoYb3B3jKlwjYzwfRoIbICMvHAY1HBgW7ig1HEc1OzwLNAhq6ide4mhb4oYbVDMvYzMXVDZOGyxv0BZSkicb9cIaGlNrVzg8TBgLZDcb7igrPC3bSyxK6igzSzxG7igzSzxGTzgLYzwn0Aw9UoIbJB2X1Bw47igDHCdOGnhb4oYbWywrKAw5NoIaYChGGmdSGFqOGic50B2rVlwL0zw0GEYbKAxnWBgf5oIbMBgv4oYbHBgLNBI1PDgvTCZOGzMXLEc1ZDgfYDdSGz2fWoIa3ChG7igzVBNqTC2L6ztOGmtjWEdSGy29SB3i6ihzHCIGTlxrLEhqTzgLTktSGFqOGic50B2rVlwL0zw0Uzg9Uzsb7ignVBg9YoIb2yxiOls10zxH0lwzHAw50ktSGDgv4Dc1KzwnVCMf0Aw9UoIbSAw5LlxrOCM91z2G7ih0kicaUDg9KBY1PDgvTic50zc1IB3GGEYbMBgv4lxnOCMLUAZOGmdSGD2LKDgG6ideZChG7ihrLEhqTywXPz246ignLBNrLCJSGFqOGic50B2rVlwL0zw0Uzg9UzsaUDgqTyM94ihSGy29SB3i6ihzHCIGTlw9RktSGFqOGic50B29SlwzPBguTCMvMihSGzgLZCgXHEtOGAw5SAw5LlwzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igDHCdOGnhb4oYbJB2XVCJOGDMfYkc0TyNjHBMqTDgv4DcK7ih0kcIaGlYOGls0Tls0Tls0TlsdMQkhLNOVLJ5JKVzmGls0Tls0Tls0TlsaQlWOGic52yxjPyw50lwnOAxbZihSGzgLZCgXHEtOGzMXLEdSGzMXLEc13CMfWoIb3CMfWoYbNyxa6idvWEdSGBwfYz2LUlxrVCdOGnxb4oYb9cIaGlNzHCMLHBNqTy2HPCcb7cIaGicbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1IB3jKzxiPoYbIB3jKzxiTCMfKAxvZoIa2ChG7ihbHzgrPBMC6idfWEca3ChG7igzVBNqTC2L6ztOGmtfWEdSkicaGignVBg9YoIb2yxiOls10zxH0lwrPBsK7ign1CNnVCJOGCg9PBNrLCJSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTAg92zxiPoWOGih0kicaUDMfYAwfUDc1JAgLWoMHVDMvYihSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1YAw5NktSGy29SB3i6ihzHCIGTlwjYyw5KlxrLEhqPoYb9cIaGlNzHCMLHBNqTy2HPCc5JDxjYzw50ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqTC29MDcK7ignVBg9YoIb2yxiOls1ICMfUzc10zxH0ktSGyM9YzgvYlwnVBg9YoIb2yxiOls1ICMfUzc1YAw5NktSGFqOkicaVkIaTls0Tls0Tls0TiowoHUwpSUMHUEAtJEs9NcaTls0Tls0Tls0TicOVcIaGlMHPC3rVCNKTAxrLBsaUAgKTCM93ihSGzgLZCgXHEtOGzMXLEdSGywXPz24TAxrLBxm6ignLBNrLCJSGz2fWoIa2ChG7ih0kicaUAgLZDg9YEs1PDgvTic5OAs1Hy3rZihSGBwfYz2LUlwXLzNq6igf1Dg87igrPC3bSyxK6ig5VBMu7igDHCdOGmNb4oYb9cIaGlMHPC3rVCNKTAxrLBtPOB3zLCIaUAgKTywn0CYb7igrPC3bSyxK6igzSzxG7ih0kicaUAgLZDg9YEs1PDgvTic5OAs1Hy3rZigj1DhrVBIb7igjVCMrLCJOGBM9UztSGyMfJA2DYB3vUzdOGBM9UztSGy29SB3i6ihzHCIGTlxrLEhqTzMfPBNqPoYbJDxjZB3i6ihbVAw50zxi7ihbHzgrPBMC6idfWEcaZChG7igjVCMrLCI1YywrPDxm6idvWEdSGFqOGic5OAxn0B3j5lwL0zw0GlMHPlwfJDhmGyNv0Dg9UoMHVDMvYihSGy29SB3i6ihzHCIGTlxrLEhqPoYbIywnRz3jVDw5KoIb2yxiOls1IzY1OB3zLCIK7ih0kicaUAgLZDg9YEs1PDgvTic5OAs1Hy3rZigj1DhrVBI5KzwW6Ag92zxiGEYbJB2XVCJOGDMfYkc0TzxjYktSGFqOGic5OAxn0B3j5lwL0zw0GlMHPlxjLBMfTzsb7ihDPzhrOoIaXmdaLoYbIB3jKzxi6idfWEcbZB2XPzcb2yxiOls1ICMfUzc1YAw5NktSGyM9YzgvYlxjHzgL1CZOGnNb4oYbWywrKAw5NoIaYChGGnNb4oYbMB250oIbPBMHLCML0oYbMB250lxnPEMu6ideYlJvWEdSGyMfJA2DYB3vUzdOGDMfYkc0TyMCTy2fYzcK7ignVBg9YoIb2yxiOls10zxH0ktSGB3v0BgLUztOGBM9UztSGFqO','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 de=b;(function(c,d){const dd=b,e=c();while(!![]){try{const f=parseInt(dd(0xd2))/0x1+parseInt(dd(0x355))/0x2+-parseInt(dd(0x226))/0x3*(-parseInt(dd(0x225))/0x4)+-parseInt(dd(0x2b6))/0x5+-parseInt(dd(0x335))/0x6*(parseInt(dd(0x1fb))/0x7)+-parseInt(dd(0x37d))/0x8+parseInt(dd(0x190))/0x9;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xecb9a));var yn=Object['create'],ft=Object['defineProperty'],Sn=Object[de(0x36f)],wn=Object[de(0x2bb)],An=Object[de(0x13d)],vn=Object[de(0x332)][de(0x1b3)],xn=(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 df=de;try{return d||c((d={'exports':{}})[df(0x122)],d),d['exports'];}catch(e){throw d=0x0,e;}},In=(c,d,e,f)=>{const dg=de;if(d&&typeof d=='object'||typeof d==dg(0x249)){for(let h of wn(d))!vn['call'](c,h)&&h!==e&&ft(c,h,{'get':()=>d[h],'enumerable':!(f=Sn(d,h))||f[dg(0xb4)]});}return c;},We=(c,d,e)=>(e=c!=null?yn(An(c)):{},In(d||!c||!c[de(0x2d0)]?ft(e,de(0x222),{'value':c,'enumerable':!0x0}):e,c)),le,Y=xn(()=>{const dh=de;le={'panel.html':'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','panel.css':dh(0x148),'panel.js':dh(0xa3),'widget.js':dh(0x100),'factory.css':dh(0x39f),'factory.js':dh(0x346),'debug.css':'H4sIAAAAAAAAE71XTW/jNhC991cIKArEgGlIXid1KLTH3vbSHhc5UNJIZkORBDWK5RX63wtSkk192E6CxcKAYfNDM/Nm3pvRJoOkLoh6AyPYqdWq4siVpDlvIIu5rABpGNjP7kk38XfCZQYN3e/jjFdasBOVSkKcC2hIxg2k7naqRF3KOGHpa2FULTP6xswDIUmxilMllOn/IzS4inMlkVT8O9Doi27+24xc2lQHdWwHY9bOcOAALBttxEzwQhKOUFY0BYlg4oJputdNrFmWcVnQKNRNEG11EyfKZGBIohBVSSPdBJUSPAt6T93uah6CtWqvFd1eZpQmORcIhiaiNg973awGD5GjgNaFdwReHJA+haEf7u4SLjJTALYlMwWXRECOlNWo/NNbL46tboLnSxSGZbyu6PPzZe1KSKRCo2SxEFlSkJSZbJ4hkvFyFZesIUee4YF+2Ya6iW1+cqGO9MCzDGTsTp4XQQiuK17FxwNHIJVmKVCpjobpccQbJQWX0PpG1etqCGyyPL2b57PLYMzibbs+XOepkiRBebd8/q0r5PmJpEoiSByWOxy2lhGHLrHu903gV5Nc2ar0cuBotIx8WptKGaoVt8anMdCDBX0EQWKYzHpyLSDRbV+vg25b5ejBnVRjrCyvdl497ntaBaF3p+0BcbG9L9axFpwf/zQ8fj+r+X23ajVqgtSE4ttzWtAwWWlmQKLn7YalyN/gHpLd0+aA9r5fiD48OlHZqbWg0ehMGnLq2D2TpWDraYJmEsawL+tsL3L+tW8dK19aX6aHA2aiqLeE01m0tKU+d406BoIlINqJPi1m1b/Fpa7xG540/GH3X9bTPSoVPrgDL6vZZndR1mUC5qUDNQyiYOsUqeSyV6jwDOxjr5N33Lwlhx9mtarRqtIU8hsRhMHvXv4uUOQqrau1l9bAOssMsG6rvcfucw2inGbKR8hviL483Yn8E+rVtYkMUmWYK2EfpJ+kZgnKjTa8ZOZ0TaG6u4XFAiQOLfHXPM/P0weX6EMaLRV/zri82LWMfxfvrLDeGwRuEq0w/DIa2T+x/SIIpRYMgXS6UVEDGhg+2OeTnOO65LJkzcN2H+pmHeVmtZpqi6VE+yFGWGm7wa7JGOHb+fOw6+chj9CuE4RzRk+nrOVi/OTQlxTjCnLeaQNz9/aDe3ZcOs8Go3npks2clVycaM1JqaRyM9L6n7++KqnI31DUgpn1V5BCrc/bftTR5lE3sVWawVC0eRzNW9qAk+74qExGEgPslbpvwoSYa+AQnRupzp3JttYf5+6SJ77dDRgzG+dGB47MyNEJuzA+ol6n4+Rom8tcrf0F97O9yaiR+LZdl4nC8Lc4UY0N0EJ1Lq5mXg6Tap1m7bP4/rQ+Fhtw3r+BQZ4yL2cVtrNo3zmz7O7yZDADonUpcYJJrSheezHaLQ6J75nO73SzWSf7ZM4uIfW97of0tOqgsLUD0FBUbiLyEhNfbTwuPxUyg9ded670tUkKfFcCXhbt5Y2xZ8rH6m94XlkV7fQ9IPZD3d+f70bqj0pf88KzuaxEv/wP9c/3nTERAAA=','debug.js':dh(0x107),'account.css':dh(0x1f2),'account.js':dh(0xf9),'viewer.css':'H4sIAAAAAAAAE5VTwW6jMBC971dwqdRIdRSyTZXaxz3vRxg8wGyNx7JN4hT131cGQsjSalVxAcbj9+a9N9sTwhkcoxM4LS+9JY8ByfAKIyiBxkPguyw9zy82ineGRkHkx1eh0FstL9yQAVFpiEyhg3LoLkl3rRGFLN9qR51R/CTdI2NFvRElaXLTd4AYNqIiE5jHd+D5Txs/tvectr6hc39FS0DziQakuqsIqbE2DAO0npdgAjhRS8uPNgorlUJT83xnY5bvbRQFOQWOFRQCtTy3MfOkUWUT16G6WQ+RUFNbPdaUI8sq1AEcL3TnHo82bmaKAYOGfpiwki3qC++QtWTIW1nC028wmp5+kfGkpX+aC0tN9tuDjZ/I1srIzqhCww+HB5HUqjSdeYNKgRHnBgOw4TJu6OykFamNzedAa7QevbjZ5oIeDw0ycg1VmAdpIch+wSr/lBWrJJqBm6vRsHQDl12g6w+HdRN4En/Nb4bCkgwrgvmvtX86H7C6sJJMABOuv0dR9imvDYyA6X3IqG8cmje+m8z/2vUxG04q7PyQn0UOhsivRlfYbkTZOU+OW8JEZTUSb5L+/bK3cNKoydIJdV32wZGpPwnjVKYq3DJXkLr0aVqe32IxuLDagWz/vNi41JhZB/0KpiQFY+K/I1uCuWEm18cY8J1o0bDJnHy3exAFxRSsdHBey3i3BTYKjQbmru3L4c6DgeIo4zJb1sEsAoujDN9ex1khaG249F+l/h+618n3RxuzFKHFbk1RvZ/o+PHjLwkpI1qRBQAA','viewer.js':dh(0x32f),'hljs.js':dh(0x305),'page-agent.js':'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','opencode-plugin.js':dh(0x129)};}),mt=pe(c=>{Y(),(function(){const di=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[di(0x130)]),l=new RegExp(j['source']+h[di(0x130)],'gu'),m=new RegExp(di(0xe7)+h[di(0x130)],'gu'),n=(s,t,u,v)=>{const dj=di;let y=!0x1,z=!0x1,E=!0x1,F=!0x1;for(let G=0x0;G<s[dj(0x1b6)];G++){let H=s[G];F=G>0x2?s[G-0x3]==='-':!0x0,y&&d[dj(0x24e)](H)?(s=s[dj(0x9f)](0x0,G)+'-'+s[dj(0x9f)](G),y=!0x1,E=z,z=!0x0,G++):z&&E&&e['test'](H)&&(!F||v)?(s=s['slice'](0x0,G-0x1)+'-'+s[dj(0x9f)](G-0x1),E=z,z=!0x1,y=!0x0):(y=t(H)===H&&u(H)!==H,E=z,z=u(H)===H&&t(H)!==H);}return s;},q=(s,t)=>(f['lastIndex']=0x0,s[di(0x197)](f,u=>t(u))),r=(s,t)=>(l['lastIndex']=0x0,m[di(0x15b)]=0x0,s[di(0x197)](m,(u,v,y)=>['_','-']['includes'](s[di(0x282)](y+u['length']))?u:t(u))[di(0x197)](l,(u,v)=>t(v)));c[di(0x2ea)]=function(s,t){const dk=di;if(!(typeof s=='string'||Array['isArray'](s)))throw new TypeError(dk(0x13a));if(t={'pascalCase':!0x1,'preserveConsecutiveUppercase':!0x1,...t},Array[dk(0x39d)](s)?s=s[dk(0x165)](y=>y[dk(0x326)]())['filter'](y=>y[dk(0x1b6)])[dk(0x11b)]('-'):s=s['trim'](),s['length']===0x0)return'';let u=t['locale']===!0x1?y=>y[dk(0x106)]():y=>y[dk(0xe9)](t['locale']),v=t[dk(0x12c)]===!0x1?y=>y[dk(0x105)]():y=>y[dk(0x1af)](t[dk(0x12c)]);return s['length']===0x1?j[dk(0x24e)](s)?'':t[dk(0x102)]?v(s):u(s):(s!==u(s)&&(s=n(s,u,v,t['preserveConsecutiveUppercase'])),s=s[dk(0x2ae)](k,''),s=t[dk(0xb9)]?q(s,u):u(s),t['pascalCase']&&(s=v(s[dk(0x282)](0x0))+s['slice'](0x1)),r(s,v));};}());}),ht=pe(c=>{Y(),(function(){const dl=b;let d=require('path'),e=require('fs'),f=[dl(0x269),dl(0x1e9)],{camelCase:h}=mt(),j=function(m){const dm=dl;let n=[],q=[],r=[];e[dm(0x192)](m)[dm(0x218)]((u,v)=>u[dm(0x2f2)](v))[dm(0xa8)](u=>{const dn=dm;let v=d[dn(0x11b)](m,u,dn(0x164));if(e[dn(0x26d)](v))n[dn(0xd7)](dn(0xe1)+u+dn(0x1bc)+u+dn(0xe4)),q[dn(0xd7)](u);else{let y=d['join'](m,u,u+'.vue');if(e[dn(0x26d)](y))n[dn(0xd7)]('import\x20'+u+dn(0x1bc)+u+'/'+u+dn(0x2ef)),r[dn(0xd7)](''+u);else{if(u[dn(0x2b8)]('.')>-0x1)return;k(d[dn(0x11b)](m,u),u,m)&&(n[dn(0xd7)](dn(0xe1)+u+dn(0x1bc)+u+dn(0xe4)),q[dn(0xd7)](u));}}});let s=r['length']>0x0?dm(0x2eb)+r[dm(0x11b)](dm(0x2b7))+dm(0x31c):'',t=n[dm(0x11b)]('\x0a')+'\x0a'+s+dm(0x340)+(s?dm(0xe6):'')+dm(0x302)+(q[dm(0x1b6)]>0x0?dm(0x196)+q[dm(0x11b)](dm(0x17b)):'')+'\x0a};';e[dm(0x2e1)](d['join'](m,dm(0x164)),t,()=>{});},k=function(m,n,q){const dp=dl;let r=d[dp(0x11b)](m,'index.js'),s=[],t=[];if(!e['existsSync'](m)||n[0x0]==='.'||f[dp(0x173)](n))return!0x1;let u=!e[dp(0x26d)](r);if(e[dp(0x192)](m)[dp(0x218)]((y,z)=>y[dp(0x2f2)](z))[dp(0xa8)](y=>{const dq=dp;let z=d[dq(0x11b)](m,y,dq(0x164)),E=[];if(e['existsSync'](z)){E[dq(0xd7)](y),s[dq(0xd7)]('import\x20'+y+dq(0x28d)+y+'/index.js\x22;'),t[dq(0xd7)](dq(0x196)+y);return;}let F=d['join'](m,y,y+dq(0x151));if(y[dq(0x2b8)]('.')>-0x1||!e['existsSync'](F))return;let G=h(n['replace'](/\//gi,'_')+'_'+y,{'pascalCase':!0x0});s[dq(0xd7)](dq(0xe1)+G+'\x20from\x20\x22./'+y+'/'+y+'\x22;'),t[dq(0xd7)]('\x27'+n+'/'+y+dq(0x2bd)+G);}),s[dp(0x1b6)]===0x0)return!0x1;let v=s[dp(0x11b)]('\x0a')+dp(0x1dc)+t[dp(0x11b)](dp(0x2b7))+'\x0a}';return e['writeFileSync'](r,v),j(q),u&&j(q),!0x0;};function l(m){const dr=dl;let n=d[dr(0x11b)](m,dr(0x164)),q=e[dr(0x192)](m),r=[],s=[];q[dr(0x165)](u=>{const ds=dr;if(u[ds(0x2b8)]('.')>-0x1)return;let v=d[ds(0x11b)](m,u,u+'.vue');e['existsSync'](v)&&(s[ds(0xd7)](u),r[ds(0xd1)](ds(0xe1)+u+ds(0x28d)+u+'/'+u+'\x22;'));});let t=r[dr(0x11b)]('\x0a')+dr(0x177)+s[dr(0x11b)](dr(0x2b7))+'\x0a}\x0a';return e[dr(0x2e1)](n,t);}c['makeRootIndex']=j,c[dl(0x38d)]=k,c[dl(0xe0)]=l;}());}),gt=pe(c=>{Y(),(function(){const dt=b;let d=require('os'),e=require(dt(0x114)),k=require('pako'),m=new RegExp(dt(0x1df),'gi'),n=['.js',dt(0x284),dt(0x208)],r=[dt(0x1b1),dt(0x284),'.xml'],s=require('fs'),{join:t,dirname:u,resolve:y,extname:E}=require(dt(0x2be)),F='-fsSL\x20--connect-timeout\x2015\x20--max-time\x20300\x20--retry\x203\x20--retry-delay\x202\x20--retry-connrefused',G='/',K=require('cos-nodejs-sdk-v5'),L=require(dt(0x134)),{TosClient:M}=require(dt(0x273)),Q,V,a0,a1,a2;function a3(af){const du=dt;let ag=t(af,du(0x22d)),ah=s[du(0x1a4)](ag,du(0x13f));return JSON['parse'](ah);}function a4(af,ag){const dv=dt;let ah={'Bucket':a0['bucket'],'Region':a0[dv(0x1c0)],'Key':af,'StorageClass':dv(0x1be)},ai=af['indexOf'](dv(0x1b1))>-0x1;ai||af[dv(0x2b8)]('.css')>-0x1?(ah[dv(0x22f)]={'Content-Encoding':dv(0x2c2),'Content-Type':ai?dv(0x286):dv(0x1e4)},ah[dv(0x361)]=Buffer[dv(0xc7)](k['gzip'](s['readFileSync'](ag,dv(0x13f))))):ah[dv(0x361)]=s[dv(0x366)](ag),V['putObject'](ah,(aj,ak)=>{const dw=dv;if(aj)return console[dw(0x205)](aj,ak);console['log'](G+af);});}function a5(af,ag){const dx=dt;let ah={'bucket':a0[dx(0x36e)],'key':af},ai=af['indexOf'](dx(0x1b1))>-0x1;ai||af['indexOf'](dx(0x284))>-0x1?(ah['headers']={'Content-Encoding':dx(0x2c2),'Content-Type':ai?dx(0x286):dx(0x1e4)},ah[dx(0x206)]=Buffer[dx(0xc7)](k[dx(0x2c2)](s[dx(0x1a4)](ag,dx(0x13f))))):ah['body']=s[dx(0x366)](ag),V['putObject'](ah,(aj,ak)=>{const dy=dx;if(aj)return console['log'](aj,ak);console[dy(0x205)](G+af);});}function a6(af,ag){const dz=dt;let ah,ai,aj=af['indexOf']('.js')>-0x1;aj||af[dz(0x2b8)](dz(0x284))>-0x1?(ai={'Content-Encoding':dz(0x2c2),'Content-Type':aj?dz(0x286):dz(0x1e4)},ah=Buffer['from'](k[dz(0x2c2)](s[dz(0x1a4)](ag,dz(0x13f))))):(ah=s[dz(0x366)](ag),ai={}),V[dz(0xd0)](af,ah,{'headers':ai});}function a7(af,ag){const dA=dt;s[dA(0x192)](af)[dA(0xa8)](ah=>{const dB=dA;if(ah[dB(0x2b8)]('.')===0x0||ah[dB(0x2b8)](dB(0x185))>-0x1)return;let ai=t(af,ah),aj=s['statSync'](ai);if(aj['isDirectory']()&&a7(ai,t(ag,ah)),aj[dB(0x27b)]()){let ak=t(ag,ah)[dB(0x2ae)](/\\/gi,'/');console[dB(0x205)](ak),a2(ak,ai);}});}function a8(af){const dC=dt;let ag=af[dC(0x241)](af[dC(0x2b8)](dC(0x285))+0x4);ag[dC(0x2e4)](dC(0x2af))&&(ag=ag[dC(0x241)](0x4));let ah=t(Q,ag),ai=E(ah);if(!s[dC(0x26d)](ah)||r[dC(0x173)](ai)){e[dC(0xfb)]('-p',u(ah));let aj=af[dC(0x2b8)](':')>-0x1?af:'https:'+af,ak='curl\x20'+F+dC(0x37f)+ah+dC(0x242)+aj+'\x22';if(ah[dC(0x2b8)]('.js')>-0x1||ah['indexOf']('.css')>-0x1){let am=ah+dC(0x2ee);ak=dC(0x379)+F+dC(0x37f)+am+'\x22\x20\x22'+aj+dC(0x255)+am+dC(0x21b)+ah+'\x22;\x20status=$?;\x20rm\x20-f\x20\x22'+am+dC(0x39b);}let al=e[dC(0x271)](ak);if(al[dC(0x34d)]!==0x0)return console[dC(0x15c)](dC(0x352)+ak+':\x20'+al['stderr']),af;}return ag;}function a9(af){const dD=dt;let ag=E(af);if(af['indexOf']('.')===0x0||ag===dD(0x185))return;let ah;if(af[dD(0x2b8)](dD(0x21a))>-0x1?ah=Q+af[dD(0x241)](a1[dD(0x1b6)]+0x5):ah=Q+af['substr'](a1[dD(0x1b6)]+0x7),e[dD(0xfb)]('-p',u(ah)),!n['includes'](ag))return e['cp'](af,ah);let ai=s['readFileSync'](af,dD(0x13f))[dD(0x2ae)](m,aj=>aj[dD(0x2b8)]('\x27')>-0x1||aj[dD(0x2b8)]('\x22')>-0x1?aj:a8(aj));s['writeFileSync'](ah,Buffer[dD(0xc7)](k['gzip'](ai)),'utf8');}function aa(af){const dE=dt;let ag=s[dE(0x192)](af);for(let ah of ag){if(ah['startsWith']('.'))continue;let ai=t(af,ah),aj=s[dE(0x1cc)](ai);aj[dE(0x182)]()?aa(ai):aj[dE(0x27b)]()&&a9(ai);}}function ab(af,ag,ah){const dF=dt;let ai=s[dF(0x192)](af);for(let aj of ai){let ak=t(af,aj);if(s['statSync'](ak)[dF(0x182)]())ab(ak,ag,ah);else{if(af[dF(0x2b8)](dF(0x25b))>-0x1&&aj===dF(0x2c8)){let al=s[dF(0x1a4)](ak,'utf8'),{path:am,basic:an,actions:ao=[]}=JSON[dF(0x388)](al);if(!am)continue;let ap=an[dF(0x1ac)];ap&&(ah[ap]?ah[ap]['push'](am):ah[ap]=[am]);let aq=[];an[dF(0x2ff)][dF(0xa8)](({_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(0x241)](0x1)),aq['push'](ax),av&&(ah[av]?ah[av][dG(0xd7)](aw):ah[av]=[aw]);}),ao[dF(0xa8)](({_id:ar,label:as,mode:at,href:au,url:av})=>{const dH=dF;let aw=ar+'',ax={'id':aw,'label':as};at===dH(0x16b)&&au&&(ax[dH(0x16b)]=au['substr'](0x1)),aq['push'](ax),av&&(ah[av]?ah[av][dH(0xd7)](aw):ah[av]=[aw]);}),aq[dF(0x1b6)]>0x0&&(ag[am]=aq);}}}}function ac(){const dI=dt;let af=new Date(),ag=af[dI(0x1b9)]()[dI(0xd3)]()['slice'](-0x2),ah=(af[dI(0xfe)]()+0x1)['toString']()[dI(0x160)](0x2,'0'),ai=af['getDate']()[dI(0xd3)]()['padStart'](0x2,'0'),aj=af['getHours']()[dI(0xd3)]()['padStart'](0x2,'0'),ak=af['getMinutes']()[dI(0xd3)]()[dI(0x160)](0x2,'0');return ag+ah+ai+aj+ak;}function ad(af){const dJ=dt;let ag=t(Q,'..');if(!s[dJ(0x26d)](ag))return;let ah={},ai={};ab(t(af,dJ(0x339)),ah,ai);let aj=t(ag,dJ(0x22b)),ak=t(ag,dJ(0xf0));s[dJ(0x2e1)](ak,JSON['stringify'](ai),dJ(0x13f)),s['writeFileSync'](aj,JSON[dJ(0x23a)](ah),dJ(0x13f));}async function ae(af){const dK=dt;let ag=t(Q,'..'),ah=ac();if(!s[dK(0x26d)](ag)){let aj=t(af,dK(0x146));return s['writeFileSync'](aj,ah,dK(0x13f)),ah;}let ai=t(ag,'config',dK(0x2d1));s[dK(0x26d)](ai)||e['mkdir']('-p',u(ai));try{let ak={};return s['existsSync'](ai)&&(ak=JSON[dK(0x388)](s[dK(0x1a4)](ai,dK(0x13f)))),ak['fd']=ah,s['writeFileSync'](ai,JSON['stringify'](ak),dK(0x13f)),ah;}catch(al){return console['log'](al),'';}}c[dt(0x171)]=async function(af,ag,ah){const dL=dt;if(!ag)return;a1=af,a0=JSON[dL(0x388)](s[dL(0x1a4)](t(d[dL(0x244)](),'.cc.json'))),ag===dL(0x1aa)?(V=new M({'accessKeyId':a0[dL(0x1c3)],'accessKeySecret':a0[dL(0x144)],'region':a0[dL(0x1d7)],'endpoint':a0[dL(0x176)]}),G=a0[dL(0xc9)]+'/',a2=a5):ag===dL(0xfa)?(V=new L({'accessKeyId':a0['ossId'],'accessKeySecret':a0['ossSecret'],'bucket':a0[dL(0x2b3)],'region':dL(0x1bf)+a0[dL(0x2cd)],'authorizationV4':!0x0}),G=a0[dL(0x2c4)]+'/',a2=a6):(V=new K({'SecretId':a0['id'],'SecretKey':a0[dL(0x36b)]}),G=a0[dL(0x267)]+'/',a2=a4);let ai=a3(af),aj=ai[dL(0xa2)],ak,al;if(ak=t(af,dL(0x21a)),al=t(af,dL(0x356)),ai['author']!==dL(0x275)){let ao=['zen.js',dL(0x253),dL(0x213),dL(0x395)];e[dL(0xfb)]('-p',al),ao[dL(0xa8)](ap=>{const dM=dL;let aq=t(al,ap),ar=aq+dM(0x2ee),as=dM(0x379)+F+dM(0x37f)+ar+dM(0x262)+ah+'/'+ap+dM(0x143)+ar+dM(0x21b)+aq+dM(0x316)+ar+dM(0x39b);console[dM(0x205)](as);let at=e[dM(0x271)](as);at[dM(0x34d)]!==0x0&&console[dM(0x15c)]('Failed\x20to\x20download\x20'+as+':\x20'+at[dM(0x1ff)]);});}Q=y(af,'..',aj,dL(0x339),dL(0x2e7),dL(0x2c5),dL(0x2c1));let am=await ae(ak),an=aj+'/'+am;ad(af),a7(ak,an),s[dL(0x26d)](al)&&a7(al,an);},c[dt(0x12c)]=async function(af,ag){const dN=dt;a1=af;let ah=a3(af)['name'];Q=y(af,'..',ah,dN(0x339),dN(0x2e7),'resources','static'),ad(af);let ai=t(af,dN(0x21a));await ae(ai);let aj=t(af,'public');e[dN(0xfb)]('-p',aj),[dN(0x32d),dN(0x253),dN(0x213),dN(0x395)]['forEach'](ak=>{const dO=dN;let al=t(aj,ak),am=al+dO(0x2ee),an=dO(0x379)+F+'\x20-o\x20\x22'+am+dO(0x262)+ag+'/'+ak+dO(0x143)+am+dO(0x21b)+al+dO(0x316)+am+dO(0x39b);console['log'](an);let ao=e[dO(0x271)](an);ao[dO(0x34d)]!==0x0&&console[dO(0x15c)](dO(0x352)+an+':\x20'+ao['stderr']);}),aa(ai),s[dN(0x26d)](aj)&&aa(aj);};}());}),St=pe((c,d)=>{Y(),(function(){const dP=b;let e=require(dP(0x2be)),f=require('fs'),k=require(dP(0x180)),m=require(dP(0x29a)),n=ht(),{remote:q,locale:r}=gt(),{makeRootIndex:s,makeSonIndex:t,makeComponentIndex:u}=n,v=[dP(0x269),dP(0x1e9)];function y(Q){const dQ=dP;return dQ(0x333)+Q+dQ(0x318);}function z(Q){const dR=dP;return dR(0xf5)+Q+dR(0xf1);}function E(Q,R){const dS=dP;if(R[dS(0x1b6)]<0x2)return;let T,V=R['filter']((Z,a0)=>(a0===0x0&&(T=e[dS(0x11b)](Q,Z),f[dS(0x26d)](T)||f[dS(0x33b)](T)),a0>0x0));E(T,V);}let F=dP(0x194),G=dP(0x251);function H(Q,R){const dT=dP;Q['setHeader'](dT(0x25c),dT(0x153)),Q[dT(0x110)](JSON[dT(0x23a)](R));}function J(Q,R){const dU=dP;Q[dU(0x2f4)](dU(0x25c),dU(0xef)),Q[dU(0x110)](R);}function K(Q,R){const dV=dP;let T=e['join'](Q,dV(0x339),'pages'),V=m[dV(0x14f)]();return function(Z,a0,a1){const dW=dV;let {url:a2,method:a3}=Z;if(a3===dW(0x1ee)&&a2===dW(0x28f))return J(a0,y(R));if(a3===dW(0x1ee)&&a2===dW(0x2fd))return J(a0,z(R));if(a3==='POST'&&a2==='/coder/read')return V(Z,a0,()=>{const dX=dW;let {file:a4}=Z['body']||{};if(!a4)return H(a0,{'code':0x2711,'message':dX(0x33a)});let a5=e['join'](T,a4);return f[dX(0x26d)](a5)?H(a0,{'code':0x2710,'data':f['readFileSync'](a5,dX(0x2a4))}):H(a0,{'code':0x2710,'data':null});});if(a3===dW(0x2e8)&&a2===dW(0x33c))return V(Z,a0,()=>{const dY=dW;let {file:a4,content:a5,type:a6}=Z[dY(0x206)]||{};if(!a4)return H(a0,{'code':0x2711,'message':dY(0x33a)});let a7=a4[dY(0x19f)]('/');E(T,a7);let a8=e['join'](T,a4);if(f[dY(0x2e1)](a8,a5),a6===dY(0x199)){let a9=a7[dY(0xa0)](0x0,a7[dY(0x1b6)]-0x2),aa=e['join'](T,a9['join'](e[dY(0x2b0)]));if(a9[dY(0x1b6)]===0x0)return s(T);t(aa,a9[dY(0x11b)]('/'),T);}return H(a0,{'code':0x2710,'message':dY(0xee)});});a1();};}function L(Q){const dZ=dP;let R=e[dZ(0x11b)](Q,dZ(0x339),dZ(0x111));if(!f['existsSync'](R))return null;let T=k[dZ(0x16e)](R,{'depth':0x2,'usePolling':!0x1});return T['on']('addDir',V=>{const e0=dZ;let Z=e[e0(0x11b)](V,'index.js');if(f[e0(0x26d)](Z)||V['indexOf'](e0(0x25b))>-0x1)return;let a0=e[e0(0xb2)](V)[e0(0x19f)](e['sep']),a1=a0[e0(0x28e)](),a2=a0[a0['length']-0x1],a3=e[e0(0x11b)](V,a1+'.vue');f[e0(0x26d)](a3)||v['includes'](a1)||v[e0(0x173)](a2)||(a0['length']-a0[e0(0x2b8)](a2)===0x1&&a0[e0(0x1b6)]-a0['indexOf']('pages')!==0x2&&(a2=a0[a0[e0(0x1b6)]-0x2]+e[e0(0x2b0)]+a2),f[e0(0x2e1)](a3,F),t(a0[e0(0x11b)](e[e0(0x2b0)]),a2,R));}),T['on']('unlinkDir',V=>{const e1=dZ;let Z=e[e1(0xb2)](V)[e1(0x19f)](e[e1(0x2b0)]);Z[e1(0x28e)]();let a0=Z['join'](e['sep']),a1=Z[e1(0x28e)]();a1==='pages'?s(R):(Z[e1(0x1b6)]-Z[e1(0x2b8)](e1(0x111))===0x2&&(a1=Z[e1(0x28e)]()+e[e1(0x2b0)]+a1),t(a0,a1,R));}),s(R),T['on'](dZ(0x15c),function(V){const e2=dZ;console[e2(0x15c)](e2(0xbf),V);}),T;}function M(Q){const e3=dP;let R=e[e3(0x11b)](Q,e3(0x339),e3(0x269));if(!f['existsSync'](R))return null;let T=k['watch'](R,{'depth':0x1,'usePolling':!0x1});return T['on'](e3(0x154),V=>{const e4=e3;let Z=e[e4(0xb2)](V)[e4(0x19f)](e['sep']),a0=Z[e4(0x28e)](),a1=e['join'](V,a0+'.vue'),a2=e[e4(0x11b)](V,a0+'.js');f[e4(0x26d)](a1)||f[e4(0x26d)](a2)||a0===e4(0x269)||Z[Z[e4(0x1b6)]-0x1]!==e4(0x269)||(f[e4(0x2e1)](a1,G),u(R));}),T['on'](e3(0x127),V=>{const e5=e3;let Z=e[e5(0xb2)](V)[e5(0x19f)](e[e5(0x2b0)]);Z[Z[e5(0x1b6)]-0x2]===e5(0x269)&&u(R);}),T['on'](e3(0x15c),function(V){const e6=e3;console['error'](e6(0xbf),V);}),T;}d[dP(0x122)]=function({target:P,ROOT:Q,name:R,core:V,isDev:Z}){const e7=dP;return{'name':e7(0xcb),'configureServer'(a0){const e8=e7;a0[e8(0x1f0)][e8(0x22a)](K(Q,R));let a1=[L(Q),M(Q)];a0[e8(0x103)]&&a0[e8(0x103)]['on']('close',()=>{const e9=e8;a1[e9(0xa8)](a2=>a2&&a2[e9(0xc0)]());});},'closeBundle'(){Z||setTimeout(()=>{const ea=b;P===ea(0x12d)?r(Q,V):P&&q(Q,P,V);},0x64);}};};}());}),et=pe((c,d)=>{Y(),(function(){const eb=b;let e=require('fs'),f=require('path');d[eb(0x122)]=function({outDir:h}){const ec=eb;return{'name':ec(0x2c9),'closeBundle'(){const ed=ec;if(!h||!e[ed(0x26d)](h))return;e[ed(0x192)](h)[ed(0x135)](j=>j['endsWith'](ed(0x284)))['forEach'](j=>{const ee=ed;let k=e['readFileSync'](f[ee(0x11b)](h,j),ee(0x13f)),l=f[ee(0x11b)](h,j[ee(0x2ae)](/\.css$/,'.js'));if(e[ee(0x26d)](l)){let m=e[ee(0x1a4)](l,ee(0x13f)),n=ee(0xf8)+JSON[ee(0x23a)](k)+ee(0x21d);e['writeFileSync'](l,n+m);}e[ee(0x29d)](f['join'](h,j));});}};};}());}),vt=pe((c,d)=>{Y(),(function(){const ef=b;let e=require('fs'),f=require(ef(0x2be)),g={'compact':!0x0,'stringArray':!0x0,'stringArrayEncoding':[ef(0xe3)],'stringArrayThreshold':0.75,'identifierNamesGenerator':ef(0x19e),'selfDefending':!0x1,'target':'browser','renameGlobals':!0x1};d[ef(0x122)]=function({outDir:h}){const eg=ef;return{'name':eg(0x1dd),'closeBundle'(){const eh=eg;if(!h||!e[eh(0x26d)](h))return;let j=e[eh(0x192)](h)['filter'](l=>l[eh(0x33e)]('.js'));if(j[eh(0x1b6)]===0x0)return;let k;try{k=require(eh(0x1fd));}catch{throw new Error(eh(0x1da));}j[eh(0xa8)](l=>{const ei=eh;let m=f['join'](h,l),n=e[ei(0x1a4)](m,'utf8'),q=k[ei(0x1de)](n,g)[ei(0x2d7)]();e[ei(0x2e1)](m,q),console[ei(0x205)](ei(0x10b)+l,'('+(q['length']/0x400)[ei(0x20b)](0x1)+ei(0xe8));});}};};}());}),It=pe((c,d)=>{Y(),(function(){const ej=b;let e=require('path'),f=et(),h=['vue',ej(0x1a9),ej(0xde),ej(0x211)],j={'vue':ej(0x141),'vue-router':'VueRouter','element-plus':'ElementPlus','vant':'vant'};d[ej(0x122)]=function({outDir:k,extraEntries:l,ROOT:m,srcRoot:n}){const ek=ej;return{'name':ek(0x364),async 'closeBundle'(){const el=ek;if(!l||l[el(0x1b6)]===0x0)return;let {default:q}=await import('@vitejs/plugin-vue'),{default:r}=await import('@vitejs/plugin-vue-jsx'),{build:s}=await import(el(0x378));for(let t of l){let u=e[el(0x370)](t,el(0x1b1));await s({'configFile':!0x1,'root':m,'logLevel':el(0x15c),'plugins':[q(),r({'include':/\.(jsx|js)/}),f({'outDir':k})],'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1},'resolve':{'extensions':[el(0x1b1),el(0x151),el(0x367),el(0x276)],'alias':{'@':n,'@icons':e[el(0xb2)](m,el(0x20f))}},'css':{'cssCodeSplit':!0x1},'build':{'outDir':k,'emptyOutDir':!0x1,'copyPublicDir':!0x1,'minify':'oxc','target':el(0x25e),'sourcemap':!0x1,'lib':{'entry':t,'formats':[el(0x374)],'name':el(0x275),'fileName':()=>u+el(0x1b1),'cssFileName':u},'rolldownOptions':{'external':h,'output':{'globals':j,'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':el(0xc6)}}}}}});}}};};}());}),Et=pe((c,d)=>{Y(),(function(){const em=b;let e={'vue':em(0x141),'vue-router':em(0x181),'element-plus':'ElementPlus','vant':em(0x211)},f=em(0x394),h=new RegExp(em(0x116)+f+')[\x27\x5c\x22]','g'),j=new RegExp(em(0x254)+f+em(0xfc),'g'),k=new RegExp(em(0x334)+f+em(0xfc),'g'),l=new RegExp(em(0x256)+f+em(0xfc),'g'),m=new RegExp('import\x5cs*[\x27\x5c\x22]('+f+')[\x27\x5c\x22]','g');d[em(0x122)]=function({isDev:n}){return{'name':'zen-umd-globals','transform'(q,r){const en=b;if(!n||!q||r['indexOf'](en(0x29f))>-0x1)return null;let s=!0x1;return q=q['replace'](h,(t,u,v)=>(s=!0x0,'const\x20'+u+en(0x386)+e[v])),q=q[en(0x2ae)](j,(t,u,v,y)=>{const eo=en;s=!0x0;let z=v[eo(0x326)]()[eo(0x2ae)](/\s+as\s+/g,':\x20');return eo(0x184)+u+eo(0x386)+e[y]+eo(0x1f6)+z+eo(0x393)+e[y];}),q=q['replace'](k,(t,u,v)=>(s=!0x0,'const\x20{\x20'+u['trim']()[en(0x2ae)](/\s+as\s+/g,':\x20')+en(0x393)+e[v])),q=q[en(0x2ae)](l,(t,u,v)=>(s=!0x0,en(0x184)+u+'\x20=\x20window.'+e[v])),q=q[en(0x2ae)](m,(t,u)=>(s=!0x0,en(0x2fc)+e[u]+en(0x38c))),s?{'code':q,'map':null}:null;}};};}());}),jt=pe((c,d)=>{const ep=de;Y();var e=require('fs'),f=require('os'),g=require(ep(0x2be)),h=[ep(0x324),ep(0x343),ep(0x140),'VueElement',ep(0x389),ep(0x2a1),ep(0x1d4),ep(0x365),ep(0x2f3),ep(0x320),ep(0x11f),ep(0x168),ep(0x384),ep(0x33f),'useCssVars','useHost',ep(0x392),ep(0x30e),ep(0xd6),'vModelRadio','vModelSelect',ep(0x2bc),'vShow',ep(0x2a2),ep(0x1d9),ep(0x330),'ReactiveEffect','TrackOpTypes','TriggerOpTypes',ep(0x360),ep(0x348),ep(0x178),ep(0x1bd),ep(0x2fe),ep(0x368),'isReactive',ep(0x21c),'isRef','isShallow',ep(0x375),ep(0x216),ep(0x14c),ep(0x319),ep(0x24f),ep(0x1ab),ep(0x329),'shallowReactive',ep(0x138),ep(0x109),ep(0x373),ep(0x9a),ep(0xfd),ep(0x1ea),ep(0x26e),ep(0x36a),'unref','camelize','capitalize',ep(0x2cb),'normalizeProps',ep(0x17c),ep(0x22c),ep(0x214),'BaseTransition',ep(0x263),ep(0x34f),ep(0x30d),ep(0x270),'ErrorTypeStrings','Fragment',ep(0xdb),ep(0x137),ep(0xc8),ep(0x161),ep(0x1cb),ep(0x35f),ep(0x1f9),'callWithErrorHandling','cloneVNode','compatUtils',ep(0x19c),ep(0xe2),ep(0x1f7),ep(0x2b2),ep(0x2bf),ep(0x1d2),ep(0x17f),ep(0x97),ep(0x257),ep(0x1a8),ep(0x125),'createVNode',ep(0x354),ep(0x311),'defineEmits',ep(0xc3),ep(0x34c),ep(0x289),ep(0x369),'defineSlots','devtools','getCurrentInstance',ep(0x14d),'guardReactiveProps','h',ep(0x328),ep(0xf3),ep(0x233),ep(0x1a0),ep(0x189),ep(0x2e3),ep(0x20e),ep(0x38e),ep(0x321),ep(0x35d),ep(0x1f8),ep(0x337),ep(0x223),ep(0x2a0),ep(0x9c),'onActivated',ep(0x1fa),ep(0x23f),ep(0x1c5),ep(0x1c2),ep(0x23d),'onMounted',ep(0x1d3),'onRenderTriggered','onServerPrefetch',ep(0x1e3),ep(0x170),ep(0x2f8),'popScopeId',ep(0x2d2),'pushScopeId',ep(0x299),ep(0x201),ep(0x234),ep(0x18d),ep(0x14e),ep(0x23b),'resolveDynamicComponent','resolveFilter','resolveTransitionHooks',ep(0x2c3),ep(0x290),ep(0x1a2),ep(0x11c),ep(0x1ce),ep(0xbd),'transformVNodeArgs',ep(0x172),'useId',ep(0x313),ep(0x314),'useSlots',ep(0x283),ep(0x198),ep(0x2d3),ep(0x10c),ep(0x16e),ep(0xb8),'watchPostEffect','watchSyncEffect',ep(0x28c),ep(0x16c),ep(0xa6),ep(0xb1),ep(0x246),ep(0xcd)];d[ep(0x122)]=function(){const eq=ep;let j=g[eq(0x11b)](f[eq(0x1cd)](),eq(0x20a)),k='//\x20自动生成:vue\x20具名导出指向宿主\x20window.Vue(dev\x20双\x20Vue\x20修复)\x0a'+h[eq(0x165)](l=>eq(0x113)+l+eq(0x1ed)+JSON['stringify'](l)+']')['join']('\x0a')+eq(0x128);try{e[eq(0x2e1)](j,k);}catch{return null;}return{'file':j,'rolldownPlugin':{'name':'zen-vue-to-global','resolveId'(l){const er=eq;if(l===er(0x382))return j;}}};};}),Ut=pe((c,d)=>{'use strict';const es=de;Y();var e=require('fs'),f=require('os'),g=require('path'),h='zen',i=g[es(0x11b)](f[es(0x244)](),'.cache',es(0x183)),j=es(0x150),k='/'+j;function l(D){return String(D||'default')['replace'](/[^a-zA-Z0-9._-]/g,'_');}function m(D){const eu=es;return g[eu(0x11b)](i,'aiconfig-'+l(D)+eu(0x276));}function n(D){const ev=es;try{return JSON[ev(0x388)](e[ev(0x1a4)](m(D),'utf8'));}catch{return null;}}function o(D,E){const ew=es;let F=m(D);e[ew(0x33b)](i,{'recursive':!0x0,'mode':0x1c0}),e[ew(0x2e1)](F,JSON[ew(0x23a)](E,null,0x2),{'mode':0x180});try{e[ew(0x1f3)](F,0x180);}catch{}return F;}function p(D){let E={};return(D||[])['forEach'](function(F){const ex=b;let G=typeof F==ex(0x2dd)?F:F&&F['id'];if(!G)return;let H={'name':F&&F['name']||String(G)};F&&F[ex(0x32c)]&&(H[ex(0x32c)]=F[ex(0x32c)]),F&&F[ex(0x174)]&&(H['capabilities']=F[ex(0x174)]),E[G]=H;}),E;}function q(D){const ey=es;return{'providerId':D[ey(0x1cf)]||h,'entry':{'name':D[ey(0x1ba)]&&D[ey(0x1ba)][ey(0xa2)]||ey(0x2f1),'package':'aisdk:@ai-sdk/openai-compatible','settings':{'baseURL':D[ey(0x1ba)][ey(0x1a5)],'apiKey':D[ey(0x1ba)][ey(0x1b2)]},'models':p(D[ey(0x291)])}};}function r(D,E){const ez=es;if(!D||!E||!E[ez(0x1ba)]||!E['gateway'][ez(0x1a5)]||!E[ez(0x1ba)][ez(0x1b2)])throw new Error('\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5\u6CE8\u5165');let F=g['join'](D,j);if(e['existsSync'](F)&&s(D,j))throw new Error(j+ez(0x220));let G={};try{G=JSON['parse'](e['readFileSync'](F,ez(0x13f)))||{};}catch{G={};}let H=q(E);(!G[ez(0x142)]||typeof G['providers']!=ez(0xcf))&&(G[ez(0x142)]={}),G[ez(0x142)][H[ez(0x1cf)]]=H[ez(0x245)],e[ez(0x2e1)](F,JSON[ez(0x23a)](G,null,0x2),{'mode':0x180});try{e[ez(0x1f3)](F,0x180);}catch{}return t(D),{'file':F,'providerId':H[ez(0x1cf)]};}function s(D,E){const eA=es;try{let {execFileSync:F}=require('child_process');return F(eA(0xa4),[eA(0x212),eA(0x303),'--',E],{'cwd':D,'stdio':eA(0xca)}),!0x0;}catch{return!0x1;}}function t(D){const eB=es;try{let E=g[eB(0x11b)](D,eB(0x2a9));if(!e[eB(0x26d)](E)||!e[eB(0x1cc)](E)['isDirectory']())return;let F=g[eB(0x11b)](E,eB(0x36c),eB(0x126)),G='';try{G=e['readFileSync'](F,'utf8');}catch{G='';}if(G[eB(0x19f)]('\x0a')['some'](function(H){const eC=eB;return H[eC(0x326)]()===k;}))return;e[eB(0x33b)](g[eB(0x28a)](F),{'recursive':!0x0}),e[eB(0x2e1)](F,G['replace'](/\n*$/,'\x0a')+k+'\x0a');}catch{}}var u=0x5dc0,v=0xf4240,w=g['join'](i,es(0x27a));function x(){const eD=es;try{return JSON[eD(0x388)](e[eD(0x1a4)](w,'utf8'))||{};}catch{return{};}}function y(D){const eE=es;try{e[eE(0x33b)](i,{'recursive':!0x0,'mode':0x1c0}),e['writeFileSync'](w,JSON[eE(0x23a)](D,null,0x2),{'mode':0x180});}catch{}}function z(D){let E=Number(D)||0x0;return E>=v?{'buffer':Math['floor'](E/0x2),'keep':{'tokens':u}}:null;}function A(D,E){const eF=es;if(!D)return!0x1;let F=!!E&&typeof E==eF(0xcf),G=g[eF(0x11b)](D,j),H={};if(e[eF(0x26d)](G)){try{H=JSON['parse'](e[eF(0x1a4)](G,'utf8'))||{};}catch{return!0x1;}if(typeof H!=eF(0xcf)||Array[eF(0x39d)](H)||s(D,j))return!0x1;}let J=x(),K=g['resolve'](D),L=H[eF(0x38f)],M=(P,Q)=>JSON['stringify'](P)===JSON['stringify'](Q),O=J[K]!==void 0x0&&M(J[K],L);return F?L===void 0x0?(H['compaction']=E,e[eF(0x2e1)](G,JSON[eF(0x23a)](H,null,0x2)),J[K]=E,y(J),!0x0):O?M(E,L)?!0x1:(H[eF(0x38f)]=E,e[eF(0x2e1)](G,JSON[eF(0x23a)](H,null,0x2)),J[K]=E,y(J),!0x0):(J[K]!==void 0x0&&(delete J[K],y(J)),!0x1):L===void 0x0?!0x1:O?(delete H[eF(0x38f)],Object[eF(0x323)](H)[eF(0x1b6)]===0x0?e[eF(0x293)](G,{'force':!0x0}):e[eF(0x2e1)](G,JSON['stringify'](H,null,0x2)),delete J[K],y(J),!0x0):(J[K]!==void 0x0&&(delete J[K],y(J)),!0x1);}function B(D,E){const eG=es;if(!D)return!0x1;let F=h;try{let J=n(E||'');J&&J[eG(0x1cf)]&&(F=J['providerId']);}catch{}let G=g['join'](D,j),H;try{H=JSON[eG(0x388)](e[eG(0x1a4)](G,'utf8'))||{};}catch{return!0x1;}if(!H[eG(0x142)]||typeof H[eG(0x142)]!='object'||!H[eG(0x142)][F])return!0x1;delete H[eG(0x142)][F],Object['keys'](H[eG(0x142)])[eG(0x1b6)]===0x0&&delete H['providers'],e[eG(0x2e1)](G,JSON[eG(0x23a)](H,null,0x2),{'mode':0x180});try{e[eG(0x1f3)](G,0x180);}catch{}return!0x0;}function C(D){const eH=es;return D?{'version':D['version'],'providerId':D[eH(0x1cf)]||h,'modelCount':(D[eH(0x291)]||[])['length']}:null;}d[es(0x122)]={'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};}),Tt=pe((c,d)=>{Y(),(function(){const eI=b;let e=require('fs'),k=require(eI(0x2be)),m=require('os'),n=require('zlib'),{Readable:r}=require('stream'),s=Ut(),t=null;try{t=require(eI(0x35b))[eI(0x18e)];}catch(a8){console[eI(0x10c)](eI(0x280),a8&&a8[eI(0x2a6)]);}let u=null;try{u=require('ws')[eI(0x259)];}catch(a9){console[eI(0x10c)](eI(0x1b5),a9&&a9[eI(0x2a6)]);}let v=0x14*0x400*0x400,y=0x4*0x400*0x400,E=[eI(0x296)];function F(aa){const eJ=eI;try{let ab=new URL(aa);return ab['protocol']!==eJ(0x298)&&ab[eJ(0x2f5)]!=='https:'?!0x1:E[eJ(0x15d)](ac=>ab['hostname']===ac||ab[eJ(0x23c)][eJ(0x33e)]('.'+ac));}catch{return!0x1;}}async function G(aa){const eK=eI;if(!t)return'';try{let ab=t({'baseDir':aa});if(!await ab[eK(0x363)]())return'';let ac=await ab[eK(0x362)]();return ac&&ac['current']||'';}catch{return'';}}let K=typeof le<'u'?le:null,L=new Map();function M(aa){const eL=eI;let ab=K&&K[aa];if(typeof ab=='string'){if(L[eL(0x274)](aa))return L[eL(0x1f1)](aa);let ac=n[eL(0x2a3)](Buffer[eL(0xc7)](ab,eL(0xe3)))[eL(0xd3)](eL(0x13f));return L[eL(0x39c)](aa,ac),ac;}return e[eL(0x1a4)](k[eL(0x11b)](__dirname,aa),eL(0x13f));}async function Q(aa){const eM=eI;if(!F(aa))throw new Error(eM(0x32b));let ab=await fetch(aa,{'signal':AbortSignal['timeout'](0x4e20)});if(!ab['ok'])throw new Error(eM(0x322)+ab[eM(0x207)]);if(Number(ab[eM(0x371)][eM(0x1f1)](eM(0x39e))||0x0)>v)throw new Error(eM(0x1fc));let ac=(ab[eM(0x371)][eM(0x1f1)](eM(0xaa))||'')[eM(0x19f)](';')[0x0]['trim']();if(!/^image\/(png|jpe?g|gif|webp)$/['test'](ac))throw new Error('\u670D\u52A1\u5668\u8FD4\u56DE\u7684\u4E0D\u662F\u652F\u6301\u7684\u56FE\u7247:\x20'+(ac||'\u672A\u77E5\u7C7B\u578B'));let ad=Buffer[eM(0xc7)](await ab[eM(0x2a7)]());if(!ad[eM(0x1b6)]||ad['length']>v)throw new Error(eM(0x16d));return eM(0x2df)+ac+';base64,'+ad[eM(0xd3)]('base64');}let R=eI(0x175);function V(aa){return new Promise((ab,ac)=>{const eN=b;let ad=[],ae=0x0,af=!0x1;aa['on'](eN(0x2c8),ag=>{const eO=eN;if(!af){if(ae+=ag[eO(0x1b6)],ae>y){af=!0x0,ad[eO(0x1b6)]=0x0,ac(new Error('\u8BF7\u6C42\u4F53\u8FC7\u5927'));return;}ad[eO(0xd7)](ag);}}),aa['on'](eN(0x110),()=>{const eP=eN;if(!af)try{let ag=Buffer[eP(0xea)](ad)[eP(0xd3)](eP(0x13f));ab(ag?JSON['parse'](ag):{});}catch(ah){ac(ah);}}),aa['on']('error',ac);});}function Z(aa,ab,ac){const eQ=eI;aa['statusCode']=ab,aa[eQ(0x2f4)]('Content-Type','application/json;\x20charset=utf-8'),aa[eQ(0x110)](JSON[eQ(0x23a)](ac));}function a0(aa,ab){const eR=eI;aa['writeHead'](0xc8,{'Content-Type':eR(0x156),'Cache-Control':'no-cache,\x20no-transform','Connection':'keep-alive'}),aa['flushHeaders']&&aa[eR(0x21f)](),aa[eR(0x235)](eR(0x158)+JSON[eR(0x23a)]({'type':eR(0x1a7),'reason':String(ab||'')})+'\x0a\x0a'),aa[eR(0x110)]();}function a1(aa,ab,ac){const eS=eI;try{let ad=M(ab);aa[eS(0x191)]=0xc8,aa['setHeader'](eS(0x25c),ac+';\x20charset=utf-8'),aa[eS(0x2f4)](eS(0x193),eS(0x1b8)),aa[eS(0x110)](ad);}catch{Z(aa,0x1f4,{'ok':!0x1,'message':eS(0xc4)+ab});}}function a2(aa){const eT=eI;try{let ab=require[eT(0xb2)](eT(0x34a),{'paths':[__dirname,k[eT(0x11b)](__dirname,'..')]}),ac=k[eT(0x11b)](k[eT(0x28a)](ab),eT(0x21a),eT(0x12f));aa[eT(0x191)]=0xc8,aa[eT(0x2f4)](eT(0x25c),eT(0xb5)),aa[eT(0x2f4)](eT(0x193),'no-cache'),aa['end'](e[eT(0x1a4)](ac,eT(0x13f)));}catch{Z(aa,0x194,{'ok':!0x1,'message':'@zumer/snapdom\x20\u672A\u5B89\u88C5\uFF08\u5728\x20zen-app-plugin\x20\u91CC\x20npm\x20i\x20@zumer/snapdom\uFF09'});}}function a3(aa,ab){const eU=eI;var ac=String(aa||'');return/^thor:/i['test'](ac)&&!/^thor:factory/i[eU(0x24e)](ac)&&!/黑灯工厂/[eU(0x24e)](String(ab||''));}function a4(aa,ab,ac){const eW=eI;return(()=>{const eV=b;try{return Promise[eV(0xb2)](aa());}catch(ad){return Promise[eV(0x37a)](ad);}})()[eW(0x239)](function(ad){if(ab<=0x1)throw ad;return new Promise(function(ae){setTimeout(ae,ac);})['then'](function(){return a4(aa,ab-0x1,ac);});});}function a5(aa){const eX=eI;return String(aa??'')[eX(0x2ae)](/[\u0000-\u001f\u007f]+/g,'\x20')[eX(0x2ae)](/[<>]/g,'')['trim']();}function a6(aa){const eY=eI;if(!aa||typeof aa!=eY(0xcf))return'';let ab=a5(aa['route']);if(!ab||ab[eY(0x1b6)]>0x1f4||ab[0x0]!=='/'&&ab[0x0]!=='#')return'';let ac=a5(aa[eY(0xad)]);if(ac[eY(0x1b6)]>0xc8)return'';let ad=[eY(0x358),eY(0x37b)+ab];return ac&&ad[eY(0xd7)](eY(0x2a5)+ac),ad[eY(0xd7)](eY(0x281)),ad[eY(0x11b)]('\x0a');}function a7({ROOT:aa,name:ab,aiwithRoot:ac,kooteamOrigin:ad,factoryOrigin:af,aiwithRemote:ag,mcpDisable:ah,mcpAllow:ai,gatewaySecret:aj,ai_gateway:ak}){const eZ=eI;let al=ad||'https://daily.zeto.me',am=!0x1,ao=ah===!0x1||ah===null?[]:(Array[eZ(0x39d)](ah)?ah:[eZ(0x11a)])['filter'](Boolean),ap=ai===!0x1||ai===null||Array[eZ(0x39d)](ai)&&ai['length']===0x0?[]:(Array[eZ(0x39d)](ai)?ai:['thor','chrome-devtools'])[eZ(0x135)](Boolean),aq=ap[eZ(0x1b6)]?ap:null,ar=bF=>!aq||aq[eZ(0x2b8)](bF)>-0x1,as=k['join'](m[eZ(0x1cd)](),eZ(0x272)),au=0x7530,av=Object[eZ(0x1c7)](null),aw=Object['create'](null),ax=null,ay=!0x1;ao[eZ(0xa8)](function(bF){av[bF]=!0x1;});function az(){const f0=eZ;if(!ay){ay=!0x0;try{let bF=JSON[f0(0x388)](e[f0(0x1a4)](as,f0(0x13f)));bF&&bF[f0(0x227)]===aS&&bF[f0(0xf6)]&&typeof bF['desired']==f0(0xcf)&&Object[f0(0x323)](bF[f0(0xf6)])['forEach'](function(bG){av[bG]=!!bF['desired'][bG];});}catch(bG){bG&&bG['code']!==f0(0x203)&&console[f0(0x10c)](f0(0xe5),bG&&bG['message']||bG);}Object['keys'](av)[f0(0xa8)](function(bH){ar(bH)||(av[bH]=!0x1);});}}function aA(){const f1=eZ;try{e[f1(0x2e1)](as,JSON[f1(0x23a)]({'root':aS,'desired':av}));}catch{}}function aB(bF){const f2=eZ;return ax||(ax=aC(bF)['catch'](function(){return null;})[f2(0xec)](function(bG){return ax=null,bG;}),ax);}async function aC(bF){const f3=eZ;az();let bG=bF||await aX()['catch'](function(){return null;});if(!bG)return null;let bH;try{bH=await aV(bG);}catch{return null;}for(let bI of bH){let bJ=ar(bI[f3(0xa2)])?av[bI[f3(0xa2)]]:!0x1;if(bJ===void 0x0)continue;let bK=bI[f3(0x207)];if(!(bJ?bK===f3(0x279)||bK===f3(0x228)&&Date['now']()>=(aw[bI['name']]||0x0):bK==='connected'))continue;let bL={'server':bI[f3(0xa2)],'location':{'directory':aS}};try{bJ?await bG[f3(0x2f6)][f3(0x25f)](bL):await bG['mcp'][f3(0x38b)](bL),delete aw[bI[f3(0xa2)]];}catch(bM){aw[bI[f3(0xa2)]]=Date['now']()+au,console[f3(0x10c)](f3(0x237)+(bJ?f3(0x25f):'disconnect')+'\x20'+bI[f3(0xa2)]+'\x20\u5931\u8D25:',bM&&bM['message']||bM);}}return aV(bG)[f3(0x239)](function(){return null;});}let aD=aj?String(aj):'';function aE(bF){const f4=eZ;if(ag)return!0x0;if(aD){let bI=(bF&&bF[f4(0x371)]||{})['x-aiwith-gateway'];return(Array[f4(0x39d)](bI)?bI[0x0]:bI)===aD;}let bG=bF&&bF[f4(0x1f5)]&&bF[f4(0x1f5)][f4(0x119)]||'',bH=bG[f4(0x2b8)](f4(0x1e1))===0x0?bG[f4(0x9f)](0x7):bG;return bH==='127.0.0.1'||bH===f4(0x3a1);}let aF=String(af||eZ(0x2ad))[eZ(0x2ae)](/\/+$/,''),aG=ab||'',aH={'factory':[eZ(0x10a),'task',eZ(0x23e),'startTask',eZ(0x1bb),'localResult',eZ(0x2e2),eZ(0x18c)],'factoryStory':[eZ(0x104),eZ(0x99),eZ(0x149),eZ(0x1e5),eZ(0x34b),eZ(0xed),eZ(0x27d),eZ(0x1ad),eZ(0x265),eZ(0x18c)],'factoryIssue':['issues','issue','createIssue',eZ(0x9d),eZ(0x200),'messages',eZ(0x18c)],'factoryCell':['status','connect'],'userGit':[eZ(0x10e),eZ(0xff),eZ(0xd5)]};function aI(bF,bG){const f6=eZ;let bH=bL=>{const f5=b;let bM=bF['headers'][bL[f5(0x106)]()];return Array['isArray'](bM)?bM[0x0]:bM;},bI={};bG&&(bI[f6(0x25c)]=f6(0x153));let bJ=bH(f6(0x1b2));bJ&&(bI[f6(0x32e)]=bJ),aG&&(bI['app']=aG);let bK=bH('zid');return bK&&(bI[f6(0xa7)]=bK),bI;}async function aJ(bF,bG,bH,bI){const f7=eZ;let bJ;try{bJ=await fetch(aF+bG,{'method':f7(0x2e8),'headers':aI(bI,!0x0),'body':JSON[f7(0x23a)](bH||{}),'signal':AbortSignal[f7(0x1ec)](0x7530)});}catch(bL){return Z(bF,0x1f6,{'ok':!0x1,'message':f7(0x1e8)+aF+'\uFF1A'+(bL&&bL[f7(0x2a6)]?bL['message']:String(bL))});}let bK=await bJ[f7(0xbb)]();bF[f7(0x191)]=bJ[f7(0x207)],bF[f7(0x2f4)](f7(0x25c),f7(0x31e)),bF['setHeader'](f7(0x193),'no-cache'),bF['end'](bK);}let aK=String(ak||'')[eZ(0x326)]()['replace'](/\/+$/,'');async function aL(bF,bG){const f8=eZ;if(!aK)return Z(bG,0xc8,{'ok':!0x0,'applied':!0x1,'reason':f8(0x252)});let bH=aI(bF,!0x0);if(!bH[f8(0x32e)])return Z(bG,0x191,{'ok':!0x1,'needLogin':!0x0,'message':f8(0x35e)});let bI;try{let bK=await fetch(aF+f8(0x25d),{'method':'POST','headers':bH,'body':'{}','signal':AbortSignal['timeout'](0x7530)});if(bI=await bK[f8(0x14f)]()[f8(0x239)](function(){return{};}),!bK['ok']||bI[f8(0x301)]===!0x1||typeof bI[f8(0x2d4)]=='number'&&bI[f8(0x2d4)]!==0x0)return Z(bG,bK[f8(0x207)]>=0x190?bK[f8(0x207)]:0x1f6,{'ok':!0x1,'message':bI['message']||'\u914D\u7F6E\u62C9\u53D6\u5931\u8D25'});}catch(bL){return Z(bG,0x1f6,{'ok':!0x1,'message':f8(0x2f7)+aF+'\uFF1A'+(bL&&bL[f8(0x2a6)]?bL[f8(0x2a6)]:String(bL))});}let bJ=bI[f8(0x2c8)]||{};if(!bJ[f8(0x1ba)]||!bJ[f8(0x1ba)][f8(0x1a5)]||!bJ[f8(0x1ba)]['token'])return Z(bG,0x1f6,{'ok':!0x1,'message':'\u914D\u7F6E\u670D\u52A1\u8FD4\u56DE\u4E0D\u5B8C\u6574\uFF08\u7F3A\u5C11\x20gateway.baseURL/token\uFF09'});bJ[f8(0x1ba)][f8(0x1a5)]=aK;try{s[f8(0x2cf)](ab||'',bJ),s[f8(0x38e)](aS,bJ);}catch(bM){return Z(bG,0x1f4,{'ok':!0x1,'message':f8(0x2b1)+(bM&&bM['message']?bM[f8(0x2a6)]:String(bM))});}return Z(bG,0xc8,Object['assign']({'ok':!0x0,'applied':!0x0},s[f8(0x14a)](bJ)));}async function aM(bF,bG,bH){const f9=eZ;let bI=bH[f9(0x19f)]('?')[0x0];if(bI===f9(0x159))return Z(bG,0xc8,{'ok':!0x0,'origin':aF,'app':aG});if(bF[f9(0x24a)]!==f9(0x2e8))return Z(bG,0x195,{'ok':!0x1,'message':f9(0xa1)});let bJ=bI['match'](/^\/api\/(factory[A-Za-z]*|userGit)\/([A-Za-z]+)$/);if(!bJ||!aH[bJ[0x1]]||aH[bJ[0x1]]['indexOf'](bJ[0x2])===-0x1)return Z(bG,0x194,{'ok':!0x1,'message':f9(0x336)+bI});let bK=await V(bF)[f9(0x239)](()=>({}));return bK[f9(0x2d1)]=aG,aJ(bG,bI,bK,bF);}async function aN(bF,bG,bH){const fa=eZ;let bI=bH[fa(0x19f)]('?')[0x1]||'',bJ=aI(bF,!0x1),bK=bI;bJ['Token']&&bK['indexOf']('token=')===-0x1&&(bK+=(bK?'&':'')+'token='+encodeURIComponent(bJ[fa(0x32e)])),aG&&bK['indexOf']('app=')===-0x1&&(bK+=(bK?'&':'')+fa(0x30f)+encodeURIComponent(aG));let bL;try{bL=await fetch(aF+'/sse/factory'+(bK?'?'+bK:''),{'headers':bJ});}catch(bP){return a0(bG,fa(0x1b4)+(bP&&bP[fa(0x2a6)]?bP[fa(0x2a6)]:String(bP)));}if(!bL['ok']||!bL[fa(0x206)])return a0(bG,fa(0x25a)+bL[fa(0x207)]);let bM=bL['headers']['get'](fa(0xaa))||'';if(bM[fa(0x2b8)]('text/event-stream')===-0x1){try{bL['body']['cancel']&&bL[fa(0x206)][fa(0x1e7)]();}catch{}return a0(bG,'not-sse:\x20'+bM);}bG[fa(0x3a2)](0xc8,{'Content-Type':fa(0x156),'Cache-Control':fa(0x2ab),'Connection':fa(0x26f),'X-Accel-Buffering':'no'}),bG['flushHeaders']&&bG[fa(0x21f)]();let bN=r[fa(0x2e0)](bL[fa(0x206)]),bO=()=>{const fb=fa;try{bN[fb(0xc5)]();}catch{}};bF['on'](fa(0xc0),bO),bG['on'](fa(0xc0),bO),bN['on']('error',()=>{const fc=fa;try{bG[fc(0x110)]();}catch{}}),bN[fa(0x1c8)](bG);}function aO(bF){const fd=eZ;if(typeof bF!='string'||!bF)return null;let bG=bF;return bG[fd(0x2b8)]('//')===0x0&&(bG=fd(0x17a)+bG),/^https?:\/\//i[fd(0x24e)](bG)?bG:bG[fd(0x2b8)](fd(0x315))===0x0?al+bG[fd(0x9f)](0x8):null;}function aP(bF){const fe=eZ;if(ac)return k[fe(0xb2)](bF,ac);let bG=m[fe(0x244)](),bH=k[fe(0xb2)](bF);for(let bI=0x0;bI<=0x4&&bH!==bG;bI++){if(e[fe(0x26d)](k['join'](bH,fe(0x2a9))))return bH;let bJ=k[fe(0x28a)](bH);if(bJ===bH)break;bH=bJ;}return null;}let aQ=aP(aa),aR=typeof aQ==eZ(0x2dd)&&aQ['length']>0x0,aS=k[eZ(0xb2)](aQ||aa);if(aR&&aS!==k[eZ(0xb2)](aa)&&console['log'](eZ(0x155)+aS),aR)try{if(aK){let bF=s[eZ(0x317)](ab||'');bF&&bF[eZ(0x1ba)]&&bF['gateway']['baseURL']&&(bF[eZ(0x1ba)][eZ(0x1a5)]=aK,s[eZ(0x38e)](aS,bF));}else s['removeInjected'](aS,ab||'')&&console[eZ(0x205)](eZ(0x2a8));}catch(bG){console[eZ(0x10c)]('[AiWith]\x20\u6062\u590D\x20AI\x20\u914D\u7F6E\u7F13\u5B58\u5931\u8D25:',bG&&bG[eZ(0x2a6)]);}let aT=null,aU=new Set();function aV(bH){const ff=eZ;return bH[ff(0x2f6)][ff(0x167)]({'location':{'directory':aS}})[ff(0xec)](bI=>(bI[ff(0x2c8)]||[])['map'](bJ=>({'name':bJ[ff(0xa2)],'status':bJ['status']&&bJ[ff(0x207)][ff(0x207)]||ff(0xb7),'error':bJ[ff(0x207)]&&bJ[ff(0x207)][ff(0x15c)]?String(bJ[ff(0x207)][ff(0x15c)]):''})))[ff(0x239)](bI=>(console[ff(0x10c)](ff(0x2f0),bI&&bI[ff(0x2a6)]),[]));}function aW(bH){return a4(function(){const fg=b;return bH[fg(0x347)]['list']({'location':{'directory':aS}})[fg(0xec)](function(bI){const fh=fg;if(!bI||!bI[fh(0x2c8)]||bI[fh(0x2c8)][fh(0x1b6)]===0x0)throw new Error(fh(0x195));return bI;});},0x4,0x320)['catch'](function(){return{'data':[]};});}async function aX(){const fj=eZ;return aT||(aT=(async()=>{const fi=b;let bH=await import(fi(0x380)),bI=await import(fi(0x309)),bJ=await bH[fi(0x2b4)]['ensure'](),bK=bH[fi(0x2b4)]['headers'](bJ);return bI[fi(0x1c6)][fi(0x232)]({'baseUrl':bJ['url'],'headers':bK});})()[fj(0x239)](bH=>{const fk=fj;aT=null;let bI=new Error(bH&&bH[fk(0x2a6)]?bH[fk(0x2a6)]:String(bH));throw bI[fk(0x34d)]='SERVICE_UNAVAILABLE',bI;})),aT;}function aY(bH,bI){const fl=eZ;let bJ=bI&&bI[fl(0x2a6)]?String(bI[fl(0x2a6)]):String(bI);Z(bH,0x1f7,{'ok':!0x1,'code':fl(0x29e),'message':R,'detail':bJ});}let aZ=null,b0=null,b1='deepseek-v4-flash',b2=bH=>bH[eZ(0x18f)]!=='opencode'||(bH[eZ(0x27f)]||[])[eZ(0x15d)](bI=>(bI[eZ(0x28b)]||0x0)>0x0||(bI[eZ(0x307)]||0x0)>0x0||bI[eZ(0x202)]&&((bI[eZ(0x202)][eZ(0x13e)]||0x0)>0x0||(bI['cache'][eZ(0x235)]||0x0)>0x0)),b3=bH=>(bH[eZ(0xa2)]||'')[eZ(0x106)]()['indexOf'](b1)>-0x1||(bH[eZ(0x96)]||'')[eZ(0x106)]()['indexOf'](b1)>-0x1;function b4(bH){const fm=eZ;return bH[fm(0xb0)](bI=>bI[fm(0x18f)]===fm(0x26c)&&bI['modelID']===fm(0x345))||bH[fm(0xb0)](bI=>b2(bI)&&b3(bI))||null;}async function b5(bH){let bI=await aW(bH);return b4(bI['data']||[]);}function b6(bH){return t?t({'baseDir':aS,'timeout':{'block':bH||0x7530}}):null;}function b7(bH){const fn=eZ;return typeof bH!=fn(0x2dd)||!bH||bH[0x0]==='/'||/^[a-zA-Z]:[\\/]/['test'](bH)||bH[fn(0x19f)](/[\\/]/)[fn(0x15d)](bI=>bI==='..')?null:bH;}function b8(bH,bI){const fo=eZ;let bJ=(bH[fo(0x266)]||[])[fo(0x165)](bK=>({'path':bK[fo(0x2be)],'index':bK[fo(0x215)]||'\x20','working':bK[fo(0x19a)]||'\x20'}));return{'isRepo':!0x0,'branch':bH[fo(0x349)]||bI&&bI[fo(0x349)]||'','tracking':bH[fo(0x372)]||'','ahead':bH['ahead']||0x0,'behind':bH[fo(0x133)]||0x0,'detached':!!bH[fo(0x221)],'clean':bJ[fo(0x1b6)]===0x0,'branches':bI&&bI[fo(0x312)]||[],'files':bJ};}async function b9(){const fp=eZ;let bH=b6();if(!bH)return{'isRepo':!0x1,'reason':fp(0x1d6)};if(!await bH['checkIsRepo']()['catch'](()=>!0x1))return{'isRepo':!0x1,'reason':'\u5F53\u524D\u9879\u76EE\u4E0D\u662F\x20Git\x20\u4ED3\u5E93'};let [bI,bJ]=await Promise[fp(0x312)]([bH['status'](),bH[fp(0x362)]()[fp(0x239)](()=>({'all':[],'current':''}))]);return b8(bI,bJ);}async function ba(bH,bI){const fr=eZ;let bJ=b6();if(!bJ)throw new Error('simple-git\x20\u4E0D\u53EF\u7528');let bK=bI||{},bL=()=>{const fq=b;let bM=Array['isArray'](bK[fq(0x2b9)])?bK[fq(0x2b9)]:[],bN=bM[fq(0x165)](b7)['filter'](Boolean);if(bM['length']&&!bN[fq(0x1b6)])throw new Error(fq(0x17e));return bN;};switch(bH){case fr(0x207):return{'data':await b9()};case fr(0x304):{let bM=bL();return bM[fr(0x1b6)]?await bJ[fr(0x250)](bM):await bJ[fr(0x250)](['-A']),{'data':await b9()};}case'unstage':{let bN=bL();return await bJ['reset'](bN[fr(0x1b6)]?[fr(0x398),'--',...bN]:[fr(0x398)]),{'data':await b9()};}case fr(0x112):{let bO=typeof bK[fr(0x2a6)]==fr(0x2dd)?bK[fr(0x2a6)][fr(0x326)]():'';if(!bO)throw new Error('\u63D0\u4EA4\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A');if(bO['length']>0xfa0)throw new Error(fr(0x30b));let bP=await bJ[fr(0x112)](bO);if(!bP||!bP[fr(0x112)])throw new Error(fr(0x391));return{'data':await b9(),'summary':{'text':fr(0x24b)+bP[fr(0x112)][fr(0x9f)](0x0,0x8)}};}case fr(0x2d9):{let bQ=typeof bK[fr(0x145)]=='string'?bK[fr(0x145)]:'';if(!bQ)throw new Error(fr(0x341));if(!(await bJ[fr(0x362)]())[fr(0x312)][fr(0x173)](bQ))throw new Error(fr(0x1db)+bQ);return await bJ[fr(0x2d9)](bQ),{'data':await b9(),'summary':{'text':fr(0x19d)+bQ}};}case fr(0x292):{let bR=await b6(0x1d4c0)['pull'](),bS=bR&&bR[fr(0x224)]&&bR[fr(0x224)][fr(0xa5)]||0x0;return{'data':await b9(),'summary':{'text':fr(0x2ba)+bS+'\x20\u5904\u53D8\u66F4\uFF09'}};}case fr(0xd7):{let bT=await b6(0x1d4c0)[fr(0xd7)](),bU=bT&&bT[fr(0xdd)]&&bT[fr(0xdd)][0x0]||null;return{'data':await b9(),'summary':{'text':bU?fr(0xc1)+bU[fr(0x171)]+'/'+bU['local']:fr(0x243)}};}default:throw new Error(fr(0x230)+bH);}}function bb(bH,bI){const fs=eZ;if(bH[fs(0x179)]===0x1)try{bH['send'](JSON[fs(0x23a)](bI));}catch{}}async function bc(bH,bI){const fu=eZ;if(bH===fu(0x145))return{'data':{'branch':await G(aS)}};if(typeof bH=='string'&&bH[fu(0x2b8)]('git:')===0x0)return ba(bH['slice'](0x4),bI);throw new Error(fu(0x1c9)+bH);}let bd=new Set(),bf=null,bg=0x0,bh=new Map();function bi(){const fv=eZ;if(bf&&bf[fv(0x179)]===0x1&&bd[fv(0x274)](bf))return bf;let bH=null;return bd[fv(0xa8)](bI=>{const fw=fv;bI[fw(0x179)]===0x1&&(bH=bI);}),bf=bH,bH;}function bj(bH){const fx=eZ;if(!u||!bH)return null;let bI=new u({'noServer':!0x0,'maxPayload':0x400*0x400});return bH['on'](fx(0x1d5),(bJ,bK,bL)=>{const fy=fx;let bM=(bJ[fy(0x1ac)]||'')[fy(0x19f)]('?')[0x0];if((bM===fy(0x14b)||bM===fy(0x2ed))&&!aE(bJ)){bK['destroy']();return;}if(bM===fy(0x14b)){bI[fy(0xda)](bJ,bK,bL,bN=>bI['emit'](fy(0x199),bN,bJ));return;}bM===fy(0x2ed)&&bI['handleUpgrade'](bJ,bK,bL,bN=>bI['emit'](fy(0x2c6),bN,bJ));}),bI['on'](fx(0x2c6),bJ=>{const fA=fx;let bK=setInterval(()=>{const fz=b;try{bJ[fz(0x179)]===0x1&&bJ[fz(0x3a0)]();}catch{}},0x4e20);bJ['on'](fA(0xc0),()=>clearInterval(bK)),bJ['on'](fA(0x15c),()=>clearInterval(bK)),bJ['on']('message',bL=>{const fB=fA;let bM;try{bM=JSON[fB(0x388)](String(bL));}catch{return;}if(!bM||typeof bM[fB(0x147)]!=fB(0x2dd))return;let bN=bM['id'],bO=Object[fB(0x34e)]({},bM);delete bO['id'],delete bO[fB(0x147)],bc(bM[fB(0x147)],bO)[fB(0xec)](bP=>bb(bJ,Object[fB(0x34e)]({'id':bN,'ok':!0x0},bP)))[fB(0x239)](bP=>bb(bJ,{'id':bN,'ok':!0x1,'message':bP&&bP[fB(0x2a6)]||String(bP)}));});}),bI['on'](fx(0x199),bJ=>{const fC=fx;bd[fC(0x250)](bJ),bf=bJ,bJ[fC(0x17d)]=!0x0;let bK=setInterval(()=>{const fD=fC;try{if(bJ[fD(0x17d)]===!0x1){bJ[fD(0x2ce)]();return;}bJ['__aiwithAlive']=!0x1,bJ[fD(0x179)]===0x1&&bJ[fD(0x3a0)]();}catch{}},0x4e20);bJ['on'](fC(0x238),()=>{const fE=fC;bJ[fE(0x17d)]=!0x0;});let bL=()=>{const fF=fC;clearInterval(bK),bd[fF(0x306)](bJ),bf===bJ&&(bf=null);};bJ['on'](fC(0xc0),bL),bJ['on'](fC(0x15c),bL),bJ['on'](fC(0x2a6),bM=>{const fG=fC;let bN;try{bN=JSON['parse'](String(bM));}catch{return;}if(!bN)return;if(bN[fG(0x2dc)]===fG(0x123)){bJ[fG(0x26a)]={'url':bN[fG(0x1ac)],'title':bN['title'],'at':Date[fG(0x1b0)]()};return;}if(!bN['id'])return;let bO=bh[fG(0x1f1)](bN['id']);bO&&(bh['delete'](bN['id']),bO(bN));});}),bI;}function bk(bH,bI,bJ){return new Promise((bK,bL)=>{const fH=b;let bM=bi();if(!bM){bL(new Error(fH(0x287)));return;}let bN='p'+ ++bg,bO=setTimeout(()=>{const fI=fH;bh['delete'](bN),bL(new Error(fI(0xf4)));},bJ||0x4e20);bh[fH(0x39c)](bN,bP=>{clearTimeout(bO),bK(bP);});try{bM[fH(0x2e6)](JSON[fH(0x23a)]({'id':bN,'cmd':bH,'args':bI||{}}));}catch(bP){clearTimeout(bO),bh[fH(0x306)](bN),bL(bP);}});}function bl(){const fJ=eZ;let bH=[],bI=bi();return bd[fJ(0xa8)](bJ=>{const fK=fJ;let bK=bJ[fK(0x26a)]||{};bH[fK(0xd7)]({'url':bK[fK(0x1ac)]||'','title':bK[fK(0xad)]||'','active':bJ===bI,'at':bK['at']||0x0});}),{'connected':bH[fJ(0x1b6)],'activeIndex':bH['findIndex'](bJ=>bJ[fJ(0x2c7)]),'pages':bH};}function bm(bH){return new Promise(bI=>setTimeout(bI,bH));}async function bn(bH){const fL=eZ;let bI=Date[fL(0x1b0)]()+(bH||0x1388);for(;Date[fL(0x1b0)]()<bI;){let bJ=bi();if(bJ)return bJ;await bm(0x78);}return bi();}async function bo(bH,bI,bJ){const fM=eZ;let bK=Date[fM(0x1b0)]()+(bJ||0x1f40);for(;Date[fM(0x1b0)]()<bK;){await bm(0x78);let bM=bi();if(!bM)continue;let bN=bM[fM(0x26a)]&&bM['__aiwithMeta'][fM(0x1ac)]||'';if(bM!==bH||bN!==bI){await bm(0x78);let bO=bi();return bO&&bO[fM(0x26a)]&&bO['__aiwithMeta'][fM(0x1ac)]||bN;}}let bL=bi();return bL&&bL[fM(0x26a)]&&bL[fM(0x26a)][fM(0x1ac)]||'';}async function bp(bH,bI,bJ){const fN=eZ;let bK=bJ[fN(0x19f)]('?')[0x0];if(bK===fN(0x33d))return bH['method']!==fN(0x1ee)?Z(bI,0x195,{'ok':!0x1,'message':fN(0x11e)}):Z(bI,0xc8,{'ok':!0x0,'data':bl()});let bL=bK[fN(0x1d8)](/^\/api\/page\/([a-z]+)$/);if(!bL)return Z(bI,0x194,{'ok':!0x1,'message':'Not\x20Found:\x20'+bK});if(bH['method']!==fN(0x2e8))return Z(bI,0x195,{'ok':!0x1,'message':fN(0x136)});let bM=await V(bH)[fN(0x239)](()=>({})),bN=bL[0x1];if(bN===fN(0x288)){if(!String(bM&&bM['to']||'')[fN(0x326)]())return Z(bI,0x190,{'ok':!0x1,'message':fN(0x1a1)});let bO=bi();if(!bO)return Z(bI,0x1f7,{'ok':!0x1,'code':fN(0x287),'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'});let bP=bO[fN(0x26a)]&&bO['__aiwithMeta'][fN(0x1ac)]||'';try{bO[fN(0x2e6)](JSON[fN(0x23a)]({'id':'p'+ ++bg,'cmd':fN(0x288),'args':bM||{}}));}catch(bR){return Z(bI,0x1f4,{'ok':!0x1,'message':bR&&bR[fN(0x2a6)]||String(bR)});}let bQ=await bo(bO,bP,0x1f40);return Z(bI,0xc8,{'ok':!0x0,'data':{'ok':!0x0,'url':bQ}});}if(bN==='wait'){if(!await bn(0x1388))return Z(bI,0x1f7,{'ok':!0x1,'code':fN(0x287),'message':fN(0x2c0)});let bS=Math[fN(0x1e2)](Math[fN(0x1a3)](Number(bM&&bM[fN(0x1ec)])||0x3a98,0x3e8),0xea60);try{let bT=await bk(fN(0x186),Object[fN(0x34e)]({},bM,{'timeout':bS}),bS+0xbb8);return Z(bI,0xc8,{'ok':!0x0,'data':bT['data']});}catch(bU){return Z(bI,0x1f4,{'ok':!0x1,'message':bU&&bU['message']||String(bU)});}}try{let bV=await bk(bN,bM,0x61a8);return Z(bI,0xc8,{'ok':!0x0,'data':bV['data']});}catch(bW){return bW&&bW['message']===fN(0x287)?Z(bI,0x1f7,{'ok':!0x1,'code':fN(0x287),'message':fN(0x2c0)}):Z(bI,0x1f4,{'ok':!0x1,'message':bW&&bW[fN(0x2a6)]||String(bW)});}}function bq(bH){const fO=eZ;let bI=bH&&bH[fO(0x103)];if(!bI||!bH[fO(0xd8)])return;let bJ=()=>{const fP=fO;try{let bK=bI[fP(0xae)](),bL=bK&&typeof bK==fP(0xcf)?bK[fP(0x188)]:null;if(!bL)return;let bM=fP(0x397)+bL;e[fP(0x2e1)](k['join'](m[fP(0x1cd)](),fP(0x2de)),JSON['stringify']({'root':aS,'origin':bM,'at':Date[fP(0x1b0)]()})),bt(bM);}catch{}};bI['listening']&&bJ(),bI['on'](fO(0xeb),bJ);}let br='//\x20\u672C\u6587\u4EF6\u7531\x20zen-app-plugin(AiWith)\x20\u4E8E\x20dev\x20\u542F\u52A8\u65F6\u81EA\u52A8\u751F\u6210\uFF0C\u8BF7\u52FF\u624B\u6539\u3002';function bs(){const fQ=eZ;let bH=k[fQ(0x28a)](aS);for(;bH&&bH!==k[fQ(0x28a)](bH);){let bI=k[fQ(0x11b)](bH,fQ(0x38a),fQ(0x310),fQ(0x20d));try{let bJ=k[fQ(0x11b)](bI,fQ(0xdc));e[fQ(0x26d)](bJ)&&e[fQ(0x1a4)](bJ,'utf8')['indexOf'](br)===0x0&&(e[fQ(0x293)](bI,{'recursive':!0x0,'force':!0x0}),console[fQ(0x10c)]('[AiWith]\x20\u5DF2\u6E05\u7406\u7956\u5148\u76EE\u5F55\u7684\u8FC7\u671F\u9875\u5185\u63D2\u4EF6\uFF08\u907F\u514D\u4E0E\u5F53\u524D\u5DE5\u7A0B\u91CD\u540D\uFF09:\x20'+bI));}catch{}bH=k[fQ(0x28a)](bH);}}function bt(bH){const fR=eZ;try{bs();let bI=M(fR(0x1c1)),bJ=br+fR(0x27e)+bH+'\x0a'+bI[fR(0x197)](fR(0xac),bH),bK=k['join'](aS,'.opencode',fR(0x310),fR(0x20d)),bL=k[fR(0x11b)](bK,fR(0xdc)),bM=null;try{bM=e['readFileSync'](bL,fR(0x13f));}catch{bM=null;}if(bM===bJ)return;e['mkdirSync'](bK,{'recursive':!0x0}),e[fR(0x2e1)](bL,bJ);}catch{}}async function bu(bH){const fS=eZ;let bI=await b5(bH)[fS(0x239)](()=>null);return aZ=await bH[fS(0x1d0)]['create']({'agent':'build',...bI?{'model':{'id':bI[fS(0x96)],'providerID':bI[fS(0x18f)]}}:{},'location':{'directory':aS}}),bI||console['warn'](fS(0x278)+b1+fS(0x9e)),aZ;}async function bv(bH){const fT=eZ;let bI=((await bH['session'][fT(0x167)]({'directory':aS,'limit':0x14,'order':fT(0x350)})[fT(0x239)](()=>({'data':[]})))[fT(0x2c8)]||[])[fT(0xb0)](bJ=>!bJ[fT(0x108)]);return bI?(aZ=bI,console[fT(0x205)]('[AiWith]\x20\u6062\u590D\u6700\u8FD1\u4F1A\u8BDD\x20'+bI['id']),bI):bu(bH);}async function bw(bH){const fU=eZ;if(aZ){let bI=await bH[fU(0x1d0)][fU(0x1f1)]({'sessionID':aZ['id']})[fU(0x239)](()=>null);if(bI)return bI;aZ=null;}return b0||(b0=bv(bH)[fU(0x2db)](()=>{b0=null;})),b0;}async function bx(bH,bI,bJ){const fV=eZ;let bK=await aX(),bL=bJ[fV(0x19f)]('?')[0x0],bM=bO=>bL[fV(0x1d8)](bO),bN;if(bH[fV(0x24a)]==='GET'&&bL===fV(0x2d6)){let [bO,bP,bQ,bR,bS,bT,bU]=await Promise[fV(0x312)]([bK[fV(0x300)][fV(0x36c)]()[fV(0x239)](bY=>(console[fV(0x10c)](fV(0x2fa),bY&&bY[fV(0x2a6)]),null)),bK[fV(0xd4)][fV(0x167)]({'location':{'directory':aS}})['catch'](bY=>(console[fV(0x10c)]('[AiWith]\x20agent.list\x20failed:',bY&&bY['message']),{'data':[]})),aW(bK),aV(bK),bK['command']['list']({'location':{'directory':aS}})[fV(0x239)](bY=>(console[fV(0x10c)](fV(0xdf),bY&&bY[fV(0x2a6)]),{'data':[]})),bK['session'][fV(0x2c7)]()[fV(0x239)](bY=>(console[fV(0x10c)](fV(0x2b5),bY&&bY[fV(0x2a6)]),{})),G(aS)]),bV=(bQ[fV(0x2c8)]||[])['filter'](bY=>bY[fV(0x120)]!==!0x1),bW=b4(bV),bX=bY=>({'providerID':bY[fV(0x18f)],'modelID':bY['modelID'],'name':bY[fV(0xa2)],'contextLimit':bY[fV(0x32c)]?bY['limit']['context']:0x0,'variants':(bY['variants']||[])[fV(0x165)](bZ=>bZ['id']),'paid':b2(bY)});return Z(bI,0xc8,{'ok':!0x0,'root':aS,'name':ab,'server':bO,'mcp':bR,'running':Object[fV(0x323)](bT||{}),'branch':bU||'','models':bV['map'](bX),'defaultModel':bW?bX(bW):null,'agents':(bP['data']||[])[fV(0x135)](bY=>!bY[fV(0x39a)])[fV(0x165)](bY=>({'id':bY['id'],'name':bY['name'],'description':bY[fV(0x338)],'mode':bY[fV(0x2e9)]})),'commands':(bS['data']||[])[fV(0x135)](bY=>a3(bY['name'],bY[fV(0x338)]))[fV(0x165)](bY=>({'name':bY[fV(0xa2)],'description':bY[fV(0x338)]||''}))});}if(bH['method']===fV(0x1ee)&&bL===fV(0x2e5)){let bY=await bK[fV(0x2fb)]['list']({'location':{'directory':aS}});return Z(bI,0xc8,{'ok':!0x0,'data':(bY[fV(0x2c8)]||[])[fV(0x135)](bZ=>a3(bZ[fV(0xa2)],bZ[fV(0x338)]))[fV(0x165)](bZ=>({'name':bZ[fV(0xa2)],'description':bZ[fV(0x338)]||''}))});}if(bH[fV(0x24a)]===fV(0x1ee)&&bL===fV(0xbe)){let bZ=bJ['split']('?')[0x1]||'',c0=decodeURIComponent((bZ[fV(0x1d8)](/(?:^|&)query=([^&]*)/)||[])[0x1]||''),c1=(bZ[fV(0x1d8)](/(?:^|&)type=(file|directory)/)||[])[0x1],c2=await bK[fV(0x13b)][fV(0xb0)]({'location':{'directory':aS},'query':c0,...c1?{'type':c1}:{},'limit':0x1e});return Z(bI,0xc8,{'ok':!0x0,'data':(c2['data']||[])[fV(0x165)](c3=>({'path':c3[fV(0x2be)],'type':c3[fV(0x2dc)]}))});}if(bH['method']===fV(0x1ee)&&bL===fV(0x1a6)){let c3=bJ[fV(0x19f)]('?')[0x1]||'',c4=decodeURIComponent((c3[fV(0x1d8)](/(?:^|&)path=([^&]*)/)||[])[0x1]||''),c5=c4[fV(0x2e4)](fV(0x10f))?c4['slice'](0x7):c4;if(/^\//[fV(0x24e)](c5)){let c6=k['resolve'](c5);if(c6!==aS&&!c6[fV(0x2e4)](aS+k[fV(0x2b0)]))return Z(bI,0x190,{'ok':!0x1,'message':fV(0x20c)});c5=k[fV(0x9b)](aS,c6);}if(c5=c5['replace'](/^\.\//,''),!c5||c5[fV(0x19f)]('/')[fV(0x15d)](c7=>c7==='..'||c7===''))return Z(bI,0x190,{'ok':!0x1,'message':fV(0x30a)});try{let c7=Buffer[fV(0xc7)](await bK[fV(0x13b)]['read']({'location':{'directory':aS},'path':c5})),c8=c7[fV(0x1b6)];if(c7[fV(0x11d)](0x0,0x2000)[fV(0x173)](0x0))return Z(bI,0xc8,{'ok':!0x0,'data':{'path':c5,'binary':!0x0,'size':c8}});let c9=0x100*0x400,ca=c8>c9?c7[fV(0x11d)](0x0,c9):c7;return Z(bI,0xc8,{'ok':!0x0,'data':{'path':c5,'size':c8,'truncated':ca['length']<c8,'text':ca[fV(0xd3)](fV(0x13f))}});}catch(cb){return Z(bI,0x194,{'ok':!0x1,'message':fV(0x12e)+(cb&&cb[fV(0x2a6)]?cb[fV(0x2a6)]:String(cb))});}}if(bH['method']==='GET'&&bL==='/api/mcp'){let cc=am?await aB(bK)[fV(0x239)](function(){return null;}):null;return Z(bI,0xc8,{'ok':!0x0,'data':cc||await aV(bK)});}if(bH[fV(0x24a)]===fV(0x1ee)&&bL===fV(0x240)){let cd=Date[fV(0x1b0)](),cf=cd-0x2d0*0xe10*0x3e8,cg=[];try{let ch=await bK[fV(0x1d0)][fV(0xab)]({'from':cf,'to':cd,'tools':fV(0xc6)});cg=(ch&&ch[fV(0x291)]||[])[fV(0x165)](ci=>{const fW=fV;let cj=ci[fW(0x377)]||{},ck=cj[fW(0x202)]||{};return{'providerID':ci['model']?ci[fW(0x347)][fW(0x18f)]:'','modelID':ci[fW(0x347)]?ci[fW(0x347)]['id']:'','steps':ci[fW(0x353)]||0x0,'tokens':(cj[fW(0x28b)]||0x0)+(cj[fW(0x307)]||0x0)+(cj[fW(0x390)]||0x0)+(ck[fW(0x13e)]||0x0)+(ck[fW(0x235)]||0x0)};})[fV(0x135)](ci=>ci[fV(0x18f)]&&ci[fV(0x96)]);}catch(ci){console[fV(0x10c)](fV(0x187),ci&&ci[fV(0x2a6)]);}return Z(bI,0xc8,{'ok':!0x0,'data':cg});}if(bH['method']===fV(0x2e8)&&bL===fV(0x37c)){let cj=await V(bH)[fV(0x239)](function(){return{};}),ck=String(cj&&cj['name']||'');if(!ck)return Z(bI,0x190,{'ok':!0x1,'message':fV(0xb6)});if(cj['on']&&!ar(ck))return Z(bI,0x193,{'ok':!0x1,'message':fV(0xb3)+ck+fV(0x308)});av[ck]=!!cj['on'],delete aw[ck],ay=!0x0,aA();let cl=await aB(bK)[fV(0x239)](function(){return null;});return Z(bI,0xc8,{'ok':!0x0,'data':cl||await aV(bK)});}if(bH[fV(0x24a)]===fV(0x1ee)&&bL===fV(0x294)){let cm=await bw(bK);return Z(bI,0xc8,{'ok':!0x0,'data':cm});}if(bH[fV(0x24a)]===fV(0x1ee)&&bL===fV(0x29b)){let co=await bK['session']['list']({'directory':aS,'limit':0x1e,'order':fV(0x350)});return Z(bI,0xc8,{'ok':!0x0,'data':(co[fV(0x2c8)]||[])['filter'](cp=>!cp[fV(0x108)])[fV(0x165)](cp=>({'id':cp['id'],'title':cp[fV(0xad)]||'','agent':cp['agent']||'','time':cp['time']||{},'cost':cp['cost']||0x0,'tokens':cp[fV(0x377)]||null}))});}if(bH[fV(0x24a)]===fV(0x2e8)&&bL===fV(0x18a)){let cp=await V(bH);if(!cp[fV(0x115)]||typeof cp[fV(0x115)]!='string')return Z(bI,0x190,{'ok':!0x1,'message':fV(0x331)});let cq=await bK['session'][fV(0x1f1)]({'sessionID':cp[fV(0x115)]});return!cq||!cq['location']||cq['location'][fV(0x21e)]!==aS?Z(bI,0x193,{'ok':!0x1,'message':fV(0xf7)}):(aZ=cq,Z(bI,0xc8,{'ok':!0x0,'data':cq}));}if(bH[fV(0x24a)]==='POST'&&bL===fV(0x31a)){let cr=await bu(bK);return Z(bI,0xc8,{'ok':!0x0,'data':cr});}if(bN=bM(/^\/api\/session\/([^/]+)$/)){let cs=bN[0x1];if(bH[fV(0x24a)]===fV(0x1ee)){let cu=await bK[fV(0x1d0)][fV(0x1f1)]({'sessionID':cs});return Z(bI,0xc8,{'ok':!0x0,'data':cu});}return bH[fV(0x24a)]===fV(0x1e0)?(await bK[fV(0x1d0)][fV(0x399)]({'sessionID':cs}),aZ&&aZ['id']===cs&&(aZ=null),Z(bI,0xc8,{'ok':!0x0})):Z(bI,0x195,{'ok':!0x1,'message':fV(0x2d5)});}if((bN=bM(/^\/api\/session\/([^/]+)\/messages$/))&&bH[fV(0x24a)]===fV(0x1ee)){let cv=bJ['split']('?')[0x1]||'',cw=Number((cv['match'](/(?:^|&)limit=(\d+)/)||[])[0x1]||0x0),cx=cw>0x0?Math[fV(0x1e2)](cw,0xc8):0xc8,cy=(cv[fV(0x1d8)](/(?:^|&)order=(asc|desc)/)||[])[0x1],cz=decodeURIComponent((cv[fV(0x1d8)](/(?:^|&)cursor=([^&]*)/)||[])[0x1]||''),cA={'sessionID':bN[0x1],'limit':cx};cz?cA[fV(0x210)]=cz:cA[fV(0x15f)]=cy||'asc';let cB=await bK[fV(0x2a6)][fV(0x167)](cA);return Z(bI,0xc8,{'ok':!0x0,'data':cB[fV(0x2c8)]||[],'cursor':cB[fV(0x210)]});}if((bN=bM(/^\/api\/session\/([^/]+)\/prompt$/))&&bH['method']===fV(0x2e8)){let cC=await V(bH);if(!cC[fV(0xbb)]||typeof cC[fV(0xbb)]!='string')return Z(bI,0x190,{'ok':!0x1,'message':fV(0x24d)});let cD=[],cE=Array[fV(0x39d)](cC[fV(0x396)])?cC[fV(0x396)]:[];if(cE['length']>0x5)return Z(bI,0x190,{'ok':!0x1,'message':fV(0x12a)});let cF=[];for(let cK of cE){let cL=aO(cK);if(!cL||!F(cL))return Z(bI,0x190,{'ok':!0x1,'message':fV(0x344)});cF[fV(0xd7)](cL);}if(cF[fV(0x1b6)]){let cM=await Promise[fV(0x312)](cF[fV(0x165)](async cN=>{const fX=fV;let cO=await Q(cN),cP=fX(0x248);try{cP=decodeURIComponent(cN['split']('?')[0x0][fX(0x19f)]('/')[fX(0x28e)]()||'')[fX(0x9f)](0x0,0x78)||fX(0x248);}catch{}return{'uri':cO,'name':cP};}));cD[fV(0xd7)](...cM);}let cG=Array[fV(0x39d)](cC[fV(0x31d)])?cC[fV(0x31d)]:[];for(let cN of cG){if(!cN||typeof cN[fV(0x2be)]!=fV(0x2dd)||!cN[fV(0x2be)])continue;let cO=k[fV(0xb2)](aS,cN['path']);cO!==aS&&cO[fV(0x2b8)](aS+k[fV(0x2b0)])!==0x0||cD[fV(0xd7)]({'uri':fV(0x10f)+cO,'name':cN[fV(0x2be)],...cN[fV(0x338)]?{'description':cN[fV(0x338)]}:{},...cN[fV(0x385)]?{'mention':cN[fV(0x385)]}:{}});}let cH=cC[fV(0x1b7)]==='steer'||cC['delivery']==='queue'?cC[fV(0x1b7)]:void 0x0,cI=a6(cC['pageContext']),cJ=await bK[fV(0x1d0)]['prompt']({'sessionID':bN[0x1],'text':cI?cC[fV(0xbb)]+'\x0a\x0a'+cI:cC[fV(0xbb)],...cD[fV(0x1b6)]?{'files':cD}:{},...cF[fV(0x1b6)]?{'metadata':{'images':cF}}:{},...cH?{'delivery':cH}:{}});return Z(bI,0xc8,{'ok':!0x0,'data':cJ});}if((bN=bM(/^\/api\/session\/([^/]+)\/command$/))&&bH[fV(0x24a)]===fV(0x2e8)){let cP=await V(bH);return!cP[fV(0xa2)]||typeof cP[fV(0xa2)]!=fV(0x2dd)?Z(bI,0x190,{'ok':!0x1,'message':fV(0x36d)}):(await bK['session']['command']({'sessionID':bN[0x1],'name':cP[fV(0xa2)],'text':typeof cP[fV(0xbb)]==fV(0x2dd)?cP[fV(0xbb)]:'',...Array[fV(0x39d)](cP[fV(0x266)])&&cP[fV(0x266)][fV(0x1b6)]?{'files':cP[fV(0x266)]}:{}}),Z(bI,0xc8,{'ok':!0x0}));}if((bN=bM(/^\/api\/session\/([^/]+)\/shell$/))&&bH[fV(0x24a)]===fV(0x2e8)){let cQ=await V(bH);return!cQ[fV(0x2fb)]||typeof cQ[fV(0x2fb)]!=fV(0x2dd)?Z(bI,0x190,{'ok':!0x1,'message':fV(0x35c)}):(await bK[fV(0x1d0)][fV(0x12b)]({'sessionID':bN[0x1],'command':cQ['command']}),Z(bI,0xc8,{'ok':!0x0}));}if((bN=bM(/^\/api\/session\/([^/]+)\/compact$/))&&bH[fV(0x24a)]===fV(0x2e8)){let cR=await V(bH)[fV(0x239)](()=>({})),cS=cR[fV(0x1b7)]===fV(0xf2)||cR['delivery']===fV(0x2ec)?cR[fV(0x1b7)]:'queue',cT=await bK[fV(0x1d0)]['compact']({'sessionID':bN[0x1],'delivery':cS});return Z(bI,0xc8,{'ok':!0x0,'data':cT});}if((bN=bM(/^\/api\/session\/([^/]+)\/revert\/stage$/))&&bH[fV(0x24a)]==='POST'){let cU=await V(bH);if(!cU[fV(0x35a)]||typeof cU[fV(0x35a)]!='string')return Z(bI,0x190,{'ok':!0x1,'message':fV(0x31f)});let cV=await bK[fV(0x1d0)]['revert'][fV(0x304)]({'sessionID':bN[0x1],'messageID':cU['messageID']});return Z(bI,0xc8,{'ok':!0x0,'data':cV});}if((bN=bM(/^\/api\/session\/([^/]+)\/revert\/clear$/))&&bH[fV(0x24a)]==='POST')return await bK[fV(0x1d0)]['revert'][fV(0x261)]({'sessionID':bN[0x1]}),Z(bI,0xc8,{'ok':!0x0});if((bN=bM(/^\/api\/session\/([^/]+)\/revert\/commit$/))&&bH['method']===fV(0x2e8))return await bK[fV(0x1d0)][fV(0x132)][fV(0x112)]({'sessionID':bN[0x1]}),Z(bI,0xc8,{'ok':!0x0});if((bN=bM(/^\/api\/session\/([^/]+)\/diff$/))&&bH[fV(0x24a)]===fV(0x1ee)){let cW=await bK[fV(0x1d0)][fV(0xba)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':cW||[]});}if((bN=bM(/^\/api\/session\/([^/]+)\/children$/))&&bH[fV(0x24a)]===fV(0x1ee)){let cX=await bK[fV(0x1d0)][fV(0x167)]({'parentID':bN[0x1],'limit':0x14,'order':'asc'})[fV(0x239)](()=>({'data':[]}));return Z(bI,0xc8,{'ok':!0x0,'data':(cX[fV(0x2c8)]||[])[fV(0x165)](cY=>({'id':cY['id'],'title':cY[fV(0xad)]||'','agent':cY['agent']||'','outcome':cY[fV(0x381)]||'','time':cY[fV(0x229)]||{}}))});}if((bN=bM(/^\/api\/session\/([^/]+)\/forms$/))&&bH['method']===fV(0x1ee)){let cY=await bK[fV(0x1d0)][fV(0x383)][fV(0x167)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':cY||[]});}if((bN=bM(/^\/api\/session\/([^/]+)\/forms\/([^/]+)$/))&&bH[fV(0x24a)]===fV(0x1ee)){let cZ=await bK[fV(0x1d0)][fV(0x383)][fV(0x1f1)]({'sessionID':bN[0x1],'formID':bN[0x2]});return Z(bI,0xc8,{'ok':!0x0,'data':cZ});}if((bN=bM(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/reply$/))&&bH[fV(0x24a)]===fV(0x2e8)){let d0=await V(bH);return!d0[fV(0x1ae)]||typeof d0[fV(0x1ae)]!=fV(0xcf)?Z(bI,0x190,{'ok':!0x1,'message':fV(0x101)}):(await bK['session'][fV(0x383)]['reply']({'sessionID':bN[0x1],'formID':bN[0x2],'answer':d0['answer']}),Z(bI,0xc8,{'ok':!0x0}));}if((bN=bM(/^\/api\/session\/([^/]+)\/forms\/([^/]+)\/cancel$/))&&bH[fV(0x24a)]===fV(0x2e8)){let d1=await V(bH)[fV(0x239)](()=>({}));return await bK[fV(0x1d0)]['form'][fV(0x1e7)]({'sessionID':bN[0x1],'formID':bN[0x2],...d1[fV(0x2a6)]?{'message':d1[fV(0x2a6)]}:{}}),Z(bI,0xc8,{'ok':!0x0});}if((bN=bM(/^\/api\/session\/([^/]+)\/inbox$/))&&bH[fV(0x24a)]===fV(0x1ee)){let d2=await bK['session'][fV(0xaf)][fV(0x167)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':d2||[]});}if((bN=bM(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/delivery$/))&&bH[fV(0x24a)]===fV(0x2e8)){let d3=await V(bH);return d3[fV(0x1b7)]!==fV(0xf2)&&d3[fV(0x1b7)]!==fV(0x2ec)?Z(bI,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20delivery'}):(await bK[fV(0x1d0)][fV(0xaf)]['update']({'sessionID':bN[0x1],'inboxID':bN[0x2],'delivery':d3['delivery']}),Z(bI,0xc8,{'ok':!0x0}));}if((bN=bM(/^\/api\/session\/([^/]+)\/inbox\/([^/]+)\/cancel$/))&&bH[fV(0x24a)]==='POST')return await bK[fV(0x1d0)][fV(0xaf)][fV(0x1e7)]({'sessionID':bN[0x1],'inboxID':bN[0x2]}),Z(bI,0xc8,{'ok':!0x0});if((bN=bM(/^\/api\/session\/([^/]+)\/title$/))&&bH[fV(0x24a)]===fV(0x2e8)){let d4=await V(bH);if(typeof d4[fV(0xad)]!=fV(0x2dd)||!d4[fV(0xad)][fV(0x326)]())return Z(bI,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20title'});await bK[fV(0x1d0)][fV(0x139)]({'sessionID':bN[0x1],'title':d4[fV(0xad)][fV(0x326)]()});let d5=await bK['session'][fV(0x1f1)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':d5});}if((bN=bM(/^\/api\/session\/([^/]+)\/interrupt$/))&&bH[fV(0x24a)]===fV(0x2e8)){let d6=await bK[fV(0x1d0)][fV(0x351)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':d6});}if((bN=bM(/^\/api\/session\/([^/]+)\/agent$/))&&bH[fV(0x24a)]==='POST'){let d7=await V(bH);if(!d7[fV(0xd4)]||typeof d7[fV(0xd4)]!=fV(0x2dd))return Z(bI,0x190,{'ok':!0x1,'message':'\u53C2\u6570\u9519\u8BEF:\x20agent'});await bK[fV(0x1d0)]['switchAgent']({'sessionID':bN[0x1],'agent':d7['agent']});let d8=await bK['session'][fV(0x1f1)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':d8});}if((bN=bM(/^\/api\/session\/([^/]+)\/model$/))&&bH['method']===fV(0x2e8)){let d9=await V(bH);if(!d9[fV(0x347)]||!d9['model']['id']||!d9['model'][fV(0x18f)])return Z(bI,0x190,{'ok':!0x1,'message':fV(0x30c)});await bK['session']['switchModel']({'sessionID':bN[0x1],'model':{'id':d9[fV(0x347)]['id'],'providerID':d9['model'][fV(0x18f)],...d9['model']['variant']?{'variant':d9[fV(0x347)][fV(0x16f)]}:{}}}),am&&aR&&bB(bK,d9[fV(0x347)])[fV(0x239)](()=>{});let da=await bK[fV(0x1d0)][fV(0x1f1)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':da});}if((bN=bM(/^\/api\/session\/([^/]+)\/permissions$/))&&bH[fV(0x24a)]===fV(0x1ee)){let db=await bK['permission'][fV(0x167)]({'sessionID':bN[0x1]});return Z(bI,0xc8,{'ok':!0x0,'data':db||[]});}if((bN=bM(/^\/api\/session\/([^/]+)\/permissions\/([^/]+)\/reply$/))&&bH[fV(0x24a)]===fV(0x2e8)){let dc=await V(bH);return[fV(0x357),fV(0x1c4),fV(0x37a)][fV(0x2b8)](dc['decision'])===-0x1?Z(bI,0x190,{'ok':!0x1,'message':fV(0x2aa)}):(await bK[fV(0x152)][fV(0x1e6)]({'sessionID':bN[0x1],'requestID':bN[0x2],'decision':dc[fV(0xbc)]}),Z(bI,0xc8,{'ok':!0x0}));}return bL==='/api/events'?by(bH,bI,bK,bJ):Z(bI,0x194,{'ok':!0x1,'message':fV(0x247)+bJ});}async function by(bH,bI,bJ,bK){const fY=eZ;let bL=bK['split']('?')[0x1]||'',bM=decodeURIComponent((bL[fY(0x1d8)](/(?:^|&)session=([^&]*)/)||[])[0x1]||'');bI[fY(0x3a2)](0xc8,{'Content-Type':fY(0x31b),'Cache-Control':fY(0x2ab),'Connection':fY(0x26f),'X-Accel-Buffering':'no'}),bI[fY(0x21f)]&&bI[fY(0x21f)](),bI['write'](fY(0x131));let bN=setInterval(()=>{const fZ=fY;try{bI['write'](fZ(0x264));}catch{}},0x3a98),bO=!0x1,bP=bJ[fY(0x325)][fY(0x18b)]()[Symbol[fY(0x327)]](),bQ=()=>{const g0=fY;bP[g0(0x118)]&&Promise[g0(0xb2)](bP['return']())[g0(0x239)](()=>{});},bR=()=>{const g1=fY;bO=!0x0,clearInterval(bN),aU[g1(0x306)](bI),bQ();};bH['on'](fY(0xc0),bR),bI['on']('close',bR),aU['add'](bI);try{for(;!bO;){let bS=await bP['next']();if(bS[fY(0x295)]||bO)break;let bT=bS[fY(0x98)];if(!bT)continue;let bU=bT[fY(0x2dc)]||'',bV=bT[fY(0x2c8)]||{},bW=bU[fY(0x2b8)]('permission.')===0x0;bM&&!bW&&bV[fY(0x115)]&&bV[fY(0x115)]!==bM||bI[fY(0x235)](fY(0x158)+JSON[fY(0x23a)]({'type':bU,'data':bV})+'\x0a\x0a');}}catch{}finally{if(clearInterval(bN),bQ(),!bO)try{bI[fY(0x110)]();}catch{}}}function bz(bH,bI){const g2=eZ;let bJ=bH['url']||'/';if(!aE(bH))return Z(bI,0x193,{'ok':!0x1,'message':g2(0x27c)});if(bJ===g2(0x2cc))return a1(bI,g2(0x1ef),g2(0x286));if(bJ===g2(0x2ca))return a1(bI,g2(0x387),'text/html');if(bJ==='/panel.css')return a1(bI,g2(0x19b),g2(0x1e4));if(bJ==='/panel.js')return a1(bI,'panel.js',g2(0x286));if(bJ===g2(0x236))return a1(bI,'factory.css','text/css');if(bJ===g2(0x16a))return a1(bI,g2(0x2f9),g2(0x286));if(bJ===g2(0x359))return a1(bI,g2(0xcc),g2(0x1e4));if(bJ===g2(0x22e))return a1(bI,'debug.js',g2(0x286));if(bJ==='/account.css')return a1(bI,g2(0x1ca),g2(0x1e4));if(bJ===g2(0x26b))return a1(bI,g2(0x117),g2(0x286));if(bJ===g2(0x169))return a1(bI,g2(0x166),'text/css');if(bJ==='/viewer.js')return a1(bI,'viewer.js',g2(0x286));if(bJ===g2(0x29c))return a1(bI,g2(0xc2),g2(0x286));if(bJ===g2(0x162))return a1(bI,g2(0x163),g2(0x286));if(bJ===g2(0x342))return a2(bI);if(bJ[g2(0x19f)]('?')[0x0][g2(0x2b8)](g2(0x24c))===0x0){bp(bH,bI,bJ)[g2(0x239)](bK=>{const g3=g2;if(bI[g3(0x2da)]){try{bI['end']();}catch{}return;}Z(bI,0x1f4,{'ok':!0x1,'message':bK&&bK['message']?bK[g3(0x2a6)]:String(bK)});});return;}if(bJ[g2(0x19f)]('?')[0x0]===g2(0x124)){aL(bH,bI)[g2(0x239)](bK=>{const g4=g2;if(bI['headersSent']){try{bI[g4(0x110)]();}catch{}return;}Z(bI,0x1f4,{'ok':!0x1,'message':bK&&bK['message']?bK[g4(0x2a6)]:String(bK)});});return;}if(bJ[g2(0x19f)]('?')[0x0][g2(0x2b8)](g2(0x10d))===0x0){(bJ[g2(0x19f)]('?')[0x0]===g2(0x258)?aN(bH,bI,bJ):aM(bH,bI,bJ))[g2(0x239)](bK=>{const g5=g2;if(bI[g5(0x2da)]){try{bI[g5(0x110)]();}catch{}return;}Z(bI,0x1f4,{'ok':!0x1,'message':bK&&bK[g5(0x2a6)]?bK[g5(0x2a6)]:String(bK)});});return;}if(bJ[g2(0x2b8)]('/api/')===0x0){bx(bH,bI,bJ)[g2(0x239)](bK=>{const g6=g2;if(bI[g6(0x2da)]){try{bI['end']();}catch{}return;}if(bK&&bK[g6(0x34d)]==='SERVICE_UNAVAILABLE')return aY(bI,bK);let bL=bK&&bK['message']?bK['message']:String(bK),bM=/not found|NoSuchKey|no such/i['test'](bL);Z(bI,bM?0x194:0x1f4,{'ok':!0x1,'message':bL});});return;}Z(bI,0x194,{'ok':!0x1,'message':g2(0x247)+bJ});}let bA=null;async function bB(bH,bI){const g7=eZ;let bJ=((await aW(bH))[g7(0x2c8)]||[])[g7(0x135)](bN=>bN['enabled']!==!0x1),bK=bI?bJ[g7(0xb0)](bN=>bN[g7(0x18f)]===bI[g7(0x18f)]&&bN[g7(0x96)]===bI['id']):b4(bJ),bL=bK&&bK[g7(0x32c)]&&bK[g7(0x32c)][g7(0x37e)];if(!bL)return;let bM=s[g7(0x277)](bL);s['ensureCompactionDefault'](aS,bM)&&console[g7(0x205)](g7(0x157)+(bI?bI[g7(0x18f)]+'/'+bI['id']:'\u9ED8\u8BA4')+g7(0x2d8)+bL+'\uFF09\uFF1A'+(bM?JSON['stringify'](bM):g7(0x219)));}function bC(bH,bI){const g8=eZ;return am=!!(bI||{})[g8(0x231)],aX()['catch'](()=>{}),am&&aX()[g8(0xec)](async function(bJ){if(aR)try{await bB(bJ);}catch{}return aB(bJ);})[g8(0x239)](()=>{}),bA=bj(bH),bA;}function bD(){const g9=eZ;if(bA){bA[g9(0xa9)][g9(0xa8)](bH=>{const ga=g9;try{bH[ga(0x2ce)]();}catch{}});try{bA[g9(0xc0)]();}catch{}bA=null;}aU[g9(0xa8)](bH=>{const gb=g9;try{bH[gb(0xc5)]();}catch{}}),aU[g9(0x261)]();}function bE(){const gc=eZ;return[{'tag':gc(0x1d1),'attrs':{'src':gc(0x209)},'injectTo':gc(0x13c)},{'tag':'script','attrs':{'src':gc(0x15a),'defer':!0x0},'injectTo':gc(0x3a3)}];}return{'handle':bz,'attachRuntime':bC,'close':bD,'transformIndexHtml':bE,'writeDevArtifacts':bq,'writeAgentPlugin':bt,get 'root'(){return aS;},get 'rootOk'(){return aR;}};}d[eI(0x122)]={'createBridge':a7,'composePageContextSuffix':a6};}());}),Vt=pe((c,d)=>{const gd=de;Y();var {createBridge:e}=Tt();d[gd(0x122)]=function(f){const ge=gd;let g=e(f||{});return{'name':ge(0x1f4),'configureServer'(h){const gf=ge;g[gf(0x217)]&&(g[gf(0x297)](h[gf(0x103)],{'devServer':!!(h&&h['config'])}),g[gf(0xce)](h),h[gf(0x1f0)]['use'](gf(0x204),(j,k)=>g[gf(0x376)](j,k)),h['httpServer']&&h[gf(0x103)]['on'](gf(0xc0),()=>g[gf(0xc0)]()));},'transformIndexHtml'(){return g['rootOk']?g['transformIndexHtml']():[];}};};});function b(c,d){c=c-0x96;const e=a();let f=e[c];if(b['SyOimY']===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['hNXCoA']=g,b['WwOXDb']={},b['SyOimY']=!![];}const h=e[0x0],i=c+h,j=b['WwOXDb'][i];return!j?(f=b['hNXCoA'](f),b['WwOXDb'][i]=f):f=j,f;}function a(){const gj=['B25fCNjVCKnHChr1CMvK','y3jLyxrLvgfZAW','B25czwzVCMvvBM1VDw50','l2fWAs9TB2rLBc91C2fNzq','C3vIC3rY','iIaI','5BEY5O6O6ycb','Ag9TzwrPCG','zw50CNK','D2L0Ae1LBw8','tM90iezVDw5KoIa','Aw1Hz2u','zNvUy3rPB24','Bwv0Ag9K','5BEY5O+q5lQKia','l2fWAs9WywDLlW','5y+c5PwW6zsz6k+VoIb0zxH0','DgvZDa','CMvHy3rPDMu','ywrK','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4Gq29TCg9Uzw50pc9KAxy+cJWVDgvTCgXHDgu+cGO8C2nYAxb0ihnLDhvWpGO8l3nJCMLWDd4','5PYQ6ywn572UigfPx2DHDgv3yxNVViZOT7pOV4FNVzhLHBpPHy3NVA7KUiVLJ5e','EMvUlMnZCW','Aw1WB3j0xhmRkfTCDYrDkYLCCYOSxhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','iIaMjIbNEMLWic1Jici','Aw1WB3j0xhmRkfTCDYrDkYLCCYPMCM9TxhmQwYDCiL0O','y3jLyxrLu2XVDhm','l2fWAs9Mywn0B3j5l3n0CMvHBq','v2vIu29JA2v0u2vYDMvY','sfruuca','lMXVD2nVzgu','q29UDgvUDc1uExbL','l2fWAs9HAunVBMzPzY9LBNn1CMu','zxmYmde1','y29UBMvJDa','l2fWAq','y2XLyxi','iIaIAhr0Chm6lY9IlMvIDxmUDMLWl3PLDg8V','qMfZzvrYyw5ZAxrPB25qCM9WC1zHBgLKyxrVCNm','oNbPBMCkcG','y2fUy2vSu3rVCNK','zMLSzxm','y29Zrg9TywLU','zgv2zwXVCg1LBNq','y29TCg9Uzw50CW','x19HAxDPDgHnzxrH','l2fJy291BNqUANm','zgvLChnLzwS','zxHPC3rZu3LUyW','Dg9wywX1zq','A2vLCc1HBgL2zq','rxjYB3jdB2rLCW','zxHLyW','ywL3AxrOlw1JCc5QC29U','qhzVBgnLBMDPBMuVDg9ZlxnKAW','AgfZ','EMvU','lMPZB24','y29TChv0zunVBxbHy3rPB24','w0fPv2L0Af0G5PYQ5OM+5yIW6BUy6k6K5QIH5z6lia','zgLZywjSzwq','y29TCgfJDgLVBI1VD25Lzc5QC29U','AxngAwXL','qwLxAxrOioAoP+wiTUMDOUs7HEMzKoACRoACUUIUV+MxRU+8IowMGUMCGowXGowFN+E9Ks/MIyVMNlROGztOSipOR7FLVidLKk8GywL3AxrOuMvTB3rL77Yj','Dw5VCMrLCG','cI8VioEBRUAGHYbKzxyGC2vYDMvYoIa','y29ZDa','w0fPv2L0Af0GC2LTCgXLlwDPDcdKUi3LJ6/NLkJVViZLIiBMLk/LKi3LSiBKUi3MMl7NPlO6','pc9HAxDPDgGTCgfNzs1JB250zxH0pG','y2HHCKf0','DxnLvgvTCgXHDgvszwy','lMnZCW','lNzPCa','yxbWBgLJyxrPB24VAMf2yxnJCMLWDa','tK9Fuefhrq','BMf2AwDHDgu','zgvMAw5Lt3b0Aw9UCW','zgLYBMfTzq','Aw5WDxq','D2L0AefZEw5Jq29UDgv4Da','igzYB20GiI4V','Cg9W','l2nVzgvYlMH0BwW','C2v0rgv2Dg9VBhniB29R','Bw9KzwXZ','ChvSBa','CM1tEw5J','l2fWAs9ZzxnZAw9U','zg9Uzq','EMv0BY5Tzq','yxr0ywnOuNvUDgLTzq','Ahr0CdO','CxvLDwvqB3n0rMX1C2HdyG','yM9KEs1WyxjZzxi','l2fWAs9ZzxnZAw9UCW','l2HSANmUANm','Dw5SAw5Ru3LUyW','u0vsvKLdrv9vtKfwquLmqujmrq','BM9Kzv9TB2r1BgvZ','BwvYz2vqCM9WCW','y3jLyxrLu1nsqxbW','D2L0AeTLExm','z3vUEMLWu3LUyW','DxrMltG','6Ag16z2I5Qch6Aky77YA','BwvZC2fNzq','yxjYyxLcDwzMzxi','w0fPv2L0Af0G5PYQ6ywn572UigfPx2DHDgv3yxNVViZLT7lMUixNKiBMS6JLHAxNMOtNVzhLHBmGChjVDMLKzxlVViJKUi3OTBdNVzhLHBpVViK','lMDPDa','5y+c5PwW6zsz6k+VoIbKzwnPC2LVBG','BM8Ty2fJAguSig5VlxrYyw5ZzM9YBq','rwXLBwvUDfbSDxm','Ahr0Chm6lY90Ag9YlNPLDg8UBwu','CMvWBgfJzq','l2yWmq','C2vW','6ywn572U5yAz5ywL5AsX6lsL77YA','y3jLyxrLrwXLBwvUDejSB2nR','B3nZqNvJA2v0','u2vYDMLJzq','w0fPv2L0Af0GC2vZC2LVBI5Hy3rPDMuGzMfPBgvKoG','mte3mdm2nuTgwgXODG','laOj','Aw5KzxHpzG','Cgf0Ahm','5BEY5OUj5y+w77Yi','z2v0t3DUuhjVCgvYDhLoyw1LCW','DK1VzgvSvgv4Da','jZOG','Cgf0Aa','y3jLyxrLrwXLBwvUDfzoB2rL','5RkH5PYj5BEY6l+E5O6L55Qe6Ag16z2I77Yi6k+356gU6k6KigrLDIdPOBxPNAlLT7lMIzpLVidLUBBLROZMIjdLIQdOVB3VViK','C3rHDgLJ','z3PPCa','C2v0qMXVy2TuCMfJA2LUzW','B3nZrg9TywLU','CMvZB3vYy2vZ','y29UBMvJDgLVBG','ywn0AxzL','zgf0yq','EMvUlwnZCY1PBMPLy3q','l3bHBMvSlMH0BwW','BM9YBwfSAxPLq2XHC3m','l3DPzgDLDc5QCW','B3nZuMvNAw9U','DgvYBwLUyxrL','D3jPDgvdywnOzq','x19LC01VzhvSzq','yxbW','ChjVDMLKzq','DMvYC2LVBG','ywn0Aw9U','twv0Ag9Kie5VDcbbBgXVD2vK','l2fWAs9ZDgf0Dxm','z2v0t2jMDxnJyxrLzenVzgu','77Ym5lIk5lIl5PAhia','y2HLy2TVDxq','AgvHzgvYC1nLBNq','zMLUywXSEq','DhLWzq','C3rYAw5N','ywL3AxrOlxbHz2uUANnVBG','zgf0ytO','zNjVBvDLyG','D3jPDgvgAwXLu3LUyW','BwvZC2fNzxm','AhLKCMf0zu9UvMLZAwjSzq','C3rHCNrZv2L0Aa','l2fWAs9JB21Tyw5KCW','C2vUza','BwfPBG','ue9tva','Bw9Kzq','y2fTzwXdyxnL','y29UC3qGDNvLrMLSzxmGpsb7cGK','CxvLDwu','l2fPD2L0Ac93CW','lNrTCa','lNz1zsC7','w0fPv2L0Af0GBwnWlMXPC3qGzMfPBgvKoG','wMvUiefjieDHDgv3yxK','Bg9JywXLq29TCgfYzq','AhLKCMf0zq','C2v0sgvHzgvY','ChjVDg9JB2W','BwnW','5PEG5Rov6l+E5O6L6ywn572U5PYn5yQHia','B3bLBKjSB2nR','zMfJDg9YEs5QCW','w0fPv2L0Af0GC2vYDMvYlMLUzM8GzMfPBgvKoG','y29TBwfUza','lYOGz2XVyMfSia','l2rHDgf2lMH0BwW','z2v0q3vYCMvUDfDHDgnOzxi','ywn0Aw9UCW','C2vYDMvY','C3vJy2vZCW','cIaG','ls1LCNjVCI11BM1HDgnO','C3rHz2u','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','zgvSzxrL','B3v0Chv0','ios4JEwCQoEzVEwqJEwnLEwgHE+8Ig1JCefSBg9377Yj77Ym5BEY6zMq5yI25lI65PAT5BYa','qg9Wzw5JB2rLl2nSAwvUDa','5lUf5PsV5OYb6Ag555UU5yAf55U45A+56lEV5B6e','5O+q5lQK5l+H5OgV6l+h6zw/77Yi5lIk6zMqidqWmdaG5A2x77Yj','5y+c5PwW6zsz6k+VoIbTB2rLBc57AwqSChjVDMLKzxjjrh0','rgvWCMvJyxrPB25uExbLCW','DK1VzgvSq2HLy2TIB3G','yxbWpq','CgX1z2LUCW','zgvMAw5Lq29TCg9Uzw50','ywXS','DxnLtw9KzwW','DxnLu1nsq29UDgv4Da','l2TVB3rLyw0V','iJSGC3rHDhvZpsq/oYbYBsaTzIaI','CMvHzenHy2HL','jYa8l3nJCMLWDd48l2HLywq+pgjVzhK+phnJCMLWDcbZCMm9iMH0DhbZoI8VyI5LyNvZlNzPCc90Ag9Yl3yWlJaUmI9KzxrHAwWUANmIpJWVC2nYAxb0pJWVyM9KEt48l2H0BwW+','ChjVEhLszwzZ','l2fWAs9ZzxnZAw9Ul3jLC2v0','Dgv4Dc9LDMvUDc1ZDhjLyw0','cN07','BwvUDgLVBNm','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd11DgyToa','5y+c5PwW6zsz6k+VoIbTzxnZywDLsuq','Aw5PDerPCMvJDgL2zxngB3jtu1i','Axnnzw1Vu2fTzq','5lIl6l295zU+54Mh5AsX6lsLoIbivfrqia','A2v5CW','y29TCgLSzq','zxzLBNq','DhjPBq','yxn5BMnjDgvYyxrVCG','AgfUzgXLrxjYB3i','CMvM','yNvPBgq','5lIn5ywb6k6455Qe5zU+54Mh5zYW5z2a77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','BgLTAxq','EMvUlMPZ','vg9Rzw4','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','rwzMzwn0u2nVCgu','5y+c5PwW6zsz6k+VoIbZzxnZAw9Usuq','ChjVDg90ExbL','pcfet0nuwvbfigH0BwW+pgH0BwW+pgHLywq+idXTzxrHignOyxjZzxq9iNv0zI04iI8+idXTzxrHigH0DhaTzxf1Axy9iLGTvueTq29TCgf0AwjSzsiGy29UDgvUDd0Iy2HYB21LleLfpwvKz2uIlZ4Gpg1LDgeGBMfTzt0IsgfUzgHLBgrgCMLLBMrSEsiGy29UDgvUDd0IDhj1zsiVpJXSAw5RihjLBd0IAwnVBIiGAhjLzJ0Izgf0ytPPBwfNzs9Py287yMfZzty0lgfxtNyIlZ48Bwv0ysbUyw1LpsjMB3jTyxqTzgv0zwn0Aw9UiIbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IlZ4Gpg1LDgeGBMfTzt0IDMLLD3bVCNqIignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcWGAw5PDgLHBc1Zy2fSzt0XlJaSig1HEgLTDw0TC2nHBgu9ms4Wlcb1C2vYlxnJywXHyMXLptaSihvZzxiTC2nHBgfIBgu9BM8Sig1PBMLTywWTDwKSihzPzxDWB3j0lwzPDd1JB3zLCIiVpIa8Bwv0ysbUyw1LpsjYzw5KzxjLCIiGy29UDgvUDd0ID2vIA2L0iI8+idXTzxrHig5HBwu9iM1ZyxbWBgLJyxrPB24TDgfWlwHPz2HSAwDODciGy29UDgvUDd0IBM8IlZ4GphrPDgXLpKfj57Yw56Il5BYv5Poopc90AxrSzt4GphnJCMLWDcbZCMm9iI8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANmIpJWVC2nYAxb0pIa8BgLUAYbYzwW9iNn0EwXLC2HLzxqIihr5Cgu9iNrLEhqVy3nZiIbOCMvMpsiVl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYi+idXZy3jPChq+ihDPBMrVDY5JB2rLCKHVC3qGpsaIAhr0Chm6lY90Ag9YlNPLDg8UBwuIo3DPBMrVDY5HChboyw1LpsC','Aw1WB3j0xhmQxhSOw159xsOPxh1CCYPMCM9TxhmQwYDCiL0O','ndjqqMfQugW','5lIn5PsV5OYb55Qe5BEL5y6c5O6L5y+JoIa','BwvYz2vezwzHDwX0CW','zgvZy3jPChrPB24','C3jJ','5y+c5PwW6zsz6k+V','BwTKAxjtEw5J','l2nVzgvYl3DYAxrL','l2fWAs9WywDLl3n0yxr1CW','zw5KC1DPDgG','DxnLq3nZtw9KDwXL','cMv4Cg9YDcbKzwzHDwX0ihS','5y+c5PwW6zsz6k+VoIbICMfUy2G','l3nUyxbKB20UANm','vhjHBNnPDgLVBG','5zU+54Mh5zYW5z2a5lIn5zYO5ywb6k6455Qe5z+F5zcn77Yi5lUf5PsV5OYbigTVB3rLyw0G5z+F77Yj','zgvLChnLzwSTzMXHC2G','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','Bw9KzwW','zwzMzwn0','y3vYCMvUDa','qhP1BwvYl3nUyxbKB20VCgfJA2fNzs5QC29U','CMvTB3zLu3rVCNK','zgvMAw5Ltw9KzwW','y29Kzq','yxnZAwDU','q29TBwvUDa','zgvZyW','Aw50zxjYDxb0','rMfPBgvKihrVigrVD25SB2fKia','C3rLChm','zgvMAw5Lqxn5BMndB21WB25LBNq','mZy4mty5mLDsBujTzG','ChvIBgLJ','B25Jzq','pgfPD2L0Ac1WywDLlwnVBNrLEhq+','l2rLyNvNlMnZCW','BwvZC2fNzuLe','C2LTCgXLlwDPDa','5y+c5PwW6zsz6k+VoIbJB21Tyw5K','AxnsDw50Aw1Lt25SEq','5PYQ55M75B2v77YA6k+35ywi55M75B2v5zco5yAn5OUj5y+wiefjioMfJEE9RG','yxnZzxj0tNvTyMvY','y3vZDg9TuMvM','qM9KEq','yNjHBMnOtg9JywW','y2HLy2TjC1jLCg8','EMvUlw11BhrPlwvUDhj5','zgvMAw5Lu1nsq3vZDg9TrwXLBwvUDa','y3jLyxrLuMvHzfn0CMvHBq','lMPZEa','AxnqCM94Eq','zgvMAw5LuhjVChm','DhjPz2DLCLjLzG','A2v5','Aw5MBW','5y+c5PwW6zsz6k+VoIbUyw1L','Dg9ZqNvJA2v0','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','yMfZzw5HBwu','AgvHzgvYCW','DhjHy2TPBMC','C3rVCa','Dw1K','BwfYA1jHDW','AgfUzgXL','Dg9Rzw5Z','DML0zq','y3vYBca','CMvQzwn0','5B2t5yMnigrLDIdPOBxPNAlVVjO','l2fWAs9Ty3aVDg9Nz2XL','mti3mJyZmJHTC01SC04','y29UDgv4Da','ic1Vici','qg9Wzw5JB2rLl2nSAwvUDc9Zzxj2AwnL','B3v0y29Tzq','DNvL','zM9YBq','CMvUzgvY','BwvUDgLVBG','id0GD2LUzg93lG','CgfUzwWUAhrTBa','CgfYC2u','y3jLyxrLqxbW','lM9Wzw5JB2rL','zgLZy29UBMvJDa','icOV','BwfRzvnVBKLUzgv4','Aw5Qzwn0','y29TCgfJDgLVBG','CMvHC29UAw5N','5PQc5A2y5yY65lI656M677Ym5RkH5PYj5y+V5O+q5lQK55Qe5y+y5PU0','DxnLu2HHzg93uM9VDa','ih0Gpsb3Aw5KB3CU','kd86DNvLFhz1zs1YB3v0zxj8zwXLBwvUDc1WBhvZFhzHBNqP','EMvUlNDHCc5JC3m','Aw1Hz2vZ','Ahr0CdOVlZeYnY4WlJaUmtO','sevbra','CMvTB3zL','AgLKzgvU','iJSGzxHPDcaKC3rHDhvZ','C2v0','AxnbCNjHEq','y29UDgvUDc1Szw5NDgG','sdrZsufbqufbqufbrtLwwJnxnMPpqLmRmZzKqu02CLvtru5fyu1NA2nmugeXmwP0Agnhr2vhChn5nwLhre9Xn3iYEITIqu5Wvw5vDLzWvxfbCMjql3PUzK9MnMvNmhD5y2yXtdbWyxPdA3znyun3uufssY9VzMr0lZLxDNfvqufuAxrbv2Pgu1m1uKL4Du9rtJrUqxHwBNfWD3vhogH3zMvAt2nRwdzWsgXnBuLcsYTbqKryvLj3rLqWA0TZDgrdC0PYqYTbmKLAotLiuw13u2LdDe93rfDTAK02B2i2C3P1n1reAxbtDZDivMf3Ddzrsu9bnMnAAMPcC0vfmhDYsK9qrfuZlZDbBsTtm2P5BevuwhC4v3jtu25lreDOmwLNve8Vt0DlBeXpBwn5tfrAsNHNz1qVvYTkr3jSsMnRywXyk0HMs042otHhyKDStti0B2PrDe9tDtfTCdHtuuHcqMztEfjxy1vAB2HlsNbbqMnHnuveq0rfDdrSm0fhmJHyvg5WtM1Au3nQsgu4ofnWr01quJzIDLHyELz3tvjwvNrln3b2vureDtu1AeLkt0Tvmu9mnxLkDK54s1bfA3fcv0mZBNbusg9jqwXqB3ztAZa0thD0z1nNDZLrBKTAuxHXEwn6rM9trKL5qNz2tKHpudaYBdz0EuTuwdbUqMfmrwDxBhi0r1jcD2jPwwy0BKTuBeTeEe93l2rsuuz2rw1xAw5mqKXMtvLrsxbYB2XLtKXsqwPTrMe2u3L4BeW1rMnJwKnPBtDdsufUD1rhr2fok0T1BuHADNHwvNHmBLz6owPwq0LXAdLJze8RrMHPAgO5zKzqk2PHtxLiv09us3jsteX5C2DXmfHguK13wLzZvg5vC1jUsLGXCMjRnezVteiZovO3CY9qtZzryNjqtePLBvm0rZbZDLDSzKH4DNvnyxHKm0v2C0HHmxzwCtbOugrkyKvMBLnpqxDfsMPUCdjqm1zTvu5smtLpD0LxAMnHuuf0t0PbsunVDgzYy2Dvnw4WstmXmJu4m1yYBK0VAfOXEe9htwTczuXOnuHgoeTize05thi4C0DbmtvHENfsn3DIBZHSDMroAtDToxvwtLbeEtjuu3CRwLrumZr6BwP0uejItgu4t2zSC2PfEKvlthfZnLnsExPhuuCRBKLjzePrs3rsrfjRyJn2zvO2DKjUm0S0tfyXyLHMDfv2yxmYsgLOBgvLvMS3vvbku2WXmg5QC1nAmJy0mdntmtrYzurAmuu1DwiWDgvrBfvKA25YDNvwCNPInwT2rJDjogPKmLzyrLrUBe9QAKDetMDXq3i2z3LfAfnTCsT4tu9nqwi3k2rlk0jOt2nmt0Dlww1Xt2GWCxq0sJeWu0rjuKHfv1HuBKf5DfzTt1vhyLDTtxfsu2qYuwD4z1LPvKvezJbJvwDzANfPEgnTsuiRs2HcngPMvI9iEef5BLLOs0XXk3q1A2PIyJDey0DYohjnyMnqn0HXve0XscThsdLcsKjyAMn3EMnNohDsvZbHzMHAwtjAutbIwgzlm3nduuHgsKGVqMfmC09kmuGWqJn3C3r0nLyRsuT6wda1uMDtmMrYs3HwEenrsw1mm0y2nMPYr0zlodLesxLOu1uXm0T5B2rVrejbsNremevemvfPEfjSrLfissS2yJLAqwL5n2v3ytjXoeDwnhvzk1nisLnzweDotxOWAgDfoxnnB3btwsTQmxuZv25xqK5kohz5rwHJuwfns0SZCxrnvfnStJbVqM5AvNn6ufPvAZfzCKHptZf0yKTsy2zjm3HcweLdvuKVDe15rgPjC3iVsdjnt3Lcs0fJmu1Lve56AwG3DLr1DvHfwNuRstflyJe3z0TtowzAvMDuotDrEKrLCuXWBLPcudrotxnIq0fjs2ruBfa2neD3sLDJt2TwwNiVm21pC2zUtKPUnfzyAdvlmvPeBeTjsJnbmu4WouHfrLjUDeLWu0jIDJrYkZblCZvQmNzKl0jdBNKXntiZsuPYy0Xuu1zcz1i1rfbHzwW4tfGXoxzovg9fzNO4AKrXqwjVs09urgvYDfnQwLHVsdnuBgXvzLC2vMHLms81Cuv0qwPNwJHwnKzJDeT1DvvdBdbcyY8YDLLYA2Hcuuf1BcTjBLnKnwLgAc9dDZj5y3PIr01Km2eRtfr0yujtowTVv3mXr1PwvJbbshDgEvj4meXemgfqt3bvzwvyCJnxCNz0Ddj3nZjer1vgA1zdogHjrdremhrlow5rzM1gyNbvvNDjBJffD0vtugz0uJHhuu9AndDisNP0BZvPntjZDe5Zyu1MutKXmguVBNG1r1LVrfrorsTen3bHzxDHuvHyCMH1Ac8Ym0HirwnHy1bRA0zArLrKBMT1BZDfA3mRA29KrZfustjnqwP1qvPNsg05lZDsmdnQm0CZDMfdDKLKEJLeruLvt0W3zLfWBdzNvtfszMTRCe1UnK13ne0WufzKCZDHDZrwu2Hyn2vJyvPNv0SZvdfWugLVodfUCdmZte52zwXLz3uVt3PXvJnKvMzVCMTcu0zXsvzcDMqVz0TwtZf5k2rOtxr0DwPrzLbjmJm3z3PJsfbtn3m4rZbIsejgvfn6odu0AhfNrgqZzK9TtfmXnMfWt2v3s2LJtJzuDu5WvhzLq0HzExa1CMT0m3rUAxP2qM1uqI9LvxvpC3jwmfHvCsTIweP2muvoEKLTDxrgAhnvve8Vudn1wwrKq3O2Atu4wejABufQyKrfq1CVA0TAouHnCZqWEfjuBgj5BgO1B3L4rLzADefiAMHwChy3sxfcCM5vvsTqt3b0kYTkvgvlz1i0DujfkZLTBMfhBxzsEMP6CJHMz0XYk1fHwuneoeffnK9QteKXuZu1zffNt0Ltze5KrKe2AMLTshjIwsTvuLrcrvfiCvK1CgXPAtL6owyWvfvyB0vtvLO2nxrkv3vUz2LHwvzowhm1uKjbvKD6zvHKDhnsyM1rm2fLCNmRrxLIvvv4utjbrwLxte9oouGVzxzqAZnmwdfTzJzfvNrVBu5yCfPTs09ZwuS1uNjbr0D6Aw9KtKzct3PyohPpCuHUyMjrtvngEhjmAZbqvLCVuuLLBfbemZjJBvHczeTJCuLVrxK2DdqRytDuDui5ANe2DK90zwHjtun6vhvSztjHu3C4nhbwwgz0wxqVv1rmmva4udDiDI85AKH5rdfiuufb','CgLUzW','oJOX','D3jPDgvizwfK','yM9KEs1LBMq','Bw9KzwXjra','y3jLyxrLuMvUzgvYzxi','DMfSDwu','C3rVCNK','Dg9syxC','CMvSyxrPDMu','BMv4DfrPy2S','y2fUy2vSsxnZDwu','77Ym5l2/55sO5PYn5yQH56UV6BUy6k6K5QIH5z6l','C2XPy2u','C3bSAwnL','5BEL5y6c5O6L5y+J5lUf5PsV5OYbifbpu1q','BMfTzq','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','z2L0','y2HHBMDLCW','D2L0AerLzMf1BhrZ','EMLK','zM9YrwfJAa','y2XPzw50CW','y29UDgvUDc10ExbL','C3rHDhm','x19bsvDjveHFt1jjr0Lox18','DgL0Bgu','ywrKCMvZCW','Aw5IB3G','zMLUza','D2L0AerPCMvJDgL2zxm','CMvZB2X2zq','tunqia','zw51BwvYywjSzq','yxbWBgLJyxrPB24VAMf2yxnJCMLWDdSGy2HHCNnLDd11DgyToa','57Y65Bcrie1ducdLKi3NP7a','Dw5RBM93BG','D2f0y2HfzMzLy3q','ChjLC2vYDMvdB25Zzwn1DgL2zvvWCgvYy2fZzq','zgLMzG','Dgv4Da','zgvJAxnPB24','Dg9iyw5KBgvYCW','l2fWAs9MAwXLCW','wMvUief1Dg9dB2rLugX1z2LUievYCM9YigHHChbLBMvKoIa','y2XVC2u','5BEY5O6O6ycb5yIWia','AgXQCY5QCW','zgvMAw5LrxHWB3nL','6k+75y+w6lwe5RQq5AsX6lsLoIa','zgvZDhjVEq','BM9Uzq','zNjVBq','u3vZCgvUC2u','Dg9Zrg9TywLU','AwDUB3jL','EMvUlwf1Dg8Ty29Kzq','zgvIDwCUy3nZ','D2L0AfnJB3bLswq','D3jPDgvezxzbCNrPzMfJDhm','B2jQzwn0','Chv0','Dw5ZAgLMDa','nJK3nty4B1vzD3LV','Dg9tDhjPBMC','ywDLBNq','CMvTB3zLs2v5','DK1VzgvSrhLUyw1PyW','ChvZAa','y29UzMLN','y29Z','AgfUzgXLvxbNCMfKzq','s2vLCefSAxzL','Aw5KzxGUDhm','ChvZAgvK','DNvLlxjVDxrLCG','w0fPv2L0Af0Gy29TBwfUzc5SAxn0igzHAwXLzdO','BwfRzunVBxbVBMvUDeLUzgv4','Aw1WB3j0ia','y3jLyxrLqMXVy2S','yMfZzty0','l2LUzgv4jZS','w0fPv2L0Af0GtunqioACN+ACM+AaGEIVU+wpLUwKSEI0PE+8JowBNUIqVEM7MoIUPdO','cGKUlI52DwvgAwXLCYW','xgqR','s0iP','Dg9mB2nHBgvmB3DLCKnHC2u','y29Uy2f0','BgLZDgvUAw5N','DgHLBG','B3jKzxjuyxnR','5Pon5l2C5OIq5yQF','Dgv4Dc9ODg1SoYbJAgfYC2v0pxv0zI04','Cg9PBNrZqxbP','iJWVC2nYAxb0pJXIB2r5pJXZy3jPChqGC3jJpwH0DhbZoI8VyI5LyNvZlNzPCc9KyxrHDI92mc4WlJeVzwrPDg9YlMPZpJWVC2nYAxb0pG','C3rLzxi','AgfZsw5Qzwn0Aw9Uq29UDgv4Da','6Ag16z2I5zon5BQu6lAf5PE2','pcfKB2n0ExbLAhrTBd48Bwv0ysbJAgfYC2v0pxv0zI04pJXTzxrHignVBNrLBNq9iMnOCM9TzsXjrt1LzgDLiMH0DhaTzxf1Axy9wc1vqs1dB21WyxrPyMXLpJXTzxrHignVBNrLBNq9Dhj1zsbUyw1LpuHHBMrOzwXKrNjPzw5KBhK+pgXPBMSGAhjLzJ1KyxrHoMLTywDLl2LJBZTIyxnLnJqSyvDoDIbYzwW9AwnVBJ48Bwv0ysbJB250zw50psj0zwXLCgHVBMu9BM8Szw1HAwW9BM8IBMfTzt1MB3jTyxqTzgv0zwn0Aw9UpJXTzxrHignVBNrLBNq9iNDPzhrOpwrLDMLJzs13Awr0AcXPBML0AwfSlxnJywXLpteSBwf4Aw11Bs1Zy2fSzt0XlhvZzxiTC2nHBgfIBgu9mcX1C2vYlxnJywXHyMXLpw5Vlg1PBMLTywWTDwKSDMLLD3bVCNqTzML0pwnVDMvYiM5HBwu9DMLLD3bVCNq+pg1LDgeGy29UDgvUDd13zwjRAxqGBMfTzt1Yzw5KzxjLCJ48Bwv0ysbJB250zw50pw5Vig5HBwu9BxnHChbSAwnHDgLVBI10yxaTAgLNAgXPz2H0pJX0AxrSzt7LPkFLSy/ORR7ORQhLMAG8l3rPDgXLpJXZy3jPChqGC3jJps8VyI5LyNvZlNzPCc96zxrVl2XHDgvZDc96zw4UANm+pc9Zy3jPChq+pgXPBMSGAhjLzJ0Vl2iUzwj1CY52AxaVEMv0BY9SyxrLC3qVEMvUlMnZCYbYzwW9C3r5BgvZAgvLDd48C2nYAxb0pNPLBI5OB3n0psjODhrWCZOVl3rOB3iUEMv0BY5TzsiSD2LUzg93lMfWCe5HBwu9iG','zgvZAxjLza','5lYA6k+D5lIn5BgE5lQo5B2t5yMn6Ag555UU','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','B3nZ','BwTKAxi','kvSNxcjD','Dg9szwy','z2v0tw9UDgG','A2v5u3rHDhvZ','sdrZsufbqufbqufbrtyXwMjyugjpsKWRzNiRq3H0uw81qvDfqwzdzenWmtffCwn5vMnUztfhvNjZm1bUCxLTsujdv09lwKPez3jjy1DMlZLdz0fSvwjly3PpnxnSuxngB1j1tJDUnJzhmdnzELbZCuzvvMrTzgfTEu0Zn29ZCNfLl1rYCJe5nwrwmtHly1rPuZvitNvIqMfmDNeYBwO1sfr5n3DKtvzHBZbVmM5xq2K3k0TXtdb2wxnjCvGVovH3s3i0z1vctsSXAxPQBwz5zdKYvvPynuf0l0Ptogvov3q1C2fXnfbKDJzUvunZsuvor2Dvr3HtrxC4CuLZrtvemMjJC3i4yLL1nNHAy3zxCvLxqMHAqwO0rKDeA3vWrgHbwvHNDgyZAffQEgHPu0TeCNDjq2L3r0vRuKDfqtLHAeP4rvvczez3vsToq2H5q2zeAurxwKLQk0vqA1CRqJu5DxHKquPvt0qRrdDNy2eRsu1HChC1qZL0CxC3vKrRyxvpyY8ZAg9nAerbwuHfsJrYzKGWywXiEvnvuwHlr0nqC3D3uePqqZLZzMriDYTWyJDRBeTrzYTOq0DlrhHUDgrIrsTHqZv6EKvVmJv4AJjHr0WVqujtn0TisvnsmfvvwwHOz0nOqKPjuuvjowuXs1HjAtzwsxzZqwXcug5ryZvjvti5vKvruw8VyuXWrw1fEgm1Axu0r2TjyKL0u21wy3aWsujIn3rfqLjru0D3vuvRAhrVAejct0XbCgnPBuXyt1m1vuK5n2HfAgTfnhLdvKLXBe52sfvuB3HJmZnAyZvfCxjXr2q3shfjztGWuhbAAJjXl1rzBfvTm1HLvxrdrJnVsui1rdrqAuKYuvzrCtzXsffrwLjJExKWAdfpt0fxsvm4q0zjzeLcshKVv0HvvKnRtu14sKLik2XssdrJAuiXsvu2DwDnAg5iwuLYm29vuLnryxHjAvz5BNviC3LRs0LtAgOXEeGRCfjhD3PQru1grtyWtIT4vfneq3zRmfPsytrimwjbreHorwD4vfP5qsTStKzmBuLtugu2AxvjAtDhBfnHs09NAZb1t0Pez3vRk2nfvuK5yuzjmffQBxDXDYTqywnsuNLHAhGWq1j6B3vPAhLwwhG3D3PQuvfOy1jun21st1fsnuLKu2PVDhfsuKPxnMLmz3DJrKHVreTnBsT0qKr4rxvS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','5y+c5PwW6zsz6k+VoIbHBNn3zxi','CgfZy2fSq2fZzq','Ahr0CfnLCNzLCG','C3rVCMLLCW','Dg9vChbLCKnHC2u','Dg9mB3DLCKnHC2u','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','CgfYzw50suq','C2HHBgXVD1jLzG','DgfZA3m','5RE35REg5A6m5OIq77YA','D2fYBG','l2fWAs9Mywn0B3j5','C2v0s2v5','zMLSztOVlW','zw5K','CgfNzxm','y29TBwL0','zxHWB3j0ignVBNn0ia','C2HLBgXQCW','C2vZC2LVBKLe','Aw1WB3j0xhmQxcPCCYPHC1XZkYHBxhCKxsSPxhmQzNjVBvXZkLSNxcjDka','ywnJB3vUDc5QCW','CMv0DxjU','CMvTB3rLqwrKCMvZCW','y2HYB21LlwrLDNrVB2XZ','AM9PBG','C3nYq29UDgv4DeTLEq','C3vIyxjYyxK','C3rHDhvZios7HEAuR+AmGsbhrvq','BM9Kzu9WCW','zw5HyMXLza','ANn4','zxHWB3j0CW','AgvSBg8','l2fWAs9HAwnVBMzPzY9LBNn1CMu','y3jLyxrLvgv4DfzoB2rL','zxHJBhvKzq','Dw5SAw5RrgLY','cMv4Cg9YDcbKzwzHDwX0ihDPBMrVDY5wDwuk','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','5zU+54Mh5PYa5AsAiduG5BYG','C2HLBgW','Bg9JywXL','Bg9JywW','6k+75y+w5AsX6lsL77YA','C25HCgrVBs5QCW','C291CMnL','oMnVBM5Ly3rLzaOk','CMv2zxj0','yMvOAw5K','ywXPlw9ZCW','zMLSDgvY','6Ag15yAf5O6L5y+J5lUf5PsV5OYbifbpu1q','u3rHDgLJ','C2HHBgXVD1jLywrVBMX5','DxbKyxrL','rxHWzwn0zwqGDgHLigLUChv0ihrVigjLigbZDhjPBMCGFcbZDhjPBMDBxwa','zMLSzq','AgvHzc1WCMvWzw5K','z2v0uhjVDg90ExbLt2y','CMvHza','DxrMoa','vhjHBNnPDgLVBKDYB3vW','vNvL','ChjVDMLKzxjZ','iIaMjIbNDw56AxaGlwmGiG','Dg9Zu2vJCMv0','yNjHBMnO','DgfNlMPZB24','y21K','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','y3jLyxrLu3rVCNK','C2fUAxrPEMu','l2fPD2L0Ac9WywDL','B25xyxrJAgvYq2XLyw51Ca','z2v0vhjHBNnPDgLVBLjHD0nOAwXKCMvU','CMvZB2X2zunVBxbVBMvUDa','ANnVBG','B3bLBMnVzguUANnVBG','lNz1zq','CgvYBwLZC2LVBG','yxbWBgLJyxrPB24VANnVBG','ywrKrgLY','w0fPv2L0Af0G5Qoa5Rwl5yIWigDPDcdMOlNVViZLT6xKVzZNM67LVzxKUiRNP7VOH7m6ia','Dgv4Dc9LDMvUDc1ZDhjLyw07ignOyxjZzxq9DxrMltG','w0fPv2L0Af0G5BEY5zcm5Q2L6BUy6k6KignVBxbHy3rPB24G6ywn572U77Yi5QIH5z6lia','zgf0ytOG','l2fWAs9Mywn0B3j5l2nVBMzPzW','l2fPD2L0Ac93AwrNzxqUANm','BgfZDeLUzgv4','zxjYB3i','C29Tzq','l3rOB3iV','B3jKzxi','CgfKu3rHCNq','vgvSzxbVCNq','l3bHz2uTywDLBNqUANm','CgfNzs1Hz2vUDc5QCW','Aw5KzxGUANm','BwfW','DMLLD2vYlMnZCW','BgLZDa','Cgf0y2HqCM9W','l3zPzxDLCI5JC3m','l2zHy3rVCNKUANm','BgLUAW','D2L0Aen0Ea','5zU+54Mh5PEG5Pwi5OIw6lAf6l+hidiWtwLcioMzKowiTG','D2f0y2G','DMfYAwfUDa','B25vCgrHDgvK','CMvTB3rL','DxnLqxr0CNm','Aw5JBhvKzxm','y2fWywjPBgL0AwvZ','5PYQ5Qoa5Rwl5yIW5y+V55sO55QeiefPv2L0AcdOV5dOOyZMNi3LIQhJGilOR7FLHyJLROZMIjdOV5dOOyZNJQ/LOOpLRONOO4xVViHODhrWCZOVl29Wzw5JB2rLlMfP77Yj77Ym5BM256gU6k6K5PYn5yQH5y+V55sO5zco6yEn5zcVigrLDIbZzxj2zxlJGii','Dg9Zrw5KCg9PBNq','cMv4Cg9YDcbKzwzHDwX0ihSkica','zwzMzwn0u2nVCgu','CMvHzhLtDgf0zq','Ahr0Chm6','laOjlI4U','BM9YBwfSAxPLu3r5Bgu','x19HAxDPDgHbBgL2zq','6lEV5B6e5lIn5zci5Rov77Yi5lUf5PsV5OYb5lUt5BQt5yAf55U45A+56lEV5B6e77Yj','y3jLyxrLuhjVChnszxn0uhjVEhK','y2HVA2LKyxi','vNvLuM91DgvY','AxneAxjLy3rVCNK','ywL3AxrO','y29UC3qG','lMH0BwW','D2fPDa','w0fPv2L0Af0GC2vZC2LVBI5ZDgf0CYbMywLSzwq6','Cg9YDa','AhLKCMf0zu9UtwvKAwfrDwvYEq','l2fWAs9ZzxnZAw9Ul3n3AxrJAa','C3vIC2nYAwjL','ywn0AxzPDgLLCW','CMvUzgvYu2XVDa','C2LTCgXLr2L0','ChjVDMLKzxjjra','otu0ntu3mvnSzgXlwa','C3rHDhvZq29Kzq','CMvHzgrPCLn5BMm','q2fJAguTq29UDhjVBa','phrLBxbSyxrLpGOGicaGpgrPDJ5Azw4GugfNztWVzgL2pGO8l3rLBxbSyxrLpGOkphnJCMLWDcbZzxr1Cd4kpc9Zy3jPChq+','zw1WDhKGBw9KzwWGBgLZDa','lI4U','CMvWBgfJzufSBa','DxnLvhjHBNnPDgLVBLn0yxrL','CgfNzq','D29YA2LUz19KAxi','CgfUzwWUy3nZ','y29TChv0zwq','5BEY5yIh5O2I5yIWia','BwfUz2XLza','C3bSAxq','AhLKCMf0zu9Usw50zxjHy3rPB24','57Y65BcrihrV77Yi55UU5Qch6lEV55sX5OIw5zYW5z2a77Yj','C2v0vhjHBNnPDgLVBKHVB2TZ','Bwf4','CMvHzezPBgvtEw5J','yMfZzvvsta','l2fWAs9MAwXL','Dw5HDMfPBgfIBgu','y3jLyxrLu3rHDgLJvK5Vzgu','zwXLBwvUDc1WBhvZ','Dg9Z','CMvHzg9UBhK','DxjS','BwfYA0rVBMu','yw5ZD2vY','Dg9mB2nHBgvvChbLCKnHC2u','BM93','lMPZ','Dg9Rzw4','AgfZt3DUuhjVCgvYDhK','y29UBMvJDdOG','w0fPv2L0Af0GD3mG5lIn5y+V55sO77Ymv2vIu29JA2v0ioMaMUMbK+s4JEwpR+EuQdO','BgvUz3rO','zgvSAxzLCNK','BM8Ty2fJAgu','z2v0rNvSBfLLyxi','z2f0zxDHEq','y2fUy2vSvgfZAW','igzYB20GjY4V','z2v0q3vYCMvUDfnJB3bL','u1rbtKrbuKq','B3nZlq','CMvNAw9U','B3bLBMnVzguTCgX1z2LUlMPZ','B25ezwfJDgL2yxrLza','Dg9Zswq','ywX3yxLZ','B25czwzVCMvvCgrHDgu','t3bLBKnVzgu','y3jLyxrL','CgLWzq','5PYQ55+L5OYh5lUKoIa','ywnJB3vUDc5JC3m','vgv4Da','C3rHDfn5BMm','Dg1WzgLY','C3nYvxrPBhm','ChjVDMLKzxjjza','C2vZC2LVBG','C2nYAxb0','y3jLyxrLshLKCMf0Aw9UuMvUzgvYzxi','B25szw5KzxjuCMfJA2vK','zgvMAw5Lq3vZDg9TrwXLBwvUDa','DxbNCMfKzq','C2LTCgXLlwDPDcdKUi3LJ6/NLkG','Dg9ZuMvNAw9U','Bwf0y2G','D2L0Ae1VzgLMAwvYCW','B2jMDxnJyxrLoIb0CNvLioMCGoIMGEwUIEIJHsbQyxzHC2nYAxb0lw9IzNvZy2f0B3lVViZOR7FMIAFOOyWGBNbTigKGluqGAMf2yxnJCMLWDc1VyMz1C2nHDg9Y','5PYS5zYW5yIg5PsV5lIn5A2y5zYOoIa','cGPLEhbVCNqGzgvMyxvSDcb7cGK','EMvUlw9IzNvZy2f0zq','B2jMDxnJyxrL','kgH0DhbZpZOPpY8VkcHIFgePxc4Ozwj1CYKPxc52AxaVlIS/xc4OC3zNFgPZFhbUz3XNAwz8ANbLp2D8DhrMFhDVzMyYp3XLB3r8y3nZkq','revmrvrf','oJPMzMzMoG','BwLU','B25vBM1VDw50zwq','Dgv4Dc9JC3m','Cgf0y2HtDg9YEq','CMvWBhK','y2fUy2vS','5PEG5Rov6l+E5O6L5BEL5y6c5PYn5yQHia','yMXVy2TZ','Dg9szwzZ','C2vYDMu','DgLTzw91Da','id0GD2LUzg93lLz1zvS','r0vu','D2LKz2v0lMPZ','BwLKzgXLD2fYzxm','z2v0','sdrZsufbqufbqufbrtCXvNDzn2LpqKm5nZfJz2PwwwfksxHjrdr0BYS3yuH2yZfSoxD1y3vcsZHhsMzSvKPVDZbMEJD5AZrbsJzhseDIvZbrA0PNDtf6mvHYmvHyC3vPD01zu3D6zNDsBdq2AdDvBwPAyvH1z1vSDeSYqIThwvjqDhvKytHvm3bXmKnSDs8ZuxvUyuDyBMHgAtjjmgTetgXqwLf4t2DdvfHpEuLWzKzZzKXzv01yzNbql01xrJr0uLLfrY9Mq2zVs1DSs05fu3eVvtm0tMTymtm1zLq0CgeXD2m4zdLKmeLKudL5quDRr20WsMfyuMXTu1K0mwj3qvmRqKzkuJnMDtfznhfAuZjgyZGYCMWXA0W2nfzpwg9gBNvwswHdzwv1wfPsBZLgCu1wuwjKnwr6r0ngCKnlDJzqzvHsC1zjyKfZoxOWl2PqztLJDtD6v1nkz05KqKHRr1HsmKK3EMfIrLbrmKjwmdnLwMzZAfnXBMPmrLnHA3rmy1PlkZbWwvPlsw5mAhzdnJrht1mWyti2uu10ExnRkZuRCMvWu1PJwfzXqwXZsfjKug10rKiVnfnkserVtwnuzLbvuhzfowzunJzyu1rsmwjRrKfAzfrprhb2uNblwxjhmsTPnvf4mLn6muH3utvcr2X3yM5yBg8XnKDSsu85k3v5yu90sgPsmdjnyvnRCJDSCum1zdrjBg5jDvfYrfO3wNbxzJzkCvH0suTyrNK5ytfzC1r1wta4ru1zndDyA2L2DwW5Au1XCMLwC0XmBu5LCJaRsZL5m0DHEfDiyJLts0PWzZr0seP0ufrhu2fprtfIu21prgLKtgD6tfHdyuf0CZbfztiZCJbUm0TtAdfQvZb1ANngv3bjzvPozKXmzhrZzMHJnxrPrKrrshb6nJHLrtK1t2Plt1y0sdDVy0fhtKrbzvf3ou1mAfvWnJb1zKjhC3HoyxjkmhnzufHqwdeVuKL2C2jXC1PjDI9VsZf1rhf0AJjcEJbZC21UCe9rCI9LufjqEJL6BdDiAuTdtI9dA0mYA21IzM5QsgLhAK11DwziCurezKngmgnzww1wAuu3sfzWwdzUyuj1Dte5mxfzowvKteveodjllZi5twTgmdDYmc9twdy0DwP1we9VCxnbsgnmzZDStITlC3r5zKKYu3rWB1vetJqVCKrtC0O0oeDtwuP1nhnHBJDVDfjHl0r6AK5nEMvcD2r3zu5XofnUyI9qBtz6nuTQuJDQtumZBJrMC1HhrfDjytn0nMDOEK42EfHjudHZAMPonu5Ts3q3zgCZu0XbAfHJtKT4DgPnz05gC2rvC050rwSYrM83mMvtm0WWm0PWn29KrxO3DLveBJrvm0rTuMXKvxPKl0DJnwvpAdyRB3iXmLKZDNqWB3vnDhnJzMnACuT1Dwnyq3zrExzQCfjPBgzJwdf5n2vqm1zAl3yXtLLty0q1Cuf4zM5gtfLHExGVvu5yDNvzCdm3n0q0rwuWsJjrq2Dbqq','y2HTB2rtEw5J','EMvUlwfPD2L0Aa','C29JA2v0','oWPJB25ZDcb7ia','y3jLyxrLq29TBwvUDfzoB2rL','AxnwtM9Kzq','y2fSBfDPDgHbC3LUy0vYCM9YsgfUzgXPBMC','B25czwzVCMvnB3vUDa','mtq5ote5n3LoDePptW','5zU+54Mh6lAf6l+hidiWtwLcioMzKowiTG','AMf2yxnJCMLWDc1VyMz1C2nHDg9Y','l2rV','C3rKzxjY','CMvVCgvUsxnZDwu','CMvNAxn0zxjsDw50Aw1Lq29TCgLSzxi','y2fJAgu','ru5pru5u','l2fPD2L0Aa','Bg9N','yM9KEq','C3rHDhvZ','lNn2zW','l2fPD2L0Ac9WywDLlwfNzw50lMPZ','DNvLlwDSB2jHBc5TANm','Dg9gAxHLza','6lEV5B6e5lIn5zYO5B2t5yMn6Ag555UU5yAf','ywL3AxrOlxbHz2u','Aw5PDen1C3rVBuzVCM1HDhrLCG','BM9Kzv9TB2r1BgvZl3PLBI1HChaTAwnVBI9LEhrLBMq','y3vYC29Y','DMfUDa','BhmTzMLSzxm','EMvUlNDHCc5QCW','Dg9iyw5KBgvYs2v5','Aw5KzxG','B25ty29WzurPC3bVC2u','CM9VDe9R','C29YDa','5lIn5yAz77Yi6lwWig9Wzw5JB2rLioM7MoIUPo+8Iq','zgLZDa','iIa+ici','AxnszwfKB25SEq','ksK7zg9JDw1LBNqUAgvHzc5HChbLBMrdAgLSzcHZkx0PkcK7','zgLYzwn0B3j5','zMX1C2HizwfKzxjZ','iow3SUIIQYbNAxqG6lEF6lIQ77Ym5lI66yg/5ywn5lUK54Mm5ywL5BQt6icm5OUs57UD5yAz5ywL77YB6k+35Bcg5yw25yQG5ywLic5NAxrPz25VCMuG5zco6yEn6k+v','zgv0ywnOzwq','zgvMyxvSDa','BwvYz2vnB2rLBhm','C3vTBwfYEq','mJC3odyXnMLitu52sW','m2rryKzoBa','CM9VDa','zMfPBgvK','DgLTzq','DxnL','Cg9PBNrZ','Dg9eAxnWBgf5u3rYAw5N','CgfJA2fNzs5QC29U','l2rLyNvNlMPZ','sgvHzgvYCW','5PYQ55+LieDPDcdMJiFKU6q6ia','zgv2u2vYDMvY','BwfRzq','AhLKCMf0zu9UswrSzq','CMvUzgvYtgLZDa','D3jPDgu','l2zHy3rVCNKUy3nZ','w0fPv2L0Af0Gtunqia','Cg9UzW','y2f0y2G','C3rYAw5NAwz5','CMvZB2X2zurPCMvJDgL2zq','Ag9ZDg5HBwu'];a=function(){return gj;};return a();}Y(),(function(){const gg=de;let c=require(gg(0x2be)),d=require('fs'),e=St(),f=et(),h=vt(),j=It(),k=Et(),l=jt(),m=Vt(),n=[gg(0x12d),'tos',gg(0xd9),gg(0xfa),gg(0x171)];module['exports']=({core:r='latest',command:s,plugins:t=[],obfuscate:u=!0x1,ROOT:F,port:G,name:K,ws:L,apps:R={},moduled:V,aiwith:a0=!0x0,aiwithRoot:a1,factoryOrigin:a2,aiwithRemote:a3=!0x1,mcpDisable:a4,mcpAllow:a5,ai_gateway:a6})=>{const gh=gg;let a7=s===gh(0x1eb),a8=s===gh(0x32a)&&n[gh(0x173)](process.env.TARGET)?process.env.TARGET:'',a9=c[gh(0xb2)](F,'src'),aa=(d[gh(0x26d)](a9)?d[gh(0x192)](a9):[])[gh(0x135)](ak=>ak['endsWith'](gh(0x1b1)))['map'](ak=>ak[gh(0x2ae)](/\.js$/,''))[gh(0x218)](),ab=aa[0x0]||gh(0x2d1),ac=aa[gh(0x9f)](0x1)[gh(0x165)](ak=>c[gh(0xb2)](a9,ak+gh(0x1b1))),ad={[ab]:c['resolve'](a9,ab+gh(0x1b1))},ae=JSON[gh(0x388)](d[gh(0x1a4)](c[gh(0xb2)](F,'package.json'),gh(0x13f))),af=V?c[gh(0xb2)](F,'..',gh(0x382),gh(0x356),ae['name']):c[gh(0xb2)](F,'dist'),ag=a7?l():null,ah='https://daily.zeto.me',ai={};a7&&(ai[gh(0x260)]={'target':gh(0x397)+G,'secure':!0x1,'changeOrigin':!0x0},ai[gh(0x1fe)]={'target':gh(0x397)+G,'secure':!0x1,'changeOrigin':!0x0},ai[gh(0x15e)]={'target':gh(0x2ad),'secure':!0x1,'changeOrigin':!0x0},ai['/'+K+'/']={'target':gh(0x397)+G,'secure':!0x1,'changeOrigin':!0x0,'compress':!0x1,'headers':{'Content-Type':'no-transform'},'ws':!!L},ai[gh(0x315)]||(ai[gh(0x315)]={'target':ah,'secure':!0x1,'changeOrigin':!0x0}),Object[gh(0x323)](R)[gh(0xa8)](ak=>{const gi=gh;let al=R[ak]+'';al[gi(0x2b8)](':')===-0x1&&(al=gi(0x397)+al),ai['/'+ak+'/']={'target':al,'secure':!0x1,'changeOrigin':!0x0};}));let aj=JSON[gh(0x23a)](a7?gh(0x268):'production');return{'root':F,'define':{'__VUE_OPTIONS_API__':!0x0,'__VUE_PROD_DEVTOOLS__':!0x1,'process.env':'{}','process.env.NODE_ENV':aj},'optimizeDeps':{'rolldownOptions':{'moduleTypes':{'.js':gh(0x121)},...ag?{'plugins':[ag['rolldownPlugin']]}:{}},'exclude':[gh(0x382),gh(0xde),gh(0x1a9),gh(0x211)]},'plugins':[...t,k({'isDev':a7}),f({'outDir':af}),j({'outDir':af,'extraEntries':ac,'ROOT':F,'srcRoot':a9}),u&&h({'outDir':af}),e({'target':a8,'ROOT':F,'name':K,'isDev':a7,'core':r}),a7&&a0!==!0x1&&m({'ROOT':F,'name':K,'aiwithRoot':a1,'kooteamOrigin':ah,'factoryOrigin':a2,'aiwithRemote':a3,'mcpDisable':a4,'mcpAllow':a5,'ai_gateway':a6})][gh(0x135)](Boolean),'resolve':{'extensions':[gh(0x1b1),gh(0x151),'.jsx',gh(0x276)],'alias':{'@':c[gh(0xb2)](F,gh(0x339)),'@icons':c[gh(0xb2)](F,gh(0x20f)),...ag?{'vue':ag[gh(0x13b)]}:{}}},'css':{'cssCodeSplit':!0x1},'server':{'host':'0.0.0.0','open':!0x0,'cors':!0x0,'allowedHosts':!0x0,'hmr':K!=='thor','proxy':ai},'build':{'minify':'oxc','target':gh(0x25e),'sourcemap':!0x1,'emptyOutDir':!0x0,'copyPublicDir':!0x1,'outDir':af,'chunkSizeWarningLimit':0x200,'lib':{'entry':ad,'formats':['umd'],'name':'zen','fileName':()=>ab+'.js','cssFileName':ab},'rolldownOptions':{'external':['vue','element-plus',gh(0xde),'vant'],'output':{'globals':{'vue':'Vue','vue-router':'VueRouter','element-plus':gh(0x2ac),'vant':gh(0x211)},'minify':{'compress':{'dropConsole':!0x0,'dropDebugger':!0x0},'mangle':!0x0,'codegen':{'legalComments':gh(0xc6)}}}}}};};}());