@samanhappy/mcphub 0.8.3 → 0.8.5

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 (52) hide show
  1. package/dist/clients/openapi.js +42 -11
  2. package/dist/clients/openapi.js.map +1 -1
  3. package/dist/config/index.js +35 -13
  4. package/dist/config/index.js.map +1 -1
  5. package/dist/controllers/authController.js +16 -11
  6. package/dist/controllers/authController.js.map +1 -1
  7. package/dist/controllers/dxtController.js +6 -7
  8. package/dist/controllers/dxtController.js.map +1 -1
  9. package/dist/controllers/groupController.js +4 -1
  10. package/dist/controllers/groupController.js.map +1 -1
  11. package/dist/controllers/serverController.js +22 -3
  12. package/dist/controllers/serverController.js.map +1 -1
  13. package/dist/controllers/userController.js +239 -0
  14. package/dist/controllers/userController.js.map +1 -0
  15. package/dist/middlewares/index.js +14 -2
  16. package/dist/middlewares/index.js.map +1 -1
  17. package/dist/middlewares/userContext.js +104 -0
  18. package/dist/middlewares/userContext.js.map +1 -0
  19. package/dist/routes/index.js +8 -0
  20. package/dist/routes/index.js.map +1 -1
  21. package/dist/server.js +23 -14
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/dataService.js +18 -0
  24. package/dist/services/dataService.js.map +1 -0
  25. package/dist/services/groupService.js +7 -2
  26. package/dist/services/groupService.js.map +1 -1
  27. package/dist/services/mcpService.js +39 -3
  28. package/dist/services/mcpService.js.map +1 -1
  29. package/dist/services/registry.js +34 -0
  30. package/dist/services/registry.js.map +1 -0
  31. package/dist/services/services.js +9 -0
  32. package/dist/services/services.js.map +1 -0
  33. package/dist/services/sseService.js +40 -10
  34. package/dist/services/sseService.js.map +1 -1
  35. package/dist/services/userContextService.js +49 -0
  36. package/dist/services/userContextService.js.map +1 -0
  37. package/dist/services/userService.js +100 -0
  38. package/dist/services/userService.js.map +1 -0
  39. package/dist/utils/path.js +3 -7
  40. package/dist/utils/path.js.map +1 -1
  41. package/dist/utils/serialization.js +59 -0
  42. package/dist/utils/serialization.js.map +1 -0
  43. package/dist/utils/version.js +1 -5
  44. package/dist/utils/version.js.map +1 -1
  45. package/frontend/dist/assets/index-C-F1zr8n.js +197 -0
  46. package/frontend/dist/assets/index-C-F1zr8n.js.map +1 -0
  47. package/frontend/dist/assets/index-DVMEgEIO.css +1 -0
  48. package/frontend/dist/index.html +2 -2
  49. package/package.json +3 -1
  50. package/frontend/dist/assets/index-B-VTc3wu.css +0 -1
  51. package/frontend/dist/assets/index-BjnGlIAs.js +0 -187
  52. package/frontend/dist/assets/index-BjnGlIAs.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userContextService.js","sourceRoot":"","sources":["../../src/services/userContextService.ts"],"names":[],"mappings":"AAEA,uBAAuB;AACvB,MAAM,WAAW;IAAjB;QAEU,gBAAW,GAAiB,IAAI,CAAC;IAoB3C,CAAC;IAlBC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,IAAW;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAA/B;QAEU,gBAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IA6BlD,CAAC;IA3BC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACjC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,IAAW;QACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,100 @@
