From f00d125e2a9bf5e51dbf1fbf51deda7497498ce1 Mon Sep 17 00:00:00 2001 From: Drol Date: Thu, 18 Jun 2026 12:35:51 +0800 Subject: [PATCH] fix(ai): lock compatible LangChain versions (#9831) * fix(ai): lock compatible LangChain versions * fix(ai): remove LangChain template resolutions --- packages/core/ai/package.json | 24 +-- .../plugins/@nocobase/plugin-ai/package.json | 22 +-- yarn.lock | 173 ++++++------------ 3 files changed, 79 insertions(+), 140 deletions(-) diff --git a/packages/core/ai/package.json b/packages/core/ai/package.json index 230f238e89b..80e96295528 100644 --- a/packages/core/ai/package.json +++ b/packages/core/ai/package.json @@ -6,17 +6,17 @@ "main": "./lib/index.js", "types": "./lib/index.d.ts", "dependencies": { - "@langchain/anthropic": "^1.3.17", - "@langchain/classic": "^1.0.21", - "@langchain/community": "~1.1.18", - "@langchain/core": "~1.1.27", - "@langchain/deepseek": "^1.0.11", - "@langchain/google-genai": "^2.1.18", - "@langchain/langgraph": "~1.1.4", - "@langchain/langgraph-checkpoint": "^1.0.0", - "@langchain/mcp-adapters": "^1.1.3", - "@langchain/ollama": "~1.2.7", - "@langchain/openai": "~1.2.7", + "@langchain/anthropic": "1.3.17", + "@langchain/classic": "1.0.34", + "@langchain/community": "1.1.29", + "@langchain/core": "1.1.49", + "@langchain/deepseek": "1.0.27", + "@langchain/google-genai": "2.1.18", + "@langchain/langgraph": "1.4.4", + "@langchain/langgraph-checkpoint": "1.1.2", + "@langchain/mcp-adapters": "1.1.3", + "@langchain/ollama": "1.2.7", + "@langchain/openai": "1.4.7", "@nocobase/data-source-manager": "2.1.7", "@nocobase/logger": "2.1.7", "@nocobase/resourcer": "2.1.7", @@ -25,7 +25,7 @@ "fast-glob": "^3.3.2", "flexsearch": "^0.8.2", "gray-matter": "^4.0.3", - "langchain": "~1.2.24", + "langchain": "1.2.39", "mammoth": "^1.10.0", "officeparser": "^5.2.0", "pdf-parse": "^1.1.1", diff --git a/packages/plugins/@nocobase/plugin-ai/package.json b/packages/plugins/@nocobase/plugin-ai/package.json index 36266cd29ab..65aed606609 100644 --- a/packages/plugins/@nocobase/plugin-ai/package.json +++ b/packages/plugins/@nocobase/plugin-ai/package.json @@ -34,16 +34,16 @@ "@ant-design/x": "^1.1.0", "@dicebear/core": "^9.2.3", "@dicebear/notionists": "^9.2.3", - "@langchain/anthropic": "^1.3.17", - "@langchain/community": "~1.1.18", - "@langchain/core": "~1.1.27", - "@langchain/deepseek": "^1.0.11", - "@langchain/google-genai": "^2.1.18", - "@langchain/langgraph": "~1.1.4", - "@langchain/langgraph-checkpoint": "^1.0.0", - "@langchain/ollama": "~1.2.7", - "@langchain/openai": "~1.2.7", - "@langchain/xai": "1.3.3", + "@langchain/anthropic": "1.3.17", + "@langchain/community": "1.1.29", + "@langchain/core": "1.1.49", + "@langchain/deepseek": "1.0.27", + "@langchain/google-genai": "2.1.18", + "@langchain/langgraph": "1.4.4", + "@langchain/langgraph-checkpoint": "1.1.2", + "@langchain/ollama": "1.2.7", + "@langchain/openai": "1.4.7", + "@langchain/xai": "1.3.19", "@nocobase/ai-employee-avatars": "^1.0.2", "@xyflow/react": "^12.7.0", "diff": "9.0.0", @@ -52,7 +52,7 @@ "elkjs": "^0.10.0", "jsonrepair": "3.13.1", "just-bash": "^2.14.3", - "langchain": "~1.2.24", + "langchain": "1.2.39", "nodejs-snowflake": "^2.0.1", "react-markdown": "^10.1.0", "react-syntax-highlighter": "^15.6.1", diff --git a/yarn.lock b/yarn.lock index 9ae2314492f..185001074b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5818,34 +5818,17 @@ koa-compose "^4.1.0" path-to-regexp "^8.3.0" -"@langchain/anthropic@^1.3.17": +"@langchain/anthropic@1.3.17": version "1.3.17" - resolved "https://registry.npmjs.org/@langchain/anthropic/-/anthropic-1.3.17.tgz#441a4bc1e38c41760e8957e87ef8f549c9c62f09" + resolved "https://registry.npmmirror.com/@langchain/anthropic/-/anthropic-1.3.17.tgz#441a4bc1e38c41760e8957e87ef8f549c9c62f09" integrity sha512-5z/dqw/atLvH1hGtHrF9q4ZT3uSL34Y3XmSYKMtpgsibVnlFG2QmxikkjJnwAYGBTjrsTQuE7khrBPFkJSEucA== dependencies: "@anthropic-ai/sdk" "^0.73.0" zod "^3.25.76 || ^4" -"@langchain/classic@^1.0.21": - version "1.0.22" - resolved "https://registry.npmjs.org/@langchain/classic/-/classic-1.0.22.tgz#fa79102549d152c88090f46633db9636874a75cc" - integrity sha512-XJd5nbxM6UXYkDJc98Zo/9NkPFWy3g/XunBe8hnTOyaazxvA+5+gdJyDKVrcRfaGJskql0V5h/3XQ2f9WFzEuw== - dependencies: - "@langchain/openai" "1.2.12" - "@langchain/textsplitters" "1.0.1" - handlebars "^4.7.8" - js-yaml "^4.1.1" - jsonpointer "^5.0.1" - openapi-types "^12.1.3" - uuid "^10.0.0" - yaml "^2.2.1" - zod "^3.25.76 || ^4" - optionalDependencies: - langsmith ">=0.4.0 <1.0.0" - -"@langchain/classic@^1.0.27": +"@langchain/classic@1.0.34", "@langchain/classic@^1.0.27": version "1.0.34" - resolved "https://registry.npmjs.org/@langchain/classic/-/classic-1.0.34.tgz#d358ac24ea45a3fca54e501c5f3eaf6061902a01" + resolved "https://registry.npmmirror.com/@langchain/classic/-/classic-1.0.34.tgz#d358ac24ea45a3fca54e501c5f3eaf6061902a01" integrity sha512-4VG+3QRFBDwYWW4UdVDsbUoeaeTo0XED7wYkeZDc4wa3ZlP4r6GJ/KZlQfHq2AS+CxjW8OQZw2ha6tESesjawQ== dependencies: "@langchain/openai" "1.4.7" @@ -5859,9 +5842,9 @@ optionalDependencies: langsmith ">=0.4.0 <1.0.0" -"@langchain/community@~1.1.18": +"@langchain/community@1.1.29": version "1.1.29" - resolved "https://registry.npmjs.org/@langchain/community/-/community-1.1.29.tgz#b4570301b7080e51594eaaa48d3465ed465d0220" + resolved "https://registry.npmmirror.com/@langchain/community/-/community-1.1.29.tgz#b4570301b7080e51594eaaa48d3465ed465d0220" integrity sha512-eJbE0IARueEg+Lljk7SIGGeiSnu5u0mcT0MPIF7UG6jYPNXOpSebwiXsS3aIKOyJZSj0DlmBPv7q0hkLrxDtHA== dependencies: "@langchain/classic" "^1.0.27" @@ -5874,10 +5857,10 @@ uuid "^14.0.0" zod "^3.25.76 || ^4" -"@langchain/core@~1.1.27": - version "1.1.48" - resolved "https://registry.npmjs.org/@langchain/core/-/core-1.1.48.tgz#dfe7f6a64b0e3e79e5357ed4b402c021ee315a7f" - integrity sha512-fQU6Guyb1pwc2fEplmA8FPbKfOMAofjnyJzExevro0FxEiuGHE18Ov/ZHmT9trWCDTZRI9eW1VIc6aChxV8pAQ== +"@langchain/core@1.1.49": + version "1.1.49" + resolved "https://registry.npmmirror.com/@langchain/core/-/core-1.1.49.tgz#2e334c843961e9bfc52f3fcff19247602e0be866" + integrity sha512-7wkN3Qv/qZqsY0p3h48CNu6E6y5GMYatYxj+JrX4uVNBiqIVQm1Z528QrmayJWVW9SQTQicqRNoyTCzl+K9F8Q== dependencies: "@cfworker/json-schema" "^4.0.2" "@standard-schema/spec" "^1.1.0" @@ -5887,27 +5870,25 @@ p-queue "^6.6.2" zod "^3.25.76 || ^4" -"@langchain/deepseek@^1.0.11": - version "1.0.11" - resolved "https://registry.npmjs.org/@langchain/deepseek/-/deepseek-1.0.11.tgz#82518715a1d0f0926941de75374bc9214da19d36" - integrity sha512-w0Cjm4IL55wv1l8Hdfm1aihtor7J0BabCfcZ6GlkKrPpaOBfdROAQchrmU6HPhTEGAwbfDhv6rHmBy/82PAEnQ== +"@langchain/deepseek@1.0.27": + version "1.0.27" + resolved "https://registry.npmmirror.com/@langchain/deepseek/-/deepseek-1.0.27.tgz#b864a1f0cfb2968347f2ae569a07a0c23a1e8540" + integrity sha512-lmj1yPy+noA0ceIzH5jNxJU/uNMGSYlWVwztvkTYC0GExja9sY+21Y9Fpn9WLld5g/AL9/1+3i2aWIQoXOaeGQ== dependencies: - "@langchain/openai" "1.2.7" + "@langchain/openai" "1.4.7" -"@langchain/google-genai@^2.1.18": +"@langchain/google-genai@2.1.18": version "2.1.18" - resolved "https://registry.npmjs.org/@langchain/google-genai/-/google-genai-2.1.18.tgz#f518bfee0074a05bce3e317ce8ad5c59a94dcd26" + resolved "https://registry.npmmirror.com/@langchain/google-genai/-/google-genai-2.1.18.tgz#f518bfee0074a05bce3e317ce8ad5c59a94dcd26" integrity sha512-ucUlxcmJ4MS4MZBqAxv0mefpNAbWMS8unE3BFoKpbyk/iMWKmgA0k2SIJ7FcLNh9FHIwILtO0hWWFATYo8WuAA== dependencies: "@google/generative-ai" "^0.24.0" uuid "^11.1.0" -"@langchain/langgraph-checkpoint@^1.0.0": - version "1.0.0" - resolved "https://registry.npmmirror.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-1.0.0.tgz#ece2ede439d0d0b0b532c4be7817fd5029afe4f8" - integrity sha512-xrclBGvNCXDmi0Nz28t3vjpxSH6UYx6w5XAXSiiB1WEdc2xD2iY/a913I3x3a31XpInUW/GGfXXfePfaghV54A== - dependencies: - uuid "^10.0.0" +"@langchain/langgraph-checkpoint@1.1.2", "@langchain/langgraph-checkpoint@^1.1.2": + version "1.1.2" + resolved "https://registry.npmmirror.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-1.1.2.tgz#08c6ba24dadc191878f33329340f656cebb890c8" + integrity sha512-m5Xd7W3G9JrlEhFZ5WAcqZPgE46R9gr1gFDFaVqEKeuwin3tgEp0jlPbru+iFXCug338DcQjFS/Kuuci21ydvw== "@langchain/langgraph-checkpoint@^1.0.1", "@langchain/langgraph-checkpoint@^1.0.2": version "1.0.2" @@ -5916,6 +5897,16 @@ dependencies: uuid "^10.0.0" +"@langchain/langgraph-sdk@~1.9.23": + version "1.9.23" + resolved "https://registry.npmmirror.com/@langchain/langgraph-sdk/-/langgraph-sdk-1.9.23.tgz#83285c68ab7f221216d5bfc35bb9b45fde7dfd7c" + integrity sha512-JF5TWOrrKaMn9D7O0xT/9e9t3CpDRd8DUyKQdcbGswDsWdlI+04E9E1Lxv361tMu5pNYhval3iJPAwGxUuqi4w== + dependencies: + "@langchain/protocol" "^0.0.16" + "@types/json-schema" "^7.0.15" + p-queue "^9.0.1" + p-retry "^7.1.1" + "@langchain/langgraph-sdk@~1.9.4": version "1.9.9" resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-1.9.9.tgz#7811c6332d5ecf52a90abeb730d0c6deb8955709" @@ -5927,15 +5918,15 @@ p-retry "^7.1.1" uuid "^13.0.0" -"@langchain/langgraph-sdk@~2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-2.0.0.tgz#55ac46373aa4917443d92c8b2edd5efd162bc879" - integrity sha512-Xdkl1hve84ZGQ7fgpiBIBvjODhtjbPPccY4snOtYgSdzRXZkESsi2Y7RDKgFe1nC9+DbX+QaYom0raD/XFBKAw== +"@langchain/langgraph@1.4.4": + version "1.4.4" + resolved "https://registry.npmmirror.com/@langchain/langgraph/-/langgraph-1.4.4.tgz#935cc6aca7f909c5dc3c1b98c18f29b1798a43c8" + integrity sha512-20p+/xHRIUIEkk6dsoA576X7D5+FY+LkShsGjBpKrwATzQU0IJ2dfpBaP+4Z4wwpL9ArpDxjoRQR58kycdxU8A== dependencies: - "@types/json-schema" "^7.0.15" - p-queue "^9.0.1" - p-retry "^7.1.1" - uuid "^13.0.0" + "@langchain/langgraph-checkpoint" "^1.1.2" + "@langchain/langgraph-sdk" "~1.9.23" + "@langchain/protocol" "^0.0.16" + "@standard-schema/spec" "1.1.0" "@langchain/langgraph@^1.2.6": version "1.3.2" @@ -5948,19 +5939,9 @@ "@standard-schema/spec" "1.1.0" uuid "^10.0.0" -"@langchain/langgraph@~1.1.4": - version "1.1.5" - resolved "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-1.1.5.tgz#7cab6c585b5e60ac52e70ef941ba6054f45b0d88" - integrity sha512-uJC/asydf/GoHpo9x42lf9hs8ufCkMuJ9sDle5ybP7sMD0XryOfE0E4J3deARk9ZadCCt6zeCoCNu/mTbx8+Sg== - dependencies: - "@langchain/langgraph-checkpoint" "^1.0.0" - "@langchain/langgraph-sdk" "~2.0.0" - "@standard-schema/spec" "1.1.0" - uuid "^10.0.0" - -"@langchain/mcp-adapters@^1.1.3": +"@langchain/mcp-adapters@1.1.3": version "1.1.3" - resolved "https://registry.npmjs.org/@langchain/mcp-adapters/-/mcp-adapters-1.1.3.tgz#3710411564328a7e77b7d7bc66244de6080ccceb" + resolved "https://registry.npmmirror.com/@langchain/mcp-adapters/-/mcp-adapters-1.1.3.tgz#3710411564328a7e77b7d7bc66244de6080ccceb" integrity sha512-OPHIQNkTUJjnRj1pr+cp2nguMBZeF3Q1pVT1hCbgU7BrHgV7lov99wbU8po8Cm4zZzmeRtVO/T9X1SrDD1ogtQ== dependencies: "@modelcontextprotocol/sdk" "^1.26.0" @@ -5969,31 +5950,13 @@ optionalDependencies: extended-eventsource "^1.7.0" -"@langchain/ollama@~1.2.7": +"@langchain/ollama@1.2.7": version "1.2.7" - resolved "https://registry.npmjs.org/@langchain/ollama/-/ollama-1.2.7.tgz#a1d6ed8105ebcefdb7d30ebf7daa0f35c7a32e31" + resolved "https://registry.npmmirror.com/@langchain/ollama/-/ollama-1.2.7.tgz#a1d6ed8105ebcefdb7d30ebf7daa0f35c7a32e31" integrity sha512-7Gu17q1dn4nKGB3ZYJyaaL8H/2k7LHvcL6V25S8cVDniTTSvd0fWzI5MzPJvbf9WPxBhvmf+rDDLAhOWljHEtQ== dependencies: ollama "^0.6.3" -"@langchain/openai@1.2.12": - version "1.2.12" - resolved "https://registry.npmjs.org/@langchain/openai/-/openai-1.2.12.tgz#6147acbc3e92c363e99b7ba3e812bb055aea1d51" - integrity sha512-Im6PPNujrfkZk4vpc9JAjbeERg+RbNtWRe3KSFOP7aNGa/yZ+XD69lxXwbsZGaZkbiUN/hwe9RYeisUfThb5wg== - dependencies: - js-tiktoken "^1.0.12" - openai "^6.24.0" - zod "^3.25.76 || ^4" - -"@langchain/openai@1.2.7": - version "1.2.7" - resolved "https://registry.npmjs.org/@langchain/openai/-/openai-1.2.7.tgz#0eb2c1a5831b96bdffc9eb5ff670431fff8eeabb" - integrity sha512-vR9zoF0/EZ03X0Tc6woIEWRDSDSr2l64n+MQCW8NduScJtBJs5r/Ng3Lrp2bjtJQywEMQoOhcrV2DMmAIPWgnw== - dependencies: - js-tiktoken "^1.0.12" - openai "^6.18.0" - zod "^3.25.76 || ^4" - "@langchain/openai@1.4.7", "@langchain/openai@^1.4.1": version "1.4.7" resolved "https://registry.npmjs.org/@langchain/openai/-/openai-1.4.7.tgz#8af279497ead6f5ac3a97dd0f4f5faccf2b31614" @@ -6003,33 +5966,29 @@ openai "^6.37.0" zod "^3.25.76 || ^4" -"@langchain/openai@~1.2.7": - version "1.2.13" - resolved "https://registry.npmmirror.com/@langchain/openai/-/openai-1.2.13.tgz#ce3f1dd08b93458d43a414128caeb70be4b2a462" - integrity sha512-zyspKSBnyxICxZyGYMxsSkCUJR09Uj1omMGBrUsvpSu9j+zIbfNg4+NQTIRmnzULoKB+keaioOdLGHxOQru3+w== - dependencies: - js-tiktoken "^1.0.12" - openai "^6.27.0" - zod "^3.25.76 || ^4" - "@langchain/protocol@^0.0.15": version "0.0.15" resolved "https://registry.npmjs.org/@langchain/protocol/-/protocol-0.0.15.tgz#1e2afa7378976d38055c054a97f3b4c08403126b" integrity sha512-MllvbpMjqHevUm+v94M422mH7XKN+wGCvJRBVROTWBotEDOATYB4Ktk2UheYP859y9o2LlhtPek5t1T9eyfAbQ== -"@langchain/textsplitters@1.0.1", "@langchain/textsplitters@^1.0.1": +"@langchain/protocol@^0.0.16": + version "0.0.16" + resolved "https://registry.npmmirror.com/@langchain/protocol/-/protocol-0.0.16.tgz#68b63d58feaf4f0acf77405cb8fb16f9c3f09b60" + integrity sha512-ws+J7MaHyhO5dG7f0vdyHQiUn9hoCnki0f3crJPa4MCTGzcRC39jYSCghyrGtBPYQnZbUQiGyRVpW3z3M8IpJg== + +"@langchain/textsplitters@1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@langchain/textsplitters/-/textsplitters-1.0.1.tgz#292f9c93239178c248b3338acf7b68aa47aa9830" integrity sha512-rheJlB01iVtrOUzttscutRgLybPH9qR79EyzBEbf1u97ljWyuxQfCwIWK+SjoQTM9O8M7GGLLRBSYE26Jmcoww== dependencies: js-tiktoken "^1.0.12" -"@langchain/xai@1.3.3": - version "1.3.3" - resolved "https://registry.npmjs.org/@langchain/xai/-/xai-1.3.3.tgz#483e0be66fba50bb470f8e2686f93ed931e64eef" - integrity sha512-bK4WeoFPy8+sEwlJ6FsGWaf8uaNOCKd4QFydQibuRtkShFMnAdkombIdujlNTtNkycguftlWU45dihf72jHm6Q== +"@langchain/xai@1.3.19": + version "1.3.19" + resolved "https://registry.npmmirror.com/@langchain/xai/-/xai-1.3.19.tgz#7037a9ebdea72af6bcf2be0fcf0f4e9d273cbb79" + integrity sha512-+9eTAOTi1HUH4FIFydLFgBz3qoVc6E8f+XmA1m9VuzH/OtJpwNKgk7a+dI7kOiGiPHp/ySuhl6Uo+kwb3IfmeQ== dependencies: - "@langchain/openai" "1.2.7" + "@langchain/openai" "1.4.7" "@lerna/add@4.0.0": version "4.0.0" @@ -22833,9 +22792,9 @@ langchain-gigachat@^0.0.14: zod "^3.23.8" zod-to-json-schema "^3.23.5" -langchain@~1.2.24: +langchain@1.2.39: version "1.2.39" - resolved "https://registry.npmjs.org/langchain/-/langchain-1.2.39.tgz#d5625de96fc34bec78ab3ac92b7df988f83701a8" + resolved "https://registry.npmmirror.com/langchain/-/langchain-1.2.39.tgz#d5625de96fc34bec78ab3ac92b7df988f83701a8" integrity sha512-3foM0VptB5NFnd3drLTVieZhNBcITS/9lnaKzfGgJ7a7YL0eEAM0ZHofMOi86V2KbpeSaHrJ08vOOMSc+CpfEQ== dependencies: "@langchain/langgraph" "^1.2.6" @@ -26433,21 +26392,6 @@ open@^9.1.0: is-inside-container "^1.0.0" is-wsl "^2.2.0" -openai@^6.18.0: - version "6.22.0" - resolved "https://registry.npmjs.org/openai/-/openai-6.22.0.tgz#822abd533ba3656741df87e31d1d643520e77463" - integrity sha512-7Yvy17F33Bi9RutWbsaYt5hJEEJ/krRPOrwan+f9aCPuMat1WVsb2VNSII5W1EksKT6fF69TG/xj4XzodK3JZw== - -openai@^6.24.0: - version "6.27.0" - resolved "https://registry.npmjs.org/openai/-/openai-6.27.0.tgz#eabaea9ce6904a8b2e6b2ac0a9d69b527d95ecf6" - integrity sha512-osTKySlrdYrLYTt0zjhY8yp0JUBmWDCN+Q+QxsV4xMQnnoVFpylgKGgxwN8sSdTNw0G4y+WUXs4eCMWpyDNWZQ== - -openai@^6.27.0: - version "6.44.0" - resolved "https://registry.npmmirror.com/openai/-/openai-6.44.0.tgz#2755827d2550b9f4fce19af5ac15115607e5ec36" - integrity sha512-09/gH+8jH0RgUwsgWHAaxsKGRT5zVZ95IaJUnqAWj6XejIBmnFRwq2WUIF37VtDEsmGrtPmvCs5+yBSeZGWvkA== - openai@^6.37.0: version "6.39.1" resolved "https://registry.npmjs.org/openai/-/openai-6.39.1.tgz#ca825d519952759c192b02ee3d716f1eb07b31ca" @@ -35587,11 +35531,6 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.1: - version "2.8.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" - integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== - yaml@^2.2.2: version "2.7.0" resolved "https://registry.npmmirror.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"