1
+ import { getUsers, createUser, findUserByUsername } from '../models/User.js';
2
+ import { saveSettings, loadSettings } from '../config/index.js';
3
+ import bcrypt from 'bcryptjs';
4
+ // Get all users
5
+ export const getAllUsers = () => {
6
+ return getUsers();
7
+ };
8
+ // Get user by username
9
+ export const getUserByUsername = (username) => {
10
+ return findUserByUsername(username);
11
+ };
12
+ // Create a new user
13
+ export const createNewUser = async (username, password, isAdmin = false) => {
14
+ try {
15
+ const existingUser = findUserByUsername(username);
16
+ if (existingUser) {
17
+ return null; // User already exists
18
+ }
19
+ const userData = {
20
+ username,
21
+ password,
22
+ isAdmin,
23
+ };
24
+ return await createUser(userData);
25
+ }
26
+ catch (error) {
27
+ console.error('Failed to create user:', error);
28
+ return null;
29
+ }
30
+ };
31
+ // Update user information
32
+ export const updateUser = async (username, data) => {
33
+ try {
34
+ const users = getUsers();
35
+ const userIndex = users.findIndex((user) => user.username === username);
36
+ if (userIndex === -1) {
37
+ return null;
38
+ }
39
+ const user = users[userIndex];
40
+ // Update admin status if provided
41
+ if (data.isAdmin !== undefined) {
42
+ user.isAdmin = data.isAdmin;
43
+ }
44
+ // Update password if provided
45
+ if (data.newPassword) {
46
+ const salt = await bcrypt.genSalt(10);
47
+ user.password = await bcrypt.hash(data.newPassword, salt);
48
+ }
49
+ // Save users array back to settings
50
+ const { saveSettings, loadSettings } = await import('../config/index.js');
51
+ const settings = loadSettings();
52
+ settings.users = users;
53
+ if (!saveSettings(settings)) {
54
+ return null;
55
+ }
56
+ return user;
57
+ }
58
+ catch (error) {
59
+ console.error('Failed to update user:', error);
60
+ return null;
61
+ }
62
+ };
63
+ // Delete a user
64
+ export const deleteUser = (username) => {
65
+ try {
66
+ // Cannot delete the last admin user
67
+ const users = getUsers();
68
+ const adminUsers = users.filter((user) => user.isAdmin);
69
+ const userToDelete = users.find((user) => user.username === username);
70
+ if (userToDelete?.isAdmin && adminUsers.length === 1) {
71
+ return false; // Cannot delete the last admin
72
+ }
73
+ const filteredUsers = users.filter((user) => user.username !== username);
74
+ if (filteredUsers.length === users.length) {
75
+ return false; // User not found
76
+ }
77
+ // Save filtered users back to settings
78
+ const settings = loadSettings();
79
+ settings.users = filteredUsers;
80
+ return saveSettings(settings);
81
+ }
82
+ catch (error) {
83
+ console.error('Failed to delete user:', error);
84
+ return false;
85
+ }
86
+ };
87
+ // Check if user has admin permissions
88
+ export const isUserAdmin = (username) => {
89
+ const user = findUserByUsername(username);
90
+ return user?.isAdmin || false;
91
+ };
92
+ // Get user count
93
+ export const getUserCount = () => {
94
+ return getUsers().length;
95
+ };
96
+ // Get admin count
97
+ export const getAdminCount = () => {
98
+ return getUsers().filter((user) => user.isAdmin).length;
99
+ };
100
+ //# sourceMappingURL=userService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userService.js","sourceRoot":"","sources":["../../src/services/userService.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,8 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import { fileURLToPath } from 'url';
4
3
  import { dirname } from 'path';
5
- // Get current file's directory
6
- const __filename = fileURLToPath(import.meta.url);
7
- const __dirname = dirname(__filename);
8
- // Project root directory should be the parent directory of src
9
- const rootDir = dirname(dirname(__dirname));
4
+ // Project root directory - use process.cwd() as a simpler alternative
5
+ const rootDir = process.cwd();
10
6
  /**
11
7
  * Find the path to a configuration file by checking multiple potential locations.
12
8
  * @param filename The name of the file to locate (e.g., 'servers.json', 'mcp_settings.json')
@@ -22,7 +18,7 @@ export const getConfigFilePath = (filename, description = 'Configuration') => {
22
18
  // Use path relative to the root directory
23
19
  path.join(rootDir, filename),
24
20
  // If installed with npx, may need to look one level up
25
- path.join(dirname(rootDir), filename)
21
+ path.join(dirname(rootDir), filename),
26
22
  ];
27
23
  for (const filePath of potentialPaths) {
28
24
  if (fs.existsSync(filePath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,+BAA+B;AAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,+DAA+D;AAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,WAAW,GAAG,eAAe,EAAU,EAAE;IAC3F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAChD,MAAM,cAAc,GAAG;QACrB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QACrC,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5B,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;KACtC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,sFAAsF;IACtF,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,iEAAiE,WAAW,EAAE,CAAC,CAAC;IAC5G,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,sEAAsE;AACtE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,WAAW,GAAG,eAAe,EAAU,EAAE;IAC3F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAChD,MAAM,cAAc,GAAG;QACrB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QACrC,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5B,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;KACtC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,sFAAsF;IACtF,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,CACX,GAAG,WAAW,iEAAiE,WAAW,EAAE,CAC7F,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Utility functions for safe JSON serialization
3
+ * Handles circular references and provides type-safe serialization
4
+ */
5
+ /**
6
+ * Creates a JSON-safe copy of an object by removing circular references
7
+ * Uses a replacer function with WeakSet to efficiently track visited objects
8
+ *
9
+ * @param obj - The object to make JSON-safe
10
+ * @returns A new object that can be safely serialized to JSON
11
+ */
12
+ export const createSafeJSON = (obj) => {
13
+ const seen = new WeakSet();
14
+ return JSON.parse(JSON.stringify(obj, (key, value) => {
15
+ if (typeof value === 'object' && value !== null) {
16
+ if (seen.has(value)) {
17
+ return '[Circular Reference]';
18
+ }
19
+ seen.add(value);
20
+ }
21
+ return value;
22
+ }));
23
+ };
24
+ /**
25
+ * Safe JSON stringifier that handles circular references
26
+ * Useful for logging or debugging purposes
27
+ *
28
+ * @param obj - The object to stringify
29
+ * @param space - Number of spaces to use for indentation (optional)
30
+ * @returns JSON string representation of the object
31
+ */
32
+ export const safeStringify = (obj, space) => {
33
+ const seen = new WeakSet();
34
+ return JSON.stringify(obj, (key, value) => {
35
+ if (typeof value === 'object' && value !== null) {
36
+ if (seen.has(value)) {
37
+ return '[Circular Reference]';
38
+ }
39
+ seen.add(value);
40
+ }
41
+ return value;
42
+ }, space);
43
+ };
44
+ /**
45
+ * Removes specific properties that might contain circular references
46
+ * More targeted approach for known problematic properties
47
+ *
48
+ * @param obj - The object to clean
49
+ * @param excludeProps - Array of property names to exclude
50
+ * @returns A new object without the specified properties
51
+ */
52
+ export const excludeCircularProps = (obj, excludeProps) => {
53
+ const result = { ...obj };
54
+ excludeProps.forEach((prop) => {
55
+ delete result[prop];
56
+ });
57
+ return result;
58
+ };
59
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/utils/serialization.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAI,GAAM,EAAK,EAAE;IAC7C,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAE3B,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,sBAAsB,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAE,KAAc,EAAU,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAE3B,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,EACH,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,sBAAsB,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAM,EACN,YAAsB,EACwB,EAAE;IAChD,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC1B,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,16 +1,12 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import { fileURLToPath } from 'url';
4
- // Get the directory name in ESM
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
3
  /**
8
4
  * Gets the package version from package.json
9
5
  * @returns The version string from package.json, or 'dev' if not found
10
6
  */
11
7
  export const getPackageVersion = () => {
12
8
  try {
13
- const packageJsonPath = path.resolve(__dirname, '../../package.json');
9
+ const packageJsonPath = path.resolve(process.cwd(), 'package.json');
14
10
  const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');
15
11
  const packageJson = JSON.parse(packageJsonContent);
16
12
  return packageJson.version || 'dev';
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,gCAAgC;AAChC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACpE,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC"}