From 8bc3eb56a4b08ad0db80cbd2808447c09c36a34f Mon Sep 17 00:00:00 2001 From: scott------ Date: Tue, 14 Jan 2025 13:43:57 -0500 Subject: [PATCH 01/29] Update README.md minor grammar update minor grammar correct, removing incorrect use of word 'a'. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 184eeb9..ecdfd2b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This project builds upon the foundation of the [browser-use](https://github.com/ We would like to officially thank [WarmShao](https://github.com/warmshao) for his contribution to this project. -**WebUI:** is built on Gradio and supports a most of `browser-use` functionalities. This UI is designed to be user-friendly and enables easy interaction with the browser agent. +**WebUI:** is built on Gradio and supports most of `browser-use` functionalities. This UI is designed to be user-friendly and enables easy interaction with the browser agent. **Expanded LLM Support:** We've integrated support for various Large Language Models (LLMs), including: Gemini, OpenAI, Azure OpenAI, Anthropic, DeepSeek, Ollama etc. And we plan to add support for even more models in the future. @@ -181,4 +181,4 @@ playwright install ## Changelog - [x] **2025/01/10:** Thanks to @casistack. Now we have Docker Setup option and also Support keep browser open between tasks.[Video tutorial demo](https://github.com/browser-use/web-ui/issues/1#issuecomment-2582511750). -- [x] **2025/01/06:** Thanks to @richard-devbot. A New and Well-Designed WebUI is released. [Video tutorial demo](https://github.com/warmshao/browser-use-webui/issues/1#issuecomment-2573393113). \ No newline at end of file +- [x] **2025/01/06:** Thanks to @richard-devbot. A New and Well-Designed WebUI is released. [Video tutorial demo](https://github.com/warmshao/browser-use-webui/issues/1#issuecomment-2573393113). From 68446577f440bde5c89aae6c8139e4d93acce830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Abrahamsson?= Date: Fri, 24 Jan 2025 14:14:41 +0100 Subject: [PATCH 02/29] Add library requirement for mistralai --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 619ee66..8cab293 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ pyperclip==1.9.0 gradio==5.9.1 langchain-ollama==0.2.2 langchain-openai==0.2.14 +langchain-mistralai==0.2.4 From 46bbd559d2270ddb5578b1114b94273f828efe03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Abrahamsson?= Date: Fri, 24 Jan 2025 14:14:56 +0100 Subject: [PATCH 03/29] Added a test-case for the mistralai api --- tests/test_llm_api.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 9e2a1d6..405308e 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -16,6 +16,25 @@ import sys sys.path.append(".") +def test_mistral_model(): + from langchain_core.messages import HumanMessage + from src.utils import utils + + llm = utils.get_llm_model( + provider="mistral", + model_name="mistral-large-latest", + temperature=0.8, + base_url=os.getenv("MISTRAL_ENDPOINT", ""), + api_key=os.getenv("MISTRAL_API_KEY", "") + ) + message = HumanMessage( + content=[ + {"type": "text", "text": "who are you?"} + ] + ) + ai_msg = llm.invoke([message]) + print(ai_msg.content) + def test_openai_model(): from langchain_core.messages import HumanMessage from src.utils import utils @@ -128,4 +147,5 @@ if __name__ == '__main__': # test_gemini_model() # test_azure_openai_model() # test_deepseek_model() - test_ollama_model() + # test_ollama_model() + test_mistral_model() From 456988fef0c720947bf6cc1d5bc1c7300abdccd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Abrahamsson?= Date: Fri, 24 Jan 2025 14:35:20 +0100 Subject: [PATCH 04/29] Implemented mistral in webui --- src/utils/utils.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/utils/utils.py b/src/utils/utils.py index cfe24d3..da0197b 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -11,6 +11,7 @@ from pathlib import Path from typing import Dict, Optional from langchain_anthropic import ChatAnthropic +from langchain_mistralai import ChatMistralAI from langchain_google_genai import ChatGoogleGenerativeAI from langchain_ollama import ChatOllama from langchain_openai import AzureChatOpenAI, ChatOpenAI @@ -40,6 +41,22 @@ def get_llm_model(provider: str, **kwargs): base_url=base_url, api_key=api_key, ) + elif provider == 'mistral': + if not kwargs.get("base_url", ""): + base_url = os.getenv("MISTRAL_ENDPOINT", "https://api.mistral.ai/v1") + else: + base_url = kwargs.get("base_url") + if not kwargs.get("api_key", ""): + api_key = os.getenv("MISTRAL_API_KEY", "") + else: + api_key = kwargs.get("api_key") + + return ChatMistralAI( + model=kwargs.get("model_name", "mistral-large-latest"), + temperature=kwargs.get("temperature", 0.0), + base_url=base_url, + api_key=api_key, + ) elif provider == "openai": if not kwargs.get("base_url", ""): base_url = os.getenv("OPENAI_ENDPOINT", "https://api.openai.com/v1") @@ -117,7 +134,8 @@ model_names = { "deepseek": ["deepseek-chat"], "gemini": ["gemini-2.0-flash-exp", "gemini-2.0-flash-thinking-exp", "gemini-1.5-flash-latest", "gemini-1.5-flash-8b-latest", "gemini-2.0-flash-thinking-exp-1219" ], "ollama": ["qwen2.5:7b", "llama2:7b"], - "azure_openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo"] + "azure_openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo"], + "mistral": ["pixtral-large-latest", "mistral-large-latest", "mistral-small-latest", "ministral-8b-latest"] } # Callback to update the model name dropdown based on the selected provider From f83f44823c45021a6c2dc94a5f99824aca301ebb Mon Sep 17 00:00:00 2001 From: Anders Schwartz Date: Fri, 24 Jan 2025 18:13:13 -0500 Subject: [PATCH 05/29] fix: set docker architecture explicitly to ensure google-chrome is available to install --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index 864391b..ba0aa9c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,6 @@ services: browser-use-webui: + platform: linux/amd64 build: context: . dockerfile: Dockerfile From 7d9f81a8c6805d4960ac19513df03d364e36e9e7 Mon Sep 17 00:00:00 2001 From: Anders Schwartz Date: Fri, 24 Jan 2025 20:31:24 -0500 Subject: [PATCH 06/29] add missing netcat for health check --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 0d635ac..da615a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ FROM python:3.11-slim # Install system dependencies RUN apt-get update && apt-get install -y \ wget \ + netcat-traditional \ gnupg \ curl \ unzip \ From 21c8f598afd2b7609e04c203fbf4347b4f9173cf Mon Sep 17 00:00:00 2001 From: vincent Date: Sun, 26 Jan 2025 01:07:30 +0800 Subject: [PATCH 07/29] update readme --- README.md | 2 +- src/__init__.py | 6 ------ src/agent/__init__.py | 6 ------ src/agent/custom_agent.py | 6 ------ src/agent/custom_massage_manager.py | 6 ------ src/agent/custom_prompts.py | 5 ----- src/agent/custom_views.py | 6 ------ src/browser/__init__.py | 6 ------ src/browser/config.py | 30 ----------------------------- src/browser/custom_browser.py | 7 ------- src/browser/custom_context.py | 8 -------- src/controller/__init__.py | 5 ----- src/controller/custom_controller.py | 6 ------ src/utils/__init__.py | 6 ------ src/utils/utils.py | 6 ------ tests/test_browser_use.py | 5 ----- tests/test_llm_api.py | 6 ------ tests/test_playwright.py | 6 ------ webui.py | 8 -------- 19 files changed, 1 insertion(+), 135 deletions(-) delete mode 100644 src/browser/config.py diff --git a/README.md b/README.md index 184eeb9..529a9df 100644 --- a/README.md +++ b/README.md @@ -179,6 +179,6 @@ playwright install ``` ## Changelog - +- [x] **2025/01/26:** Thanks to @vvincent1234. Now browser-use-webui can combine with DeepSeek-r1 to engage in deep thinking! - [x] **2025/01/10:** Thanks to @casistack. Now we have Docker Setup option and also Support keep browser open between tasks.[Video tutorial demo](https://github.com/browser-use/web-ui/issues/1#issuecomment-2582511750). - [x] **2025/01/06:** Thanks to @richard-devbot. A New and Well-Designed WebUI is released. [Video tutorial demo](https://github.com/warmshao/browser-use-webui/issues/1#issuecomment-2573393113). \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py index 93fbe7f..e69de29 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: __init__.py.py diff --git a/src/agent/__init__.py b/src/agent/__init__.py index 93fbe7f..e69de29 100644 --- a/src/agent/__init__.py +++ b/src/agent/__init__.py @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: __init__.py.py diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index e501d0c..5cd0128 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: custom_agent.py - import json import logging import pdb diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index c9ca432..f906300 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: custom_massage_manager.py - from __future__ import annotations import logging diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index e9f1bd6..d32cce4 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -1,8 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: custom_prompts.py import pdb from typing import List, Optional diff --git a/src/agent/custom_views.py b/src/agent/custom_views.py index 78752ab..44272fb 100644 --- a/src/agent/custom_views.py +++ b/src/agent/custom_views.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: custom_views.py - from dataclasses import dataclass from typing import Type diff --git a/src/browser/__init__.py b/src/browser/__init__.py index 93fbe7f..e69de29 100644 --- a/src/browser/__init__.py +++ b/src/browser/__init__.py @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: __init__.py.py diff --git a/src/browser/config.py b/src/browser/config.py deleted file mode 100644 index 32329c4..0000000 --- a/src/browser/config.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/6 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: config.py - -import os -from dataclasses import dataclass -from typing import Optional - - -@dataclass -class BrowserPersistenceConfig: - """Configuration for browser persistence""" - - persistent_session: bool = False - user_data_dir: Optional[str] = None - debugging_port: Optional[int] = None - debugging_host: Optional[str] = None - - @classmethod - def from_env(cls) -> "BrowserPersistenceConfig": - """Create config from environment variables""" - return cls( - persistent_session=os.getenv("CHROME_PERSISTENT_SESSION", "").lower() - == "true", - user_data_dir=os.getenv("CHROME_USER_DATA"), - debugging_port=int(os.getenv("CHROME_DEBUGGING_PORT", "9222")), - debugging_host=os.getenv("CHROME_DEBUGGING_HOST", "localhost"), - ) \ No newline at end of file diff --git a/src/browser/custom_browser.py b/src/browser/custom_browser.py index 5f4943c..c624e25 100644 --- a/src/browser/custom_browser.py +++ b/src/browser/custom_browser.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: browser.py - import asyncio import pdb @@ -20,7 +14,6 @@ from browser_use.browser.context import BrowserContext, BrowserContextConfig from playwright.async_api import BrowserContext as PlaywrightBrowserContext import logging -from .config import BrowserPersistenceConfig from .custom_context import CustomBrowserContext logger = logging.getLogger(__name__) diff --git a/src/browser/custom_context.py b/src/browser/custom_context.py index 6de991b..aeafa68 100644 --- a/src/browser/custom_context.py +++ b/src/browser/custom_context.py @@ -1,10 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: context.py - import json import logging import os @@ -14,7 +7,6 @@ from browser_use.browser.context import BrowserContext, BrowserContextConfig from playwright.async_api import Browser as PlaywrightBrowser from playwright.async_api import BrowserContext as PlaywrightBrowserContext -from .config import BrowserPersistenceConfig logger = logging.getLogger(__name__) diff --git a/src/controller/__init__.py b/src/controller/__init__.py index b2eb1b3..e69de29 100644 --- a/src/controller/__init__.py +++ b/src/controller/__init__.py @@ -1,5 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: __init__.py.py diff --git a/src/controller/custom_controller.py b/src/controller/custom_controller.py index 6e57dd4..957de89 100644 --- a/src/controller/custom_controller.py +++ b/src/controller/custom_controller.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: custom_action.py - import pyperclip from browser_use.agent.views import ActionResult from browser_use.browser.context import BrowserContext diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 93fbe7f..e69de29 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: __init__.py.py diff --git a/src/utils/utils.py b/src/utils/utils.py index 9c86b26..18ce403 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: utils.py import base64 import os import time diff --git a/tests/test_browser_use.py b/tests/test_browser_use.py index 7f4a65e..7df27d6 100644 --- a/tests/test_browser_use.py +++ b/tests/test_browser_use.py @@ -1,8 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: test_browser_use.py import pdb from dotenv import load_dotenv diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index bd52286..9738834 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: test_llm_api.py import os import pdb diff --git a/tests/test_playwright.py b/tests/test_playwright.py index 40d8285..6704a02 100644 --- a/tests/test_playwright.py +++ b/tests/test_playwright.py @@ -1,9 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/2 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: test_playwright.py import pdb from dotenv import load_dotenv diff --git a/webui.py b/webui.py index 2e3570b..59d09b0 100644 --- a/webui.py +++ b/webui.py @@ -1,10 +1,3 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/1 -# @Author : wenshao -# @Email : wenshaoguo1026@gmail.com -# @Project : browser-use-webui -# @FileName: webui.py - import pdb import logging @@ -35,7 +28,6 @@ from src.utils import utils from src.agent.custom_agent import CustomAgent from src.browser.custom_browser import CustomBrowser from src.agent.custom_prompts import CustomSystemPrompt -from src.browser.config import BrowserPersistenceConfig from src.browser.custom_context import BrowserContextConfig, CustomBrowserContext from src.controller.custom_controller import CustomController from gradio.themes import Citrus, Default, Glass, Monochrome, Ocean, Origin, Soft, Base From dd20dd4f8c5b544c6129f8a44a1c8c08e9793bfd Mon Sep 17 00:00:00 2001 From: 0x01 <33686367+bugdisclose@users.noreply.github.com> Date: Sun, 26 Jan 2025 04:08:12 +0530 Subject: [PATCH 08/29] Create SECURITY.md --- SECURITY.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..f6c3df8 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,19 @@ +## Reporting Security Issues + +If you believe you have found a security vulnerability in browser-use, please report it through coordinated disclosure. + +**Please do not report security vulnerabilities through the repository issues, discussions, or pull requests.** + +Instead, please open a new [Github security advisory](https://github.com/browser-use/web-ui/security/advisories/new). + +Please include as much of the information listed below as you can to help me better understand and resolve the issue: + +* The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting) +* Full paths of source file(s) related to the manifestation of the issue +* The location of the affected source code (tag/branch/commit or direct URL) +* Any special configuration required to reproduce the issue +* Step-by-step instructions to reproduce the issue +* Proof-of-concept or exploit code (if possible) +* Impact of the issue, including how an attacker might exploit the issue + +This information will help me triage your report more quickly. From 45160cd2663f11742a6358701ad27bb8eda00dc4 Mon Sep 17 00:00:00 2001 From: vincent Date: Sun, 26 Jan 2025 07:52:36 +0800 Subject: [PATCH 09/29] fix cutting message bug --- .env.example | 12 ++++++++---- src/agent/custom_agent.py | 4 +++- src/agent/custom_massage_manager.py | 6 ++---- src/utils/default_config_settings.py | 2 +- webui.py | 2 -- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 2ebe67b..7b53b7a 100644 --- a/.env.example +++ b/.env.example @@ -22,12 +22,16 @@ CHROME_PATH= CHROME_USER_DATA= CHROME_DEBUGGING_PORT=9222 CHROME_DEBUGGING_HOST=localhost -CHROME_PERSISTENT_SESSION=false # Set to true to keep browser open between AI tasks +# Set to true to keep browser open between AI tasks +CHROME_PERSISTENT_SESSION=false # Display settings -RESOLUTION=1920x1080x24 # Format: WIDTHxHEIGHTxDEPTH -RESOLUTION_WIDTH=1920 # Width in pixels -RESOLUTION_HEIGHT=1080 # Height in pixels +# Format: WIDTHxHEIGHTxDEPTH +RESOLUTION=1920x1080x24 +# Width in pixels +RESOLUTION_WIDTH=1920 +# Height in pixels +RESOLUTION_HEIGHT=1080 # VNC settings VNC_PASSWORD=youvncpassword \ No newline at end of file diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index 5cd0128..3d76088 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -89,7 +89,8 @@ class CustomAgent(Agent): max_actions_per_step=max_actions_per_step, tool_call_in_content=tool_call_in_content, ) - if self.llm.model_name in ["deepseek-reasoner"]: + if hasattr(self.llm, 'model_name') and self.llm.model_name in ["deepseek-reasoner"]: + # deepseek-reasoner does not support function calling self.use_function_calling = False # TODO: deepseek-reasoner only support 64000 context self.max_input_tokens = 64000 @@ -242,6 +243,7 @@ class CustomAgent(Agent): model_output.action, self.browser_context ) if len(result) != len(model_output.action): + # I think something changes, such information should let LLM know for ri in range(len(result), len(model_output.action)): result.append(ActionResult(extracted_content=None, include_in_memory=True, diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index f906300..cc4edbc 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -88,11 +88,9 @@ class CustomMassageManager(MessageManager): def cut_messages(self): """Get current message list, potentially trimmed to max tokens""" diff = self.history.total_tokens - self.max_input_tokens - i = 1 # start from 1 to keep system message in history - while diff > 0 and i < len(self.history.messages): - self.history.remove_message(i) + while diff > 0 and len(self.history.messages) > 1: + self.history.remove_message(1) # alway remove the oldest one diff = self.history.total_tokens - self.max_input_tokens - i += 1 def add_state_message( self, diff --git a/src/utils/default_config_settings.py b/src/utils/default_config_settings.py index 02f9129..1b19ff1 100644 --- a/src/utils/default_config_settings.py +++ b/src/utils/default_config_settings.py @@ -17,7 +17,7 @@ def default_config(): "llm_temperature": 1.0, "llm_base_url": "", "llm_api_key": "", - "use_own_browser": os.getenv("CHROME_PERSISTENT_SESSION", False), + "use_own_browser": os.getenv("CHROME_PERSISTENT_SESSION", "false").lower() == "true", "keep_browser_open": False, "headless": False, "disable_security": True, diff --git a/webui.py b/webui.py index 59d09b0..f846908 100644 --- a/webui.py +++ b/webui.py @@ -34,8 +34,6 @@ from gradio.themes import Citrus, Default, Glass, Monochrome, Ocean, Origin, Sof from src.utils.default_config_settings import default_config, load_config_from_file, save_config_to_file, save_current_config, update_ui_from_config from src.utils.utils import update_model_dropdown, get_latest_files, capture_screenshot -from dotenv import load_dotenv -load_dotenv() # Global variables for persistence _global_browser = None From 8a09c965850ccf809977824de1581be58f9b4e44 Mon Sep 17 00:00:00 2001 From: vincent Date: Sun, 26 Jan 2025 08:12:12 +0800 Subject: [PATCH 10/29] fix token counting for r1 --- src/agent/custom_massage_manager.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index cc4edbc..db6158b 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -9,11 +9,15 @@ from browser_use.agent.prompts import SystemPrompt from browser_use.agent.views import ActionResult, AgentStepInfo from browser_use.browser.views import BrowserState from langchain_core.language_models import BaseChatModel +from langchain_anthropic import ChatAnthropic +from langchain_core.language_models import BaseChatModel from langchain_core.messages import ( - HumanMessage, - AIMessage + AIMessage, + BaseMessage, + HumanMessage, ) - +from langchain_openai import ChatOpenAI +from ..utils.llm import DeepSeekR1ChatOpenAI from .custom_prompts import CustomAgentMessagePrompt logger = logging.getLogger(__name__) @@ -108,3 +112,17 @@ class CustomMassageManager(MessageManager): step_info=step_info, ).get_user_message() self._add_message_with_tokens(state_message) + + def _count_text_tokens(self, text: str) -> int: + if isinstance(self.llm, (ChatOpenAI, ChatAnthropic, DeepSeekR1ChatOpenAI)): + try: + tokens = self.llm.get_num_tokens(text) + except Exception: + tokens = ( + len(text) // self.ESTIMATED_TOKENS_PER_CHARACTER + ) # Rough estimate if no tokenizer available + else: + tokens = ( + len(text) // self.ESTIMATED_TOKENS_PER_CHARACTER + ) # Rough estimate if no tokenizer available + return tokens From be01aaf33671e1bb07de671af6c430979604e11f Mon Sep 17 00:00:00 2001 From: wraps Date: Sun, 26 Jan 2025 15:39:35 +0100 Subject: [PATCH 11/29] feat: add Ollama endpoint configuration - Added `OLLAMA_ENDPOINT` environment variable to `.env.example` - Updated `get_llm_model` function in `src/utils/utils.py` to use the new `OLLAMA_ENDPOINT` environment variable if not provided --- .env.example | 2 ++ src/utils/utils.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 7b53b7a..fe2c67c 100644 --- a/.env.example +++ b/.env.example @@ -11,6 +11,8 @@ AZURE_OPENAI_API_KEY= DEEPSEEK_ENDPOINT=https://api.deepseek.com DEEPSEEK_API_KEY= +OLLAMA_ENDPOINT=http://localhost:11434 + # Set to false to disable anonymized telemetry ANONYMIZED_TELEMETRY=true diff --git a/src/utils/utils.py b/src/utils/utils.py index 18ce403..34ead04 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -89,11 +89,16 @@ def get_llm_model(provider: str, **kwargs): google_api_key=api_key, ) elif provider == "ollama": + if not kwargs.get("base_url", ""): + base_url = os.getenv("OLLAMA_ENDPOINT", "http://localhost:11434") + else: + base_url = kwargs.get("base_url") + return ChatOllama( model=kwargs.get("model_name", "qwen2.5:7b"), temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), - base_url=kwargs.get("base_url", "http://localhost:11434"), + base_url=base_url, ) elif provider == "azure_openai": if not kwargs.get("base_url", ""): From 6ceaf8de6ba7572a9b021f7d161e2ac8c2644d97 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 27 Jan 2025 14:10:23 +0800 Subject: [PATCH 12/29] adapt to browser-use==0.1.29 --- requirements.txt | 7 +- src/agent/custom_agent.py | 430 ++++++++++++++------------- src/agent/custom_massage_manager.py | 58 ++-- src/agent/custom_prompts.py | 54 ++-- src/agent/custom_views.py | 2 +- src/browser/config.py | 30 ++ src/browser/custom_browser.py | 131 +++----- src/browser/custom_context.py | 71 +---- src/controller/custom_controller.py | 8 +- src/utils/default_config_settings.py | 6 +- tests/test_browser_use.py | 26 +- tests/test_llm_api.py | 4 +- webui.py | 90 +++--- 13 files changed, 429 insertions(+), 488 deletions(-) create mode 100644 src/browser/config.py diff --git a/requirements.txt b/requirements.txt index 619ee66..8fa4294 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,3 @@ -browser-use==0.1.19 -langchain-google-genai==2.0.8 +browser-use==0.1.29 pyperclip==1.9.0 -gradio==5.9.1 -langchain-ollama==0.2.2 -langchain-openai==0.2.14 +gradio==5.10.0 diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index 3d76088..fc69a13 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -2,12 +2,12 @@ import json import logging import pdb import traceback -from typing import Optional, Type +from typing import Optional, Type, List, Dict, Any, Callable from PIL import Image, ImageDraw, ImageFont import os import base64 import io - +import platform from browser_use.agent.prompts import SystemPrompt from browser_use.agent.service import Agent from browser_use.agent.views import ( @@ -21,9 +21,9 @@ from browser_use.browser.context import BrowserContext from browser_use.browser.views import BrowserStateHistory from browser_use.controller.service import Controller from browser_use.telemetry.views import ( - AgentEndTelemetryEvent, - AgentRunTelemetryEvent, - AgentStepErrorTelemetryEvent, + AgentEndTelemetryEvent, + AgentRunTelemetryEvent, + AgentStepTelemetryEvent, ) from browser_use.utils import time_execution_async from langchain_core.language_models.chat_models import BaseChatModel @@ -70,6 +70,11 @@ class CustomAgent(Agent): max_actions_per_step: int = 10, tool_call_in_content: bool = True, agent_state: AgentState = None, + initial_actions: Optional[List[Dict[str, Dict[str, Any]]]] = None, + # Cloud Callbacks + register_new_step_callback: Callable[['BrowserState', 'AgentOutput', int], None] | None = None, + register_done_callback: Callable[['AgentHistoryList'], None] | None = None, + tool_calling_method: Optional[str] = 'auto', ): super().__init__( task=task, @@ -88,15 +93,22 @@ class CustomAgent(Agent): max_error_length=max_error_length, max_actions_per_step=max_actions_per_step, tool_call_in_content=tool_call_in_content, + initial_actions=initial_actions, + register_new_step_callback=register_new_step_callback, + register_done_callback=register_done_callback, + tool_calling_method=tool_calling_method ) - if hasattr(self.llm, 'model_name') and self.llm.model_name in ["deepseek-reasoner"]: + if self.model_name == "deepseek-reasoner": # deepseek-reasoner does not support function calling - self.use_function_calling = False - # TODO: deepseek-reasoner only support 64000 context + self.use_deepseek_r1 = True + # deepseek-reasoner only support 64000 context self.max_input_tokens = 64000 else: - self.use_function_calling = True + self.use_deepseek_r1 = False + + # custom new info self.add_infos = add_infos + # agent_state for Stop self.agent_state = agent_state self.message_manager = CustomMassageManager( llm=self.llm, @@ -107,8 +119,7 @@ class CustomAgent(Agent): include_attributes=self.include_attributes, max_error_length=self.max_error_length, max_actions_per_step=self.max_actions_per_step, - tool_call_in_content=tool_call_in_content, - use_function_calling=self.use_function_calling + use_deepseek_r1=self.use_deepseek_r1 ) def _setup_action_models(self) -> None: @@ -167,57 +178,37 @@ class CustomAgent(Agent): @time_execution_async("--get_next_action") async def get_next_action(self, input_messages: list[BaseMessage]) -> AgentOutput: """Get next action from LLM based on current state""" - if self.use_function_calling: - try: - structured_llm = self.llm.with_structured_output(self.AgentOutput, include_raw=True) - response: dict[str, Any] = await structured_llm.ainvoke(input_messages) # type: ignore - - parsed: AgentOutput = response['parsed'] - # cut the number of actions to max_actions_per_step - parsed.action = parsed.action[: self.max_actions_per_step] - self._log_response(parsed) - self.n_steps += 1 - - return parsed - except Exception as e: - # If something goes wrong, try to invoke the LLM again without structured output, - # and Manually parse the response. Temporarily solution for DeepSeek - ret = self.llm.invoke(input_messages) - if isinstance(ret.content, list): - parsed_json = json.loads(ret.content[0].replace("```json", "").replace("```", "")) - else: - parsed_json = json.loads(ret.content.replace("```json", "").replace("```", "")) - parsed: AgentOutput = self.AgentOutput(**parsed_json) - if parsed is None: - raise ValueError(f'Could not parse response.') - - # cut the number of actions to max_actions_per_step - parsed.action = parsed.action[: self.max_actions_per_step] - self._log_response(parsed) - self.n_steps += 1 - - return parsed - else: - ret = self.llm.invoke(input_messages) - if not self.use_function_calling: - self.message_manager._add_message_with_tokens(ret) + if self.use_deepseek_r1: + merged_input_messages = self.message_manager.merge_successive_human_messages(input_messages) + ai_message = self.llm.invoke(merged_input_messages) + self.message_manager._add_message_with_tokens(ai_message) logger.info(f"๐Ÿคฏ Start Deep Thinking: ") - logger.info(ret.reasoning_content) + logger.info(ai_message.reasoning_content) logger.info(f"๐Ÿคฏ End Deep Thinking") - if isinstance(ret.content, list): - parsed_json = json.loads(ret.content[0].replace("```json", "").replace("```", "")) + if isinstance(ai_message.content, list): + parsed_json = json.loads(ai_message.content[0].replace("```json", "").replace("```", "")) else: - parsed_json = json.loads(ret.content.replace("```json", "").replace("```", "")) + parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) + parsed: AgentOutput = self.AgentOutput(**parsed_json) + if parsed is None: + raise ValueError(f'Could not parse response.') + else: + ai_message = self.llm.invoke(input_messages) + self.message_manager._add_message_with_tokens(ai_message) + if isinstance(ai_message.content, list): + parsed_json = json.loads(ai_message.content[0].replace("```json", "").replace("```", "")) + else: + parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) parsed: AgentOutput = self.AgentOutput(**parsed_json) if parsed is None: raise ValueError(f'Could not parse response.') - # cut the number of actions to max_actions_per_step - parsed.action = parsed.action[: self.max_actions_per_step] - self._log_response(parsed) - self.n_steps += 1 + # cut the number of actions to max_actions_per_step + parsed.action = parsed.action[: self.max_actions_per_step] + self._log_response(parsed) + self.n_steps += 1 - return parsed + return parsed @time_execution_async("--step") async def step(self, step_info: Optional[CustomAgentStepInfo] = None) -> None: @@ -231,13 +222,17 @@ class CustomAgent(Agent): state = await self.browser_context.get_state(use_vision=self.use_vision) self.message_manager.add_state_message(state, self._last_result, step_info) input_messages = self.message_manager.get_messages() - model_output = await self.get_next_action(input_messages) - self.update_step_info(model_output, step_info) - logger.info(f"๐Ÿง  All Memory: \n{step_info.memory}") - self._save_conversation(input_messages, model_output) - if self.use_function_calling: - self.message_manager._remove_last_state_message() # we dont want the whole state in the chat history - self.message_manager.add_model_output(model_output) + try: + model_output = await self.get_next_action(input_messages) + if self.register_new_step_callback: + self.register_new_step_callback(state, model_output, self.n_steps) + self.update_step_info(model_output, step_info) + logger.info(f"๐Ÿง  All Memory: \n{step_info.memory}") + self._save_conversation(input_messages, model_output) + except Exception as e: + # model call failed, remove last state message from history + self.message_manager._remove_last_state_message() + raise e result: list[ActionResult] = await self.controller.multi_act( model_output.action, self.browser_context @@ -262,30 +257,168 @@ class CustomAgent(Agent): self._last_result = result finally: + actions = [a.model_dump(exclude_unset=True) for a in model_output.action] if model_output else [] + self.telemetry.capture( + AgentStepTelemetryEvent( + agent_id=self.agent_id, + step=self.n_steps, + actions=actions, + consecutive_failures=self.consecutive_failures, + step_error=[r.error for r in result if r.error] if result else ['No result'], + ) + ) if not result: return - for r in result: - if r.error: - self.telemetry.capture( - AgentStepErrorTelemetryEvent( - agent_id=self.agent_id, - error=r.error, - ) - ) + if state: self._make_history_item(model_output, state, result) + + async def run(self, max_steps: int = 100) -> AgentHistoryList: + """Execute the task with maximum number of steps""" + try: + self._log_agent_run() + + # Execute initial actions if provided + if self.initial_actions: + result = await self.controller.multi_act(self.initial_actions, self.browser_context, check_for_new_elements=False) + self._last_result = result + + step_info = CustomAgentStepInfo( + task=self.task, + add_infos=self.add_infos, + step_number=1, + max_steps=max_steps, + memory="", + task_progress="", + future_plans="" + ) + + for step in range(max_steps): + # 1) Check if stop requested + if self.agent_state and self.agent_state.is_stop_requested(): + logger.info("๐Ÿ›‘ Stop requested by user") + self._create_stop_history_item() + break + + # 2) Store last valid state before step + if self.browser_context and self.agent_state: + state = await self.browser_context.get_state(use_vision=self.use_vision) + self.agent_state.set_last_valid_state(state) + + if self._too_many_failures(): + break + + # 3) Do the step + await self.step(step_info) + + if self.history.is_done(): + if ( + self.validate_output and step < max_steps - 1 + ): # if last step, we dont need to validate + if not await self._validate_output(): + continue + + logger.info("โœ… Task completed successfully") + break + else: + logger.info("โŒ Failed to complete task in maximum steps") + + return self.history + + finally: + self.telemetry.capture( + AgentEndTelemetryEvent( + agent_id=self.agent_id, + success=self.history.is_done(), + steps=self.n_steps, + max_steps_reached=self.n_steps >= max_steps, + errors=self.history.errors(), + ) + ) + + if not self.injected_browser_context: + await self.browser_context.close() + + if not self.injected_browser and self.browser: + await self.browser.close() + + if self.generate_gif: + output_path: str = 'agent_history.gif' + if isinstance(self.generate_gif, str): + output_path = self.generate_gif + + self.create_history_gif(output_path=output_path) + + def _create_stop_history_item(self): + """Create a history item for when the agent is stopped.""" + try: + # Attempt to retrieve the last valid state from agent_state + state = None + if self.agent_state: + last_state = self.agent_state.get_last_valid_state() + if last_state: + # Convert to BrowserStateHistory + state = BrowserStateHistory( + url=getattr(last_state, 'url', ""), + title=getattr(last_state, 'title', ""), + tabs=getattr(last_state, 'tabs', []), + interacted_element=[None], + screenshot=getattr(last_state, 'screenshot', None) + ) + else: + state = self._create_empty_state() + else: + state = self._create_empty_state() + + # Create a final item in the agent history indicating done + stop_history = AgentHistory( + model_output=None, + state=state, + result=[ActionResult(extracted_content=None, error=None, is_done=True)] + ) + self.history.history.append(stop_history) + + except Exception as e: + logger.error(f"Error creating stop history item: {e}") + # Create empty state as fallback + state = self._create_empty_state() + stop_history = AgentHistory( + model_output=None, + state=state, + result=[ActionResult(extracted_content=None, error=None, is_done=True)] + ) + self.history.history.append(stop_history) + + def _convert_to_browser_state_history(self, browser_state): + return BrowserStateHistory( + url=getattr(browser_state, 'url', ""), + title=getattr(browser_state, 'title', ""), + tabs=getattr(browser_state, 'tabs', []), + interacted_element=[None], + screenshot=getattr(browser_state, 'screenshot', None) + ) + + def _create_empty_state(self): + return BrowserStateHistory( + url="", + title="", + tabs=[], + interacted_element=[None], + screenshot=None + ) + def create_history_gif( - self, - output_path: str = 'agent_history.gif', - duration: int = 3000, - show_goals: bool = True, - show_task: bool = True, - show_logo: bool = False, - font_size: int = 40, - title_font_size: int = 56, - goal_font_size: int = 44, - margin: int = 40, - line_spacing: float = 1.5, + self, + output_path: str = 'agent_history.gif', + duration: int = 3000, + show_goals: bool = True, + show_task: bool = True, + show_logo: bool = False, + font_size: int = 40, + title_font_size: int = 56, + goal_font_size: int = 44, + margin: int = 40, + line_spacing: float = 1.5, ) -> None: """Create a GIF from the agent's history with overlaid task and goal text.""" if not self.history.history: @@ -306,10 +439,9 @@ class CustomAgent(Agent): for font_name in font_options: try: - import platform - if platform.system() == "Windows": + if platform.system() == 'Windows': # Need to specify the abs font path on Windows - font_name = os.path.join(os.getenv("WIN_FONT_DIR", "C:\\Windows\\Fonts"), font_name + ".ttf") + font_name = os.path.join(os.getenv('WIN_FONT_DIR', 'C:\\Windows\\Fonts'), font_name + '.ttf') regular_font = ImageFont.truetype(font_name, font_size) title_font = ImageFont.truetype(font_name, title_font_size) goal_font = ImageFont.truetype(font_name, goal_font_size) @@ -386,134 +518,4 @@ class CustomAgent(Agent): ) logger.info(f'Created GIF at {output_path}') else: - logger.warning('No images found in history to create GIF') - - async def run(self, max_steps: int = 100) -> AgentHistoryList: - """Execute the task with maximum number of steps""" - try: - logger.info(f"๐Ÿš€ Starting task: {self.task}") - - self.telemetry.capture( - AgentRunTelemetryEvent( - agent_id=self.agent_id, - task=self.task, - ) - ) - - step_info = CustomAgentStepInfo( - task=self.task, - add_infos=self.add_infos, - step_number=1, - max_steps=max_steps, - memory="", - task_progress="", - future_plans="" - ) - - for step in range(max_steps): - # 1) Check if stop requested - if self.agent_state and self.agent_state.is_stop_requested(): - logger.info("๐Ÿ›‘ Stop requested by user") - self._create_stop_history_item() - break - - # 2) Store last valid state before step - if self.browser_context and self.agent_state: - state = await self.browser_context.get_state(use_vision=self.use_vision) - self.agent_state.set_last_valid_state(state) - - if self._too_many_failures(): - break - - # 3) Do the step - await self.step(step_info) - - if self.history.is_done(): - if ( - self.validate_output and step < max_steps - 1 - ): # if last step, we dont need to validate - if not await self._validate_output(): - continue - - logger.info("โœ… Task completed successfully") - break - else: - logger.info("โŒ Failed to complete task in maximum steps") - - return self.history - - finally: - self.telemetry.capture( - AgentEndTelemetryEvent( - agent_id=self.agent_id, - task=self.task, - success=self.history.is_done(), - steps=len(self.history.history), - ) - ) - if not self.injected_browser_context: - await self.browser_context.close() - - if not self.injected_browser and self.browser: - await self.browser.close() - - if self.generate_gif: - self.create_history_gif() - - def _create_stop_history_item(self): - """Create a history item for when the agent is stopped.""" - try: - # Attempt to retrieve the last valid state from agent_state - state = None - if self.agent_state: - last_state = self.agent_state.get_last_valid_state() - if last_state: - # Convert to BrowserStateHistory - state = BrowserStateHistory( - url=getattr(last_state, 'url', ""), - title=getattr(last_state, 'title', ""), - tabs=getattr(last_state, 'tabs', []), - interacted_element=[None], - screenshot=getattr(last_state, 'screenshot', None) - ) - else: - state = self._create_empty_state() - else: - state = self._create_empty_state() - - # Create a final item in the agent history indicating done - stop_history = AgentHistory( - model_output=None, - state=state, - result=[ActionResult(extracted_content=None, error=None, is_done=True)] - ) - self.history.history.append(stop_history) - - except Exception as e: - logger.error(f"Error creating stop history item: {e}") - # Create empty state as fallback - state = self._create_empty_state() - stop_history = AgentHistory( - model_output=None, - state=state, - result=[ActionResult(extracted_content=None, error=None, is_done=True)] - ) - self.history.history.append(stop_history) - - def _convert_to_browser_state_history(self, browser_state): - return BrowserStateHistory( - url=getattr(browser_state, 'url', ""), - title=getattr(browser_state, 'title', ""), - tabs=getattr(browser_state, 'tabs', []), - interacted_element=[None], - screenshot=getattr(browser_state, 'screenshot', None) - ) - - def _create_empty_state(self): - return BrowserStateHistory( - url="", - title="", - tabs=[], - interacted_element=[None], - screenshot=None - ) + logger.warning('No images found in history to create GIF') \ No newline at end of file diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index db6158b..3a6bb32 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -15,6 +15,7 @@ from langchain_core.messages import ( AIMessage, BaseMessage, HumanMessage, + ToolMessage ) from langchain_openai import ChatOpenAI from ..utils.llm import DeepSeekR1ChatOpenAI @@ -31,13 +32,13 @@ class CustomMassageManager(MessageManager): action_descriptions: str, system_prompt_class: Type[SystemPrompt], max_input_tokens: int = 128000, - estimated_tokens_per_character: int = 3, + estimated_characters_per_token: int = 3, image_tokens: int = 800, include_attributes: list[str] = [], max_error_length: int = 400, max_actions_per_step: int = 10, - tool_call_in_content: bool = False, - use_function_calling: bool = True + message_context: Optional[str] = None, + use_deepseek_r1: bool = False ): super().__init__( llm=llm, @@ -45,55 +46,30 @@ class CustomMassageManager(MessageManager): action_descriptions=action_descriptions, system_prompt_class=system_prompt_class, max_input_tokens=max_input_tokens, - estimated_tokens_per_character=estimated_tokens_per_character, + estimated_characters_per_token=estimated_characters_per_token, image_tokens=image_tokens, include_attributes=include_attributes, max_error_length=max_error_length, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content, + message_context=message_context ) - self.use_function_calling = use_function_calling + self.tool_id = 1 + self.use_deepseek_r1 = use_deepseek_r1 # Custom: Move Task info to state_message self.history = MessageHistory() self._add_message_with_tokens(self.system_prompt) - if self.use_function_calling: - tool_calls = [ - { - 'name': 'CustomAgentOutput', - 'args': { - 'current_state': { - 'prev_action_evaluation': 'Unknown - No previous actions to evaluate.', - 'important_contents': '', - 'completed_contents': '', - 'thought': 'Now Google is open. Need to type OpenAI to search.', - 'summary': 'Type OpenAI to search.', - }, - 'action': [], - }, - 'id': '', - 'type': 'tool_call', - } - ] - if self.tool_call_in_content: - # openai throws error if tool_calls are not responded -> move to content - example_tool_call = AIMessage( - content=f'{tool_calls}', - tool_calls=[], - ) - else: - example_tool_call = AIMessage( - content=f'', - tool_calls=tool_calls, - ) - - self._add_message_with_tokens(example_tool_call) + if self.message_context: + context_message = HumanMessage(content=self.message_context) + self._add_message_with_tokens(context_message) def cut_messages(self): """Get current message list, potentially trimmed to max tokens""" diff = self.history.total_tokens - self.max_input_tokens - while diff > 0 and len(self.history.messages) > 1: - self.history.remove_message(1) # alway remove the oldest one + min_message_len = 2 if self.message_context is not None else 1 + + while diff > 0 and len(self.history.messages) > min_message_len: + self.history.remove_message(min_message_len) # alway remove the oldest message diff = self.history.total_tokens - self.max_input_tokens def add_state_message( @@ -119,10 +95,10 @@ class CustomMassageManager(MessageManager): tokens = self.llm.get_num_tokens(text) except Exception: tokens = ( - len(text) // self.ESTIMATED_TOKENS_PER_CHARACTER + len(text) // self.estimated_characters_per_token ) # Rough estimate if no tokenizer available else: tokens = ( - len(text) // self.ESTIMATED_TOKENS_PER_CHARACTER + len(text) // self.estimated_characters_per_token ) # Rough estimate if no tokenizer available return tokens diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index d32cce4..c69461f 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -1,7 +1,7 @@ import pdb from typing import List, Optional -from browser_use.agent.prompts import SystemPrompt +from browser_use.agent.prompts import SystemPrompt, AgentMessagePrompt from browser_use.agent.views import ActionResult from browser_use.browser.views import BrowserState from langchain_core.messages import HumanMessage, SystemMessage @@ -19,7 +19,7 @@ class CustomSystemPrompt(SystemPrompt): { "current_state": { "prev_action_evaluation": "Success|Failed|Unknown - Analyze the current elements and the image to check if the previous goals/actions are successful like intended by the task. Ignore the action result. The website is the ground truth. Also mention if something unexpected happened like new suggestions in an input field. Shortly state why/why not. Note that the result you output must be consistent with the reasoning you output afterwards. If you consider it to be 'Failed,' you should reflect on this during your thought.", - "important_contents": "Output important contents closely related to user\'s instruction or task on the current page. If there is, please output the contents. If not, please output empty string ''.", + "important_contents": "Output important contents closely related to user\'s instruction on the current page. If there is, please output the contents. If not, please output empty string ''.", "task_progress": "Task Progress is a general summary of the current contents that have been completed. Just summarize the contents that have been actually completed based on the content at current step and the history operations. Please list each completed item individually, such as: 1. Input username. 2. Input Password. 3. Click confirm button. Please return string type not a list.", "future_plans": "Based on the user's request and the current state, outline the remaining steps needed to complete the task. This should be a concise list of actions yet to be performed, such as: 1. Select a date. 2. Choose a specific time slot. 3. Confirm booking. Please return string type not a list.", "thought": "Think about the requirements that have been completed in previous operations and the requirements that need to be completed in the next one operation. If your output of prev_action_evaluation is 'Failed', please reflect and output your reflection here.", @@ -142,7 +142,7 @@ class CustomSystemPrompt(SystemPrompt): return SystemMessage(content=AGENT_PROMPT) -class CustomAgentMessagePrompt: +class CustomAgentMessagePrompt(AgentMessagePrompt): def __init__( self, state: BrowserState, @@ -151,11 +151,12 @@ class CustomAgentMessagePrompt: max_error_length: int = 400, step_info: Optional[CustomAgentStepInfo] = None, ): - self.state = state - self.result = result - self.max_error_length = max_error_length - self.include_attributes = include_attributes - self.step_info = step_info + super(CustomAgentMessagePrompt, self).__init__(state=state, + result=result, + include_attributes=include_attributes, + max_error_length=max_error_length, + step_info=step_info + ) def get_user_message(self) -> HumanMessage: if self.step_info: @@ -164,8 +165,26 @@ class CustomAgentMessagePrompt: step_info_description = '' elements_text = self.state.element_tree.clickable_elements_to_string(include_attributes=self.include_attributes) - if not elements_text: + + has_content_above = (self.state.pixels_above or 0) > 0 + has_content_below = (self.state.pixels_below or 0) > 0 + + if elements_text != '': + if has_content_above: + elements_text = ( + f'... {self.state.pixels_above} pixels above - scroll or extract content to see more ...\n{elements_text}' + ) + else: + elements_text = f'[Start of page]\n{elements_text}' + if has_content_below: + elements_text = ( + f'{elements_text}\n... {self.state.pixels_below} pixels below - scroll or extract content to see more ...' + ) + else: + elements_text = f'{elements_text}\n[End of page]' + else: elements_text = 'empty page' + state_description = f""" {step_info_description} 1. Task: {self.step_info.task} @@ -182,14 +201,15 @@ class CustomAgentMessagePrompt: if self.result: for i, result in enumerate(self.result): - if result.extracted_content: - state_description += f"\nResult of action {i + 1}/{len(self.result)}: {result.extracted_content}" - if result.error: - # only use last 300 characters of error - error = result.error[-self.max_error_length:] - state_description += ( - f"\nError of action {i + 1}/{len(self.result)}: ...{error}" - ) + if result.include_in_memory: + if result.extracted_content: + state_description += f"\nResult of action {i + 1}/{len(self.result)}: {result.extracted_content}" + if result.error: + # only use last 300 characters of error + error = result.error[-self.max_error_length:] + state_description += ( + f"\nError of action {i + 1}/{len(self.result)}: ...{error}" + ) if self.state.screenshot: # Format message for vision model diff --git a/src/agent/custom_views.py b/src/agent/custom_views.py index 44272fb..d0dfb06 100644 --- a/src/agent/custom_views.py +++ b/src/agent/custom_views.py @@ -45,7 +45,7 @@ class CustomAgentOutput(AgentOutput): ) -> Type["CustomAgentOutput"]: """Extend actions with custom actions""" return create_model( - "AgentOutput", + "CustomAgentOutput", __base__=CustomAgentOutput, action=( list[custom_actions], diff --git a/src/browser/config.py b/src/browser/config.py new file mode 100644 index 0000000..32329c4 --- /dev/null +++ b/src/browser/config.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# @Time : 2025/1/6 +# @Author : wenshao +# @ProjectName: browser-use-webui +# @FileName: config.py + +import os +from dataclasses import dataclass +from typing import Optional + + +@dataclass +class BrowserPersistenceConfig: + """Configuration for browser persistence""" + + persistent_session: bool = False + user_data_dir: Optional[str] = None + debugging_port: Optional[int] = None + debugging_host: Optional[str] = None + + @classmethod + def from_env(cls) -> "BrowserPersistenceConfig": + """Create config from environment variables""" + return cls( + persistent_session=os.getenv("CHROME_PERSISTENT_SESSION", "").lower() + == "true", + user_data_dir=os.getenv("CHROME_USER_DATA"), + debugging_port=int(os.getenv("CHROME_DEBUGGING_PORT", "9222")), + debugging_host=os.getenv("CHROME_DEBUGGING_HOST", "localhost"), + ) \ No newline at end of file diff --git a/src/browser/custom_browser.py b/src/browser/custom_browser.py index c624e25..661470e 100644 --- a/src/browser/custom_browser.py +++ b/src/browser/custom_browser.py @@ -3,11 +3,11 @@ import pdb from playwright.async_api import Browser as PlaywrightBrowser from playwright.async_api import ( - BrowserContext as PlaywrightBrowserContext, + BrowserContext as PlaywrightBrowserContext, ) from playwright.async_api import ( - Playwright, - async_playwright, + Playwright, + async_playwright, ) from browser_use.browser.browser import Browser from browser_use.browser.context import BrowserContext, BrowserContextConfig @@ -25,96 +25,57 @@ class CustomBrowser(Browser): config: BrowserContextConfig = BrowserContextConfig() ) -> CustomBrowserContext: return CustomBrowserContext(config=config, browser=self) - - async def _setup_browser(self, playwright: Playwright) -> PlaywrightBrowser: + + async def _setup_browser_with_instance(self, playwright: Playwright) -> PlaywrightBrowser: """Sets up and returns a Playwright Browser instance with anti-detection measures.""" - if self.config.wss_url: - browser = await playwright.chromium.connect(self.config.wss_url) - return browser - elif self.config.chrome_instance_path: - import subprocess + if not self.config.chrome_instance_path: + raise ValueError('Chrome instance path is required') + import subprocess - import requests + import requests - try: - # Check if browser is already running - response = requests.get('http://localhost:9222/json/version', timeout=2) - if response.status_code == 200: - logger.info('Reusing existing Chrome instance') - browser = await playwright.chromium.connect_over_cdp( - endpoint_url='http://localhost:9222', - timeout=20000, # 20 second timeout for connection - ) - return browser - except requests.ConnectionError: - logger.debug('No existing Chrome instance found, starting a new one') - - # Start a new Chrome instance - subprocess.Popen( - [ - self.config.chrome_instance_path, - '--remote-debugging-port=9222', - ], - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - ) - - # Attempt to connect again after starting a new instance - for _ in range(10): - try: - response = requests.get('http://localhost:9222/json/version', timeout=2) - if response.status_code == 200: - break - except requests.ConnectionError: - pass - await asyncio.sleep(1) - - try: + try: + # Check if browser is already running + response = requests.get('http://localhost:9222/json/version', timeout=2) + if response.status_code == 200: + logger.info('Reusing existing Chrome instance') browser = await playwright.chromium.connect_over_cdp( endpoint_url='http://localhost:9222', timeout=20000, # 20 second timeout for connection ) return browser - except Exception as e: - logger.error(f'Failed to start a new Chrome instance.: {str(e)}') - raise RuntimeError( - ' To start chrome in Debug mode, you need to close all existing Chrome instances and try again otherwise we can not connect to the instance.' - ) + except requests.ConnectionError: + logger.debug('No existing Chrome instance found, starting a new one') - else: + # Start a new Chrome instance + subprocess.Popen( + [ + self.config.chrome_instance_path, + '--remote-debugging-port=9222', + ] + self.config.extra_chromium_args, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + + # try to connect first in case the browser have not started + for _ in range(10): try: - disable_security_args = [] - if self.config.disable_security: - disable_security_args = [ - '--disable-web-security', - '--disable-site-isolation-trials', - '--disable-features=IsolateOrigins,site-per-process', - ] + response = requests.get('http://localhost:9222/json/version', timeout=2) + if response.status_code == 200: + break + except requests.ConnectionError: + pass + await asyncio.sleep(1) - browser = await playwright.chromium.launch( - headless=self.config.headless, - args=[ - '--no-sandbox', - '--disable-blink-features=AutomationControlled', - '--disable-infobars', - '--disable-background-timer-throttling', - '--disable-popup-blocking', - '--disable-backgrounding-occluded-windows', - '--disable-renderer-backgrounding', - '--disable-window-activation', - '--disable-focus-on-load', - '--no-first-run', - '--no-default-browser-check', - '--no-startup-window', - '--window-position=0,0', - # '--window-size=1280,1000', - ] - + disable_security_args - + self.config.extra_chromium_args, - proxy=self.config.proxy, - ) - - return browser - except Exception as e: - logger.error(f'Failed to initialize Playwright browser: {str(e)}') - raise + # Attempt to connect again after starting a new instance + try: + browser = await playwright.chromium.connect_over_cdp( + endpoint_url='http://localhost:9222', + timeout=20000, # 20 second timeout for connection + ) + return browser + except Exception as e: + logger.error(f'Failed to start a new Chrome instance.: {str(e)}') + raise RuntimeError( + ' To start chrome in Debug mode, you need to close all existing Chrome instances and try again otherwise we can not connect to the instance.' + ) \ No newline at end of file diff --git a/src/browser/custom_context.py b/src/browser/custom_context.py index aeafa68..c293174 100644 --- a/src/browser/custom_context.py +++ b/src/browser/custom_context.py @@ -16,73 +16,4 @@ class CustomBrowserContext(BrowserContext): browser: "Browser", config: BrowserContextConfig = BrowserContextConfig() ): - super(CustomBrowserContext, self).__init__(browser=browser, config=config) - - async def _create_context(self, browser: PlaywrightBrowser) -> PlaywrightBrowserContext: - """Creates a new browser context with anti-detection measures and loads cookies if available.""" - # If we have a context, return it directly - - # Check if we should use existing context for persistence - if self.browser.config.chrome_instance_path and len(browser.contexts) > 0: - # Connect to existing Chrome instance instead of creating new one - context = browser.contexts[0] - else: - # Original code for creating new context - context = await browser.new_context( - viewport=self.config.browser_window_size, - no_viewport=False, - user_agent=( - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " - "(KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" - ), - java_script_enabled=True, - bypass_csp=self.config.disable_security, - ignore_https_errors=self.config.disable_security, - record_video_dir=self.config.save_recording_path, - record_video_size=self.config.browser_window_size, - ) - - if self.config.trace_path: - await context.tracing.start(screenshots=True, snapshots=True, sources=True) - - # Load cookies if they exist - if self.config.cookies_file and os.path.exists(self.config.cookies_file): - with open(self.config.cookies_file, "r") as f: - cookies = json.load(f) - logger.info( - f"Loaded {len(cookies)} cookies from {self.config.cookies_file}" - ) - await context.add_cookies(cookies) - - # Expose anti-detection scripts - await context.add_init_script( - """ - // Webdriver property - Object.defineProperty(navigator, 'webdriver', { - get: () => undefined - }); - - // Languages - Object.defineProperty(navigator, 'languages', { - get: () => ['en-US', 'en'] - }); - - // Plugins - Object.defineProperty(navigator, 'plugins', { - get: () => [1, 2, 3, 4, 5] - }); - - // Chrome runtime - window.chrome = { runtime: {} }; - - // Permissions - const originalQuery = window.navigator.permissions.query; - window.navigator.permissions.query = (parameters) => ( - parameters.name === 'notifications' ? - Promise.resolve({ state: Notification.permission }) : - originalQuery(parameters) - ); - """ - ) - - return context + super(CustomBrowserContext, self).__init__(browser=browser, config=config) \ No newline at end of file diff --git a/src/controller/custom_controller.py b/src/controller/custom_controller.py index 957de89..a89bef0 100644 --- a/src/controller/custom_controller.py +++ b/src/controller/custom_controller.py @@ -1,12 +1,16 @@ import pyperclip +from typing import Optional, Type +from pydantic import BaseModel from browser_use.agent.views import ActionResult from browser_use.browser.context import BrowserContext from browser_use.controller.service import Controller class CustomController(Controller): - def __init__(self): - super().__init__() + def __init__(self, exclude_actions: list[str] = [], + output_model: Optional[Type[BaseModel]] = None + ): + super().__init__(exclude_actions=exclude_actions, output_model=output_model) self._register_custom_actions() def _register_custom_actions(self): diff --git a/src/utils/default_config_settings.py b/src/utils/default_config_settings.py index 1b19ff1..92515e5 100644 --- a/src/utils/default_config_settings.py +++ b/src/utils/default_config_settings.py @@ -11,7 +11,7 @@ def default_config(): "max_steps": 100, "max_actions_per_step": 10, "use_vision": True, - "tool_call_in_content": True, + "tool_calling_method": "auto", "llm_provider": "openai", "llm_model_name": "gpt-4o", "llm_temperature": 1.0, @@ -56,7 +56,7 @@ def save_current_config(*args): "max_steps": args[1], "max_actions_per_step": args[2], "use_vision": args[3], - "tool_call_in_content": args[4], + "tool_calling_method": args[4], "llm_provider": args[5], "llm_model_name": args[6], "llm_temperature": args[7], @@ -86,7 +86,7 @@ def update_ui_from_config(config_file): gr.update(value=loaded_config.get("max_steps", 100)), gr.update(value=loaded_config.get("max_actions_per_step", 10)), gr.update(value=loaded_config.get("use_vision", True)), - gr.update(value=loaded_config.get("tool_call_in_content", True)), + gr.update(value=loaded_config.get("tool_calling_method", True)), gr.update(value=loaded_config.get("llm_provider", "openai")), gr.update(value=loaded_config.get("llm_model_name", "gpt-4o")), gr.update(value=loaded_config.get("llm_temperature", 1.0)), diff --git a/tests/test_browser_use.py b/tests/test_browser_use.py index 7df27d6..925b81d 100644 --- a/tests/test_browser_use.py +++ b/tests/test_browser_use.py @@ -40,7 +40,15 @@ async def test_browser_use_org(): window_w, window_h = 1920, 1080 use_vision = False - chrome_path = os.getenv("CHROME_PATH", None) + use_own_browser = False + if use_own_browser: + chrome_path = os.getenv("CHROME_PATH", None) + if chrome_path == "": + chrome_path = None + else: + chrome_path = None + + tool_calling_method = "json_schema" # setting to json_schema when using ollma browser = Browser( config=BrowserConfig( @@ -64,7 +72,8 @@ async def test_browser_use_org(): task="go to google.com and type 'OpenAI' click search and give me the first url", llm=llm, browser_context=browser_context, - use_vision=use_vision + use_vision=use_vision, + tool_calling_method=tool_calling_method ) history: AgentHistoryList = await agent.run(max_steps=10) @@ -242,9 +251,15 @@ async def test_browser_use_custom_v2(): # api_key=os.getenv("GOOGLE_API_KEY", "") # ) + # llm = utils.get_llm_model( + # provider="deepseek", + # model_name="deepseek-reasoner", + # temperature=0.8 + # ) + llm = utils.get_llm_model( provider="deepseek", - model_name="deepseek-reasoner", + model_name="deepseek-chat", temperature=0.8 ) @@ -256,7 +271,7 @@ async def test_browser_use_custom_v2(): use_own_browser = False disable_security = True use_vision = False # Set to False when using DeepSeek - tool_call_in_content = True # Set to True when using Ollama + max_actions_per_step = 1 playwright = None browser = None @@ -288,7 +303,7 @@ async def test_browser_use_custom_v2(): ) ) agent = CustomAgent( - task="go to google.com and type 'OpenAI' click search and give me the first url", + task="give me stock price of Nvidia and tesla", add_infos="", # some hints for llm to complete the task llm=llm, browser=browser, @@ -296,7 +311,6 @@ async def test_browser_use_custom_v2(): controller=controller, system_prompt_class=CustomSystemPrompt, use_vision=use_vision, - tool_call_in_content=tool_call_in_content, max_actions_per_step=max_actions_per_step ) history: AgentHistoryList = await agent.run(max_steps=10) diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 9738834..2bf4751 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -148,6 +148,6 @@ if __name__ == '__main__': # test_openai_model() # test_gemini_model() # test_azure_openai_model() - # test_deepseek_model() + test_deepseek_model() # test_ollama_model() - test_deepseek_r1_model() + # test_deepseek_r1_model() diff --git a/webui.py b/webui.py index f846908..5a1130d 100644 --- a/webui.py +++ b/webui.py @@ -21,6 +21,7 @@ from browser_use.browser.context import ( BrowserContextConfig, BrowserContextWindowSize, ) +from langchain_ollama import ChatOllama from playwright.async_api import async_playwright from src.utils.agent_state import AgentState @@ -91,7 +92,7 @@ async def run_browser_agent( max_steps, use_vision, max_actions_per_step, - tool_call_in_content + tool_calling_method ): global _global_agent_state _global_agent_state.clear_stop() # Clear any previous stop requests @@ -137,7 +138,7 @@ async def run_browser_agent( max_steps=max_steps, use_vision=use_vision, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content + tool_calling_method=tool_calling_method ) elif agent_type == "custom": final_result, errors, model_actions, model_thoughts, trace_file, history_file = await run_custom_agent( @@ -156,7 +157,7 @@ async def run_browser_agent( max_steps=max_steps, use_vision=use_vision, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content + tool_calling_method=tool_calling_method ) else: raise ValueError(f"Invalid agent type: {agent_type}") @@ -215,7 +216,7 @@ async def run_org_agent( max_steps, use_vision, max_actions_per_step, - tool_call_in_content + tool_calling_method ): try: global _global_browser, _global_browser_context, _global_agent_state @@ -251,7 +252,7 @@ async def run_org_agent( ), ) ) - + agent = Agent( task=task, llm=llm, @@ -259,7 +260,7 @@ async def run_org_agent( browser=_global_browser, browser_context=_global_browser_context, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content + tool_calling_method=tool_calling_method ) history = await agent.run(max_steps=max_steps) @@ -306,7 +307,7 @@ async def run_custom_agent( max_steps, use_vision, max_actions_per_step, - tool_call_in_content + tool_calling_method ): try: global _global_browser, _global_browser_context, _global_agent_state @@ -345,7 +346,7 @@ async def run_custom_agent( ), ) ) - + # Create and run agent agent = CustomAgent( task=task, @@ -357,8 +358,8 @@ async def run_custom_agent( controller=controller, system_prompt_class=CustomSystemPrompt, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content, - agent_state=_global_agent_state + agent_state=_global_agent_state, + tool_calling_method=tool_calling_method ) history = await agent.run(max_steps=max_steps) @@ -411,7 +412,7 @@ async def run_with_stream( max_steps, use_vision, max_actions_per_step, - tool_call_in_content + tool_calling_method ): global _global_agent_state stream_vw = 80 @@ -439,7 +440,7 @@ async def run_with_stream( max_steps=max_steps, use_vision=use_vision, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content + tool_calling_method=tool_calling_method ) # Add HTML content at the start of the result array html_content = f"

Using browser...

" @@ -471,7 +472,7 @@ async def run_with_stream( max_steps=max_steps, use_vision=use_vision, max_actions_per_step=max_actions_per_step, - tool_call_in_content=tool_call_in_content + tool_calling_method=tool_calling_method ) ) @@ -628,32 +629,37 @@ def create_ui(config, theme_name="Ocean"): value=config['agent_type'], info="Select the type of agent to use", ) - max_steps = gr.Slider( - minimum=1, - maximum=200, - value=config['max_steps'], - step=1, - label="Max Run Steps", - info="Maximum number of steps the agent will take", - ) - max_actions_per_step = gr.Slider( - minimum=1, - maximum=20, - value=config['max_actions_per_step'], - step=1, - label="Max Actions per Step", - info="Maximum number of actions the agent will take per step", - ) - use_vision = gr.Checkbox( - label="Use Vision", - value=config['use_vision'], - info="Enable visual processing capabilities", - ) - tool_call_in_content = gr.Checkbox( - label="Use Tool Calls in Content", - value=config['tool_call_in_content'], - info="Enable Tool Calls in content", - ) + with gr.Column(): + max_steps = gr.Slider( + minimum=1, + maximum=200, + value=config['max_steps'], + step=1, + label="Max Run Steps", + info="Maximum number of steps the agent will take", + ) + max_actions_per_step = gr.Slider( + minimum=1, + maximum=20, + value=config['max_actions_per_step'], + step=1, + label="Max Actions per Step", + info="Maximum number of actions the agent will take per step", + ) + with gr.Column(): + use_vision = gr.Checkbox( + label="Use Vision", + value=config['use_vision'], + info="Enable visual processing capabilities", + ) + tool_calling_method = gr.Dropdown( + label="Tool Calling Method", + value=config['tool_calling_method'], + interactive=True, + allow_custom_value=True, # Allow users to input custom model names + choices=["auto", "json_schema", "function_calling"], + info="Tool Calls Funtion Name" + ) with gr.TabItem("๐Ÿ”ง LLM Configuration", id=2): with gr.Group(): @@ -803,7 +809,7 @@ def create_ui(config, theme_name="Ocean"): fn=update_ui_from_config, inputs=[config_file_input], outputs=[ - agent_type, max_steps, max_actions_per_step, use_vision, tool_call_in_content, + agent_type, max_steps, max_actions_per_step, use_vision, tool_calling_method, llm_provider, llm_model_name, llm_temperature, llm_base_url, llm_api_key, use_own_browser, keep_browser_open, headless, disable_security, enable_recording, window_w, window_h, save_recording_path, save_trace_path, save_agent_history_path, @@ -814,7 +820,7 @@ def create_ui(config, theme_name="Ocean"): save_config_button.click( fn=save_current_config, inputs=[ - agent_type, max_steps, max_actions_per_step, use_vision, tool_call_in_content, + agent_type, max_steps, max_actions_per_step, use_vision, tool_calling_method, llm_provider, llm_model_name, llm_temperature, llm_base_url, llm_api_key, use_own_browser, keep_browser_open, headless, disable_security, enable_recording, window_w, window_h, save_recording_path, save_trace_path, @@ -866,7 +872,7 @@ def create_ui(config, theme_name="Ocean"): agent_type, llm_provider, llm_model_name, llm_temperature, llm_base_url, llm_api_key, use_own_browser, keep_browser_open, headless, disable_security, window_w, window_h, save_recording_path, save_agent_history_path, save_trace_path, # Include the new path - enable_recording, task, add_infos, max_steps, use_vision, max_actions_per_step, tool_call_in_content + enable_recording, task, add_infos, max_steps, use_vision, max_actions_per_step, tool_calling_method ], outputs=[ browser_view, # Browser view From 664dce757e477f06a46dd461f6bf317abe65e8d1 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 27 Jan 2025 16:36:13 +0800 Subject: [PATCH 13/29] add deepseek-r1 ollama --- .env.example | 2 ++ src/agent/custom_agent.py | 9 +++++++-- src/agent/custom_prompts.py | 15 +++++---------- src/utils/llm.py | 35 +++++++++++++++++++++++++++++++++++ src/utils/utils.py | 29 +++++++++++++++++++++-------- tests/test_browser_use.py | 18 +++++++++++------- tests/test_llm_api.py | 13 +++++++++++-- webui.py | 3 ++- 8 files changed, 94 insertions(+), 30 deletions(-) diff --git a/.env.example b/.env.example index 7b53b7a..fe2c67c 100644 --- a/.env.example +++ b/.env.example @@ -11,6 +11,8 @@ AZURE_OPENAI_API_KEY= DEEPSEEK_ENDPOINT=https://api.deepseek.com DEEPSEEK_API_KEY= +OLLAMA_ENDPOINT=http://localhost:11434 + # Set to false to disable anonymized telemetry ANONYMIZED_TELEMETRY=true diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index fc69a13..77ba6c3 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -98,7 +98,7 @@ class CustomAgent(Agent): register_done_callback=register_done_callback, tool_calling_method=tool_calling_method ) - if self.model_name == "deepseek-reasoner": + if self.model_name in ["deepseek-reasoner"] or self.model_name.startswith("deepseek-r1"): # deepseek-reasoner does not support function calling self.use_deepseek_r1 = True # deepseek-reasoner only support 64000 context @@ -191,6 +191,7 @@ class CustomAgent(Agent): parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) parsed: AgentOutput = self.AgentOutput(**parsed_json) if parsed is None: + logger.debug(ai_message.content) raise ValueError(f'Could not parse response.') else: ai_message = self.llm.invoke(input_messages) @@ -201,6 +202,7 @@ class CustomAgent(Agent): parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) parsed: AgentOutput = self.AgentOutput(**parsed_json) if parsed is None: + logger.debug(ai_message.content) raise ValueError(f'Could not parse response.') # cut the number of actions to max_actions_per_step @@ -229,6 +231,9 @@ class CustomAgent(Agent): self.update_step_info(model_output, step_info) logger.info(f"๐Ÿง  All Memory: \n{step_info.memory}") self._save_conversation(input_messages, model_output) + # should we remove last state message? at least, deepseek-reasoner cannot remove + if self.model_name != "deepseek-reasoner": + self.message_manager._remove_last_state_message() except Exception as e: # model call failed, remove last state message from history self.message_manager._remove_last_state_message() @@ -253,7 +258,7 @@ class CustomAgent(Agent): self.consecutive_failures = 0 except Exception as e: - result = self._handle_step_error(e) + result = await self._handle_step_error(e) self._last_result = result finally: diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index c69461f..f42859e 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -26,12 +26,7 @@ class CustomSystemPrompt(SystemPrompt): "summary": "Please generate a brief natural language description for the operation in next actions based on your Thought." }, "action": [ - { - "action_name": { - // action-specific parameters - } - }, - // ... more actions in sequence + * actions in sequences, please refer to **Common action sequences**. Each output action MUST be formated as: \{action_name\: action_params\}* ] } @@ -44,7 +39,6 @@ class CustomSystemPrompt(SystemPrompt): {"click_element": {"index": 3}} ] - Navigation and extraction: [ - {"open_new_tab": {}}, {"go_to_url": {"url": "https://example.com"}}, {"extract_page_content": {}} ] @@ -127,7 +121,7 @@ class CustomSystemPrompt(SystemPrompt): AGENT_PROMPT = f"""You are a precise browser automation agent that interacts with websites through structured commands. Your role is to: 1. Analyze the provided webpage elements and structure 2. Plan a sequence of actions to accomplish the given task - 3. Respond with valid JSON containing your action sequence and state assessment + 3. Your final result MUST be a valid JSON as the **RESPONSE FORMAT** described, containing your action sequence and state assessment, No need extra content to expalin. Current date and time: {time_str} @@ -200,15 +194,16 @@ class CustomAgentMessagePrompt(AgentMessagePrompt): """ if self.result: + for i, result in enumerate(self.result): if result.include_in_memory: if result.extracted_content: - state_description += f"\nResult of action {i + 1}/{len(self.result)}: {result.extracted_content}" + state_description += f"\nResult of previous action {i + 1}/{len(self.result)}: {result.extracted_content}" if result.error: # only use last 300 characters of error error = result.error[-self.max_error_length:] state_description += ( - f"\nError of action {i + 1}/{len(self.result)}: ...{error}" + f"\nError of previous action {i + 1}/{len(self.result)}: ...{error}" ) if self.state.screenshot: diff --git a/src/utils/llm.py b/src/utils/llm.py index c38df72..c17c0e9 100644 --- a/src/utils/llm.py +++ b/src/utils/llm.py @@ -25,6 +25,7 @@ from langchain_core.outputs import ( LLMResult, RunInfo, ) +from langchain_ollama import ChatOllama from langchain_core.output_parsers.base import OutputParserLike from langchain_core.runnables import Runnable, RunnableConfig from langchain_core.tools import BaseTool @@ -98,4 +99,38 @@ class DeepSeekR1ChatOpenAI(ChatOpenAI): reasoning_content = response.choices[0].message.reasoning_content content = response.choices[0].message.content + return AIMessage(content=content, reasoning_content=reasoning_content) + +class DeepSeekR1ChatOllama(ChatOllama): + + async def ainvoke( + self, + input: LanguageModelInput, + config: Optional[RunnableConfig] = None, + *, + stop: Optional[list[str]] = None, + **kwargs: Any, + ) -> AIMessage: + org_ai_message = await super().ainvoke(input=input) + org_content = org_ai_message.content + reasoning_content = org_content.split("")[0].replace("", "") + content = org_content.split("")[1] + if "**JSON Response:**" in content: + content = content.split("**JSON Response:**")[-1] + return AIMessage(content=content, reasoning_content=reasoning_content) + + def invoke( + self, + input: LanguageModelInput, + config: Optional[RunnableConfig] = None, + *, + stop: Optional[list[str]] = None, + **kwargs: Any, + ) -> AIMessage: + org_ai_message = super().invoke(input=input) + org_content = org_ai_message.content + reasoning_content = org_content.split("")[0].replace("", "") + content = org_content.split("")[1] + if "**JSON Response:**" in content: + content = content.split("**JSON Response:**")[-1] return AIMessage(content=content, reasoning_content=reasoning_content) \ No newline at end of file diff --git a/src/utils/utils.py b/src/utils/utils.py index 18ce403..0cc537b 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -10,7 +10,7 @@ from langchain_ollama import ChatOllama from langchain_openai import AzureChatOpenAI, ChatOpenAI import gradio as gr -from .llm import DeepSeekR1ChatOpenAI +from .llm import DeepSeekR1ChatOpenAI, DeepSeekR1ChatOllama def get_llm_model(provider: str, **kwargs): """ @@ -89,12 +89,25 @@ def get_llm_model(provider: str, **kwargs): google_api_key=api_key, ) elif provider == "ollama": - return ChatOllama( - model=kwargs.get("model_name", "qwen2.5:7b"), - temperature=kwargs.get("temperature", 0.0), - num_ctx=kwargs.get("num_ctx", 32000), - base_url=kwargs.get("base_url", "http://localhost:11434"), - ) + if not kwargs.get("base_url", ""): + base_url = os.getenv("OLLAMA_ENDPOINT", "http://localhost:11434") + else: + base_url = kwargs.get("base_url") + + if kwargs.get("model_name", "qwen2.5:7b").startswith("deepseek-r1"): + return DeepSeekR1ChatOllama( + model=kwargs.get("model_name", "deepseek-r1:7b"), + temperature=kwargs.get("temperature", 0.0), + num_ctx=kwargs.get("num_ctx", 32000), + base_url=kwargs.get("base_url", base_url), + ) + else: + return ChatOllama( + model=kwargs.get("model_name", "qwen2.5:7b"), + temperature=kwargs.get("temperature", 0.0), + num_ctx=kwargs.get("num_ctx", 32000), + base_url=kwargs.get("base_url", base_url), + ) elif provider == "azure_openai": if not kwargs.get("base_url", ""): base_url = os.getenv("AZURE_OPENAI_ENDPOINT", "") @@ -120,7 +133,7 @@ model_names = { "openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo"], "deepseek": ["deepseek-chat", "deepseek-reasoner"], "gemini": ["gemini-2.0-flash-exp", "gemini-2.0-flash-thinking-exp", "gemini-1.5-flash-latest", "gemini-1.5-flash-8b-latest", "gemini-2.0-flash-thinking-exp-1219" ], - "ollama": ["qwen2.5:7b", "llama2:7b"], + "ollama": ["qwen2.5:7b", "llama2:7b", "deepseek-r1:14b", "deepseek-r1:32b"], "azure_openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo"] } diff --git a/tests/test_browser_use.py b/tests/test_browser_use.py index 925b81d..1921995 100644 --- a/tests/test_browser_use.py +++ b/tests/test_browser_use.py @@ -257,22 +257,26 @@ async def test_browser_use_custom_v2(): # temperature=0.8 # ) - llm = utils.get_llm_model( - provider="deepseek", - model_name="deepseek-chat", - temperature=0.8 - ) + # llm = utils.get_llm_model( + # provider="deepseek", + # model_name="deepseek-chat", + # temperature=0.8 + # ) # llm = utils.get_llm_model( # provider="ollama", model_name="qwen2.5:7b", temperature=0.5 # ) + + # llm = utils.get_llm_model( + # provider="ollama", model_name="deepseek-r1:14b", temperature=0.5 + # ) controller = CustomController() use_own_browser = False disable_security = True use_vision = False # Set to False when using DeepSeek - max_actions_per_step = 1 + max_actions_per_step = 10 playwright = None browser = None browser_context = None @@ -303,7 +307,7 @@ async def test_browser_use_custom_v2(): ) ) agent = CustomAgent( - task="give me stock price of Nvidia and tesla", + task="go to google.com and type 'Nvidia' click search and give me the first url", add_infos="", # some hints for llm to complete the task llm=llm, browser=browser, diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 2bf4751..8809b89 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -142,12 +142,21 @@ def test_ollama_model(): llm = ChatOllama(model="qwen2.5:7b") ai_msg = llm.invoke("Sing a ballad of LangChain.") print(ai_msg.content) + +def test_deepseek_r1_ollama_model(): + from src.utils.llm import DeepSeekR1ChatOllama + + llm = DeepSeekR1ChatOllama(model="deepseek-r1:14b") + ai_msg = llm.invoke("how many r in strawberry?") + print(ai_msg.content) + pdb.set_trace() if __name__ == '__main__': # test_openai_model() # test_gemini_model() # test_azure_openai_model() - test_deepseek_model() + # test_deepseek_model() # test_ollama_model() - # test_deepseek_r1_model() + test_deepseek_r1_model() + # test_deepseek_r1_ollama_model() \ No newline at end of file diff --git a/webui.py b/webui.py index 5a1130d..f2035f3 100644 --- a/webui.py +++ b/webui.py @@ -658,7 +658,8 @@ def create_ui(config, theme_name="Ocean"): interactive=True, allow_custom_value=True, # Allow users to input custom model names choices=["auto", "json_schema", "function_calling"], - info="Tool Calls Funtion Name" + info="Tool Calls Funtion Name", + visible=False ) with gr.TabItem("๐Ÿ”ง LLM Configuration", id=2): From b9080c3b18884aa4f3db1c2d817da3ae3a10cd81 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 27 Jan 2025 16:49:22 +0800 Subject: [PATCH 14/29] fix conflict --- src/browser/config.py | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 src/browser/config.py diff --git a/src/browser/config.py b/src/browser/config.py deleted file mode 100644 index 32329c4..0000000 --- a/src/browser/config.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2025/1/6 -# @Author : wenshao -# @ProjectName: browser-use-webui -# @FileName: config.py - -import os -from dataclasses import dataclass -from typing import Optional - - -@dataclass -class BrowserPersistenceConfig: - """Configuration for browser persistence""" - - persistent_session: bool = False - user_data_dir: Optional[str] = None - debugging_port: Optional[int] = None - debugging_host: Optional[str] = None - - @classmethod - def from_env(cls) -> "BrowserPersistenceConfig": - """Create config from environment variables""" - return cls( - persistent_session=os.getenv("CHROME_PERSISTENT_SESSION", "").lower() - == "true", - user_data_dir=os.getenv("CHROME_USER_DATA"), - debugging_port=int(os.getenv("CHROME_DEBUGGING_PORT", "9222")), - debugging_host=os.getenv("CHROME_DEBUGGING_HOST", "localhost"), - ) \ No newline at end of file From dc72b5d86267988f259e5a8e27b791347b280928 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 27 Jan 2025 20:14:29 +0800 Subject: [PATCH 15/29] fix big --- src/agent/custom_prompts.py | 2 +- src/controller/custom_controller.py | 2 +- src/utils/utils.py | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index f42859e..16236b4 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -56,7 +56,7 @@ class CustomSystemPrompt(SystemPrompt): - Use scroll to find elements you are looking for 5. TASK COMPLETION: - - If you think all the requirements of user\'s instruction have been completed and no further operation is required, output the done action to terminate the operation process. + - If you think all the requirements of user\'s instruction have been completed and no further operation is required, output the **Done** action to terminate the operation process. - Don't hallucinate actions. - If the task requires specific information - make sure to include everything in the done function. This is what the user will see. - If you are running out of steps (current step), think about speeding it up, and ALWAYS use the done action as the last action. diff --git a/src/controller/custom_controller.py b/src/controller/custom_controller.py index a89bef0..4e2ca0f 100644 --- a/src/controller/custom_controller.py +++ b/src/controller/custom_controller.py @@ -3,7 +3,7 @@ from typing import Optional, Type from pydantic import BaseModel from browser_use.agent.views import ActionResult from browser_use.browser.context import BrowserContext -from browser_use.controller.service import Controller +from browser_use.controller.service import Controller, DoneAction class CustomController(Controller): diff --git a/src/utils/utils.py b/src/utils/utils.py index 0cc537b..dd5a57f 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -99,6 +99,7 @@ def get_llm_model(provider: str, **kwargs): model=kwargs.get("model_name", "deepseek-r1:7b"), temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), + num_predict=kwargs.get("num_predict", 1024), base_url=kwargs.get("base_url", base_url), ) else: @@ -106,6 +107,7 @@ def get_llm_model(provider: str, **kwargs): model=kwargs.get("model_name", "qwen2.5:7b"), temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), + num_predict=kwargs.get("num_predict", 1024), base_url=kwargs.get("base_url", base_url), ) elif provider == "azure_openai": From 69b687003c744c218e99a990c2928b18579a57cd Mon Sep 17 00:00:00 2001 From: vincent Date: Tue, 28 Jan 2025 12:19:42 +0800 Subject: [PATCH 16/29] fix chrome user data --- README.md | 2 +- requirements.txt | 1 + src/agent/custom_agent.py | 41 +++-- src/agent/custom_massage_manager.py | 27 ++- src/agent/custom_prompts.py | 17 +- tests/test_browser_use.py | 160 +++--------------- tests/test_llm_api.py | 4 +- webui.py | 17 +- .../BrowserMetrics-67985A7A-6717.pma | Bin 0 -> 4194304 bytes .../Google/Chrome/ChromeFeatureState | 6 + .../Google/Chrome/Consent To Send Stats | 0 .../Chrome/Default/Affiliation Database | Bin 0 -> 53248 bytes .../Default/Affiliation Database-journal | 0 .../Chrome/Default/Cache/Cache_Data/index | Bin 0 -> 24 bytes .../Cache/Cache_Data/index-dir/the-real-index | Bin 0 -> 48 bytes .../Chrome/Default/ClientCertificates/LOCK | 0 .../Chrome/Default/ClientCertificates/LOG | 0 .../Default/Code Cache/js/7018b8cf1c3b00c7_0 | Bin 0 -> 306 bytes .../Default/Code Cache/js/ba678a2fbd8c358c_0 | Bin 0 -> 298 bytes .../Google/Chrome/Default/Code Cache/js/index | Bin 0 -> 24 bytes .../Code Cache/js/index-dir/the-real-index | Bin 0 -> 96 bytes .../Chrome/Default/Code Cache/wasm/index | Bin 0 -> 24 bytes .../Code Cache/wasm/index-dir/the-real-index | Bin 0 -> 48 bytes .../Google/Chrome/Default/Cookies | Bin 0 -> 20480 bytes .../Google/Chrome/Default/Cookies-journal | 0 .../Chrome/Default/DawnGraphiteCache/data_0 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnGraphiteCache/data_1 | Bin 0 -> 270336 bytes .../Chrome/Default/DawnGraphiteCache/data_2 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnGraphiteCache/data_3 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnGraphiteCache/index | Bin 0 -> 262512 bytes .../Chrome/Default/DawnWebGPUCache/data_0 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnWebGPUCache/data_1 | Bin 0 -> 270336 bytes .../Chrome/Default/DawnWebGPUCache/data_2 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnWebGPUCache/data_3 | Bin 0 -> 8192 bytes .../Chrome/Default/DawnWebGPUCache/index | Bin 0 -> 262512 bytes .../Chrome/Default/Extension Rules/CURRENT | 1 + .../Chrome/Default/Extension Rules/LOCK | 0 .../Google/Chrome/Default/Extension Rules/LOG | 2 + .../Default/Extension Rules/MANIFEST-000001 | Bin 0 -> 41 bytes .../Chrome/Default/Extension Scripts/CURRENT | 1 + .../Chrome/Default/Extension Scripts/LOCK | 0 .../Chrome/Default/Extension Scripts/LOG | 2 + .../Default/Extension Scripts/MANIFEST-000001 | Bin 0 -> 41 bytes .../Chrome/Default/Extension State/CURRENT | 1 + .../Chrome/Default/Extension State/LOCK | 0 .../Google/Chrome/Default/Extension State/LOG | 2 + .../Default/Extension State/MANIFEST-000001 | Bin 0 -> 41 bytes .../Google/Chrome/Default/Favicons | Bin 0 -> 20480 bytes .../Google/Chrome/Default/Favicons-journal | 0 .../Google/Chrome/Default/GPUCache/data_0 | Bin 0 -> 8192 bytes .../Google/Chrome/Default/GPUCache/data_1 | Bin 0 -> 270336 bytes .../Google/Chrome/Default/GPUCache/data_2 | Bin 0 -> 8192 bytes .../Google/Chrome/Default/GPUCache/data_3 | Bin 0 -> 8192 bytes .../Google/Chrome/Default/GPUCache/index | Bin 0 -> 262512 bytes .../Google/Chrome/Default/History | Bin 0 -> 163840 bytes .../Google/Chrome/Default/History-journal | 0 .../Google/Chrome/Default/LOCK | 0 .../Google/Chrome/Default/LOG | 0 .../Default/Local Storage/leveldb/CURRENT | 1 + .../Chrome/Default/Local Storage/leveldb/LOCK | 0 .../Chrome/Default/Local Storage/leveldb/LOG | 2 + .../Local Storage/leveldb/MANIFEST-000001 | Bin 0 -> 41 bytes .../Google/Chrome/Default/Login Data | Bin 0 -> 40960 bytes .../Chrome/Default/Login Data For Account | Bin 0 -> 40960 bytes .../Default/Login Data For Account-journal | 0 .../Google/Chrome/Default/Login Data-journal | 0 .../Chrome/Default/Network Persistent State | 1 + .../Default/PersistentOriginTrials/LOCK | 0 .../Chrome/Default/PersistentOriginTrials/LOG | 0 .../Google/Chrome/Default/Preferences | 1 + .../Google/Chrome/Default/README | 1 + .../Chrome/Default/Safe Browsing Cookies | Bin 0 -> 20480 bytes .../Default/Safe Browsing Cookies-journal | 0 .../Google/Chrome/Default/Secure Preferences | 1 + .../Segmentation Platform/SegmentInfoDB/LOCK | 0 .../Segmentation Platform/SegmentInfoDB/LOG | 0 .../Segmentation Platform/SignalDB/LOCK | 0 .../Segmentation Platform/SignalDB/LOG | 0 .../SignalStorageConfigDB/LOCK | 0 .../SignalStorageConfigDB/LOG | 0 .../Chrome/Default/Session Storage/CURRENT | 1 + .../Chrome/Default/Session Storage/LOCK | 0 .../Google/Chrome/Default/Session Storage/LOG | 2 + .../Default/Session Storage/MANIFEST-000001 | Bin 0 -> 41 bytes .../Sessions/Session_13382511485644650 | Bin 0 -> 987 bytes .../Default/Sessions/Tabs_13382511488601338 | Bin 0 -> 745 bytes .../Default/Shared Dictionary/cache/index | Bin 0 -> 24 bytes .../cache/index-dir/the-real-index | Bin 0 -> 48 bytes .../Chrome/Default/Shared Dictionary/db | Bin 0 -> 45056 bytes .../Default/Shared Dictionary/db-journal | 0 .../Google/Chrome/Default/SharedStorage | Bin 0 -> 4096 bytes .../Site Characteristics Database/CURRENT | 1 + .../Site Characteristics Database/LOCK | 0 .../Default/Site Characteristics Database/LOG | 2 + .../MANIFEST-000001 | Bin 0 -> 41 bytes .../Chrome/Default/Sync Data/LevelDB/CURRENT | 1 + .../Chrome/Default/Sync Data/LevelDB/LOCK | 0 .../Chrome/Default/Sync Data/LevelDB/LOG | 2 + .../Default/Sync Data/LevelDB/MANIFEST-000001 | Bin 0 -> 41 bytes .../Google/Chrome/Default/Top Sites | Bin 0 -> 20480 bytes .../Google/Chrome/Default/Top Sites-journal | 0 .../Google/Chrome/Default/TransportSecurity | 1 + .../Google/Chrome/Default/Trust Tokens | Bin 0 -> 36864 bytes .../Chrome/Default/Trust Tokens-journal | 0 .../Google/Chrome/Default/Visited Links | Bin 0 -> 131072 bytes .../Google/Chrome/Default/Web Data | Bin 0 -> 120832 bytes .../Google/Chrome/Default/Web Data-journal | 0 .../Default/commerce_subscription_db/LOCK | 0 .../Default/commerce_subscription_db/LOG | 0 .../Google/Chrome/Default/discounts_db/LOCK | 0 .../Google/Chrome/Default/discounts_db/LOG | 0 .../Chrome/Default/parcel_tracking_db/LOCK | 0 .../Chrome/Default/parcel_tracking_db/LOG | 0 .../Chrome/Default/shared_proto_db/CURRENT | 1 + .../Chrome/Default/shared_proto_db/LOCK | 0 .../Google/Chrome/Default/shared_proto_db/LOG | 2 + .../Default/shared_proto_db/MANIFEST-000001 | Bin 0 -> 41 bytes .../Default/shared_proto_db/metadata/CURRENT | 1 + .../Default/shared_proto_db/metadata/LOCK | 0 .../Default/shared_proto_db/metadata/LOG | 2 + .../shared_proto_db/metadata/MANIFEST-000001 | Bin 0 -> 41 bytes .../Google/Chrome/Default/trusted_vault.pb | 2 + .../Google/Chrome/First Run | 0 .../Google/Chrome/GrShaderCache/data_0 | Bin 0 -> 45056 bytes .../Google/Chrome/GrShaderCache/data_1 | Bin 0 -> 270336 bytes .../Google/Chrome/GrShaderCache/data_2 | Bin 0 -> 8192 bytes .../Google/Chrome/GrShaderCache/data_3 | Bin 0 -> 8192 bytes .../Google/Chrome/GrShaderCache/f_000001 | Bin 0 -> 24460 bytes .../Google/Chrome/GrShaderCache/f_000002 | Bin 0 -> 23444 bytes .../Google/Chrome/GrShaderCache/index | Bin 0 -> 262512 bytes .../Google/Chrome/GraphiteDawnCache/data_0 | Bin 0 -> 8192 bytes .../Google/Chrome/GraphiteDawnCache/data_1 | Bin 0 -> 270336 bytes .../Google/Chrome/GraphiteDawnCache/data_2 | Bin 0 -> 8192 bytes .../Google/Chrome/GraphiteDawnCache/data_3 | Bin 0 -> 8192 bytes .../Google/Chrome/GraphiteDawnCache/index | Bin 0 -> 262512 bytes .../Google/Chrome/Last Version | 1 + .../Google/Chrome/Local State | 1 + .../Google/Chrome/ShaderCache/data_0 | Bin 0 -> 8192 bytes .../Google/Chrome/ShaderCache/data_1 | Bin 0 -> 270336 bytes .../Google/Chrome/ShaderCache/data_2 | Bin 0 -> 8192 bytes .../Google/Chrome/ShaderCache/data_3 | Bin 0 -> 8192 bytes .../Google/Chrome/ShaderCache/index | Bin 0 -> 262512 bytes .../Google/Chrome/Variations | 1 + .../Chrome/segmentation_platform/ukm_db | Bin 0 -> 49152 bytes .../segmentation_platform/ukm_db-journal | 0 145 files changed, 138 insertions(+), 174 deletions(-) create mode 100644 ~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma create mode 100644 ~/Library/Application Support/Google/Chrome/ChromeFeatureState create mode 100644 ~/Library/Application Support/Google/Chrome/Consent To Send Stats create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Affiliation Database create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Affiliation Database-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cache/Cache_Data/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cache/Cache_Data/index-dir/the-real-index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/ba678a2fbd8c358c_0 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cookies create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cookies-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Favicons create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Favicons-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/History create mode 100644 ~/Library/Application Support/Google/Chrome/Default/History-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data For Account create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Network Persistent State create mode 100644 ~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Preferences create mode 100644 ~/Library/Application Support/Google/Chrome/Default/README create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Secure Preferences create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sessions/Tabs_13382511488601338 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/db create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/db-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/SharedStorage create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Top Sites create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Top Sites-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/TransportSecurity create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Trust Tokens create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Trust Tokens-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Visited Links create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Web Data create mode 100644 ~/Library/Application Support/Google/Chrome/Default/Web Data-journal create mode 100644 ~/Library/Application Support/Google/Chrome/Default/commerce_subscription_db/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/commerce_subscription_db/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/discounts_db/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/discounts_db/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/parcel_tracking_db/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/parcel_tracking_db/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/CURRENT create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/LOCK create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/LOG create mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/MANIFEST-000001 create mode 100644 ~/Library/Application Support/Google/Chrome/Default/trusted_vault.pb create mode 100644 ~/Library/Application Support/Google/Chrome/First Run create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 create mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Last Version create mode 100644 ~/Library/Application Support/Google/Chrome/Local State create mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_0 create mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_1 create mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_2 create mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_3 create mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/index create mode 100644 ~/Library/Application Support/Google/Chrome/Variations create mode 100644 ~/Library/Application Support/Google/Chrome/segmentation_platform/ukm_db create mode 100644 ~/Library/Application Support/Google/Chrome/segmentation_platform/ukm_db-journal diff --git a/README.md b/README.md index 529a9df..30b49a3 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ playwright install - Mac ```env CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" - CHROME_USER_DATA="~/Library/Application Support/Google/Chrome/Profile 1" + CHROME_USER_DATA="~/Library/Application Support/Google/Chrome" ``` - Close all Chrome windows - Open the WebUI in a non-Chrome browser, such as Firefox or Edge. This is important because the persistent browser context will use the Chrome data when running the agent. diff --git a/requirements.txt b/requirements.txt index 8fa4294..34e4b0f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ browser-use==0.1.29 pyperclip==1.9.0 gradio==5.10.0 +json-repair diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index 77ba6c3..355a8ff 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -8,10 +8,11 @@ import os import base64 import io import platform -from browser_use.agent.prompts import SystemPrompt +from browser_use.agent.prompts import SystemPrompt, AgentMessagePrompt from browser_use.agent.service import Agent from browser_use.agent.views import ( ActionResult, + ActionModel, AgentHistoryList, AgentOutput, AgentHistory, @@ -30,6 +31,7 @@ from langchain_core.language_models.chat_models import BaseChatModel from langchain_core.messages import ( BaseMessage, ) +from json_repair import repair_json from src.utils.agent_state import AgentState from .custom_massage_manager import CustomMassageManager @@ -52,6 +54,7 @@ class CustomAgent(Agent): max_failures: int = 5, retry_delay: int = 10, system_prompt_class: Type[SystemPrompt] = SystemPrompt, + agent_prompt_class: Type[AgentMessagePrompt] = AgentMessagePrompt, max_input_tokens: int = 128000, validate_output: bool = False, include_attributes: list[str] = [ @@ -98,7 +101,7 @@ class CustomAgent(Agent): register_done_callback=register_done_callback, tool_calling_method=tool_calling_method ) - if self.model_name in ["deepseek-reasoner"] or self.model_name.startswith("deepseek-r1"): + if self.model_name in ["deepseek-reasoner"] or "deepseek-r1" in self.model_name: # deepseek-reasoner does not support function calling self.use_deepseek_r1 = True # deepseek-reasoner only support 64000 context @@ -106,20 +109,23 @@ class CustomAgent(Agent): else: self.use_deepseek_r1 = False + # record last actions + self._last_actions = None # custom new info self.add_infos = add_infos # agent_state for Stop self.agent_state = agent_state + self.agent_prompt_class = agent_prompt_class self.message_manager = CustomMassageManager( llm=self.llm, task=self.task, action_descriptions=self.controller.registry.get_prompt_description(), system_prompt_class=self.system_prompt_class, + agent_prompt_class=agent_prompt_class, max_input_tokens=self.max_input_tokens, include_attributes=self.include_attributes, max_error_length=self.max_error_length, - max_actions_per_step=self.max_actions_per_step, - use_deepseek_r1=self.use_deepseek_r1 + max_actions_per_step=self.max_actions_per_step ) def _setup_action_models(self) -> None: @@ -186,9 +192,11 @@ class CustomAgent(Agent): logger.info(ai_message.reasoning_content) logger.info(f"๐Ÿคฏ End Deep Thinking") if isinstance(ai_message.content, list): - parsed_json = json.loads(ai_message.content[0].replace("```json", "").replace("```", "")) + ai_content = ai_message.content[0].replace("```json", "").replace("```", "") else: - parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) + ai_content = ai_message.content.replace("```json", "").replace("```", "") + ai_content = repair_json(ai_content) + parsed_json = json.loads(ai_content) parsed: AgentOutput = self.AgentOutput(**parsed_json) if parsed is None: logger.debug(ai_message.content) @@ -197,9 +205,11 @@ class CustomAgent(Agent): ai_message = self.llm.invoke(input_messages) self.message_manager._add_message_with_tokens(ai_message) if isinstance(ai_message.content, list): - parsed_json = json.loads(ai_message.content[0].replace("```json", "").replace("```", "")) + ai_content = ai_message.content[0].replace("```json", "").replace("```", "") else: - parsed_json = json.loads(ai_message.content.replace("```json", "").replace("```", "")) + ai_content = ai_message.content.replace("```json", "").replace("```", "") + ai_content = repair_json(ai_content) + parsed_json = json.loads(ai_content) parsed: AgentOutput = self.AgentOutput(**parsed_json) if parsed is None: logger.debug(ai_message.content) @@ -222,7 +232,7 @@ class CustomAgent(Agent): try: state = await self.browser_context.get_state(use_vision=self.use_vision) - self.message_manager.add_state_message(state, self._last_result, step_info) + self.message_manager.add_state_message(state, self._last_actions, self._last_result, step_info) input_messages = self.message_manager.get_messages() try: model_output = await self.get_next_action(input_messages) @@ -231,8 +241,8 @@ class CustomAgent(Agent): self.update_step_info(model_output, step_info) logger.info(f"๐Ÿง  All Memory: \n{step_info.memory}") self._save_conversation(input_messages, model_output) - # should we remove last state message? at least, deepseek-reasoner cannot remove if self.model_name != "deepseek-reasoner": + # remove pre-prev message self.message_manager._remove_last_state_message() except Exception as e: # model call failed, remove last state message from history @@ -242,16 +252,17 @@ class CustomAgent(Agent): result: list[ActionResult] = await self.controller.multi_act( model_output.action, self.browser_context ) - if len(result) != len(model_output.action): + actions: list[ActionModel] = model_output.action + if len(result) != len(actions): # I think something changes, such information should let LLM know - for ri in range(len(result), len(model_output.action)): + for ri in range(len(result), len(actions)): result.append(ActionResult(extracted_content=None, include_in_memory=True, - error=f"{model_output.action[ri].model_dump_json(exclude_unset=True)} is Failed to execute. \ - Something new appeared after action {model_output.action[len(result) - 1].model_dump_json(exclude_unset=True)}", + error=f"{actions[ri].model_dump_json(exclude_unset=True)} is Failed to execute. \ + Something new appeared after action {actions[len(result) - 1].model_dump_json(exclude_unset=True)}", is_done=False)) self._last_result = result - + self._last_actions = actions if len(result) > 0 and result[-1].is_done: logger.info(f"๐Ÿ“„ Result: {result[-1].extracted_content}") diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index 3a6bb32..e6fb1b5 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -5,8 +5,8 @@ from typing import List, Optional, Type from browser_use.agent.message_manager.service import MessageManager from browser_use.agent.message_manager.views import MessageHistory -from browser_use.agent.prompts import SystemPrompt -from browser_use.agent.views import ActionResult, AgentStepInfo +from browser_use.agent.prompts import SystemPrompt, AgentMessagePrompt +from browser_use.agent.views import ActionResult, AgentStepInfo, ActionModel from browser_use.browser.views import BrowserState from langchain_core.language_models import BaseChatModel from langchain_anthropic import ChatAnthropic @@ -31,14 +31,14 @@ class CustomMassageManager(MessageManager): task: str, action_descriptions: str, system_prompt_class: Type[SystemPrompt], + agent_prompt_class: Type[AgentMessagePrompt], max_input_tokens: int = 128000, estimated_characters_per_token: int = 3, image_tokens: int = 800, include_attributes: list[str] = [], max_error_length: int = 400, max_actions_per_step: int = 10, - message_context: Optional[str] = None, - use_deepseek_r1: bool = False + message_context: Optional[str] = None ): super().__init__( llm=llm, @@ -53,8 +53,7 @@ class CustomMassageManager(MessageManager): max_actions_per_step=max_actions_per_step, message_context=message_context ) - self.tool_id = 1 - self.use_deepseek_r1 = use_deepseek_r1 + self.agent_prompt_class = agent_prompt_class # Custom: Move Task info to state_message self.history = MessageHistory() self._add_message_with_tokens(self.system_prompt) @@ -71,17 +70,31 @@ class CustomMassageManager(MessageManager): while diff > 0 and len(self.history.messages) > min_message_len: self.history.remove_message(min_message_len) # alway remove the oldest message diff = self.history.total_tokens - self.max_input_tokens + + def _remove_state_message_by_index(self, remove_ind=-1) -> None: + """Remove last state message from history""" + i = 0 + remove_cnt = 0 + while len(self.history.messages) and i <= len(self.history.messages): + i += 1 + if isinstance(self.history.messages[-i].message, HumanMessage): + remove_cnt += 1 + if remove_cnt == abs(remove_ind): + self.history.remove_message(-i) + break def add_state_message( self, state: BrowserState, + actions: Optional[List[ActionModel]] = None, result: Optional[List[ActionResult]] = None, step_info: Optional[AgentStepInfo] = None, ) -> None: """Add browser state as human message""" # otherwise add state message and result to next message (which will not stay in memory) - state_message = CustomAgentMessagePrompt( + state_message = self.agent_prompt_class( state, + actions, result, include_attributes=self.include_attributes, max_error_length=self.max_error_length, diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index 16236b4..08a9040 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -2,7 +2,7 @@ import pdb from typing import List, Optional from browser_use.agent.prompts import SystemPrompt, AgentMessagePrompt -from browser_use.agent.views import ActionResult +from browser_use.agent.views import ActionResult, ActionModel from browser_use.browser.views import BrowserState from langchain_core.messages import HumanMessage, SystemMessage @@ -140,6 +140,7 @@ class CustomAgentMessagePrompt(AgentMessagePrompt): def __init__( self, state: BrowserState, + actions: Optional[List[ActionModel]] = None, result: Optional[List[ActionResult]] = None, include_attributes: list[str] = [], max_error_length: int = 400, @@ -151,10 +152,11 @@ class CustomAgentMessagePrompt(AgentMessagePrompt): max_error_length=max_error_length, step_info=step_info ) + self.actions = actions def get_user_message(self) -> HumanMessage: if self.step_info: - step_info_description = f'Current step: {self.step_info.step_number + 1}/{self.step_info.max_steps}' + step_info_description = f'Current step: {self.step_info.step_number}/{self.step_info.max_steps}\n' else: step_info_description = '' @@ -193,17 +195,20 @@ class CustomAgentMessagePrompt(AgentMessagePrompt): {elements_text} """ - if self.result: - + if self.actions and self.result: + state_description += "\n **Previous Actions** \n" + state_description += f'Previous step: {self.step_info.step_number-1}/{self.step_info.max_steps} \n' for i, result in enumerate(self.result): + action = self.actions[i] + state_description += f"Previous action {i + 1}/{len(self.result)}: {action.model_dump_json(exclude_unset=True)}\n" if result.include_in_memory: if result.extracted_content: - state_description += f"\nResult of previous action {i + 1}/{len(self.result)}: {result.extracted_content}" + state_description += f"Result of previous action {i + 1}/{len(self.result)}: {result.extracted_content}\n" if result.error: # only use last 300 characters of error error = result.error[-self.max_error_length:] state_description += ( - f"\nError of previous action {i + 1}/{len(self.result)}: ...{error}" + f"Error of previous action {i + 1}/{len(self.result)}: ...{error}\n" ) if self.state.screenshot: diff --git a/tests/test_browser_use.py b/tests/test_browser_use.py index 1921995..5a40c32 100644 --- a/tests/test_browser_use.py +++ b/tests/test_browser_use.py @@ -99,151 +99,29 @@ async def test_browser_use_custom(): from playwright.async_api import async_playwright from src.agent.custom_agent import CustomAgent - from src.agent.custom_prompts import CustomSystemPrompt + from src.agent.custom_prompts import CustomSystemPrompt, CustomAgentMessagePrompt from src.browser.custom_browser import CustomBrowser from src.browser.custom_context import BrowserContextConfig from src.controller.custom_controller import CustomController window_w, window_h = 1920, 1080 - + # llm = utils.get_llm_model( - # provider="azure_openai", + # provider="openai", # model_name="gpt-4o", # temperature=0.8, - # base_url=os.getenv("AZURE_OPENAI_ENDPOINT", ""), - # api_key=os.getenv("AZURE_OPENAI_API_KEY", ""), + # base_url=os.getenv("OPENAI_ENDPOINT", ""), + # api_key=os.getenv("OPENAI_API_KEY", ""), # ) llm = utils.get_llm_model( - provider="gemini", - model_name="gemini-2.0-flash-exp", - temperature=1.0, - api_key=os.getenv("GOOGLE_API_KEY", "") + provider="azure_openai", + model_name="gpt-4o", + temperature=0.8, + base_url=os.getenv("AZURE_OPENAI_ENDPOINT", ""), + api_key=os.getenv("AZURE_OPENAI_API_KEY", ""), ) - # llm = utils.get_llm_model( - # provider="deepseek", - # model_name="deepseek-chat", - # temperature=0.8 - # ) - - # llm = utils.get_llm_model( - # provider="ollama", model_name="qwen2.5:7b", temperature=0.8 - # ) - - controller = CustomController() - use_own_browser = False - disable_security = True - use_vision = True # Set to False when using DeepSeek - tool_call_in_content = True # Set to True when using Ollama - max_actions_per_step = 1 - playwright = None - browser_context_ = None - try: - if use_own_browser: - playwright = await async_playwright().start() - chrome_exe = os.getenv("CHROME_PATH", "") - chrome_use_data = os.getenv("CHROME_USER_DATA", "") - browser_context_ = await playwright.chromium.launch_persistent_context( - user_data_dir=chrome_use_data, - executable_path=chrome_exe, - no_viewport=False, - headless=False, # ไฟๆŒๆต่งˆๅ™จ็ช—ๅฃๅฏ่ง - user_agent=( - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " - "(KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" - ), - java_script_enabled=True, - bypass_csp=disable_security, - ignore_https_errors=disable_security, - record_video_dir="./tmp/record_videos", - record_video_size={"width": window_w, "height": window_h}, - ) - else: - browser_context_ = None - - browser = CustomBrowser( - config=BrowserConfig( - headless=False, - disable_security=True, - extra_chromium_args=[f"--window-size={window_w},{window_h}"], - ) - ) - - async with await browser.new_context( - config=BrowserContextConfig( - trace_path="./tmp/result_processing", - save_recording_path="./tmp/record_videos", - no_viewport=False, - browser_window_size=BrowserContextWindowSize( - width=window_w, height=window_h - ), - ), - context=browser_context_, - ) as browser_context: - agent = CustomAgent( - task="go to google.com and type 'OpenAI' click search and give me the first url", - add_infos="", # some hints for llm to complete the task - llm=llm, - browser_context=browser_context, - controller=controller, - system_prompt_class=CustomSystemPrompt, - use_vision=use_vision, - tool_call_in_content=tool_call_in_content, - max_actions_per_step=max_actions_per_step - ) - history: AgentHistoryList = await agent.run(max_steps=10) - - print("Final Result:") - pprint(history.final_result(), indent=4) - - print("\nErrors:") - pprint(history.errors(), indent=4) - - # e.g. xPaths the model clicked on - print("\nModel Outputs:") - pprint(history.model_actions(), indent=4) - - print("\nThoughts:") - pprint(history.model_thoughts(), indent=4) - # close browser - except Exception: - import traceback - - traceback.print_exc() - finally: - # ๆ˜พๅผๅ…ณ้—ญๆŒไน…ๅŒ–ไธŠไธ‹ๆ–‡ - if browser_context_: - await browser_context_.close() - - # ๅ…ณ้—ญ Playwright ๅฏน่ฑก - if playwright: - await playwright.stop() - - await browser.close() - - -async def test_browser_use_custom_v2(): - from browser_use.browser.context import BrowserContextWindowSize - from browser_use.browser.browser import BrowserConfig - from playwright.async_api import async_playwright - - from src.agent.custom_agent import CustomAgent - from src.agent.custom_prompts import CustomSystemPrompt - from src.browser.custom_browser import CustomBrowser - from src.browser.custom_context import BrowserContextConfig - from src.controller.custom_controller import CustomController - - window_w, window_h = 1920, 1080 - - # llm = utils.get_llm_model( - # provider="azure_openai", - # model_name="gpt-4o", - # temperature=0.8, - # base_url=os.getenv("AZURE_OPENAI_ENDPOINT", ""), - # api_key=os.getenv("AZURE_OPENAI_API_KEY", ""), - # ) - # llm = utils.get_llm_model( # provider="gemini", # model_name="gemini-2.0-flash-exp", @@ -272,9 +150,9 @@ async def test_browser_use_custom_v2(): # ) controller = CustomController() - use_own_browser = False + use_own_browser = True disable_security = True - use_vision = False # Set to False when using DeepSeek + use_vision = True # Set to False when using DeepSeek max_actions_per_step = 10 playwright = None @@ -282,10 +160,14 @@ async def test_browser_use_custom_v2(): browser_context = None try: + extra_chromium_args = [f"--window-size={window_w},{window_h}"] if use_own_browser: chrome_path = os.getenv("CHROME_PATH", None) if chrome_path == "": chrome_path = None + chrome_user_data = os.getenv("CHROME_USER_DATA", None) + if chrome_user_data: + extra_chromium_args += [f"--user-data-dir={chrome_user_data}"] else: chrome_path = None browser = CustomBrowser( @@ -293,7 +175,7 @@ async def test_browser_use_custom_v2(): headless=False, disable_security=disable_security, chrome_instance_path=chrome_path, - extra_chromium_args=[f"--window-size={window_w},{window_h}"], + extra_chromium_args=extra_chromium_args, ) ) browser_context = await browser.new_context( @@ -307,17 +189,18 @@ async def test_browser_use_custom_v2(): ) ) agent = CustomAgent( - task="go to google.com and type 'Nvidia' click search and give me the first url", + task="go to google.com and type 'OpenAI' click search and give me the first url", add_infos="", # some hints for llm to complete the task llm=llm, browser=browser, browser_context=browser_context, controller=controller, system_prompt_class=CustomSystemPrompt, + agent_prompt_class=CustomAgentMessagePrompt, use_vision=use_vision, max_actions_per_step=max_actions_per_step ) - history: AgentHistoryList = await agent.run(max_steps=10) + history: AgentHistoryList = await agent.run(max_steps=100) print("Final Result:") pprint(history.final_result(), indent=4) @@ -349,5 +232,4 @@ async def test_browser_use_custom_v2(): if __name__ == "__main__": # asyncio.run(test_browser_use_org()) - # asyncio.run(test_browser_use_custom()) - asyncio.run(test_browser_use_custom_v2()) + asyncio.run(test_browser_use_custom()) diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 8809b89..6075896 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -156,7 +156,7 @@ if __name__ == '__main__': # test_openai_model() # test_gemini_model() # test_azure_openai_model() - # test_deepseek_model() + test_deepseek_model() # test_ollama_model() - test_deepseek_r1_model() + # test_deepseek_r1_model() # test_deepseek_r1_ollama_model() \ No newline at end of file diff --git a/webui.py b/webui.py index f2035f3..c6808ab 100644 --- a/webui.py +++ b/webui.py @@ -28,7 +28,7 @@ from src.utils.agent_state import AgentState from src.utils import utils from src.agent.custom_agent import CustomAgent from src.browser.custom_browser import CustomBrowser -from src.agent.custom_prompts import CustomSystemPrompt +from src.agent.custom_prompts import CustomSystemPrompt, CustomAgentMessagePrompt from src.browser.custom_context import BrowserContextConfig, CustomBrowserContext from src.controller.custom_controller import CustomController from gradio.themes import Citrus, Default, Glass, Monochrome, Ocean, Origin, Soft, Base @@ -224,20 +224,24 @@ async def run_org_agent( # Clear any previous stop request _global_agent_state.clear_stop() + extra_chromium_args = [f"--window-size={window_w},{window_h}"] if use_own_browser: chrome_path = os.getenv("CHROME_PATH", None) if chrome_path == "": chrome_path = None + chrome_user_data = os.getenv("CHROME_USER_DATA", None) + if chrome_user_data: + extra_chromium_args += [f"--user-data-dir={chrome_user_data}"] else: chrome_path = None - + if _global_browser is None: _global_browser = Browser( config=BrowserConfig( headless=headless, disable_security=disable_security, chrome_instance_path=chrome_path, - extra_chromium_args=[f"--window-size={window_w},{window_h}"], + extra_chromium_args=extra_chromium_args, ) ) @@ -315,10 +319,14 @@ async def run_custom_agent( # Clear any previous stop request _global_agent_state.clear_stop() + extra_chromium_args = [f"--window-size={window_w},{window_h}"] if use_own_browser: chrome_path = os.getenv("CHROME_PATH", None) if chrome_path == "": chrome_path = None + chrome_user_data = os.getenv("CHROME_USER_DATA", None) + if chrome_user_data: + extra_chromium_args += [f"--user-data-dir={chrome_user_data}"] else: chrome_path = None @@ -331,7 +339,7 @@ async def run_custom_agent( headless=headless, disable_security=disable_security, chrome_instance_path=chrome_path, - extra_chromium_args=[f"--window-size={window_w},{window_h}"], + extra_chromium_args=extra_chromium_args, ) ) @@ -357,6 +365,7 @@ async def run_custom_agent( browser_context=_global_browser_context, controller=controller, system_prompt_class=CustomSystemPrompt, + agent_prompt_class=CustomAgentMessagePrompt, max_actions_per_step=max_actions_per_step, agent_state=_global_agent_state, tool_calling_method=tool_calling_method diff --git a/~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma b/~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma new file mode 100644 index 0000000000000000000000000000000000000000..731f626d9d8fe1307e259f0f7af5a1fbcbdaac59 GIT binary patch literal 4194304 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�l3gjY>xVlRo`QRz3{IJFww9J{Mv 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1pc=jIuHN=000o=Z#}{Sg^&RQ1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd k0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pGtK(-RF;s5{u literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/ChromeFeatureState b/~/Library/Application Support/Google/Chrome/ChromeFeatureState new file mode 100644 index 0000000..636f7a9 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/ChromeFeatureState @@ -0,0 +1,6 @@ +{ + "disable-features": "", + "enable-features": "UkmSamplingRate\u003CUkmSamplingRate", + "force-fieldtrial-params": "UkmSamplingRate.Sampled_NoSeed_Stable:_default_sampling/1000000", + "force-fieldtrials": "UkmSamplingRate/Sampled_NoSeed_Stable" +} diff --git a/~/Library/Application Support/Google/Chrome/Consent To Send Stats b/~/Library/Application Support/Google/Chrome/Consent To Send Stats new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Affiliation Database b/~/Library/Application Support/Google/Chrome/Default/Affiliation Database new file mode 100644 index 0000000000000000000000000000000000000000..9d19f9d568b1f55f7af389490331df72f8cdf1bf GIT binary patch literal 53248 zcmeI)J#X7a7{GDTv_(s@O?NPe!f0_uT2zFk7D9n89$Hmq6Ctvc$Z}Cn1S8QYQN3BD zg1DO!bnVya7wD3yW9ANB3v}z)6ZI04k(!K#@E0J9cgG{|e$O3co@AdtuKJ-TuKL5S z8;UQLeMME3Z-h`3WlKJH<#YbnmK&S%gnU(RZLiwgQa=BAuxtFQ?4(~S##7^uz2Ek{ zU2X4^otx~h*=**Q^y|!nRh7v{009ILKmY**5O{BaepWXvOC5h0x=%XZAm}*W^U&)B ze!myQQ#<8`U258*S^BnWi+GvHwfkMy?}_hAjq-z1L)7X`QM;&C^Wvgbd3<5dcd)FJ zos?O(RK@SLz30JoNB&ajxTCNirJeX;onkz_JJvF~`S4gBe-!OLt<�-nH{|*dGl7 zC-6eYZ#z+m%x!htAefb9XC0{2PVFDWJL-yhO(g1z-1OkqSV`-q{eP_(4LeJlka<@V z78RGC|H^I2?u~}NHU4p1H;<3imwFVpL`xINbS!d-LXq>^qEc(x_w9yw)To@58kgds zeJM&8&3dIKtDf1lW?n4LEvog}{kP*hwOJf#J^)0+{?2aLwX%J_@bm(CPHWP`Q@d)* zAyqD&mrJL1UQEW26CX;}Sl4y)te}pM-irA&x?QjP#2d~-zv$j9dwV7Mvf45B*%20T zfAR5_ZWapa%YGbvwqNqhspag8quwF+X>i+qFzC29PS5Rn^O-ykyx)@3OpeYs`SXdr z7#NoIbt+|^7go*fq>ocf=ID<$QVk=%;uCJJ+tF63oRYh2KD z^XN!@@o6k(o-CVQ9K2vNcBD7??>jT(B}PulLEDvAve1`wv)Pmv(KX3g&N?kivRYTF zZXO({<1eD-cD+z`By=}oO`PQ9e)4XX&cyiz_tsR-i)U_U?h`p*La1Q0*~0R#|0009ILKmY**)>wf1|1}OST|)o?1Q0*~ z0R#|0009ILKwu`o_x~9R2q1s}0tg_000IagfB*srtiJ%C|F3_H=^+9LAbjfnm9YZQlTidBrlZ{$VUf^K!J~)`iFzM^%(%%6bPgM literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK b/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG b/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 new file mode 100644 index 0000000000000000000000000000000000000000..ec4e2980f6b102be7c33bc227af9bea8edc6a137 GIT binary patch literal 306 zcmXqrDOxU_`}+?o0|P@H5bv7UxEDw<#Al~gCTA4o=cekWR+OaX6=&w>S?TNNr6y*j z6cl8qB&TE+q$MV$=I5uSCZ(mMBm#x9GE($QN{Zv*8uYS?6}ZST<%T2gbl3b}Ul>77 z!2%qBVk}Vchp9ftegyvH{o&12q5u D`R!D}DXE?9|NM zjQsShl!Cm1%-qDp3?K$7)-TB@&CAxyDpuekNB0d!-s!ISzrHYnoPY&5 z0L56K;*D>dzBjVJ=xF#g!~1>Zyodix{)k$V!Z literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index new file mode 100644 index 0000000000000000000000000000000000000000..79bd403ac665228853dd8fa54b8f4427af1721c0 GIT binary patch literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index new file mode 100644 index 0000000000000000000000000000000000000000..a576030aec634870cdbf30770f13e14709a2e066 GIT binary patch literal 96 zcma!GU|@*)Iqz|Pr9x3^NnR=^kk16fV88}rFfbfvu$DQ$L!#io6xG8)-TDj+%n-RA T)1JNhUFo~f#h>OGfYkv2Gb9&X literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index new file mode 100644 index 0000000000000000000000000000000000000000..79bd403ac665228853dd8fa54b8f4427af1721c0 GIT binary patch literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index new file mode 100644 index 0000000000000000000000000000000000000000..d78f92a39e30d51e57ccb9db20c0753dc06da479 GIT binary patch literal 48 mcmdO3U|_g0E3qWMQlTidBrlZ{$VUf^K!M)v>W726^%(%}a|qf1 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Cookies b/~/Library/Application Support/Google/Chrome/Default/Cookies new file mode 100644 index 0000000000000000000000000000000000000000..403b7f06042347598147edd3cc4e2c34f903cf9d GIT binary patch literal 20480 zcmeI&O;6h}7zgmADPu3NzybBp9W0?~Aa$GA%Vk_BEMjO~JGwHlQ{)9hBicCF4x+m; z?Xs`68>fARU3Q(c+b)x4w+WP{y)*QWlqPOX#CLbUx|Su^xSjXWc(mac0eO58UrFfAtAA2tWV=5P$##AOHaf zK;XX=IDJu^EXpI5?YkDUaZABIf&NfaI>%pZ_jqIm4@3)*GA)GsW9Ser^e5M0VZj79;Iii-+~^mP>yQ`N2z$rBOi zyMi_|!893jp_acKIMbza+5UQ8(T^RLHYPn3)AqKi>oxDZL4jaYg*@^T73e;+yiKo3 z>Wvnu@6>9QthuD+?dnh#&bNK!0@L1+&@t^KqcIi*q8BT+=MQq%YmN1bT1{x_c zglbH+QX83}&);)tgePX35zlA#JCnqFRL`lgN@?M$7mulV!UW7!v%GIlmlhW6)5raZ z)@4d}M$y8hDP|%|dajdNqrUmR+T3_my_j0rWAnDT^`_eVKwf(vDr7JVhAv-zP`FWA zU9heGgC~zV=24-E;{CL5YVcRgr+JsZX})k~_3pUeEcciDLm#j~00Izz00bZa0SG_< z0uX=z1R!uF1@1Y{>U@70Bj8=V1{CU*EdSUnvGC~0vzdZZolcxz|{!2JHN|MZUy0uX=z1Rwwb2tWV=5P$##AOL}DEMR{B$NT>^9$<700uX=z U1Rwwb2tWV=5P$##AfN^Q0RvQW7ytkO literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Cookies-journal b/~/Library/Application Support/Google/Chrome/Default/Cookies-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 new file mode 100644 index 0000000000000000000000000000000000000000..d76fb77e93ac8a536b5dbade616d63abd00626c5 GIT binary patch literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 new file mode 100644 index 0000000000000000000000000000000000000000..dcaafa9740ee97afbdf50792612ef9f379e292dc GIT binary patch literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 new file mode 100644 index 0000000000000000000000000000000000000000..c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b GIT binary patch literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 new file mode 100644 index 0000000000000000000000000000000000000000..5eec97358cf550862fd343fc9a73c159d4c0ab10 GIT binary patch literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index new file mode 100644 index 0000000000000000000000000000000000000000..55cb539c30a10f7f0472287e325289ea3f8b8528 GIT binary patch literal 262512 zcmeIuu?>JQ00Xd8y@rX6LwJiHkT|94##M;2^Z-U@N~BEgcWp_{oH9nalCQmUIk&za z>wMD*5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N J0t9{#cmNqI1;qdW literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 new file mode 100644 index 0000000000000000000000000000000000000000..d76fb77e93ac8a536b5dbade616d63abd00626c5 GIT binary patch literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 new file mode 100644 index 0000000000000000000000000000000000000000..dcaafa9740ee97afbdf50792612ef9f379e292dc GIT binary patch literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 new file mode 100644 index 0000000000000000000000000000000000000000..c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b GIT binary patch literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 new file mode 100644 index 0000000000000000000000000000000000000000..5eec97358cf550862fd343fc9a73c159d4c0ab10 GIT binary patch literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index new file mode 100644 index 0000000000000000000000000000000000000000..a87ab8406d6620ffa32257e9138a9ced9dd2b325 GIT binary patch literal 262512 zcmeIup$&jA00h8qIuM2>u&jk-0!C@-n2JzL2SDDd|K!#6ySAieP8p+I$=BYwoonBZ zWxnYI2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs I0Rle=JT?Xe*Z=?k literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG new file mode 100644 index 0000000..8a004a9 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.293 11603 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Rules since it was missing. +2025/01/28-12:18:03.371 11603 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG new file mode 100644 index 0000000..585b2cb --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.427 11603 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Scripts since it was missing. +2025/01/28-12:18:03.575 11603 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG new file mode 100644 index 0000000..334d88b --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.652 b103 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension State since it was missing. +2025/01/28-12:18:03.786 b103 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Favicons b/~/Library/Application Support/Google/Chrome/Default/Favicons new file mode 100644 index 0000000000000000000000000000000000000000..ee1304defcbaae8bebba37257bea1022c689e5bd GIT binary patch literal 20480 zcmeI2O>fgM7{}u#tJ_UuaF}waCRv&$8m+txE=U!EZVO|qw5+sNHLKfoAaR@Wx8x?yWBYmjzbCDoDlfN-Zs4%}PPb(T?7osx z2vHt0rYH*Gb(+_xr1*&zHTW^K|Emz?_B(Hu{#MfJCxtfXm*m%^HMOVx)ZT0N_$3q& z0D=D{;HRmcUnc!ow_SIR_w6HhuhX`6-JoTAz9kxNeeCk|TE#3>O}1HDH(#?cV>E`9 zOXH^OU^?SjDyc6m5L@=?TfJ^`Fqfa6l^wQa?&O3HcW5h>tE^Nj7IRJ8 z53HV7w*zNrT{oW;YQ-wMn{!*CW^T3FYO%bUd+XMNgL4nVeg}@*I0z;f#Qa_7u;=&_ zJs2M}sxK^%{C+`N4_jT!?VR=xZv~ zmw3jvLiK!1i0_ks*yL-wW%q)PXj`ENYbE?t`A<%`o-4Dws`Rr$ zf6#CIfC2&_00JNY0w8cj2xL?>KPR?gd!3eN2QJ@bT1QUTcRTF|GYK^_7d5UEb@4`v zZ?P>uu!Ej|YbAWZSLvxjPw6lE{fY=im>>WGAOHd&00L(OGHRY&vIkIS)C?JH0TS2L z#k8~o2%rDY{s{m`5C8!X009sHfw&OB`X84}LnjD;00@8p2n-2e{U5Tx83=#?2!H?x z#D#!(!C$-y7#GFR2?8Jh0w4eaAb|BB_W%fh00@8p2*i&7*8lkB9Ew2z1V8`;KmhAM Q?g0=00T2KI5QravKO)hfsQ>@~ literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Favicons-journal b/~/Library/Application Support/Google/Chrome/Default/Favicons-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 new file mode 100644 index 0000000000000000000000000000000000000000..d76fb77e93ac8a536b5dbade616d63abd00626c5 GIT binary patch literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 new file mode 100644 index 0000000000000000000000000000000000000000..dcaafa9740ee97afbdf50792612ef9f379e292dc GIT binary patch literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 new file mode 100644 index 0000000000000000000000000000000000000000..c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b GIT binary patch literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 new file mode 100644 index 0000000000000000000000000000000000000000..5eec97358cf550862fd343fc9a73c159d4c0ab10 GIT binary patch literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/index b/~/Library/Application Support/Google/Chrome/Default/GPUCache/index new file mode 100644 index 0000000000000000000000000000000000000000..ace72ab4445ea668768f38f3c354ceaf5eb63fbf GIT binary patch literal 262512 zcmeIuu?>JQ00Xd8JqW}pyu}r)d{K4dDnwa&0HZS{QYQDiwxniG8Ka!Z*WP)pTi=gm zzUc%A5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N H0zU{mFkJ=I literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/History b/~/Library/Application Support/Google/Chrome/Default/History new file mode 100644 index 0000000000000000000000000000000000000000..479bf63df2f734f7f66de2f186c2674ea8c98062 GIT binary patch literal 163840 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 Q009ILKmY**5GWV;A6-)@761SM literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/History-journal b/~/Library/Application Support/Google/Chrome/Default/History-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/LOCK b/~/Library/Application Support/Google/Chrome/Default/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/LOG b/~/Library/Application Support/Google/Chrome/Default/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG new file mode 100644 index 0000000..4409756 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.373 3f03 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb since it was missing. +2025/01/28-12:18:03.540 3f03 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data b/~/Library/Application Support/Google/Chrome/Default/Login Data new file mode 100644 index 0000000000000000000000000000000000000000..0df24a9bc1c201a68142f796a6c7654459e23c28 GIT binary patch literal 40960 zcmeI4zi-<{6vs)^785&8?EC;>xWfTK5ffIL7^#QEC>q6PQX#6GC~^>^EeMJ_I|q}Z z!lT?eo01kCyR>81{uQ0NW$Ms>pi9;Q-3oN+krZjtl9C8T20>o|mdyLXd++n!yZ0y? z_vm4T1(fW0zH0^KhIC4jW$88{k|fFE=c4#YUUTA?>EuFuhW&4Q$HVyqC00JNY0w4ea?~lM4WnSD|QGb)vztlg)2VNim0w4eaAOHemLEr;L*;sTe z9+g)K`-FO8r}X zJr)W>NDu%45C8!X0D*+Sva%r$sREQaWm)dk08?j`%cnCHK=}MGzVycn1V8`;KmY_l zV1fvQ&;Q8(6J&6x3IZSi0w4eaf&iZX;RYZ80w4eaATW6Z@cch{HiyO_00JNY0w93r zfA|0hfB*=900>MT0p$P5vpF;d0T2KI5C8$>fA|0hfB*=900>MT0sQ@c@@x)`K>!3m z00cl_UcDtLN<&ij)!&tddP`ZD`gQ8O9LTHkD(HX!2>f3H-|r}@wzMSwFcVnfXfDUw zXDuGTPjA+YQr#f+(w&My;x@A4`AiHkJHA66muj1zm1?BAT_@F@N~K6FI}qo3Wjl+c z!>Ql0TxwE>y0jG}(=t7WmeZlf?QM(muRXunKO^mlXWXf5-zgH_X}B!tAI#Z)O9n`h+Fe0BME(KQ+9ZKQ!)0b<%i<5yg)2x$7FlPI371}@dJ8f zKea?yu%__vP}oG1o&as%+hgM7JLX#ZG#?*3)$+p~BO6$m$mqpPrX}+HB1z$-BeL$U z>*_z!)py<-_GDGNbV=@Bi}nDQ2Ey|KYbqE2VatlplT@~=_fAGW=_!$Miz10*G&5Yk zGF8wvF3A!Truv3IbHv&Hrqv0&=-LcdFxSF&MMxf<`ZKTmB%PHWOX?qLSG`(zIrDn@ z%jpZs&r`F?6ZuE!7nzC9kzdutg7%>%$IFIC4RSNy)uP`o_S7y{w~Qww+fBBs@pZBZ zHa+2OExmjDoT_P>{KAa*MN^`;^ErZ1Q)=gUZW7PlB9kGq} zwk$EB9XWKkwIq$1+r^g2OMG$>UDp>1+9%pD%ft}YqK^x~SykK6yKFQ{`sq(PnAO2vylKDn_P7?0QD67G=_MwOlWk zDwW-ED-?~!R*{5(buy@u2WF+9rohQ$8r*xi%D1>bBtEf^^N(0wyh5{cOIF! zmcL#|f-{&?wQK7`9YNF))b99Ej*WIj%i(9=> z=IB7wd;21>=Cb0R@403}6i6byraC5NV0Lzr+|qawg-q-hiPXB@T|T91H*Uz?uj1|V zsAZcXvLo<2wWO`d>Kp1#Q zfuE}*9?TT9)m3>n);-SHoIdN&mQ8yJJh?37wat%R2`jLo7^<&M7qm~8hQ)7BsOaK88009sHfw3om z{6F?4gaRM{0w4eaATTlkeE&Z(GE4vg5C8!X0D-Y5fam|QHz5=N0T2KI5CDOZ2_XNE Sj0_V%00ck)1VCWy3H%3+woB^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data For Account b/~/Library/Application Support/Google/Chrome/Default/Login Data For Account new file mode 100644 index 0000000000000000000000000000000000000000..0df24a9bc1c201a68142f796a6c7654459e23c28 GIT binary patch literal 40960 zcmeI4zi-<{6vs)^785&8?EC;>xWfTK5ffIL7^#QEC>q6PQX#6GC~^>^EeMJ_I|q}Z z!lT?eo01kCyR>81{uQ0NW$Ms>pi9;Q-3oN+krZjtl9C8T20>o|mdyLXd++n!yZ0y? z_vm4T1(fW0zH0^KhIC4jW$88{k|fFE=c4#YUUTA?>EuFuhW&4Q$HVyqC00JNY0w4ea?~lM4WnSD|QGb)vztlg)2VNim0w4eaAOHemLEr;L*;sTe z9+g)K`-FO8r}X zJr)W>NDu%45C8!X0D*+Sva%r$sREQaWm)dk08?j`%cnCHK=}MGzVycn1V8`;KmY_l zV1fvQ&;Q8(6J&6x3IZSi0w4eaf&iZX;RYZ80w4eaATW6Z@cch{HiyO_00JNY0w93r zfA|0hfB*=900>MT0p$P5vpF;d0T2KI5C8$>fA|0hfB*=900>MT0sQ@c@@x)`K>!3m z00cl_UcDtLN<&ij)!&tddP`ZD`gQ8O9LTHkD(HX!2>f3H-|r}@wzMSwFcVnfXfDUw zXDuGTPjA+YQr#f+(w&My;x@A4`AiHkJHA66muj1zm1?BAT_@F@N~K6FI}qo3Wjl+c z!>Ql0TxwE>y0jG}(=t7WmeZlf?QM(muRXunKO^mlXWXf5-zgH_X}B!tAI#Z)O9n`h+Fe0BME(KQ+9ZKQ!)0b<%i<5yg)2x$7FlPI371}@dJ8f zKea?yu%__vP}oG1o&as%+hgM7JLX#ZG#?*3)$+p~BO6$m$mqpPrX}+HB1z$-BeL$U z>*_z!)py<-_GDGNbV=@Bi}nDQ2Ey|KYbqE2VatlplT@~=_fAGW=_!$Miz10*G&5Yk zGF8wvF3A!Truv3IbHv&Hrqv0&=-LcdFxSF&MMxf<`ZKTmB%PHWOX?qLSG`(zIrDn@ z%jpZs&r`F?6ZuE!7nzC9kzdutg7%>%$IFIC4RSNy)uP`o_S7y{w~Qww+fBBs@pZBZ zHa+2OExmjDoT_P>{KAa*MN^`;^ErZ1Q)=gUZW7PlB9kGq} zwk$EB9XWKkwIq$1+r^g2OMG$>UDp>1+9%pD%ft}YqK^x~SykK6yKFQ{`sq(PnAO2vylKDn_P7?0QD67G=_MwOlWk zDwW-ED-?~!R*{5(buy@u2WF+9rohQ$8r*xi%D1>bBtEf^^N(0wyh5{cOIF! zmcL#|f-{&?wQK7`9YNF))b99Ej*WIj%i(9=> z=IB7wd;21>=Cb0R@403}6i6byraC5NV0Lzr+|qawg-q-hiPXB@T|T91H*Uz?uj1|V zsAZcXvLo<2wWO`d>Kp1#Q zfuE}*9?TT9)m3>n);-SHoIdN&mQ8yJJh?37wat%R2`jLo7^<&M7qm~8hQ)7BsOaK88009sHfw3om z{6F?4gaRM{0w4eaATTlkeE&Z(GE4vg5C8!X0D-Y5fam|QHz5=N0T2KI5CDOZ2_XNE Sj0_V%00ck)1VCWy3H%3+woB^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal b/~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data-journal b/~/Library/Application Support/Google/Chrome/Default/Login Data-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Network Persistent State b/~/Library/Application Support/Google/Chrome/Default/Network Persistent State new file mode 100644 index 0000000..c5179ce --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Network Persistent State @@ -0,0 +1 @@ +{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13385103484297970","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false],"server":"https://clients2.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13385103484684048","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false],"server":"https://accounts.google.com","supports_spdy":true}],"version":5},"network_qualities":{"CAISABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK b/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG b/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Preferences b/~/Library/Application Support/Google/Chrome/Default/Preferences new file mode 100644 index 0000000..dcaa4af --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Preferences @@ -0,0 +1 @@ +{"accessibility":{"captions":{"live_caption_language":"en-US"}},"account_tracker_service_last_update":"13382511483377841","ack_existing_ntp_extensions":true,"alternate_error_pages":{"backup":true},"announcement_notification_service_first_run_time":"13382511483184229","apps":{"shortcuts_arch":"x86_64","shortcuts_version":7},"autocomplete":{"retention_policy_last_version":132},"autofill":{"last_version_deduped":132},"browser":{"has_seen_welcome_page":false,"window_placement":{"bottom":1046,"left":0,"maximized":false,"right":1792,"top":25,"work_area_bottom":1046,"work_area_left":0,"work_area_right":1792,"work_area_top":25}},"commerce_daily_metrics_last_update_time":"13382511483338579","countryid_at_install":17230,"default_apps_install_state":2,"default_search_provider":{"guid":""},"domain_diversity":{"last_reporting_timestamp":"13382511484440566"},"enterprise_profile_guid":"19b28c7e-13be-44d5-b8f0-8c873a74ac97","extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"132.0.6834.111"},"gaia_cookie":{"changed_time":1738037884.684924,"hash":"2jmj7l5rSw0yVb/vlWAYkK/YBwk=","last_list_accounts_data":"[\"gaia.l.a.r\",[]]"},"gcm":{"product_category_for_subtypes":"com.chrome.macosx"},"google":{"services":{"signin_scoped_device_id":"850c48a2-196c-4b4d-acb7-6a1f15b1c74d"}},"in_product_help":{"new_badge":{"Compose":{"feature_enabled_time":"13382511484069563","show_count":0,"used_count":0},"ComposeNudge":{"feature_enabled_time":"13382511484069573","show_count":0,"used_count":0},"ComposeProactiveNudge":{"feature_enabled_time":"13382511484069576","show_count":0,"used_count":0},"LensOverlay":{"feature_enabled_time":"13382511484069579","show_count":0,"used_count":0}},"recent_session_enabled_time":"13382511484069219","recent_session_start_times":["13382511484069219"],"session_last_active_time":"13382511484069219","session_start_time":"13382511484069219"},"intl":{"selected_languages":"zh-CN,zh"},"invalidation":{"per_sender_topics_to_handler":{"1013309121859":{}}},"media":{"engagement":{"schema_version":5}},"media_router":{"receiver_id_hash_token":"f9l5dmAl6Dgz60Itj/z6Xex2kjFxzLdDWFfP1hUKExG2c7pEOQLMS5Vn8I+F3kgnKp9gA8nxGVG1VjVrX/+pKA=="},"ntp":{"num_personal_suggestions":1},"optimization_guide":{"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"PRICE_TRACKING":true,"V8_COMPILE_HINTS":true},"store_file_paths_to_delete":{}},"password_manager":{"autofillable_credentials_account_store_login_database":false,"autofillable_credentials_profile_store_login_database":false},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":26,"content_settings":{"did_migrate_adaptive_notification_quieting_to_cpss":true,"disable_quiet_permission_ui_time":{"notifications":"13382511483187216"},"enable_cpss":{"notifications":true},"enable_quiet_permission_ui":{"notifications":false},"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"client_hints":{},"clipboard":{},"cookie_controls_metadata":{},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"durable_storage":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{"https://accounts.google.com:443,*":{"last_modified":"13382511484685155","setting":{"chosen-objects":[{"idp-origin":"https://accounts.google.com","idp-signin-status":false}]}}},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"insecure_private_network":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"local_fonts":{},"media_engagement":{},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"private_network_chooser_data":{},"private_network_guard":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"tracking_protection":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"132.0.6834.111","creation_time":"13382511483104163","did_work_around_bug_364820109_default":true,"did_work_around_bug_364820109_exceptions":true,"exit_type":"Normal","family_link_user_state":6,"family_member_role":"not_in_family","managed":{"locally_parent_approved_extensions":{},"locally_parent_approved_extensions_migration_state":1},"managed_user_id":"","name":"็”จๆˆท1","password_account_storage_settings":{},"password_hash_data_list":[]},"safebrowsing":{"event_timestamps":{},"hash_real_time_ohttp_expiration_time":"13383116283988851","hash_real_time_ohttp_key":"DwAg2QfP5ledTviBdtqJx6iBI3OOkXwL17PZb5gd5AS9IhsABAABAAI=","metrics_last_log_time":"13382511483","scout_reporting_enabled_when_deprecated":false},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"specifics_to_data_migration":true},"segmentation_platform":{"uma_in_sql_start_time":"13382511483161279"},"sessions":{"event_log":[{"crashed":false,"time":"13382511483143555","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13382511488558774","type":2,"window_count":1}],"session_data_status":5},"should_read_incoming_syncing_theme_prefs":true,"signin":{"allowed":true},"spellcheck":{"dictionaries":["en-US"]},"sync":{"data_type_status_for_sync_to_signin":{"app_list":false,"app_settings":false,"apps":false,"arc_package":false,"autofill":false,"autofill_profiles":false,"autofill_wallet":false,"autofill_wallet_credential":false,"autofill_wallet_metadata":false,"autofill_wallet_offer":false,"autofill_wallet_usage":false,"bookmarks":false,"collaboration_group":false,"contact_info":false,"cookies":false,"device_info":false,"dictionary":false,"extension_settings":false,"extensions":false,"history":false,"history_delete_directives":false,"incoming_password_sharing_invitation":false,"managed_user_settings":false,"nigori":false,"os_preferences":false,"os_priority_preferences":false,"outgoing_password_sharing_invitation":false,"passwords":false,"plus_address":false,"plus_address_setting":false,"power_bookmark":false,"preferences":false,"printers":false,"printers_authorization_servers":false,"priority_preferences":false,"product_comparison":false,"reading_list":false,"saved_tab_group":false,"search_engines":false,"security_events":false,"send_tab_to_self":false,"sessions":false,"shared_tab_group_data":false,"sharing_message":false,"themes":false,"user_consent":false,"user_events":false,"web_apps":false,"webapks":false,"webauthn_credential":false,"wifi_configurations":false,"workspace_desk":false},"encryption_bootstrap_token_per_account_migration_done":true,"feature_status_for_sync_to_signin":5},"tab_group_saves_ui_update_migrated":true,"translate_site_blacklist":[],"translate_site_blocklist_with_time":{}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/README b/~/Library/Application Support/Google/Chrome/Default/README new file mode 100644 index 0000000..98d9d27 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/README @@ -0,0 +1 @@ +Google Chrome settings and storage represent user-selected preferences and information and MUST not be extracted, overwritten or modified except through Google Chrome defined APIs. \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies b/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies new file mode 100644 index 0000000000000000000000000000000000000000..403b7f06042347598147edd3cc4e2c34f903cf9d GIT binary patch literal 20480 zcmeI&O;6h}7zgmADPu3NzybBp9W0?~Aa$GA%Vk_BEMjO~JGwHlQ{)9hBicCF4x+m; z?Xs`68>fARU3Q(c+b)x4w+WP{y)*QWlqPOX#CLbUx|Su^xSjXWc(mac0eO58UrFfAtAA2tWV=5P$##AOHaf zK;XX=IDJu^EXpI5?YkDUaZABIf&NfaI>%pZ_jqIm4@3)*GA)GsW9Ser^e5M0VZj79;Iii-+~^mP>yQ`N2z$rBOi zyMi_|!893jp_acKIMbza+5UQ8(T^RLHYPn3)AqKi>oxDZL4jaYg*@^T73e;+yiKo3 z>Wvnu@6>9QthuD+?dnh#&bNK!0@L1+&@t^KqcIi*q8BT+=MQq%YmN1bT1{x_c zglbH+QX83}&);)tgePX35zlA#JCnqFRL`lgN@?M$7mulV!UW7!v%GIlmlhW6)5raZ z)@4d}M$y8hDP|%|dajdNqrUmR+T3_my_j0rWAnDT^`_eVKwf(vDr7JVhAv-zP`FWA zU9heGgC~zV=24-E;{CL5YVcRgr+JsZX})k~_3pUeEcciDLm#j~00Izz00bZa0SG_< z0uX=z1R!uF1@1Y{>U@70Bj8=V1{CU*EdSUnvGC~0vzdZZolcxz|{!2JHN|MZUy0uX=z1Rwwb2tWV=5P$##AOL}DEMR{B$NT>^9$<700uX=z U1Rwwb2tWV=5P$##AfN^Q0RvQW7ytkO literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal b/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Secure Preferences b/~/Library/Application Support/Google/Chrome/Default/Secure Preferences new file mode 100644 index 0000000..91da8d3 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Secure Preferences @@ -0,0 +1 @@ +{"extensions":{"settings":{"ahfgeienlihckogmohjhadlkjgocpleb":{"account_extension_type":0,"active_permissions":{"api":["management","system.display","system.storage","webstorePrivate","system.cpu","system.memory","system.network"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"app_launcher_ordinal":"t","commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13382511483184768","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483184768","location":5,"manifest":{"app":{"launch":{"web_url":"https://chrome.google.com/webstore"},"urls":["https://chrome.google.com/webstore"]},"description":"ๆŸฅๆ‰พ้€‚็”จไบŽGoogle Chrome็š„็ฒพๅฝฉๅบ”็”จใ€ๆธธๆˆใ€ๆ‰ฉๅฑ•็จ‹ๅบๅ’Œไธป้ข˜่ƒŒๆ™ฏใ€‚","icons":{"128":"webstore_icon_128.png","16":"webstore_icon_16.png"},"key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtl3tO0osjuzRsf6xtD2SKxPlTfuoy7AWoObysitBPvH5fE1NaAA1/2JkPWkVDhdLBWLaIBPYeXbzlHp3y4Vv/4XG+aN5qFE3z+1RU/NqkzVYHtIpVScf3DjTYtKVL66mzVGijSoAIwbFCC3LpGdaoe6Q1rSRDp76wR6jjFzsYwQIDAQAB","name":"ๅบ”็”จๅ•†ๅบ—","permissions":["webstorePrivate","management","system.cpu","system.display","system.memory","system.network","system.storage"],"version":"0.2"},"needs_sync":true,"page_ordinal":"n","path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/web_store","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"mhjfbmdgcfjbbpaeojofohoefgiehjai":{"account_extension_type":0,"active_permissions":{"api":["contentSettings","fileSystem","fileSystem.write","metricsPrivate","tabs","resourcesPrivate","pdfViewerPrivate"],"explicit_host":["chrome://resources/*","chrome://webui-test/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13382511483185333","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483185333","location":5,"manifest":{"content_security_policy":"script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources chrome://webui-test; object-src * blob: externalfile: file: filesystem: data:","description":"","incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN6hM0rsDYGbzQPQfOygqlRtQgKUXMfnSjhIBL7LnReAVBEd7ZmKtyN2qmSasMl4HZpMhVe2rPWVVwBDl6iyNE/Kok6E6v6V3vCLGsOpQAuuNVye/3QxzIldzG/jQAdWZiyXReRVapOhZtLjGfywCvlWq7Sl/e3sbc0vWybSDI2QIDAQAB","manifest_version":2,"mime_types":["application/pdf"],"mime_types_handler":"index.html","name":"Chrome PDF Viewer","offline_enabled":true,"permissions":["chrome://resources/","chrome://webui-test/","contentSettings","metricsPrivate","pdfViewerPrivate","resourcesPrivate","tabs",{"fileSystem":["write"]}],"version":"1"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/pdf","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"neajdppkdcdipfabeoofebfddakdcjhd":{"account_extension_type":0,"active_permissions":{"api":["systemPrivate","ttsEngine"],"explicit_host":["https://www.google.com/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":["ttsEngine.onPause","ttsEngine.onResume","ttsEngine.onSpeak","ttsEngine.onStop"],"first_install_time":"13382511483186159","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483186159","location":5,"manifest":{"background":{"persistent":false,"scripts":["tts_extension.js"]},"description":"Component extension providing speech via the Google network text-to-speech service.","key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8GSbNUMGygqQTNDMFGIjZNcwXsHLzkNkHjWbuY37PbNdSDZ4VqlVjzbWqODSe+MjELdv5Keb51IdytnoGYXBMyqKmWpUrg+RnKvQ5ibWr4MW9pyIceOIdp9GrzC1WZGgTmZismYR3AjaIpufZ7xDdQQv+XrghPWCkdVqLN+qZDA1HU+DURznkMICiDDSH2sU0egm9UbWfS218bZqzKeQDiC3OnTPlaxcbJtKUuupIm5knjze3Wo9Ae9poTDMzKgchg0VlFCv3uqox+wlD8sjXBoyBCCK9HpImdVAF1a7jpdgiUHpPeV/26oYzM9/grltwNR3bzECQgSpyXp0eyoegwIDAQAB","manifest_version":2,"name":"Google Network Speech","permissions":["systemPrivate","ttsEngine","https://www.google.com/"],"tts_engine":{"voices":[{"event_types":["start","end","error"],"gender":"female","lang":"de-DE","remote":true,"voice_name":"Google Deutsch"},{"event_types":["start","end","error"],"gender":"female","lang":"en-US","remote":true,"voice_name":"Google US English"},{"event_types":["start","end","error"],"gender":"female","lang":"en-GB","remote":true,"voice_name":"Google UK English Female"},{"event_types":["start","end","error"],"gender":"male","lang":"en-GB","remote":true,"voice_name":"Google UK English Male"},{"event_types":["start","end","error"],"gender":"female","lang":"es-ES","remote":true,"voice_name":"Google espaรฑol"},{"event_types":["start","end","error"],"gender":"female","lang":"es-US","remote":true,"voice_name":"Google espaรฑol de Estados Unidos"},{"event_types":["start","end","error"],"gender":"female","lang":"fr-FR","remote":true,"voice_name":"Google franรงais"},{"event_types":["start","end","error"],"gender":"female","lang":"hi-IN","remote":true,"voice_name":"Google เคนเคฟเคจเฅเคฆเฅ€"},{"event_types":["start","end","error"],"gender":"female","lang":"id-ID","remote":true,"voice_name":"Google Bahasa Indonesia"},{"event_types":["start","end","error"],"gender":"female","lang":"it-IT","remote":true,"voice_name":"Google italiano"},{"event_types":["start","end","error"],"gender":"female","lang":"ja-JP","remote":true,"voice_name":"Google ๆ—ฅๆœฌ่ชž"},{"event_types":["start","end","error"],"gender":"female","lang":"ko-KR","remote":true,"voice_name":"Google ํ•œ๊ตญ์˜"},{"event_types":["start","end","error"],"gender":"female","lang":"nl-NL","remote":true,"voice_name":"Google Nederlands"},{"event_types":["start","end","error"],"gender":"female","lang":"pl-PL","remote":true,"voice_name":"Google polski"},{"event_types":["start","end","error"],"gender":"female","lang":"pt-BR","remote":true,"voice_name":"Google portuguรชs do Brasil"},{"event_types":["start","end","error"],"gender":"female","lang":"ru-RU","remote":true,"voice_name":"Google ั€ัƒััะบะธะน"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-CN","remote":true,"voice_name":"Googleย ๆ™ฎ้€š่ฏ๏ผˆไธญๅ›ฝๅคง้™†๏ผ‰"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-HK","remote":true,"voice_name":"Googleย ็ฒค่ชž๏ผˆ้ฆ™ๆธฏ๏ผ‰"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-TW","remote":true,"voice_name":"Google ๅœ‹่ชž๏ผˆ่‡บ็ฃ๏ผ‰"}]},"version":"1.0"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/network_speech_synthesis","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"nkeimhogjdpnpccoofpliimaahmaaome":{"account_extension_type":0,"active_permissions":{"api":["processes","webrtcLoggingPrivate","system.cpu","enterprise.hardwarePlatform"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":["runtime.onConnectExternal"],"first_install_time":"13382511483185847","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483185847","location":5,"manifest":{"background":{"page":"background.html","persistent":false},"externally_connectable":{"matches":["https://*.google.com/*"]},"incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAQt2ZDdPfoSe/JI6ID5bgLHRCnCu9T36aYczmhw/tnv6QZB2I6WnOCMZXJZlRdqWc7w9jo4BWhYS50Vb4weMfh/I0On7VcRwJUgfAxW2cHB+EkmtI1v4v/OU24OqIa1Nmv9uRVeX0GjhQukdLNhAE6ACWooaf5kqKlCeK+1GOkQIDAQAB","manifest_version":2,"name":"Google Hangouts","permissions":["enterprise.hardwarePlatform","processes","system.cpu","webrtcLoggingPrivate"],"version":"1.3.22"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/hangout_services","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"nmmhkkegccagdldgiimedpiccmgmieda":{"lastpingday":"13382438400562735"}}},"pinned_tabs":[],"protection":{"macs":{"browser":{"show_home_button":"5E5DE1BE4AE420C9330065EB7895450061AAC7ECACBB3EEC44390B49341F0062"},"default_search_provider_data":{"template_url_data":"E3C5A94EC159A0E49E24838C22C48169287C67CEFBAB112CF6F32848CBC27397"},"enterprise_signin":{"policy_recovery_token":"22F0F1AA445360C5F3352A3F0D244B98823B27820E2321F905197C664CF66D74"},"extensions":{"settings":{"ahfgeienlihckogmohjhadlkjgocpleb":"A3016A91BC9294FE3A4E507EB2005B2D48DA26BD295A1F17EE628A5072407113","mhjfbmdgcfjbbpaeojofohoefgiehjai":"37EBC938EE6A73D7009CD2045E54E7CB193E5A49A6423BEBADE88043CADB9591","neajdppkdcdipfabeoofebfddakdcjhd":"2E695ECAAEEDDC6264D758C8BF318B5F94C2C537DB0F15C2E47F87B91363B88A","nkeimhogjdpnpccoofpliimaahmaaome":"C8B359BB457E888DA7E2353F59009E810A01218059C2B00E8656E811CF7674A8","nmmhkkegccagdldgiimedpiccmgmieda":"001502AED62CC232B37BFC918AD966E7C907E520AA07EF289BD91A9CB6B13BEF"},"ui":{"developer_mode":"A7B321EED98920E1ABA74143ED8CF55700E1774B2B318B3A82D7503CA94B57F9"}},"google":{"services":{"account_id":"905CF2B56FFCAB2F739063430E8150F1B2E3AB351AA47DD50BCBEFBC032BE151","last_signed_in_username":"2C8FC120A9CF67666DEC68A041808380D3349634AD54628D178177BDE80BD3EF","last_username":"F9988D8D2C175A1EF13885A4D25CF8B1FD98B19F2D9D1B730A4A57C3C93831E4"}},"homepage":"2F434A4D57D9ABEADD39B4EC4E2DEB60F5B3EDCAAA49A27043BE2D879AD9199D","homepage_is_newtabpage":"54375B85488F673158CBF1EC068160C02CFF1784E0FC7ADCFD96FDC50E1CA40F","media":{"storage_id_salt":"5E09589029F201B008DA69BBC61472719BD28FB482B566FF65C4A748F64B985D"},"pinned_tabs":"5C4DE62C74459180BF175544626509C6FC29BD1D0BC996773B3926182D1E4AC3","prefs":{"preference_reset_time":"8AFA7A499F54D9DB38880FEF43E410F775811D434AC3032FCF5A4846934F5204"},"safebrowsing":{"incidents_sent":"2CBCDFE019094766FA8B4D02F195F0E085992E2434AD60031BE6B4B50D1EE423"},"search_provider_overrides":"EE64A7F2C6457F045751B6D8D6B34A40A6D569178129B13DCFEF6176C7A1ED23","session":{"restore_on_startup":"5412250589D2185F7B58424101A8F90024A8246963B26C8677DB6D7130F0ABF2","startup_urls":"D3A7DE002CFF6D4AD0909BF91A5A0CE4EC1FD0E81440736AF44663B05A262258"}},"super_mac":"AB682E62C84F6E1CD5D82FA0D75E6C6D5C13AB408AB9FDE10477381A0827E3FF"}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK b/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG b/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG new file mode 100644 index 0000000..b2d9fd6 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:08.640 3f03 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Session Storage since it was missing. +2025/01/28-12:18:08.795 3f03 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 b/~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 new file mode 100644 index 0000000000000000000000000000000000000000..4381e74e239fabf01cf4bc73780599208d46110e GIT binary patch literal 987 zcma)4J5Iw;5F7#|vG|K1h>##il!=HP8yjdSDG);B0Fmv)4Iwm1!wHaRC^-Uj(9=P~ z3Ah3!bTlZ;8m}->BC*!<&g{z0bd9S-0 zwEfPhgmB3G0oMlcKK)7@1?C65d?T@It}NH3kd)n~u)zBi7ro}&uMZcG0j*d=PiM+b7^LA}TAUp1|Q_!^Ae93cZb1jBFwg7Gpm59r3&sG?}UKy~9eEv54=Gno<3o zxU$KvO?I={!Q-?R>nmg~nZyEeoACl4LNB^){L-rc)9pX}r+N!9>tpgylZZPLQ5EZ_Qf2l%K3?=?W&>kOrO zJe_oPk&dp75|@l$aPQJSCvI6U(DJb9_&u?~ee1ZuqZkgKm$=bOy!d=6U-uiharh;= zK#T=`JKFR7e^tNdY`VZU(as5tF{YTHORGSN5zNFgm*{^CKTGP0*5^AC zSb=g5$rIkAevf;=2_k+9M>ydZ5*2c5DOxew^rbxakn@Jf7&+$ul$jm+hWrnxSyex> znHj5Qtfp8YX1ARAAz6pa_%ykqKcqUc-85^q*(+x^<1=?Hi_d9s7v7tz9?tCZ6rJRV Lzmm123sC(4vb0R& literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index b/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index new file mode 100644 index 0000000000000000000000000000000000000000..79bd403ac665228853dd8fa54b8f4427af1721c0 GIT binary patch literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index new file mode 100644 index 0000000000000000000000000000000000000000..bc33429b44962ccb3d3f542603c0d1d57f206d35 GIT binary patch literal 48 mcmdO3U|>+>JE)vrsZf+!l9$Q}P$|tWU8~R^LrSiR^pX$GE ze7Et@)gP|jto~H}y7IRy6OD4uy{H?yr^AN0I3M{hjI(mNR+m9; z#6jG^AK8&lKG0e!P^Mun*vZtE;{Mbs;`3 zBjbGSO1ZWxb9@r#IP=`I*^<#vng=>+A3i=>42opqT%7+%vN807upyU2{o%#CHE@E^ zcvLLa>UH%vw7(rW!P!W1Sb-xyj@Qp#UYUQKUh|-3icH%*Px3b8oyMD?7AN<1Gk#`r zuqMxosi!4t_9jzzY)@ZV&zx6sCiKh)W>>U3J<&dDwZxzp~g;H&QOI708G9P&M zEcD}RD~e#7U}9o$P*7lCU|@t|AVoG{WYDWB;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo*4{!$i literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG new file mode 100644 index 0000000..46b6548 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.142 f503 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database since it was missing. +2025/01/28-12:18:03.258 f503 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT new file mode 100644 index 0000000..7ed683d --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG new file mode 100644 index 0000000..a736928 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG @@ -0,0 +1,2 @@ +2025/01/28-12:18:03.136 a607 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB since it was missing. +2025/01/28-12:18:03.293 a607 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..18e5cab72c1550d8dc398e3413eea91bee24db77 GIT binary patch literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Top Sites b/~/Library/Application Support/Google/Chrome/Default/Top Sites new file mode 100644 index 0000000000000000000000000000000000000000..8589f4f98d44ba30d9fab75b1283cd434505610e GIT binary patch literal 20480 zcmeI(J#W)M7zgk>pZiADTp6Ma8FEsEXr(q$1T2jz2$5AHLQ2yF(aCbtYZBFtgMBH` zEeoHZh_Arby(=u85FdddVnbqM>TDZhK&L70aC1Rwwb z2tWV=5P$##AOL~?USMFbnN%i22Rq8ybEWcocBucqhH=L%)vRLO67}N4iY4OB%l*I= zb?bRuRJU|%R4U?Wt^A}|+ZB(k-Bmqn2Tu1;l&f`X)2hXLt*VZ4<@k{+d2>2tWhm)% z_vNebg{u>=oxbuf#&J0Ewa4(LoOnWTfFtO z#XpINMzy@%u*R|$M~>T*eZA_;M$*WR}&S2-GU#9P*+30Rs(2enrgn#2-^a=q1 z2tWV=5P$##AOHafKmY;|fWU+bq!}x4*9n!~^u3;=I=V7qAITu>_}zQ+221nNV3D$= zo1W+Bs)=$`KU~Y-(AUKHIpOF0J0DKy1tKj7KmY;|fB*y_009U<00Izz00e#sq*;Mp zQ3GJ}EKPrx0E`4%n!8j1h@Ssb{(sTz8Rjqi=O{e m{+Z|n0Rad=00Izz00bZa0SG_<0uX?}zao%j&AGp*1^fiTW6Xm9 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Top Sites-journal b/~/Library/Application Support/Google/Chrome/Default/Top Sites-journal new file mode 100644 index 0000000..e69de29 diff --git a/~/Library/Application Support/Google/Chrome/Default/TransportSecurity b/~/Library/Application Support/Google/Chrome/Default/TransportSecurity new file mode 100644 index 0000000..a1ce891 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Default/TransportSecurity @@ -0,0 +1 @@ +{"sts":[{"expiry":1769573884.684139,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1738037884.684142}],"version":2} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Trust Tokens b/~/Library/Application Support/Google/Chrome/Default/Trust Tokens new file mode 100644 index 0000000000000000000000000000000000000000..ed71bb122868bad80397263004748b1e9a02a6d2 GIT binary patch literal 36864 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

t= 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 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 b/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 new file mode 100644 index 0000000000000000000000000000000000000000..92c5577bd8f8fda04ad73cc939c3675fa9e1391a GIT binary patch literal 24460 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 IV43It0nt9>^8f$< literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 b/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 new file mode 100644 index 0000000000000000000000000000000000000000..f8e4538615485fa394b3e84fe7a974c5d8dedf2a GIT binary patch literal 23444 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 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 new file mode 100644 index 0000000000000000000000000000000000000000..d76fb77e93ac8a536b5dbade616d63abd00626c5 GIT binary patch literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 new file mode 100644 index 0000000000000000000000000000000000000000..dcaafa9740ee97afbdf50792612ef9f379e292dc GIT binary patch literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 new file mode 100644 index 0000000000000000000000000000000000000000..c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b GIT binary patch literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 new file mode 100644 index 0000000000000000000000000000000000000000..5eec97358cf550862fd343fc9a73c159d4c0ab10 GIT binary patch literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index new file mode 100644 index 0000000000000000000000000000000000000000..13d3abea95a8f8ac3b2628fde3bc438c571415f0 GIT binary patch literal 262512 zcmeIuu?>JQ00Xd8{Rg;(x443xC#r5-g(yo8V05NL%H)36mekBCW0W)b+B>&v>HD$H zH=O_h0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ H;0J*REa3&x literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/Last Version b/~/Library/Application Support/Google/Chrome/Last Version new file mode 100644 index 0000000..781c3b2 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Last Version @@ -0,0 +1 @@ +132.0.6834.111 \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Local State b/~/Library/Application Support/Google/Chrome/Local State new file mode 100644 index 0000000..4b8f2d0 --- /dev/null +++ b/~/Library/Application Support/Google/Chrome/Local State @@ -0,0 +1 @@ +{"accessibility":{"captions":{"soda_registered_language_packs":["en-US"]}},"autofill":{"ablation_seed":"fnIC5VcnFss="},"background_tracing":{"session_state":{"privacy_filter":false,"state":0}},"breadcrumbs":{"enabled":false,"enabled_time":"13382511483103097"},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"enterprise_mdm_mac":0}},"optimization_guide":{"model_store_metadata":{},"on_device":{"last_version":"132.0.6834.111","model_crash_count":0}},"policy":{"last_statistics_update":"13382511483021995"},"privacy_budget":{"meta_experiment_activation_salt":0.05393202812792819},"profile":{"info_cache":{"Default":{"active_time":1738037884.214153,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-2890755,"default_avatar_stroke_color":-16166200,"force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"็”จๆˆท1","profile_color_seed":-16033840,"profile_highlight_color":-2890755,"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13382511483104083","profiles_order":["Default"]},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"session_id_generator_last_value":"346621171","signin":{"active_accounts_last_emitted":"13382511482891489"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13382511483017047","max_tabs_per_window":1,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":1,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1738037882"},"user_experience_metrics":{"default_opt_in":2,"limited_entropy_randomization_source":"CF93E0F2D1D1F59FE341CA765E9630F0","low_entropy_source3":3405,"provisional_client_id":"786a9c00-c823-472a-b995-84e3fc632e70","pseudo_low_entropy_source":1302,"session_id":0,"stability":{"browser_last_live_timestamp":"13382511488597849","exited_cleanly":true,"stats_buildtime":"1737474222","stats_version":"132.0.6834.111-64"}},"variations_google_groups":{"Default":[]},"variations_limited_entropy_synthetic_trial_seed_v2":"69","was":{"restarted":false}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_0 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_0 new file mode 100644 index 0000000000000000000000000000000000000000..d76fb77e93ac8a536b5dbade616d63abd00626c5 GIT binary patch literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_1 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_1 new file mode 100644 index 0000000000000000000000000000000000000000..dcaafa9740ee97afbdf50792612ef9f379e292dc GIT binary patch literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_2 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_2 new file mode 100644 index 0000000000000000000000000000000000000000..c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b GIT binary patch literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_3 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_3 new file mode 100644 index 0000000000000000000000000000000000000000..5eec97358cf550862fd343fc9a73c159d4c0ab10 GIT binary patch literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w literal 0 HcmV?d00001 diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/index b/~/Library/Application Support/Google/Chrome/ShaderCache/index new file mode 100644 index 0000000000000000000000000000000000000000..f7e17a7bf61365f450f7feea011d624b8ded1188 GIT binary patch literal 262512 zcmeIuu?c`M00h7f*~Ll_9L2Sq!cjsxrxIh60W9yUfB5S9U0YH!r;Jgq1s}To zHU2R^_&50GU*S!Y=4Xe`hHs&?z4!K<+|M~FTp0WCzU}z7eli@pmalI~cO_YtUg)|c zNve3Ris$SReqNk?5U+CP{cUem>G8MGnwVAV&!qJ~>yz~dYrod6R)4C$)z7L_{~?BX zAbJyv zlEuk_)Sx^U)}TC^sk`1Y4@9C_vUujw8U*F<8Ix8`(Ka^Z>#b;~MDfh3o^%%hW6Rc5-z`!{EZV$Fqq|-|+|bG{$BIA>5JiajB*~YRJK~86v{; zu8DT()pGSOE(*&YFKnfA#_nQGd)ScesLQ6?j2bImyOawWIYbMx0i$ulT2QpDhCGp@ zXy8r|lYKw>oD!--SsZMR7CP3o~J-6k0R7{7(-cfB*srAb Date: Tue, 28 Jan 2025 12:20:35 +0800 Subject: [PATCH 17/29] fix chrome user data --- .../BrowserMetrics-67985A7A-6717.pma | Bin 4194304 -> 0 bytes .../Google/Chrome/ChromeFeatureState | 6 ------ .../Google/Chrome/Consent To Send Stats | 0 .../Chrome/Default/Affiliation Database | Bin 53248 -> 0 bytes .../Default/Affiliation Database-journal | 0 .../Chrome/Default/Cache/Cache_Data/index | Bin 24 -> 0 bytes .../Cache/Cache_Data/index-dir/the-real-index | Bin 48 -> 0 bytes .../Chrome/Default/ClientCertificates/LOCK | 0 .../Chrome/Default/ClientCertificates/LOG | 0 .../Default/Code Cache/js/7018b8cf1c3b00c7_0 | Bin 306 -> 0 bytes .../Default/Code Cache/js/ba678a2fbd8c358c_0 | Bin 298 -> 0 bytes .../Google/Chrome/Default/Code Cache/js/index | Bin 24 -> 0 bytes .../Code Cache/js/index-dir/the-real-index | Bin 96 -> 0 bytes .../Chrome/Default/Code Cache/wasm/index | Bin 24 -> 0 bytes .../Code Cache/wasm/index-dir/the-real-index | Bin 48 -> 0 bytes .../Google/Chrome/Default/Cookies | Bin 20480 -> 0 bytes .../Google/Chrome/Default/Cookies-journal | 0 .../Chrome/Default/DawnGraphiteCache/data_0 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnGraphiteCache/data_1 | Bin 270336 -> 0 bytes .../Chrome/Default/DawnGraphiteCache/data_2 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnGraphiteCache/data_3 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnGraphiteCache/index | Bin 262512 -> 0 bytes .../Chrome/Default/DawnWebGPUCache/data_0 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnWebGPUCache/data_1 | Bin 270336 -> 0 bytes .../Chrome/Default/DawnWebGPUCache/data_2 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnWebGPUCache/data_3 | Bin 8192 -> 0 bytes .../Chrome/Default/DawnWebGPUCache/index | Bin 262512 -> 0 bytes .../Chrome/Default/Extension Rules/CURRENT | 1 - .../Chrome/Default/Extension Rules/LOCK | 0 .../Google/Chrome/Default/Extension Rules/LOG | 2 -- .../Default/Extension Rules/MANIFEST-000001 | Bin 41 -> 0 bytes .../Chrome/Default/Extension Scripts/CURRENT | 1 - .../Chrome/Default/Extension Scripts/LOCK | 0 .../Chrome/Default/Extension Scripts/LOG | 2 -- .../Default/Extension Scripts/MANIFEST-000001 | Bin 41 -> 0 bytes .../Chrome/Default/Extension State/CURRENT | 1 - .../Chrome/Default/Extension State/LOCK | 0 .../Google/Chrome/Default/Extension State/LOG | 2 -- .../Default/Extension State/MANIFEST-000001 | Bin 41 -> 0 bytes .../Google/Chrome/Default/Favicons | Bin 20480 -> 0 bytes .../Google/Chrome/Default/Favicons-journal | 0 .../Google/Chrome/Default/GPUCache/data_0 | Bin 8192 -> 0 bytes .../Google/Chrome/Default/GPUCache/data_1 | Bin 270336 -> 0 bytes .../Google/Chrome/Default/GPUCache/data_2 | Bin 8192 -> 0 bytes .../Google/Chrome/Default/GPUCache/data_3 | Bin 8192 -> 0 bytes .../Google/Chrome/Default/GPUCache/index | Bin 262512 -> 0 bytes .../Google/Chrome/Default/History | Bin 163840 -> 0 bytes .../Google/Chrome/Default/History-journal | 0 .../Google/Chrome/Default/LOCK | 0 .../Google/Chrome/Default/LOG | 0 .../Default/Local Storage/leveldb/CURRENT | 1 - .../Chrome/Default/Local Storage/leveldb/LOCK | 0 .../Chrome/Default/Local Storage/leveldb/LOG | 2 -- .../Local Storage/leveldb/MANIFEST-000001 | Bin 41 -> 0 bytes .../Google/Chrome/Default/Login Data | Bin 40960 -> 0 bytes .../Chrome/Default/Login Data For Account | Bin 40960 -> 0 bytes .../Default/Login Data For Account-journal | 0 .../Google/Chrome/Default/Login Data-journal | 0 .../Chrome/Default/Network Persistent State | 1 - .../Default/PersistentOriginTrials/LOCK | 0 .../Chrome/Default/PersistentOriginTrials/LOG | 0 .../Google/Chrome/Default/Preferences | 1 - .../Google/Chrome/Default/README | 1 - .../Chrome/Default/Safe Browsing Cookies | Bin 20480 -> 0 bytes .../Default/Safe Browsing Cookies-journal | 0 .../Google/Chrome/Default/Secure Preferences | 1 - .../Segmentation Platform/SegmentInfoDB/LOCK | 0 .../Segmentation Platform/SegmentInfoDB/LOG | 0 .../Segmentation Platform/SignalDB/LOCK | 0 .../Segmentation Platform/SignalDB/LOG | 0 .../SignalStorageConfigDB/LOCK | 0 .../SignalStorageConfigDB/LOG | 0 .../Chrome/Default/Session Storage/CURRENT | 1 - .../Chrome/Default/Session Storage/LOCK | 0 .../Google/Chrome/Default/Session Storage/LOG | 2 -- .../Default/Session Storage/MANIFEST-000001 | Bin 41 -> 0 bytes .../Sessions/Session_13382511485644650 | Bin 987 -> 0 bytes .../Default/Sessions/Tabs_13382511488601338 | Bin 745 -> 0 bytes .../Default/Shared Dictionary/cache/index | Bin 24 -> 0 bytes .../cache/index-dir/the-real-index | Bin 48 -> 0 bytes .../Chrome/Default/Shared Dictionary/db | Bin 45056 -> 0 bytes .../Default/Shared Dictionary/db-journal | 0 .../Google/Chrome/Default/SharedStorage | Bin 4096 -> 0 bytes .../Site Characteristics Database/CURRENT | 1 - .../Site Characteristics Database/LOCK | 0 .../Default/Site Characteristics Database/LOG | 2 -- .../MANIFEST-000001 | Bin 41 -> 0 bytes .../Chrome/Default/Sync Data/LevelDB/CURRENT | 1 - .../Chrome/Default/Sync Data/LevelDB/LOCK | 0 .../Chrome/Default/Sync Data/LevelDB/LOG | 2 -- .../Default/Sync Data/LevelDB/MANIFEST-000001 | Bin 41 -> 0 bytes .../Google/Chrome/Default/Top Sites | Bin 20480 -> 0 bytes .../Google/Chrome/Default/Top Sites-journal | 0 .../Google/Chrome/Default/TransportSecurity | 1 - .../Google/Chrome/Default/Trust Tokens | Bin 36864 -> 0 bytes .../Chrome/Default/Trust Tokens-journal | 0 .../Google/Chrome/Default/Visited Links | Bin 131072 -> 0 bytes .../Google/Chrome/Default/Web Data | Bin 120832 -> 0 bytes .../Google/Chrome/Default/Web Data-journal | 0 .../Default/commerce_subscription_db/LOCK | 0 .../Default/commerce_subscription_db/LOG | 0 .../Google/Chrome/Default/discounts_db/LOCK | 0 .../Google/Chrome/Default/discounts_db/LOG | 0 .../Chrome/Default/parcel_tracking_db/LOCK | 0 .../Chrome/Default/parcel_tracking_db/LOG | 0 .../Chrome/Default/shared_proto_db/CURRENT | 1 - .../Chrome/Default/shared_proto_db/LOCK | 0 .../Google/Chrome/Default/shared_proto_db/LOG | 2 -- .../Default/shared_proto_db/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/shared_proto_db/metadata/CURRENT | 1 - .../Default/shared_proto_db/metadata/LOCK | 0 .../Default/shared_proto_db/metadata/LOG | 2 -- .../shared_proto_db/metadata/MANIFEST-000001 | Bin 41 -> 0 bytes .../Google/Chrome/Default/trusted_vault.pb | 2 -- .../Google/Chrome/First Run | 0 .../Google/Chrome/GrShaderCache/data_0 | Bin 45056 -> 0 bytes .../Google/Chrome/GrShaderCache/data_1 | Bin 270336 -> 0 bytes .../Google/Chrome/GrShaderCache/data_2 | Bin 8192 -> 0 bytes .../Google/Chrome/GrShaderCache/data_3 | Bin 8192 -> 0 bytes .../Google/Chrome/GrShaderCache/f_000001 | Bin 24460 -> 0 bytes .../Google/Chrome/GrShaderCache/f_000002 | Bin 23444 -> 0 bytes .../Google/Chrome/GrShaderCache/index | Bin 262512 -> 0 bytes .../Google/Chrome/GraphiteDawnCache/data_0 | Bin 8192 -> 0 bytes .../Google/Chrome/GraphiteDawnCache/data_1 | Bin 270336 -> 0 bytes .../Google/Chrome/GraphiteDawnCache/data_2 | Bin 8192 -> 0 bytes .../Google/Chrome/GraphiteDawnCache/data_3 | Bin 8192 -> 0 bytes .../Google/Chrome/GraphiteDawnCache/index | Bin 262512 -> 0 bytes .../Google/Chrome/Last Version | 1 - .../Google/Chrome/Local State | 1 - .../Google/Chrome/ShaderCache/data_0 | Bin 8192 -> 0 bytes .../Google/Chrome/ShaderCache/data_1 | Bin 270336 -> 0 bytes .../Google/Chrome/ShaderCache/data_2 | Bin 8192 -> 0 bytes .../Google/Chrome/ShaderCache/data_3 | Bin 8192 -> 0 bytes .../Google/Chrome/ShaderCache/index | Bin 262512 -> 0 bytes .../Google/Chrome/Variations | 1 - .../Chrome/segmentation_platform/ukm_db | Bin 49152 -> 0 bytes .../segmentation_platform/ukm_db-journal | 0 137 files changed, 43 deletions(-) delete mode 100644 ~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma delete mode 100644 ~/Library/Application Support/Google/Chrome/ChromeFeatureState delete mode 100644 ~/Library/Application Support/Google/Chrome/Consent To Send Stats delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Affiliation Database delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Affiliation Database-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cache/Cache_Data/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cache/Cache_Data/index-dir/the-real-index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/ba678a2fbd8c358c_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cookies delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Cookies-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Favicons delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Favicons-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/GPUCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/History delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/History-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data For Account delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Login Data-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Network Persistent State delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Preferences delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/README delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Secure Preferences delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sessions/Tabs_13382511488601338 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/db delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/db-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/SharedStorage delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Top Sites delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Top Sites-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/TransportSecurity delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Trust Tokens delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Trust Tokens-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Visited Links delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Web Data delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/Web Data-journal delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/commerce_subscription_db/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/commerce_subscription_db/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/discounts_db/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/discounts_db/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/parcel_tracking_db/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/parcel_tracking_db/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/CURRENT delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/LOCK delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/LOG delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/shared_proto_db/metadata/MANIFEST-000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/Default/trusted_vault.pb delete mode 100644 ~/Library/Application Support/Google/Chrome/First Run delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 delete mode 100644 ~/Library/Application Support/Google/Chrome/GrShaderCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Last Version delete mode 100644 ~/Library/Application Support/Google/Chrome/Local State delete mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_0 delete mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_1 delete mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_2 delete mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/data_3 delete mode 100644 ~/Library/Application Support/Google/Chrome/ShaderCache/index delete mode 100644 ~/Library/Application Support/Google/Chrome/Variations delete mode 100644 ~/Library/Application Support/Google/Chrome/segmentation_platform/ukm_db delete mode 100644 ~/Library/Application Support/Google/Chrome/segmentation_platform/ukm_db-journal diff --git a/~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma b/~/Library/Application Support/Google/Chrome/BrowserMetrics/BrowserMetrics-67985A7A-6717.pma deleted file mode 100644 index 731f626d9d8fe1307e259f0f7af5a1fbcbdaac59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194304 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�l3gjY>xVlRo`QRz3{IJFww9J{Mv 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1pc=jIuHN=000o=Z#}{Sg^&RQ1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd k0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pGtK(-RF;s5{u diff --git a/~/Library/Application Support/Google/Chrome/ChromeFeatureState b/~/Library/Application Support/Google/Chrome/ChromeFeatureState deleted file mode 100644 index 636f7a9..0000000 --- a/~/Library/Application Support/Google/Chrome/ChromeFeatureState +++ /dev/null @@ -1,6 +0,0 @@ -{ - "disable-features": "", - "enable-features": "UkmSamplingRate\u003CUkmSamplingRate", - "force-fieldtrial-params": "UkmSamplingRate.Sampled_NoSeed_Stable:_default_sampling/1000000", - "force-fieldtrials": "UkmSamplingRate/Sampled_NoSeed_Stable" -} diff --git a/~/Library/Application Support/Google/Chrome/Consent To Send Stats b/~/Library/Application Support/Google/Chrome/Consent To Send Stats deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Affiliation Database b/~/Library/Application Support/Google/Chrome/Default/Affiliation Database deleted file mode 100644 index 9d19f9d568b1f55f7af389490331df72f8cdf1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 zcmeI)J#X7a7{GDTv_(s@O?NPe!f0_uT2zFk7D9n89$Hmq6Ctvc$Z}Cn1S8QYQN3BD zg1DO!bnVya7wD3yW9ANB3v}z)6ZI04k(!K#@E0J9cgG{|e$O3co@AdtuKJ-TuKL5S z8;UQLeMME3Z-h`3WlKJH<#YbnmK&S%gnU(RZLiwgQa=BAuxtFQ?4(~S##7^uz2Ek{ zU2X4^otx~h*=**Q^y|!nRh7v{009ILKmY**5O{BaepWXvOC5h0x=%XZAm}*W^U&)B ze!myQQ#<8`U258*S^BnWi+GvHwfkMy?}_hAjq-z1L)7X`QM;&C^Wvgbd3<5dcd)FJ zos?O(RK@SLz30JoNB&ajxTCNirJeX;onkz_JJvF~`S4gBe-!OLt<�-nH{|*dGl7 zC-6eYZ#z+m%x!htAefb9XC0{2PVFDWJL-yhO(g1z-1OkqSV`-q{eP_(4LeJlka<@V z78RGC|H^I2?u~}NHU4p1H;<3imwFVpL`xINbS!d-LXq>^qEc(x_w9yw)To@58kgds zeJM&8&3dIKtDf1lW?n4LEvog}{kP*hwOJf#J^)0+{?2aLwX%J_@bm(CPHWP`Q@d)* zAyqD&mrJL1UQEW26CX;}Sl4y)te}pM-irA&x?QjP#2d~-zv$j9dwV7Mvf45B*%20T zfAR5_ZWapa%YGbvwqNqhspag8quwF+X>i+qFzC29PS5Rn^O-ykyx)@3OpeYs`SXdr z7#NoIbt+|^7go*fq>ocf=ID<$QVk=%;uCJJ+tF63oRYh2KD z^XN!@@o6k(o-CVQ9K2vNcBD7??>jT(B}PulLEDvAve1`wv)Pmv(KX3g&N?kivRYTF zZXO({<1eD-cD+z`By=}oO`PQ9e)4XX&cyiz_tsR-i)U_U?h`p*La1Q0*~0R#|0009ILKmY**)>wf1|1}OST|)o?1Q0*~ z0R#|0009ILKwu`o_x~9R2q1s}0tg_000IagfB*srtiJ%C|F3_H=^+9LAbjfnm9YZQlTidBrlZ{$VUf^K!J~)`iFzM^%(%%6bPgM diff --git a/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK b/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG b/~/Library/Application Support/Google/Chrome/Default/ClientCertificates/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/7018b8cf1c3b00c7_0 deleted file mode 100644 index ec4e2980f6b102be7c33bc227af9bea8edc6a137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmXqrDOxU_`}+?o0|P@H5bv7UxEDw<#Al~gCTA4o=cekWR+OaX6=&w>S?TNNr6y*j z6cl8qB&TE+q$MV$=I5uSCZ(mMBm#x9GE($QN{Zv*8uYS?6}ZST<%T2gbl3b}Ul>77 z!2%qBVk}Vchp9ftegyvH{o&12q5u D`R!D}DXE?9|NM zjQsShl!Cm1%-qDp3?K$7)-TB@&CAxyDpuekNB0d!-s!ISzrHYnoPY&5 z0L56K;*D>dzBjVJ=xF#g!~1>Zyodix{)k$V!Z diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index deleted file mode 100644 index 79bd403ac665228853dd8fa54b8f4427af1721c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/js/index-dir/the-real-index deleted file mode 100644 index a576030aec634870cdbf30770f13e14709a2e066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcma!GU|@*)Iqz|Pr9x3^NnR=^kk16fV88}rFfbfvu$DQ$L!#io6xG8)-TDj+%n-RA T)1JNhUFo~f#h>OGfYkv2Gb9&X diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index deleted file mode 100644 index 79bd403ac665228853dd8fa54b8f4427af1721c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 diff --git a/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Code Cache/wasm/index-dir/the-real-index deleted file mode 100644 index d78f92a39e30d51e57ccb9db20c0753dc06da479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 mcmdO3U|_g0E3qWMQlTidBrlZ{$VUf^K!M)v>W726^%(%}a|qf1 diff --git a/~/Library/Application Support/Google/Chrome/Default/Cookies b/~/Library/Application Support/Google/Chrome/Default/Cookies deleted file mode 100644 index 403b7f06042347598147edd3cc4e2c34f903cf9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI&O;6h}7zgmADPu3NzybBp9W0?~Aa$GA%Vk_BEMjO~JGwHlQ{)9hBicCF4x+m; z?Xs`68>fARU3Q(c+b)x4w+WP{y)*QWlqPOX#CLbUx|Su^xSjXWc(mac0eO58UrFfAtAA2tWV=5P$##AOHaf zK;XX=IDJu^EXpI5?YkDUaZABIf&NfaI>%pZ_jqIm4@3)*GA)GsW9Ser^e5M0VZj79;Iii-+~^mP>yQ`N2z$rBOi zyMi_|!893jp_acKIMbza+5UQ8(T^RLHYPn3)AqKi>oxDZL4jaYg*@^T73e;+yiKo3 z>Wvnu@6>9QthuD+?dnh#&bNK!0@L1+&@t^KqcIi*q8BT+=MQq%YmN1bT1{x_c zglbH+QX83}&);)tgePX35zlA#JCnqFRL`lgN@?M$7mulV!UW7!v%GIlmlhW6)5raZ z)@4d}M$y8hDP|%|dajdNqrUmR+T3_my_j0rWAnDT^`_eVKwf(vDr7JVhAv-zP`FWA zU9heGgC~zV=24-E;{CL5YVcRgr+JsZX})k~_3pUeEcciDLm#j~00Izz00bZa0SG_< z0uX=z1R!uF1@1Y{>U@70Bj8=V1{CU*EdSUnvGC~0vzdZZolcxz|{!2JHN|MZUy0uX=z1Rwwb2tWV=5P$##AOL}DEMR{B$NT>^9$<700uX=z U1Rwwb2tWV=5P$##AfN^Q0RvQW7ytkO diff --git a/~/Library/Application Support/Google/Chrome/Default/Cookies-journal b/~/Library/Application Support/Google/Chrome/Default/Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_0 deleted file mode 100644 index d76fb77e93ac8a536b5dbade616d63abd00626c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_1 deleted file mode 100644 index dcaafa9740ee97afbdf50792612ef9f379e292dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_2 deleted file mode 100644 index c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/data_3 deleted file mode 100644 index 5eec97358cf550862fd343fc9a73c159d4c0ab10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index b/~/Library/Application Support/Google/Chrome/Default/DawnGraphiteCache/index deleted file mode 100644 index 55cb539c30a10f7f0472287e325289ea3f8b8528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262512 zcmeIuu?>JQ00Xd8y@rX6LwJiHkT|94##M;2^Z-U@N~BEgcWp_{oH9nalCQmUIk&za z>wMD*5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N J0t9{#cmNqI1;qdW diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_0 deleted file mode 100644 index d76fb77e93ac8a536b5dbade616d63abd00626c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_1 deleted file mode 100644 index dcaafa9740ee97afbdf50792612ef9f379e292dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_2 deleted file mode 100644 index c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/data_3 deleted file mode 100644 index 5eec97358cf550862fd343fc9a73c159d4c0ab10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index b/~/Library/Application Support/Google/Chrome/Default/DawnWebGPUCache/index deleted file mode 100644 index a87ab8406d6620ffa32257e9138a9ced9dd2b325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262512 zcmeIup$&jA00h8qIuM2>u&jk-0!C@-n2JzL2SDDd|K!#6ySAieP8p+I$=BYwoonBZ zWxnYI2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs I0Rle=JT?Xe*Z=?k diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG deleted file mode 100644 index 8a004a9..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.293 11603 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Rules since it was missing. -2025/01/28-12:18:03.371 11603 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension Rules/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG deleted file mode 100644 index 585b2cb..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.427 11603 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Scripts since it was missing. -2025/01/28-12:18:03.575 11603 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension Scripts/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension State/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK b/~/Library/Application Support/Google/Chrome/Default/Extension State/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG b/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG deleted file mode 100644 index 334d88b..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Extension State/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.652 b103 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension State since it was missing. -2025/01/28-12:18:03.786 b103 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Extension State/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Favicons b/~/Library/Application Support/Google/Chrome/Default/Favicons deleted file mode 100644 index ee1304defcbaae8bebba37257bea1022c689e5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI2O>fgM7{}u#tJ_UuaF}waCRv&$8m+txE=U!EZVO|qw5+sNHLKfoAaR@Wx8x?yWBYmjzbCDoDlfN-Zs4%}PPb(T?7osx z2vHt0rYH*Gb(+_xr1*&zHTW^K|Emz?_B(Hu{#MfJCxtfXm*m%^HMOVx)ZT0N_$3q& z0D=D{;HRmcUnc!ow_SIR_w6HhuhX`6-JoTAz9kxNeeCk|TE#3>O}1HDH(#?cV>E`9 zOXH^OU^?SjDyc6m5L@=?TfJ^`Fqfa6l^wQa?&O3HcW5h>tE^Nj7IRJ8 z53HV7w*zNrT{oW;YQ-wMn{!*CW^T3FYO%bUd+XMNgL4nVeg}@*I0z;f#Qa_7u;=&_ zJs2M}sxK^%{C+`N4_jT!?VR=xZv~ zmw3jvLiK!1i0_ks*yL-wW%q)PXj`ENYbE?t`A<%`o-4Dws`Rr$ zf6#CIfC2&_00JNY0w8cj2xL?>KPR?gd!3eN2QJ@bT1QUTcRTF|GYK^_7d5UEb@4`v zZ?P>uu!Ej|YbAWZSLvxjPw6lE{fY=im>>WGAOHd&00L(OGHRY&vIkIS)C?JH0TS2L z#k8~o2%rDY{s{m`5C8!X009sHfw&OB`X84}LnjD;00@8p2n-2e{U5Tx83=#?2!H?x z#D#!(!C$-y7#GFR2?8Jh0w4eaAb|BB_W%fh00@8p2*i&7*8lkB9Ew2z1V8`;KmhAM Q?g0=00T2KI5QravKO)hfsQ>@~ diff --git a/~/Library/Application Support/Google/Chrome/Default/Favicons-journal b/~/Library/Application Support/Google/Chrome/Default/Favicons-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_0 deleted file mode 100644 index d76fb77e93ac8a536b5dbade616d63abd00626c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_1 deleted file mode 100644 index dcaafa9740ee97afbdf50792612ef9f379e292dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_2 deleted file mode 100644 index c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 b/~/Library/Application Support/Google/Chrome/Default/GPUCache/data_3 deleted file mode 100644 index 5eec97358cf550862fd343fc9a73c159d4c0ab10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/Default/GPUCache/index b/~/Library/Application Support/Google/Chrome/Default/GPUCache/index deleted file mode 100644 index ace72ab4445ea668768f38f3c354ceaf5eb63fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262512 zcmeIuu?>JQ00Xd8JqW}pyu}r)d{K4dDnwa&0HZS{QYQDiwxniG8Ka!Z*WP)pTi=gm zzUc%A5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N H0zU{mFkJ=I diff --git a/~/Library/Application Support/Google/Chrome/Default/History b/~/Library/Application Support/Google/Chrome/Default/History deleted file mode 100644 index 479bf63df2f734f7f66de2f186c2674ea8c98062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163840 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 Q009ILKmY**5GWV;A6-)@761SM diff --git a/~/Library/Application Support/Google/Chrome/Default/History-journal b/~/Library/Application Support/Google/Chrome/Default/History-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/LOCK b/~/Library/Application Support/Google/Chrome/Default/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/LOG b/~/Library/Application Support/Google/Chrome/Default/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG deleted file mode 100644 index 4409756..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.373 3f03 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb since it was missing. -2025/01/28-12:18:03.540 3f03 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Local Storage/leveldb/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data b/~/Library/Application Support/Google/Chrome/Default/Login Data deleted file mode 100644 index 0df24a9bc1c201a68142f796a6c7654459e23c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI4zi-<{6vs)^785&8?EC;>xWfTK5ffIL7^#QEC>q6PQX#6GC~^>^EeMJ_I|q}Z z!lT?eo01kCyR>81{uQ0NW$Ms>pi9;Q-3oN+krZjtl9C8T20>o|mdyLXd++n!yZ0y? z_vm4T1(fW0zH0^KhIC4jW$88{k|fFE=c4#YUUTA?>EuFuhW&4Q$HVyqC00JNY0w4ea?~lM4WnSD|QGb)vztlg)2VNim0w4eaAOHemLEr;L*;sTe z9+g)K`-FO8r}X zJr)W>NDu%45C8!X0D*+Sva%r$sREQaWm)dk08?j`%cnCHK=}MGzVycn1V8`;KmY_l zV1fvQ&;Q8(6J&6x3IZSi0w4eaf&iZX;RYZ80w4eaATW6Z@cch{HiyO_00JNY0w93r zfA|0hfB*=900>MT0p$P5vpF;d0T2KI5C8$>fA|0hfB*=900>MT0sQ@c@@x)`K>!3m z00cl_UcDtLN<&ij)!&tddP`ZD`gQ8O9LTHkD(HX!2>f3H-|r}@wzMSwFcVnfXfDUw zXDuGTPjA+YQr#f+(w&My;x@A4`AiHkJHA66muj1zm1?BAT_@F@N~K6FI}qo3Wjl+c z!>Ql0TxwE>y0jG}(=t7WmeZlf?QM(muRXunKO^mlXWXf5-zgH_X}B!tAI#Z)O9n`h+Fe0BME(KQ+9ZKQ!)0b<%i<5yg)2x$7FlPI371}@dJ8f zKea?yu%__vP}oG1o&as%+hgM7JLX#ZG#?*3)$+p~BO6$m$mqpPrX}+HB1z$-BeL$U z>*_z!)py<-_GDGNbV=@Bi}nDQ2Ey|KYbqE2VatlplT@~=_fAGW=_!$Miz10*G&5Yk zGF8wvF3A!Truv3IbHv&Hrqv0&=-LcdFxSF&MMxf<`ZKTmB%PHWOX?qLSG`(zIrDn@ z%jpZs&r`F?6ZuE!7nzC9kzdutg7%>%$IFIC4RSNy)uP`o_S7y{w~Qww+fBBs@pZBZ zHa+2OExmjDoT_P>{KAa*MN^`;^ErZ1Q)=gUZW7PlB9kGq} zwk$EB9XWKkwIq$1+r^g2OMG$>UDp>1+9%pD%ft}YqK^x~SykK6yKFQ{`sq(PnAO2vylKDn_P7?0QD67G=_MwOlWk zDwW-ED-?~!R*{5(buy@u2WF+9rohQ$8r*xi%D1>bBtEf^^N(0wyh5{cOIF! zmcL#|f-{&?wQK7`9YNF))b99Ej*WIj%i(9=> z=IB7wd;21>=Cb0R@403}6i6byraC5NV0Lzr+|qawg-q-hiPXB@T|T91H*Uz?uj1|V zsAZcXvLo<2wWO`d>Kp1#Q zfuE}*9?TT9)m3>n);-SHoIdN&mQ8yJJh?37wat%R2`jLo7^<&M7qm~8hQ)7BsOaK88009sHfw3om z{6F?4gaRM{0w4eaATTlkeE&Z(GE4vg5C8!X0D-Y5fam|QHz5=N0T2KI5CDOZ2_XNE Sj0_V%00ck)1VCWy3H%3+woB^( diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data For Account b/~/Library/Application Support/Google/Chrome/Default/Login Data For Account deleted file mode 100644 index 0df24a9bc1c201a68142f796a6c7654459e23c28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI4zi-<{6vs)^785&8?EC;>xWfTK5ffIL7^#QEC>q6PQX#6GC~^>^EeMJ_I|q}Z z!lT?eo01kCyR>81{uQ0NW$Ms>pi9;Q-3oN+krZjtl9C8T20>o|mdyLXd++n!yZ0y? z_vm4T1(fW0zH0^KhIC4jW$88{k|fFE=c4#YUUTA?>EuFuhW&4Q$HVyqC00JNY0w4ea?~lM4WnSD|QGb)vztlg)2VNim0w4eaAOHemLEr;L*;sTe z9+g)K`-FO8r}X zJr)W>NDu%45C8!X0D*+Sva%r$sREQaWm)dk08?j`%cnCHK=}MGzVycn1V8`;KmY_l zV1fvQ&;Q8(6J&6x3IZSi0w4eaf&iZX;RYZ80w4eaATW6Z@cch{HiyO_00JNY0w93r zfA|0hfB*=900>MT0p$P5vpF;d0T2KI5C8$>fA|0hfB*=900>MT0sQ@c@@x)`K>!3m z00cl_UcDtLN<&ij)!&tddP`ZD`gQ8O9LTHkD(HX!2>f3H-|r}@wzMSwFcVnfXfDUw zXDuGTPjA+YQr#f+(w&My;x@A4`AiHkJHA66muj1zm1?BAT_@F@N~K6FI}qo3Wjl+c z!>Ql0TxwE>y0jG}(=t7WmeZlf?QM(muRXunKO^mlXWXf5-zgH_X}B!tAI#Z)O9n`h+Fe0BME(KQ+9ZKQ!)0b<%i<5yg)2x$7FlPI371}@dJ8f zKea?yu%__vP}oG1o&as%+hgM7JLX#ZG#?*3)$+p~BO6$m$mqpPrX}+HB1z$-BeL$U z>*_z!)py<-_GDGNbV=@Bi}nDQ2Ey|KYbqE2VatlplT@~=_fAGW=_!$Miz10*G&5Yk zGF8wvF3A!Truv3IbHv&Hrqv0&=-LcdFxSF&MMxf<`ZKTmB%PHWOX?qLSG`(zIrDn@ z%jpZs&r`F?6ZuE!7nzC9kzdutg7%>%$IFIC4RSNy)uP`o_S7y{w~Qww+fBBs@pZBZ zHa+2OExmjDoT_P>{KAa*MN^`;^ErZ1Q)=gUZW7PlB9kGq} zwk$EB9XWKkwIq$1+r^g2OMG$>UDp>1+9%pD%ft}YqK^x~SykK6yKFQ{`sq(PnAO2vylKDn_P7?0QD67G=_MwOlWk zDwW-ED-?~!R*{5(buy@u2WF+9rohQ$8r*xi%D1>bBtEf^^N(0wyh5{cOIF! zmcL#|f-{&?wQK7`9YNF))b99Ej*WIj%i(9=> z=IB7wd;21>=Cb0R@403}6i6byraC5NV0Lzr+|qawg-q-hiPXB@T|T91H*Uz?uj1|V zsAZcXvLo<2wWO`d>Kp1#Q zfuE}*9?TT9)m3>n);-SHoIdN&mQ8yJJh?37wat%R2`jLo7^<&M7qm~8hQ)7BsOaK88009sHfw3om z{6F?4gaRM{0w4eaATTlkeE&Z(GE4vg5C8!X0D-Y5fam|QHz5=N0T2KI5CDOZ2_XNE Sj0_V%00ck)1VCWy3H%3+woB^( diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal b/~/Library/Application Support/Google/Chrome/Default/Login Data For Account-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Login Data-journal b/~/Library/Application Support/Google/Chrome/Default/Login Data-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Network Persistent State b/~/Library/Application Support/Google/Chrome/Default/Network Persistent State deleted file mode 100644 index c5179ce..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Network Persistent State +++ /dev/null @@ -1 +0,0 @@ -{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13385103484297970","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false],"server":"https://clients2.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13385103484684048","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false],"server":"https://accounts.google.com","supports_spdy":true}],"version":5},"network_qualities":{"CAISABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK b/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG b/~/Library/Application Support/Google/Chrome/Default/PersistentOriginTrials/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Preferences b/~/Library/Application Support/Google/Chrome/Default/Preferences deleted file mode 100644 index dcaa4af..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Preferences +++ /dev/null @@ -1 +0,0 @@ -{"accessibility":{"captions":{"live_caption_language":"en-US"}},"account_tracker_service_last_update":"13382511483377841","ack_existing_ntp_extensions":true,"alternate_error_pages":{"backup":true},"announcement_notification_service_first_run_time":"13382511483184229","apps":{"shortcuts_arch":"x86_64","shortcuts_version":7},"autocomplete":{"retention_policy_last_version":132},"autofill":{"last_version_deduped":132},"browser":{"has_seen_welcome_page":false,"window_placement":{"bottom":1046,"left":0,"maximized":false,"right":1792,"top":25,"work_area_bottom":1046,"work_area_left":0,"work_area_right":1792,"work_area_top":25}},"commerce_daily_metrics_last_update_time":"13382511483338579","countryid_at_install":17230,"default_apps_install_state":2,"default_search_provider":{"guid":""},"domain_diversity":{"last_reporting_timestamp":"13382511484440566"},"enterprise_profile_guid":"19b28c7e-13be-44d5-b8f0-8c873a74ac97","extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"132.0.6834.111"},"gaia_cookie":{"changed_time":1738037884.684924,"hash":"2jmj7l5rSw0yVb/vlWAYkK/YBwk=","last_list_accounts_data":"[\"gaia.l.a.r\",[]]"},"gcm":{"product_category_for_subtypes":"com.chrome.macosx"},"google":{"services":{"signin_scoped_device_id":"850c48a2-196c-4b4d-acb7-6a1f15b1c74d"}},"in_product_help":{"new_badge":{"Compose":{"feature_enabled_time":"13382511484069563","show_count":0,"used_count":0},"ComposeNudge":{"feature_enabled_time":"13382511484069573","show_count":0,"used_count":0},"ComposeProactiveNudge":{"feature_enabled_time":"13382511484069576","show_count":0,"used_count":0},"LensOverlay":{"feature_enabled_time":"13382511484069579","show_count":0,"used_count":0}},"recent_session_enabled_time":"13382511484069219","recent_session_start_times":["13382511484069219"],"session_last_active_time":"13382511484069219","session_start_time":"13382511484069219"},"intl":{"selected_languages":"zh-CN,zh"},"invalidation":{"per_sender_topics_to_handler":{"1013309121859":{}}},"media":{"engagement":{"schema_version":5}},"media_router":{"receiver_id_hash_token":"f9l5dmAl6Dgz60Itj/z6Xex2kjFxzLdDWFfP1hUKExG2c7pEOQLMS5Vn8I+F3kgnKp9gA8nxGVG1VjVrX/+pKA=="},"ntp":{"num_personal_suggestions":1},"optimization_guide":{"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"PRICE_TRACKING":true,"V8_COMPILE_HINTS":true},"store_file_paths_to_delete":{}},"password_manager":{"autofillable_credentials_account_store_login_database":false,"autofillable_credentials_profile_store_login_database":false},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":26,"content_settings":{"did_migrate_adaptive_notification_quieting_to_cpss":true,"disable_quiet_permission_ui_time":{"notifications":"13382511483187216"},"enable_cpss":{"notifications":true},"enable_quiet_permission_ui":{"notifications":false},"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"auto_picture_in_picture":{},"auto_select_certificate":{},"automatic_downloads":{},"automatic_fullscreen":{},"autoplay":{},"background_sync":{},"bluetooth_chooser_data":{},"bluetooth_guard":{},"bluetooth_scanning":{},"camera_pan_tilt_zoom":{},"captured_surface_control":{},"client_hints":{},"clipboard":{},"cookie_controls_metadata":{},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"durable_storage":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{"https://accounts.google.com:443,*":{"last_modified":"13382511484685155","setting":{"chosen-objects":[{"idp-origin":"https://accounts.google.com","idp-signin-status":false}]}}},"fedcm_share":{},"file_system_access_chooser_data":{},"file_system_access_extended_permission":{},"file_system_access_restore_permission":{},"file_system_last_picked_directory":{},"file_system_read_guard":{},"file_system_write_guard":{},"formfill_metadata":{},"geolocation":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"insecure_private_network":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"local_fonts":{},"media_engagement":{},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"private_network_chooser_data":{},"private_network_guard":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"tracking_protection":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"pref_version":1},"created_by_version":"132.0.6834.111","creation_time":"13382511483104163","did_work_around_bug_364820109_default":true,"did_work_around_bug_364820109_exceptions":true,"exit_type":"Normal","family_link_user_state":6,"family_member_role":"not_in_family","managed":{"locally_parent_approved_extensions":{},"locally_parent_approved_extensions_migration_state":1},"managed_user_id":"","name":"็”จๆˆท1","password_account_storage_settings":{},"password_hash_data_list":[]},"safebrowsing":{"event_timestamps":{},"hash_real_time_ohttp_expiration_time":"13383116283988851","hash_real_time_ohttp_key":"DwAg2QfP5ledTviBdtqJx6iBI3OOkXwL17PZb5gd5AS9IhsABAABAAI=","metrics_last_log_time":"13382511483","scout_reporting_enabled_when_deprecated":false},"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"saved_tab_groups":{"specifics_to_data_migration":true},"segmentation_platform":{"uma_in_sql_start_time":"13382511483161279"},"sessions":{"event_log":[{"crashed":false,"time":"13382511483143555","type":0},{"did_schedule_command":true,"first_session_service":true,"tab_count":1,"time":"13382511488558774","type":2,"window_count":1}],"session_data_status":5},"should_read_incoming_syncing_theme_prefs":true,"signin":{"allowed":true},"spellcheck":{"dictionaries":["en-US"]},"sync":{"data_type_status_for_sync_to_signin":{"app_list":false,"app_settings":false,"apps":false,"arc_package":false,"autofill":false,"autofill_profiles":false,"autofill_wallet":false,"autofill_wallet_credential":false,"autofill_wallet_metadata":false,"autofill_wallet_offer":false,"autofill_wallet_usage":false,"bookmarks":false,"collaboration_group":false,"contact_info":false,"cookies":false,"device_info":false,"dictionary":false,"extension_settings":false,"extensions":false,"history":false,"history_delete_directives":false,"incoming_password_sharing_invitation":false,"managed_user_settings":false,"nigori":false,"os_preferences":false,"os_priority_preferences":false,"outgoing_password_sharing_invitation":false,"passwords":false,"plus_address":false,"plus_address_setting":false,"power_bookmark":false,"preferences":false,"printers":false,"printers_authorization_servers":false,"priority_preferences":false,"product_comparison":false,"reading_list":false,"saved_tab_group":false,"search_engines":false,"security_events":false,"send_tab_to_self":false,"sessions":false,"shared_tab_group_data":false,"sharing_message":false,"themes":false,"user_consent":false,"user_events":false,"web_apps":false,"webapks":false,"webauthn_credential":false,"wifi_configurations":false,"workspace_desk":false},"encryption_bootstrap_token_per_account_migration_done":true,"feature_status_for_sync_to_signin":5},"tab_group_saves_ui_update_migrated":true,"translate_site_blacklist":[],"translate_site_blocklist_with_time":{}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/README b/~/Library/Application Support/Google/Chrome/Default/README deleted file mode 100644 index 98d9d27..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/README +++ /dev/null @@ -1 +0,0 @@ -Google Chrome settings and storage represent user-selected preferences and information and MUST not be extracted, overwritten or modified except through Google Chrome defined APIs. \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies b/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies deleted file mode 100644 index 403b7f06042347598147edd3cc4e2c34f903cf9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI&O;6h}7zgmADPu3NzybBp9W0?~Aa$GA%Vk_BEMjO~JGwHlQ{)9hBicCF4x+m; z?Xs`68>fARU3Q(c+b)x4w+WP{y)*QWlqPOX#CLbUx|Su^xSjXWc(mac0eO58UrFfAtAA2tWV=5P$##AOHaf zK;XX=IDJu^EXpI5?YkDUaZABIf&NfaI>%pZ_jqIm4@3)*GA)GsW9Ser^e5M0VZj79;Iii-+~^mP>yQ`N2z$rBOi zyMi_|!893jp_acKIMbza+5UQ8(T^RLHYPn3)AqKi>oxDZL4jaYg*@^T73e;+yiKo3 z>Wvnu@6>9QthuD+?dnh#&bNK!0@L1+&@t^KqcIi*q8BT+=MQq%YmN1bT1{x_c zglbH+QX83}&);)tgePX35zlA#JCnqFRL`lgN@?M$7mulV!UW7!v%GIlmlhW6)5raZ z)@4d}M$y8hDP|%|dajdNqrUmR+T3_my_j0rWAnDT^`_eVKwf(vDr7JVhAv-zP`FWA zU9heGgC~zV=24-E;{CL5YVcRgr+JsZX})k~_3pUeEcciDLm#j~00Izz00bZa0SG_< z0uX=z1R!uF1@1Y{>U@70Bj8=V1{CU*EdSUnvGC~0vzdZZolcxz|{!2JHN|MZUy0uX=z1Rwwb2tWV=5P$##AOL}DEMR{B$NT>^9$<700uX=z U1Rwwb2tWV=5P$##AfN^Q0RvQW7ytkO diff --git a/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal b/~/Library/Application Support/Google/Chrome/Default/Safe Browsing Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Secure Preferences b/~/Library/Application Support/Google/Chrome/Default/Secure Preferences deleted file mode 100644 index 91da8d3..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Secure Preferences +++ /dev/null @@ -1 +0,0 @@ -{"extensions":{"settings":{"ahfgeienlihckogmohjhadlkjgocpleb":{"account_extension_type":0,"active_permissions":{"api":["management","system.display","system.storage","webstorePrivate","system.cpu","system.memory","system.network"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"app_launcher_ordinal":"t","commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13382511483184768","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483184768","location":5,"manifest":{"app":{"launch":{"web_url":"https://chrome.google.com/webstore"},"urls":["https://chrome.google.com/webstore"]},"description":"ๆŸฅๆ‰พ้€‚็”จไบŽGoogle Chrome็š„็ฒพๅฝฉๅบ”็”จใ€ๆธธๆˆใ€ๆ‰ฉๅฑ•็จ‹ๅบๅ’Œไธป้ข˜่ƒŒๆ™ฏใ€‚","icons":{"128":"webstore_icon_128.png","16":"webstore_icon_16.png"},"key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtl3tO0osjuzRsf6xtD2SKxPlTfuoy7AWoObysitBPvH5fE1NaAA1/2JkPWkVDhdLBWLaIBPYeXbzlHp3y4Vv/4XG+aN5qFE3z+1RU/NqkzVYHtIpVScf3DjTYtKVL66mzVGijSoAIwbFCC3LpGdaoe6Q1rSRDp76wR6jjFzsYwQIDAQAB","name":"ๅบ”็”จๅ•†ๅบ—","permissions":["webstorePrivate","management","system.cpu","system.display","system.memory","system.network","system.storage"],"version":"0.2"},"needs_sync":true,"page_ordinal":"n","path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/web_store","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"mhjfbmdgcfjbbpaeojofohoefgiehjai":{"account_extension_type":0,"active_permissions":{"api":["contentSettings","fileSystem","fileSystem.write","metricsPrivate","tabs","resourcesPrivate","pdfViewerPrivate"],"explicit_host":["chrome://resources/*","chrome://webui-test/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":[],"first_install_time":"13382511483185333","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483185333","location":5,"manifest":{"content_security_policy":"script-src 'self' 'wasm-eval' blob: filesystem: chrome://resources chrome://webui-test; object-src * blob: externalfile: file: filesystem: data:","description":"","incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN6hM0rsDYGbzQPQfOygqlRtQgKUXMfnSjhIBL7LnReAVBEd7ZmKtyN2qmSasMl4HZpMhVe2rPWVVwBDl6iyNE/Kok6E6v6V3vCLGsOpQAuuNVye/3QxzIldzG/jQAdWZiyXReRVapOhZtLjGfywCvlWq7Sl/e3sbc0vWybSDI2QIDAQAB","manifest_version":2,"mime_types":["application/pdf"],"mime_types_handler":"index.html","name":"Chrome PDF Viewer","offline_enabled":true,"permissions":["chrome://resources/","chrome://webui-test/","contentSettings","metricsPrivate","pdfViewerPrivate","resourcesPrivate","tabs",{"fileSystem":["write"]}],"version":"1"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/pdf","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"neajdppkdcdipfabeoofebfddakdcjhd":{"account_extension_type":0,"active_permissions":{"api":["systemPrivate","ttsEngine"],"explicit_host":["https://www.google.com/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":["ttsEngine.onPause","ttsEngine.onResume","ttsEngine.onSpeak","ttsEngine.onStop"],"first_install_time":"13382511483186159","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483186159","location":5,"manifest":{"background":{"persistent":false,"scripts":["tts_extension.js"]},"description":"Component extension providing speech via the Google network text-to-speech service.","key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8GSbNUMGygqQTNDMFGIjZNcwXsHLzkNkHjWbuY37PbNdSDZ4VqlVjzbWqODSe+MjELdv5Keb51IdytnoGYXBMyqKmWpUrg+RnKvQ5ibWr4MW9pyIceOIdp9GrzC1WZGgTmZismYR3AjaIpufZ7xDdQQv+XrghPWCkdVqLN+qZDA1HU+DURznkMICiDDSH2sU0egm9UbWfS218bZqzKeQDiC3OnTPlaxcbJtKUuupIm5knjze3Wo9Ae9poTDMzKgchg0VlFCv3uqox+wlD8sjXBoyBCCK9HpImdVAF1a7jpdgiUHpPeV/26oYzM9/grltwNR3bzECQgSpyXp0eyoegwIDAQAB","manifest_version":2,"name":"Google Network Speech","permissions":["systemPrivate","ttsEngine","https://www.google.com/"],"tts_engine":{"voices":[{"event_types":["start","end","error"],"gender":"female","lang":"de-DE","remote":true,"voice_name":"Google Deutsch"},{"event_types":["start","end","error"],"gender":"female","lang":"en-US","remote":true,"voice_name":"Google US English"},{"event_types":["start","end","error"],"gender":"female","lang":"en-GB","remote":true,"voice_name":"Google UK English Female"},{"event_types":["start","end","error"],"gender":"male","lang":"en-GB","remote":true,"voice_name":"Google UK English Male"},{"event_types":["start","end","error"],"gender":"female","lang":"es-ES","remote":true,"voice_name":"Google espaรฑol"},{"event_types":["start","end","error"],"gender":"female","lang":"es-US","remote":true,"voice_name":"Google espaรฑol de Estados Unidos"},{"event_types":["start","end","error"],"gender":"female","lang":"fr-FR","remote":true,"voice_name":"Google franรงais"},{"event_types":["start","end","error"],"gender":"female","lang":"hi-IN","remote":true,"voice_name":"Google เคนเคฟเคจเฅเคฆเฅ€"},{"event_types":["start","end","error"],"gender":"female","lang":"id-ID","remote":true,"voice_name":"Google Bahasa Indonesia"},{"event_types":["start","end","error"],"gender":"female","lang":"it-IT","remote":true,"voice_name":"Google italiano"},{"event_types":["start","end","error"],"gender":"female","lang":"ja-JP","remote":true,"voice_name":"Google ๆ—ฅๆœฌ่ชž"},{"event_types":["start","end","error"],"gender":"female","lang":"ko-KR","remote":true,"voice_name":"Google ํ•œ๊ตญ์˜"},{"event_types":["start","end","error"],"gender":"female","lang":"nl-NL","remote":true,"voice_name":"Google Nederlands"},{"event_types":["start","end","error"],"gender":"female","lang":"pl-PL","remote":true,"voice_name":"Google polski"},{"event_types":["start","end","error"],"gender":"female","lang":"pt-BR","remote":true,"voice_name":"Google portuguรชs do Brasil"},{"event_types":["start","end","error"],"gender":"female","lang":"ru-RU","remote":true,"voice_name":"Google ั€ัƒััะบะธะน"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-CN","remote":true,"voice_name":"Googleย ๆ™ฎ้€š่ฏ๏ผˆไธญๅ›ฝๅคง้™†๏ผ‰"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-HK","remote":true,"voice_name":"Googleย ็ฒค่ชž๏ผˆ้ฆ™ๆธฏ๏ผ‰"},{"event_types":["start","end","error"],"gender":"female","lang":"zh-TW","remote":true,"voice_name":"Google ๅœ‹่ชž๏ผˆ่‡บ็ฃ๏ผ‰"}]},"version":"1.0"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/network_speech_synthesis","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"nkeimhogjdpnpccoofpliimaahmaaome":{"account_extension_type":0,"active_permissions":{"api":["processes","webrtcLoggingPrivate","system.cpu","enterprise.hardwarePlatform"],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"events":["runtime.onConnectExternal"],"first_install_time":"13382511483185847","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13382511483185847","location":5,"manifest":{"background":{"page":"background.html","persistent":false},"externally_connectable":{"matches":["https://*.google.com/*"]},"incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAQt2ZDdPfoSe/JI6ID5bgLHRCnCu9T36aYczmhw/tnv6QZB2I6WnOCMZXJZlRdqWc7w9jo4BWhYS50Vb4weMfh/I0On7VcRwJUgfAxW2cHB+EkmtI1v4v/OU24OqIa1Nmv9uRVeX0GjhQukdLNhAE6ACWooaf5kqKlCeK+1GOkQIDAQAB","manifest_version":2,"name":"Google Hangouts","permissions":["enterprise.hardwarePlatform","processes","system.cpu","webrtcLoggingPrivate"],"version":"1.3.22"},"path":"/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/132.0.6834.111/Resources/hangout_services","preferences":{},"regular_only_preferences":{},"state":1,"was_installed_by_default":false,"was_installed_by_oem":false},"nmmhkkegccagdldgiimedpiccmgmieda":{"lastpingday":"13382438400562735"}}},"pinned_tabs":[],"protection":{"macs":{"browser":{"show_home_button":"5E5DE1BE4AE420C9330065EB7895450061AAC7ECACBB3EEC44390B49341F0062"},"default_search_provider_data":{"template_url_data":"E3C5A94EC159A0E49E24838C22C48169287C67CEFBAB112CF6F32848CBC27397"},"enterprise_signin":{"policy_recovery_token":"22F0F1AA445360C5F3352A3F0D244B98823B27820E2321F905197C664CF66D74"},"extensions":{"settings":{"ahfgeienlihckogmohjhadlkjgocpleb":"A3016A91BC9294FE3A4E507EB2005B2D48DA26BD295A1F17EE628A5072407113","mhjfbmdgcfjbbpaeojofohoefgiehjai":"37EBC938EE6A73D7009CD2045E54E7CB193E5A49A6423BEBADE88043CADB9591","neajdppkdcdipfabeoofebfddakdcjhd":"2E695ECAAEEDDC6264D758C8BF318B5F94C2C537DB0F15C2E47F87B91363B88A","nkeimhogjdpnpccoofpliimaahmaaome":"C8B359BB457E888DA7E2353F59009E810A01218059C2B00E8656E811CF7674A8","nmmhkkegccagdldgiimedpiccmgmieda":"001502AED62CC232B37BFC918AD966E7C907E520AA07EF289BD91A9CB6B13BEF"},"ui":{"developer_mode":"A7B321EED98920E1ABA74143ED8CF55700E1774B2B318B3A82D7503CA94B57F9"}},"google":{"services":{"account_id":"905CF2B56FFCAB2F739063430E8150F1B2E3AB351AA47DD50BCBEFBC032BE151","last_signed_in_username":"2C8FC120A9CF67666DEC68A041808380D3349634AD54628D178177BDE80BD3EF","last_username":"F9988D8D2C175A1EF13885A4D25CF8B1FD98B19F2D9D1B730A4A57C3C93831E4"}},"homepage":"2F434A4D57D9ABEADD39B4EC4E2DEB60F5B3EDCAAA49A27043BE2D879AD9199D","homepage_is_newtabpage":"54375B85488F673158CBF1EC068160C02CFF1784E0FC7ADCFD96FDC50E1CA40F","media":{"storage_id_salt":"5E09589029F201B008DA69BBC61472719BD28FB482B566FF65C4A748F64B985D"},"pinned_tabs":"5C4DE62C74459180BF175544626509C6FC29BD1D0BC996773B3926182D1E4AC3","prefs":{"preference_reset_time":"8AFA7A499F54D9DB38880FEF43E410F775811D434AC3032FCF5A4846934F5204"},"safebrowsing":{"incidents_sent":"2CBCDFE019094766FA8B4D02F195F0E085992E2434AD60031BE6B4B50D1EE423"},"search_provider_overrides":"EE64A7F2C6457F045751B6D8D6B34A40A6D569178129B13DCFEF6176C7A1ED23","session":{"restore_on_startup":"5412250589D2185F7B58424101A8F90024A8246963B26C8677DB6D7130F0ABF2","startup_urls":"D3A7DE002CFF6D4AD0909BF91A5A0CE4EC1FD0E81440736AF44663B05A262258"}},"super_mac":"AB682E62C84F6E1CD5D82FA0D75E6C6D5C13AB408AB9FDE10477381A0827E3FF"}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SegmentInfoDB/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalDB/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Segmentation Platform/SignalStorageConfigDB/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Session Storage/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK b/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG b/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG deleted file mode 100644 index b2d9fd6..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Session Storage/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:08.640 3f03 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Session Storage since it was missing. -2025/01/28-12:18:08.795 3f03 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Session Storage/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 b/~/Library/Application Support/Google/Chrome/Default/Sessions/Session_13382511485644650 deleted file mode 100644 index 4381e74e239fabf01cf4bc73780599208d46110e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcma)4J5Iw;5F7#|vG|K1h>##il!=HP8yjdSDG);B0Fmv)4Iwm1!wHaRC^-Uj(9=P~ z3Ah3!bTlZ;8m}->BC*!<&g{z0bd9S-0 zwEfPhgmB3G0oMlcKK)7@1?C65d?T@It}NH3kd)n~u)zBi7ro}&uMZcG0j*d=PiM+b7^LA}TAUp1|Q_!^Ae93cZb1jBFwg7Gpm59r3&sG?}UKy~9eEv54=Gno<3o zxU$KvO?I={!Q-?R>nmg~nZyEeoACl4LNB^){L-rc)9pX}r+N!9>tpgylZZPLQ5EZ_Qf2l%K3?=?W&>kOrO zJe_oPk&dp75|@l$aPQJSCvI6U(DJb9_&u?~ee1ZuqZkgKm$=bOy!d=6U-uiharh;= zK#T=`JKFR7e^tNdY`VZU(as5tF{YTHORGSN5zNFgm*{^CKTGP0*5^AC zSb=g5$rIkAevf;=2_k+9M>ydZ5*2c5DOxew^rbxakn@Jf7&+$ul$jm+hWrnxSyex> znHj5Qtfp8YX1ARAAz6pa_%ykqKcqUc-85^q*(+x^<1=?Hi_d9s7v7tz9?tCZ6rJRV Lzmm123sC(4vb0R& diff --git a/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index b/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index deleted file mode 100644 index 79bd403ac665228853dd8fa54b8f4427af1721c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 TcmXqrDOxU_`}+?k11bOjQGf(4 diff --git a/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index b/~/Library/Application Support/Google/Chrome/Default/Shared Dictionary/cache/index-dir/the-real-index deleted file mode 100644 index bc33429b44962ccb3d3f542603c0d1d57f206d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 mcmdO3U|>+>JE)vrsZf+!l9$Q}P$|tWU8~R^LrSiR^pX$GE ze7Et@)gP|jto~H}y7IRy6OD4uy{H?yr^AN0I3M{hjI(mNR+m9; z#6jG^AK8&lKG0e!P^Mun*vZtE;{Mbs;`3 zBjbGSO1ZWxb9@r#IP=`I*^<#vng=>+A3i=>42opqT%7+%vN807upyU2{o%#CHE@E^ zcvLLa>UH%vw7(rW!P!W1Sb-xyj@Qp#UYUQKUh|-3icH%*Px3b8oyMD?7AN<1Gk#`r zuqMxosi!4t_9jzzY)@ZV&zx6sCiKh)W>>U3J<&dDwZxzp~g;H&QOI708G9P&M zEcD}RD~e#7U}9o$P*7lCU|@t|AVoG{WYDWB;00+HAlr;ljiVtj n8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O6ovo*4{!$i diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG deleted file mode 100644 index 46b6548..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.142 f503 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database since it was missing. -2025/01/28-12:18:03.258 f503 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Site Characteristics Database/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG deleted file mode 100644 index a736928..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/LOG +++ /dev/null @@ -1,2 +0,0 @@ -2025/01/28-12:18:03.136 a607 Creating DB /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB since it was missing. -2025/01/28-12:18:03.293 a607 Reusing MANIFEST /Users/warmshao/vincent_projects/web-ui/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 diff --git a/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 b/~/Library/Application Support/Google/Chrome/Default/Sync Data/LevelDB/MANIFEST-000001 deleted file mode 100644 index 18e5cab72c1550d8dc398e3413eea91bee24db77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmbPQv-7AD10$nUPHI_dPD+xVQ)NkNd1i5{bAE0?Vo_pAei0J`GZPB~05;AINdN!< diff --git a/~/Library/Application Support/Google/Chrome/Default/Top Sites b/~/Library/Application Support/Google/Chrome/Default/Top Sites deleted file mode 100644 index 8589f4f98d44ba30d9fab75b1283cd434505610e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI(J#W)M7zgk>pZiADTp6Ma8FEsEXr(q$1T2jz2$5AHLQ2yF(aCbtYZBFtgMBH` zEeoHZh_Arby(=u85FdddVnbqM>TDZhK&L70aC1Rwwb z2tWV=5P$##AOL~?USMFbnN%i22Rq8ybEWcocBucqhH=L%)vRLO67}N4iY4OB%l*I= zb?bRuRJU|%R4U?Wt^A}|+ZB(k-Bmqn2Tu1;l&f`X)2hXLt*VZ4<@k{+d2>2tWhm)% z_vNebg{u>=oxbuf#&J0Ewa4(LoOnWTfFtO z#XpINMzy@%u*R|$M~>T*eZA_;M$*WR}&S2-GU#9P*+30Rs(2enrgn#2-^a=q1 z2tWV=5P$##AOHafKmY;|fWU+bq!}x4*9n!~^u3;=I=V7qAITu>_}zQ+221nNV3D$= zo1W+Bs)=$`KU~Y-(AUKHIpOF0J0DKy1tKj7KmY;|fB*y_009U<00Izz00e#sq*;Mp zQ3GJ}EKPrx0E`4%n!8j1h@Ssb{(sTz8Rjqi=O{e m{+Z|n0Rad=00Izz00bZa0SG_<0uX?}zao%j&AGp*1^fiTW6Xm9 diff --git a/~/Library/Application Support/Google/Chrome/Default/Top Sites-journal b/~/Library/Application Support/Google/Chrome/Default/Top Sites-journal deleted file mode 100644 index e69de29..0000000 diff --git a/~/Library/Application Support/Google/Chrome/Default/TransportSecurity b/~/Library/Application Support/Google/Chrome/Default/TransportSecurity deleted file mode 100644 index a1ce891..0000000 --- a/~/Library/Application Support/Google/Chrome/Default/TransportSecurity +++ /dev/null @@ -1 +0,0 @@ -{"sts":[{"expiry":1769573884.684139,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1738037884.684142}],"version":2} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Default/Trust Tokens b/~/Library/Application Support/Google/Chrome/Default/Trust Tokens deleted file mode 100644 index ed71bb122868bad80397263004748b1e9a02a6d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36864 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

t= z+axvPQY zG$vbGDY4(rfvDwgPR>ugF*zTJwx1FfJSdUhlm~cWYKnVrnhEJ$c%Z-y0U#<18|}64 z-!Jyir;XY?q%BS8Uw#Eh~2Kc7aRB~`K5C?L7hsA;J*bfX=sbg^Ud2|WfA;0 zC!?lQ;l>FIoXnPK_<65>JaH(=T=62U0oQ%cO170_5r{BP1K9hQVI<+Fr9dXKMWOt3 zAt&4&+Xhu!)BsXEd3fyAoN(jJj+*i@vlfcYVxAYyobfM?h$4)BK9@@Iv%#yIFf9c4 ze?&$=Jo6BcwRmoP%7sN;B70nw%ym09f zw>iW-J(#DhhOPvPC8v(XG)gYB<@63w_~F77dR@pGX(Y@5;e=m^t_0CGV@>4qH->Y9 zbScd-lSPzwPVNLv(4GkWs009PWY zvZj6mE_&JSN`^fC{y%AhgK0{GUVx z(~tlXKmter2|V2d@cIAgwl8Xj1dsp{Kmtf0i2y$TCsDyPB!C2v01`j~Pd5Qv|DSIA zqIO6C2_OL^fCQ2V;QF6L1=ElK5J@(XLlAFC3eGaHyxdTWB`8?(U`L zyFK*P&0ZrH1})>9V$@b`yKcQ!EUvGwpL0`+75Sd382UN*k&tU$R>{NzRj)gCNmq=r zs#iDq-kEq{5!qB$7l~Q3HkKBz4P5l=T27U=3_YGx^dfw#63f0!XkDV}ZB4luhGS1W zfFH45Du!8;?Fpk!bho#@b;B&jyZ+kwi=!)*vGT~k;PBAs!1+(Uc7V47p~?jy%V)g724~mdYRlmS6{8~0L!Vn4-a>q$Q(OiG<#gb++l{9j2Px; z-~QuIKKMh+s2WbYdA!7;T7%GJR#AgeMMEp6TgaxB1ma3I$;L438H9@X+M*(A;$i9-v_gac;i(YDrBh6w@&+=_|kla)i)3A(+ zEnWpLUxB}^Ch^mXmRz*dTD3?Mq`G995(FTHn51gkFbb=%0dsk)p+g5{P~NZ@b=j)l zzx+ko!lcb<=xA*Q6N72WZ6S+%SQYejYHnjx3_ zuFcKgoS1rJe(vVgj9*#wZ%O`*IY9ZW}H^V%qQs3!F~y)Ag2# zrEOrqEC%60&xNg6&gIrheX>FeMW?Lxu8wYRrQxA)7%(gO3KtXStyVE26W2~^w@s?4 z^?m!shG2?J?XBLW>wj0~qfEyyI;z}1akt>(zIru#4!@i^cD$#0s3+G=m)6|U5zjdf zfva98F#gpmRrcn4yZh~&J22>cQk3iU)>$A^{9yiX&i%!P|4x+Q!O^ji3j?HF9ve76 zI6OQcUy?@#R?d$MRTR3Y4W7Sqx3k%K=;h3blReYP^8D;if8&$y|M=g(^P?-lCwI8P z`VXVcDyE3B?uoI!12JGa$u@hsU(TF4+cTFe#>c<={>R_?;lKUh&p-aF-@g+55(u-Z z((s#&G!1bM%ZNbelK*r^pIcZ>3O)}?aHpRWifOO-)HEc4O9K)f5nt_ zy8SBFO{456b`dsgMYmX0k~OVdr&~CGh_1k-yEH$u;mzbN%TAwPY<}kJ8~$g*RI92k zYq#lYbImXp+`Su2Xh9L#vcOiP%!({P*ljDwayz=F60L00kf66@Q-%n|#0*LV>y+Oi zjfzWbWp%-DOoasH+?J*^6&9H=k(HS)2MMrcwaIXU6ei9@P|#)L3E5Y*BvWn8oL9>mefNRbgx$Jh4*0W;^&;%50=VX1VD3CcsV37~Gl61-$;L2@0wPifR%6%}G($7(QDretN6EUGoK zXw0bh!v0+ZKFvU10xcQ(qOnH8u6_G4Z`gqCBHIzVF8LbWJ;Itfd29LxX@t(O{o*$W zi=W@E@5QHE{1;ZJ)*`OlJ17Wy$<_J}%2_)p(>jHox*L_t^~|e{X}Uq8?&j{K+-IJ$ z#I{Kjeuem^X`{ftOOC0>Js@)~w&I7ao2c#kZQ!1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfWS`$PUls(J1nDQzP!!<{%sxAwSVZfpI?r*_0TC#&-&$G|G%>16+)6Vhx{&%@tU+zjSSxLB> z9{bafrP=X&7S9)E&ex`k009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5crD% zpKjgwJdphF-*TlzMVYg^V5$Ty_`O- z9}VZOp8|Wfdb%TfKjg5t(wlv}`}Ie8tFyb)7%q;D7DfuC$+7W5u~^K{?d~>Pji}mQ zFGK^?_I{%^m=B9{^OciqDC%Yljs3M&RByC58l6UGD!CwO9jFgR%eQBvxz5_dt?l)_ zs5CY*6s^QxEkVecoK&Hur?2pwrrKdY|@vVR?|2en#pHb;ZC?0Drqea<%3E+)Y9|rdfGi? zSJW1oS=LMR&$GDw_CtCT$(VcQzw&A(oBy>_^MCQ6_jZ%t)M0O>H@o@e^_xpK|HW2! zD9a(4Td0jEvz$yvUoRdc1FDTLoaEWp;b5WLoWzZ=97>x@TfYnGI4jLcD5sTjbE_7Y zr*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 b/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000001 deleted file mode 100644 index 92c5577bd8f8fda04ad73cc939c3675fa9e1391a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24460 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 IV43It0nt9>^8f$< diff --git a/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 b/~/Library/Application Support/Google/Chrome/GrShaderCache/f_000002 deleted file mode 100644 index f8e4538615485fa394b3e84fe7a974c5d8dedf2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23444 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 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_0 deleted file mode 100644 index d76fb77e93ac8a536b5dbade616d63abd00626c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_1 deleted file mode 100644 index dcaafa9740ee97afbdf50792612ef9f379e292dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_2 deleted file mode 100644 index c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/data_3 deleted file mode 100644 index 5eec97358cf550862fd343fc9a73c159d4c0ab10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index b/~/Library/Application Support/Google/Chrome/GraphiteDawnCache/index deleted file mode 100644 index 13d3abea95a8f8ac3b2628fde3bc438c571415f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262512 zcmeIuu?>JQ00Xd8{Rg;(x443xC#r5-g(yo8V05NL%H)36mekBCW0W)b+B>&v>HD$H zH=O_h0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ H;0J*REa3&x diff --git a/~/Library/Application Support/Google/Chrome/Last Version b/~/Library/Application Support/Google/Chrome/Last Version deleted file mode 100644 index 781c3b2..0000000 --- a/~/Library/Application Support/Google/Chrome/Last Version +++ /dev/null @@ -1 +0,0 @@ -132.0.6834.111 \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/Local State b/~/Library/Application Support/Google/Chrome/Local State deleted file mode 100644 index 4b8f2d0..0000000 --- a/~/Library/Application Support/Google/Chrome/Local State +++ /dev/null @@ -1 +0,0 @@ -{"accessibility":{"captions":{"soda_registered_language_packs":["en-US"]}},"autofill":{"ablation_seed":"fnIC5VcnFss="},"background_tracing":{"session_state":{"privacy_filter":false,"state":0}},"breadcrumbs":{"enabled":false,"enabled_time":"13382511483103097"},"hardware_acceleration_mode_previous":true,"legacy":{"profile":{"name":{"migrated":true}}},"local":{"password_hash_data_list":[]},"management":{"platform":{"enterprise_mdm_mac":0}},"optimization_guide":{"model_store_metadata":{},"on_device":{"last_version":"132.0.6834.111","model_crash_count":0}},"policy":{"last_statistics_update":"13382511483021995"},"privacy_budget":{"meta_experiment_activation_salt":0.05393202812792819},"profile":{"info_cache":{"Default":{"active_time":1738037884.214153,"avatar_icon":"chrome://theme/IDR_PROFILE_AVATAR_26","background_apps":false,"default_avatar_fill_color":-2890755,"default_avatar_stroke_color":-16166200,"force_signin_profile_locked":false,"gaia_id":"","is_consented_primary_account":false,"is_ephemeral":false,"is_using_default_avatar":true,"is_using_default_name":true,"managed_user_id":"","metrics_bucket_index":1,"name":"็”จๆˆท1","profile_color_seed":-16033840,"profile_highlight_color":-2890755,"signin.with_credential_provider":false,"user_name":""}},"last_active_profiles":["Default"],"metrics":{"next_bucket_index":2},"profile_counts_reported":"13382511483104083","profiles_order":["Default"]},"profile_network_context_service":{"http_cache_finch_experiment_groups":"None None None None"},"session_id_generator_last_value":"346621171","signin":{"active_accounts_last_emitted":"13382511482891489"},"subresource_filter":{"ruleset_version":{"checksum":0,"content":"","format":0}},"tab_stats":{"discards_external":0,"discards_frozen":0,"discards_proactive":0,"discards_suggested":0,"discards_urgent":0,"last_daily_sample":"13382511483017047","max_tabs_per_window":1,"reloads_external":0,"reloads_frozen":0,"reloads_proactive":0,"reloads_suggested":0,"reloads_urgent":0,"total_tab_count_max":1,"window_count_max":1},"ukm":{"persisted_logs":[]},"uninstall_metrics":{"installation_date2":"1738037882"},"user_experience_metrics":{"default_opt_in":2,"limited_entropy_randomization_source":"CF93E0F2D1D1F59FE341CA765E9630F0","low_entropy_source3":3405,"provisional_client_id":"786a9c00-c823-472a-b995-84e3fc632e70","pseudo_low_entropy_source":1302,"session_id":0,"stability":{"browser_last_live_timestamp":"13382511488597849","exited_cleanly":true,"stats_buildtime":"1737474222","stats_version":"132.0.6834.111-64"}},"variations_google_groups":{"Default":[]},"variations_limited_entropy_synthetic_trial_seed_v2":"69","was":{"restarted":false}} \ No newline at end of file diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_0 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_0 deleted file mode 100644 index d76fb77e93ac8a536b5dbade616d63abd00626c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK?wjL5Jka{7-jo+5O1auw}mk8@B+*}b0s6M>Kg$91PBlyK!5-N0t5&UAV7cs W0RjXF5FkK+009C72oNCfo4^Gh&;oe? diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_1 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_1 deleted file mode 100644 index dcaafa9740ee97afbdf50792612ef9f379e292dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270336 zcmeI%I}Lz93;@sqCjk%O-vMDm1rl%oM}vSHZXtOc`bnA&Z|#1REn zIz@m00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ_E F-~kAc1(N^( diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_2 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_2 deleted file mode 100644 index c7e2eb9adcfb2d3313ec85f5c28cedda950a3f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIu!3h8`2n0b1_TQ7_m#U&=2(t%Qz}%M=ae7_Oi2wlt1PBlyK!5-N0t5&UAV7cs V0RjXF5FkK+009C72oTsN@Bv`}0$Tt8 diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/data_3 b/~/Library/Application Support/Google/Chrome/ShaderCache/data_3 deleted file mode 100644 index 5eec97358cf550862fd343fc9a73c159d4c0ab10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeIuK@9*P5CpLeAOQbv2)|PW$RO!FMnHFsm9+HS=9>r*AV7cs0RjXF5FkK+009C7 W2oNAZfB*pk1PBlyK!5;&-vkZ-dID$w diff --git a/~/Library/Application Support/Google/Chrome/ShaderCache/index b/~/Library/Application Support/Google/Chrome/ShaderCache/index deleted file mode 100644 index f7e17a7bf61365f450f7feea011d624b8ded1188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262512 zcmeIuu?c`M00h7f*~Ll_9L2Sq!cjsxrxIh60W9yUfB5S9U0YH!r;Jgq1s}To zHU2R^_&50GU*S!Y=4Xe`hHs&?z4!K<+|M~FTp0WCzU}z7eli@pmalI~cO_YtUg)|c zNve3Ris$SReqNk?5U+CP{cUem>G8MGnwVAV&!qJ~>yz~dYrod6R)4C$)z7L_{~?BX zAbJyv zlEuk_)Sx^U)}TC^sk`1Y4@9C_vUujw8U*F<8Ix8`(Ka^Z>#b;~MDfh3o^%%hW6Rc5-z`!{EZV$Fqq|-|+|bG{$BIA>5JiajB*~YRJK~86v{; zu8DT()pGSOE(*&YFKnfA#_nQGd)ScesLQ6?j2bImyOawWIYbMx0i$ulT2QpDhCGp@ zXy8r|lYKw>oD!--SsZMR7CP3o~J-6k0R7{7(-cfB*srAb Date: Tue, 28 Jan 2025 12:27:34 +0800 Subject: [PATCH 18/29] fix chrmoe user data --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 30b49a3..7c8297a 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ playwright install - `--dark-mode`: Enables dark mode for the user interface. 3. **Access the WebUI:** Open your web browser and navigate to `http://127.0.0.1:7788`. 4. **Using Your Own Browser(Optional):** - - Set `CHROME_PATH` to the executable path of your browser and `CHROME_USER_DATA` to the user data directory of your browser. + - Set `CHROME_PATH` to the executable path of your browser and `CHROME_USER_DATA` to the user data directory of your browser. Leave `CHROME_USER_DATA` empty if you want to use local user data. - Windows ```env CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe" @@ -118,7 +118,7 @@ playwright install - Mac ```env CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" - CHROME_USER_DATA="~/Library/Application Support/Google/Chrome" + CHROME_USER_DATA="/Users/YourUsername/Library/Application Support/Google/Chrome" ``` - Close all Chrome windows - Open the WebUI in a non-Chrome browser, such as Firefox or Edge. This is important because the persistent browser context will use the Chrome data when running the agent. From 75ab5051ec2efb57d41ad87945b384dbc02b06dc Mon Sep 17 00:00:00 2001 From: vincent Date: Tue, 28 Jan 2025 20:38:29 +0800 Subject: [PATCH 19/29] fix deepseek-r1 ollama --- src/agent/custom_agent.py | 15 +++++++++------ src/agent/custom_massage_manager.py | 24 ++++++++++++------------ src/agent/custom_prompts.py | 2 +- src/utils/utils.py | 5 ++--- tests/test_browser_use.py | 16 ++++++++++------ 5 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index 355a8ff..81f33c8 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -242,17 +242,17 @@ class CustomAgent(Agent): logger.info(f"๐Ÿง  All Memory: \n{step_info.memory}") self._save_conversation(input_messages, model_output) if self.model_name != "deepseek-reasoner": - # remove pre-prev message - self.message_manager._remove_last_state_message() + # remove prev message + self.message_manager._remove_state_message_by_index(-1) except Exception as e: # model call failed, remove last state message from history - self.message_manager._remove_last_state_message() + self.message_manager._remove_state_message_by_index(-1) raise e - result: list[ActionResult] = await self.controller.multi_act( - model_output.action, self.browser_context - ) actions: list[ActionModel] = model_output.action + result: list[ActionResult] = await self.controller.multi_act( + actions, self.browser_context + ) if len(result) != len(actions): # I think something changes, such information should let LLM know for ri in range(len(result), len(actions)): @@ -261,6 +261,9 @@ class CustomAgent(Agent): error=f"{actions[ri].model_dump_json(exclude_unset=True)} is Failed to execute. \ Something new appeared after action {actions[len(result) - 1].model_dump_json(exclude_unset=True)}", is_done=False)) + if len(actions) == 0: + # TODO: fix no action case + result = [ActionResult(is_done=True, extracted_content=step_info.memory, include_in_memory=True)] self._last_result = result self._last_actions = actions if len(result) > 0 and result[-1].is_done: diff --git a/src/agent/custom_massage_manager.py b/src/agent/custom_massage_manager.py index e6fb1b5..f39c999 100644 --- a/src/agent/custom_massage_manager.py +++ b/src/agent/custom_massage_manager.py @@ -70,18 +70,6 @@ class CustomMassageManager(MessageManager): while diff > 0 and len(self.history.messages) > min_message_len: self.history.remove_message(min_message_len) # alway remove the oldest message diff = self.history.total_tokens - self.max_input_tokens - - def _remove_state_message_by_index(self, remove_ind=-1) -> None: - """Remove last state message from history""" - i = 0 - remove_cnt = 0 - while len(self.history.messages) and i <= len(self.history.messages): - i += 1 - if isinstance(self.history.messages[-i].message, HumanMessage): - remove_cnt += 1 - if remove_cnt == abs(remove_ind): - self.history.remove_message(-i) - break def add_state_message( self, @@ -115,3 +103,15 @@ class CustomMassageManager(MessageManager): len(text) // self.estimated_characters_per_token ) # Rough estimate if no tokenizer available return tokens + + def _remove_state_message_by_index(self, remove_ind=-1) -> None: + """Remove last state message from history""" + i = len(self.history.messages) - 1 + remove_cnt = 0 + while i >= 0: + if isinstance(self.history.messages[i].message, HumanMessage): + remove_cnt += 1 + if remove_cnt == abs(remove_ind): + self.history.remove_message(i) + break + i -= 1 \ No newline at end of file diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index 08a9040..1e1df63 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -183,7 +183,7 @@ class CustomAgentMessagePrompt(AgentMessagePrompt): state_description = f""" {step_info_description} -1. Task: {self.step_info.task} +1. Task: {self.step_info.task}. 2. Hints(Optional): {self.step_info.add_infos} 3. Memory: diff --git a/src/utils/utils.py b/src/utils/utils.py index dd5a57f..c4218cd 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -94,12 +94,11 @@ def get_llm_model(provider: str, **kwargs): else: base_url = kwargs.get("base_url") - if kwargs.get("model_name", "qwen2.5:7b").startswith("deepseek-r1"): + if "deepseek-r1" in kwargs.get("model_name", "qwen2.5:7b"): return DeepSeekR1ChatOllama( - model=kwargs.get("model_name", "deepseek-r1:7b"), + model=kwargs.get("model_name", "deepseek-r1:14b"), temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), - num_predict=kwargs.get("num_predict", 1024), base_url=kwargs.get("base_url", base_url), ) else: diff --git a/tests/test_browser_use.py b/tests/test_browser_use.py index 5a40c32..c9d1129 100644 --- a/tests/test_browser_use.py +++ b/tests/test_browser_use.py @@ -32,10 +32,14 @@ async def test_browser_use_org(): # api_key=os.getenv("AZURE_OPENAI_API_KEY", ""), # ) + # llm = utils.get_llm_model( + # provider="deepseek", + # model_name="deepseek-chat", + # temperature=0.8 + # ) + llm = utils.get_llm_model( - provider="deepseek", - model_name="deepseek-chat", - temperature=0.8 + provider="ollama", model_name="deepseek-r1:14b", temperature=0.5 ) window_w, window_h = 1920, 1080 @@ -152,9 +156,9 @@ async def test_browser_use_custom(): controller = CustomController() use_own_browser = True disable_security = True - use_vision = True # Set to False when using DeepSeek + use_vision = False # Set to False when using DeepSeek - max_actions_per_step = 10 + max_actions_per_step = 1 playwright = None browser = None browser_context = None @@ -189,7 +193,7 @@ async def test_browser_use_custom(): ) ) agent = CustomAgent( - task="go to google.com and type 'OpenAI' click search and give me the first url", + task="Search 'Nvidia' and give me the first url", add_infos="", # some hints for llm to complete the task llm=llm, browser=browser, From 3fb802038757b0ec792e69dc4348f79680e70006 Mon Sep 17 00:00:00 2001 From: marginal23326 <58261815+marginal23326@users.noreply.github.com> Date: Wed, 29 Jan 2025 00:41:52 +0600 Subject: [PATCH 20/29] refactor: remove code duplication in get_next_action method --- src/agent/custom_agent.py | 61 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/src/agent/custom_agent.py b/src/agent/custom_agent.py index 81f33c8..10be78d 100644 --- a/src/agent/custom_agent.py +++ b/src/agent/custom_agent.py @@ -184,42 +184,39 @@ class CustomAgent(Agent): @time_execution_async("--get_next_action") async def get_next_action(self, input_messages: list[BaseMessage]) -> AgentOutput: """Get next action from LLM based on current state""" - if self.use_deepseek_r1: - merged_input_messages = self.message_manager.merge_successive_human_messages(input_messages) - ai_message = self.llm.invoke(merged_input_messages) - self.message_manager._add_message_with_tokens(ai_message) - logger.info(f"๐Ÿคฏ Start Deep Thinking: ") - logger.info(ai_message.reasoning_content) - logger.info(f"๐Ÿคฏ End Deep Thinking") - if isinstance(ai_message.content, list): - ai_content = ai_message.content[0].replace("```json", "").replace("```", "") - else: - ai_content = ai_message.content.replace("```json", "").replace("```", "") - ai_content = repair_json(ai_content) - parsed_json = json.loads(ai_content) - parsed: AgentOutput = self.AgentOutput(**parsed_json) - if parsed is None: - logger.debug(ai_message.content) - raise ValueError(f'Could not parse response.') - else: - ai_message = self.llm.invoke(input_messages) - self.message_manager._add_message_with_tokens(ai_message) - if isinstance(ai_message.content, list): - ai_content = ai_message.content[0].replace("```json", "").replace("```", "") - else: - ai_content = ai_message.content.replace("```json", "").replace("```", "") - ai_content = repair_json(ai_content) - parsed_json = json.loads(ai_content) - parsed: AgentOutput = self.AgentOutput(**parsed_json) - if parsed is None: - logger.debug(ai_message.content) - raise ValueError(f'Could not parse response.') + messages_to_process = ( + self.message_manager.merge_successive_human_messages(input_messages) + if self.use_deepseek_r1 + else input_messages + ) - # cut the number of actions to max_actions_per_step + ai_message = self.llm.invoke(messages_to_process) + self.message_manager._add_message_with_tokens(ai_message) + + if self.use_deepseek_r1: + logger.info("๐Ÿคฏ Start Deep Thinking: ") + logger.info(ai_message.reasoning_content) + logger.info("๐Ÿคฏ End Deep Thinking") + + if isinstance(ai_message.content, list): + ai_content = ai_message.content[0] + else: + ai_content = ai_message.content + + ai_content = ai_content.replace("```json", "").replace("```", "") + ai_content = repair_json(ai_content) + parsed_json = json.loads(ai_content) + parsed: AgentOutput = self.AgentOutput(**parsed_json) + + if parsed is None: + logger.debug(ai_message.content) + raise ValueError('Could not parse response.') + + # Limit actions to maximum allowed per step parsed.action = parsed.action[: self.max_actions_per_step] self._log_response(parsed) self.n_steps += 1 - + return parsed @time_execution_async("--step") From 82844a418245f5f0e686d445841a2748ba02d052 Mon Sep 17 00:00:00 2001 From: marginal23326 <58261815+marginal23326@users.noreply.github.com> Date: Thu, 30 Jan 2025 02:36:47 +0600 Subject: [PATCH 21/29] feat(ui): display missing API key errors in UI This PR introduces proper error handling in the UI for missing API keys, addressing issue #188. Previously, missing API keys resulted in tracebacks in the console, but no clear error was shown in the UI. This made it difficult to understand what went wrong. Now, API key checks are performed at the start of the `get_llm_model` function in `src/utils/utils.py`. I've also added a `PROVIDER_DISPLAY_NAMES` constant for more user-friendly error messages and a `handle_api_key_error` function that leverages `gr.Error` to display clear error messages directly in the UI. If an API key is missing, you'll now see an error message right away. The `run_browser_agent` and `run_with_stream` functions in `webui.py` have been adjusted to ensure these `gr.Error` exceptions are handled properly. --- src/utils/utils.py | 50 ++++++++++++++++++++++++---------------------- webui.py | 9 +++++++++ 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/utils/utils.py b/src/utils/utils.py index c4218cd..e627014 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -12,6 +12,14 @@ import gradio as gr from .llm import DeepSeekR1ChatOpenAI, DeepSeekR1ChatOllama +PROVIDER_DISPLAY_NAMES = { + "openai": "OpenAI", + "azure_openai": "Azure OpenAI", + "anthropic": "Anthropic", + "deepseek": "DeepSeek", + "gemini": "Gemini" +} + def get_llm_model(provider: str, **kwargs): """ ่Žทๅ–LLM ๆจกๅž‹ @@ -19,17 +27,19 @@ def get_llm_model(provider: str, **kwargs): :param kwargs: :return: """ + if provider not in ["ollama"]: + env_var = "GOOGLE_API_KEY" if provider == "gemini" else f"{provider.upper()}_API_KEY" + api_key = kwargs.get("api_key", "") or os.getenv(env_var, "") + if not api_key: + handle_api_key_error(provider, env_var) + kwargs["api_key"] = api_key + if provider == "anthropic": if not kwargs.get("base_url", ""): base_url = "https://api.anthropic.com" else: base_url = kwargs.get("base_url") - if not kwargs.get("api_key", ""): - api_key = os.getenv("ANTHROPIC_API_KEY", "") - else: - api_key = kwargs.get("api_key") - return ChatAnthropic( model_name=kwargs.get("model_name", "claude-3-5-sonnet-20240620"), temperature=kwargs.get("temperature", 0.0), @@ -42,11 +52,6 @@ def get_llm_model(provider: str, **kwargs): else: base_url = kwargs.get("base_url") - if not kwargs.get("api_key", ""): - api_key = os.getenv("OPENAI_API_KEY", "") - else: - api_key = kwargs.get("api_key") - return ChatOpenAI( model=kwargs.get("model_name", "gpt-4o"), temperature=kwargs.get("temperature", 0.0), @@ -59,11 +64,6 @@ def get_llm_model(provider: str, **kwargs): else: base_url = kwargs.get("base_url") - if not kwargs.get("api_key", ""): - api_key = os.getenv("DEEPSEEK_API_KEY", "") - else: - api_key = kwargs.get("api_key") - if kwargs.get("model_name", "deepseek-chat") == "deepseek-reasoner": return DeepSeekR1ChatOpenAI( model=kwargs.get("model_name", "deepseek-reasoner"), @@ -79,10 +79,6 @@ def get_llm_model(provider: str, **kwargs): api_key=api_key, ) elif provider == "gemini": - if not kwargs.get("api_key", ""): - api_key = os.getenv("GOOGLE_API_KEY", "") - else: - api_key = kwargs.get("api_key") return ChatGoogleGenerativeAI( model=kwargs.get("model_name", "gemini-2.0-flash-exp"), temperature=kwargs.get("temperature", 0.0), @@ -114,10 +110,6 @@ def get_llm_model(provider: str, **kwargs): base_url = os.getenv("AZURE_OPENAI_ENDPOINT", "") else: base_url = kwargs.get("base_url") - if not kwargs.get("api_key", ""): - api_key = os.getenv("AZURE_OPENAI_API_KEY", "") - else: - api_key = kwargs.get("api_key") return AzureChatOpenAI( model=kwargs.get("model_name", "gpt-4o"), temperature=kwargs.get("temperature", 0.0), @@ -154,7 +146,17 @@ def update_model_dropdown(llm_provider, api_key=None, base_url=None): return gr.Dropdown(choices=model_names[llm_provider], value=model_names[llm_provider][0], interactive=True) else: return gr.Dropdown(choices=[], value="", interactive=True, allow_custom_value=True) - + +def handle_api_key_error(provider: str, env_var: str): + """ + Handles the missing API key error by raising a gr.Error with a clear message. + """ + provider_display = PROVIDER_DISPLAY_NAMES.get(provider, provider.upper()) + raise gr.Error( + f"๐Ÿ’ฅ {provider_display} API key not found! ๐Ÿ”‘ Please set the " + f"`{env_var}` environment variable or provide it in the UI." + ) + def encode_image(img_path): if not img_path: return None diff --git a/webui.py b/webui.py index c6808ab..f760aab 100644 --- a/webui.py +++ b/webui.py @@ -184,6 +184,9 @@ async def run_browser_agent( gr.update(interactive=True) # Re-enable run button ) + except gr.Error: + raise + except Exception as e: import traceback traceback.print_exc() @@ -535,6 +538,12 @@ async def run_with_stream( try: result = await agent_task final_result, errors, model_actions, model_thoughts, latest_videos, trace, history_file, stop_button, run_button = result + except gr.Error: + final_result = "" + model_actions = "" + model_thoughts = "" + latest_videos = trace = history_file = None + except Exception as e: errors = f"Agent error: {str(e)}" From d0b4f4c44133e414f5368bcb9c8158c9cde63816 Mon Sep 17 00:00:00 2001 From: marginal23326 <58261815+marginal23326@users.noreply.github.com> Date: Thu, 30 Jan 2025 18:24:32 +0600 Subject: [PATCH 22/29] refactor: simplify LLM tests and remove duplication --- tests/test_llm_api.py | 224 ++++++++++++++++++------------------------ 1 file changed, 94 insertions(+), 130 deletions(-) diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 6075896..45d5775 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -1,7 +1,10 @@ import os import pdb +from dataclasses import dataclass from dotenv import load_dotenv +from langchain_core.messages import HumanMessage, SystemMessage +from langchain_ollama import ChatOllama load_dotenv() @@ -9,154 +12,115 @@ import sys sys.path.append(".") +@dataclass +class LLMConfig: + provider: str + model_name: str + temperature: float = 0.8 + base_url: str = None + api_key: str = None + +def create_message_content(text, image_path=None): + content = [{"type": "text", "text": text}] + + if image_path: + from src.utils import utils + image_data = utils.encode_image(image_path) + content.append({ + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{image_data}"} + }) + + return content + +def get_env_value(key, provider): + env_mappings = { + "openai": {"api_key": "OPENAI_API_KEY", "base_url": "OPENAI_ENDPOINT"}, + "azure_openai": {"api_key": "AZURE_OPENAI_API_KEY", "base_url": "AZURE_OPENAI_ENDPOINT"}, + "gemini": {"api_key": "GOOGLE_API_KEY"}, + "deepseek": {"api_key": "DEEPSEEK_API_KEY", "base_url": "DEEPSEEK_ENDPOINT"} + } + + if provider in env_mappings and key in env_mappings[provider]: + return os.getenv(env_mappings[provider][key], "") + return "" + +def test_llm(config, query, image_path=None, system_message=None): + from src.utils import utils + + # Special handling for Ollama-based models + if config.provider == "ollama": + if "deepseek-r1" in config.model_name: + from src.utils.llm import DeepSeekR1ChatOllama + llm = DeepSeekR1ChatOllama(model=config.model_name) + else: + llm = ChatOllama(model=config.model_name) + + ai_msg = llm.invoke(query) + print(ai_msg.content) + if "deepseek-r1" in config.model_name: + pdb.set_trace() + return + + # For other providers, use the standard configuration + llm = utils.get_llm_model( + provider=config.provider, + model_name=config.model_name, + temperature=config.temperature, + base_url=config.base_url or get_env_value("base_url", config.provider), + api_key=config.api_key or get_env_value("api_key", config.provider) + ) + + # Prepare messages for non-Ollama models + messages = [] + if system_message: + messages.append(SystemMessage(content=create_message_content(system_message))) + messages.append(HumanMessage(content=create_message_content(query, image_path))) + ai_msg = llm.invoke(messages) + + # Handle different response types + if hasattr(ai_msg, "reasoning_content"): + print(ai_msg.reasoning_content) + print(ai_msg.content) + + if config.provider == "deepseek" and "deepseek-reasoner" in config.model_name: + print(llm.model_name) + pdb.set_trace() def test_openai_model(): - from langchain_core.messages import HumanMessage - from src.utils import utils - - llm = utils.get_llm_model( - provider="openai", - model_name="gpt-4o", - temperature=0.8, - base_url=os.getenv("OPENAI_ENDPOINT", ""), - api_key=os.getenv("OPENAI_API_KEY", "") - ) - image_path = "assets/examples/test.png" - image_data = utils.encode_image(image_path) - message = HumanMessage( - content=[ - {"type": "text", "text": "describe this image"}, - { - "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}, - }, - ] - ) - ai_msg = llm.invoke([message]) - print(ai_msg.content) - + config = LLMConfig(provider="openai", model_name="gpt-4o") + test_llm(config, "Describe this image", "assets/examples/test.png") def test_gemini_model(): - # you need to enable your api key first: https://ai.google.dev/palm_docs/oauth_quickstart - from langchain_core.messages import HumanMessage - from src.utils import utils - - llm = utils.get_llm_model( - provider="gemini", - model_name="gemini-2.0-flash-exp", - temperature=0.8, - api_key=os.getenv("GOOGLE_API_KEY", "") - ) - - image_path = "assets/examples/test.png" - image_data = utils.encode_image(image_path) - message = HumanMessage( - content=[ - {"type": "text", "text": "describe this image"}, - { - "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}, - }, - ] - ) - ai_msg = llm.invoke([message]) - print(ai_msg.content) - + # Enable your API key first if you haven't: https://ai.google.dev/palm_docs/oauth_quickstart + config = LLMConfig(provider="gemini", model_name="gemini-2.0-flash-exp") + test_llm(config, "Describe this image", "assets/examples/test.png") def test_azure_openai_model(): - from langchain_core.messages import HumanMessage - from src.utils import utils - - llm = utils.get_llm_model( - provider="azure_openai", - model_name="gpt-4o", - temperature=0.8, - base_url=os.getenv("AZURE_OPENAI_ENDPOINT", ""), - api_key=os.getenv("AZURE_OPENAI_API_KEY", "") - ) - image_path = "assets/examples/test.png" - image_data = utils.encode_image(image_path) - message = HumanMessage( - content=[ - {"type": "text", "text": "describe this image"}, - { - "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}, - }, - ] - ) - ai_msg = llm.invoke([message]) - print(ai_msg.content) - + config = LLMConfig(provider="azure_openai", model_name="gpt-4o") + test_llm(config, "Describe this image", "assets/examples/test.png") def test_deepseek_model(): - from langchain_core.messages import HumanMessage - from src.utils import utils - - llm = utils.get_llm_model( - provider="deepseek", - model_name="deepseek-chat", - temperature=0.8, - base_url=os.getenv("DEEPSEEK_ENDPOINT", ""), - api_key=os.getenv("DEEPSEEK_API_KEY", "") - ) - message = HumanMessage( - content=[ - {"type": "text", "text": "who are you?"} - ] - ) - ai_msg = llm.invoke([message]) - print(ai_msg.content) + config = LLMConfig(provider="deepseek", model_name="deepseek-chat") + test_llm(config, "Who are you?") def test_deepseek_r1_model(): - from langchain_core.messages import HumanMessage, SystemMessage, AIMessage - from src.utils import utils - - llm = utils.get_llm_model( - provider="deepseek", - model_name="deepseek-reasoner", - temperature=0.8, - base_url=os.getenv("DEEPSEEK_ENDPOINT", ""), - api_key=os.getenv("DEEPSEEK_API_KEY", "") - ) - messages = [] - sys_message = SystemMessage( - content=[{"type": "text", "text": "you are a helpful AI assistant"}] - ) - messages.append(sys_message) - user_message = HumanMessage( - content=[ - {"type": "text", "text": "9.11 and 9.8, which is greater?"} - ] - ) - messages.append(user_message) - ai_msg = llm.invoke(messages) - print(ai_msg.reasoning_content) - print(ai_msg.content) - print(llm.model_name) - pdb.set_trace() + config = LLMConfig(provider="deepseek", model_name="deepseek-reasoner") + test_llm(config, "Which is greater, 9.11 or 9.8?", system_message="You are a helpful AI assistant.") def test_ollama_model(): - from langchain_ollama import ChatOllama + config = LLMConfig(provider="ollama", model_name="qwen2.5:7b") + test_llm(config, "Sing a ballad of LangChain.") - llm = ChatOllama(model="qwen2.5:7b") - ai_msg = llm.invoke("Sing a ballad of LangChain.") - print(ai_msg.content) - def test_deepseek_r1_ollama_model(): - from src.utils.llm import DeepSeekR1ChatOllama + config = LLMConfig(provider="ollama", model_name="deepseek-r1:14b") + test_llm(config, "How many 'r's are in the word 'strawberry'?") - llm = DeepSeekR1ChatOllama(model="deepseek-r1:14b") - ai_msg = llm.invoke("how many r in strawberry?") - print(ai_msg.content) - pdb.set_trace() - - -if __name__ == '__main__': +if __name__ == "__main__": # test_openai_model() # test_gemini_model() # test_azure_openai_model() test_deepseek_model() # test_ollama_model() # test_deepseek_r1_model() - # test_deepseek_r1_ollama_model() \ No newline at end of file + # test_deepseek_r1_ollama_model() From fe251a7876276f4b24c5bab56ba4a576ba365673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Abrahamsson?= Date: Fri, 31 Jan 2025 08:45:25 +0100 Subject: [PATCH 23/29] Added new test for mistral models --- tests/test_llm_api.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_llm_api.py b/tests/test_llm_api.py index 45d5775..b81bb5c 100644 --- a/tests/test_llm_api.py +++ b/tests/test_llm_api.py @@ -38,7 +38,8 @@ def get_env_value(key, provider): "openai": {"api_key": "OPENAI_API_KEY", "base_url": "OPENAI_ENDPOINT"}, "azure_openai": {"api_key": "AZURE_OPENAI_API_KEY", "base_url": "AZURE_OPENAI_ENDPOINT"}, "gemini": {"api_key": "GOOGLE_API_KEY"}, - "deepseek": {"api_key": "DEEPSEEK_API_KEY", "base_url": "DEEPSEEK_ENDPOINT"} + "deepseek": {"api_key": "DEEPSEEK_API_KEY", "base_url": "DEEPSEEK_ENDPOINT"}, + "mistral": {"api_key": "MISTRAL_API_KEY", "base_url": "MISTRAL_ENDPOINT"}, } if provider in env_mappings and key in env_mappings[provider]: @@ -116,11 +117,16 @@ def test_deepseek_r1_ollama_model(): config = LLMConfig(provider="ollama", model_name="deepseek-r1:14b") test_llm(config, "How many 'r's are in the word 'strawberry'?") +def test_mistral_model(): + config = LLMConfig(provider="mistral", model_name="pixtral-large-latest") + test_llm(config, "Describe this image", "assets/examples/test.png") + if __name__ == "__main__": # test_openai_model() # test_gemini_model() # test_azure_openai_model() - test_deepseek_model() + #test_deepseek_model() # test_ollama_model() # test_deepseek_r1_model() # test_deepseek_r1_ollama_model() + test_mistral_model() From f9bc2b4a449fd4dd623926d193ee9dd9d6542aba Mon Sep 17 00:00:00 2001 From: Ray Booysen Date: Sat, 1 Feb 2025 15:29:05 +0800 Subject: [PATCH 24/29] Fixing typo in README.md README states the default VNC password is `vncpassword` but it is actually `youvncpassword` in the env file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9055565..fd96088 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ playwright install - WebUI: `http://localhost:7788` - VNC Viewer (to see browser interactions): `http://localhost:6080/vnc.html` - Default VNC password is "vncpassword". You can change it by setting the `VNC_PASSWORD` environment variable in your `.env` file. + Default VNC password is "youvncpassword". You can change it by setting the `VNC_PASSWORD` environment variable in your `.env` file. ## Usage From c0c25451fb9777c8d82abbaf1c6a4cbec96f7b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Abrahamsson?= Date: Sat, 1 Feb 2025 12:34:12 +0100 Subject: [PATCH 25/29] Added back missing requirement --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 34e4b0f..9f3c51c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ browser-use==0.1.29 pyperclip==1.9.0 gradio==5.10.0 json-repair +langchain-mistralai==0.2.4 From 150a8b43848a0e575a74dad9d17e86887ee4fedb Mon Sep 17 00:00:00 2001 From: BioInfo <1425052+BioInfo@users.noreply.github.com> Date: Sat, 1 Feb 2025 20:37:04 -0500 Subject: [PATCH 26/29] feat: add OpenAI O3-mini model support and fix theme handling - Add O3-mini model to OpenAI model options - Remove forced dark theme to allow system/light theme options - Fix JSON template escape sequence in custom prompts --- src/agent/custom_prompts.py | 2 +- src/utils/utils.py | 2 +- webui.py | 12 +----------- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/agent/custom_prompts.py b/src/agent/custom_prompts.py index 1e1df63..5a8d069 100644 --- a/src/agent/custom_prompts.py +++ b/src/agent/custom_prompts.py @@ -14,7 +14,7 @@ class CustomSystemPrompt(SystemPrompt): """ Returns the important rules for the agent. """ - text = """ + text = r""" 1. RESPONSE FORMAT: You must ALWAYS respond with valid JSON in this exact format: { "current_state": { diff --git a/src/utils/utils.py b/src/utils/utils.py index 73e9066..806c1b2 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -140,7 +140,7 @@ def get_llm_model(provider: str, **kwargs): # Predefined model names for common providers model_names = { "anthropic": ["claude-3-5-sonnet-20240620", "claude-3-opus-20240229"], - "openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo"], + "openai": ["gpt-4o", "gpt-4", "gpt-3.5-turbo", "o3-mini"], "deepseek": ["deepseek-chat", "deepseek-reasoner"], "gemini": ["gemini-2.0-flash-exp", "gemini-2.0-flash-thinking-exp", "gemini-1.5-flash-latest", "gemini-1.5-flash-8b-latest", "gemini-2.0-flash-thinking-exp-1219" ], "ollama": ["qwen2.5:7b", "llama2:7b", "deepseek-r1:14b", "deepseek-r1:32b"], diff --git a/webui.py b/webui.py index f760aab..fa8b0b4 100644 --- a/webui.py +++ b/webui.py @@ -616,18 +616,8 @@ def create_ui(config, theme_name="Ocean"): } """ - js = """ - function refresh() { - const url = new URL(window.location); - if (url.searchParams.get('__theme') !== 'dark') { - url.searchParams.set('__theme', 'dark'); - window.location.href = url.href; - } - } - """ - with gr.Blocks( - title="Browser Use WebUI", theme=theme_map[theme_name], css=css, js=js + title="Browser Use WebUI", theme=theme_map[theme_name], css=css ) as demo: with gr.Row(): gr.Markdown( From 8d47e626ce52790fa4c7026f45b28d3d2d840c29 Mon Sep 17 00:00:00 2001 From: marginal23326 <58261815+marginal23326@users.noreply.github.com> Date: Sun, 2 Feb 2025 14:06:35 +0600 Subject: [PATCH 27/29] feat: add missing endpoints and keys --- .env.example | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.env.example b/.env.example index fe2c67c..299082d 100644 --- a/.env.example +++ b/.env.example @@ -2,6 +2,7 @@ OPENAI_ENDPOINT=https://api.openai.com/v1 OPENAI_API_KEY= ANTHROPIC_API_KEY= +ANTHROPIC_ENDPOINT=https://api.anthropic.com GOOGLE_API_KEY= @@ -11,6 +12,9 @@ AZURE_OPENAI_API_KEY= DEEPSEEK_ENDPOINT=https://api.deepseek.com DEEPSEEK_API_KEY= +MISTRAL_API_KEY= +MISTRAL_ENDPOINT=https://api.mistral.ai/v1 + OLLAMA_ENDPOINT=http://localhost:11434 # Set to false to disable anonymized telemetry From 403a4b3860dfe21f454d48168f4d6d3cf50b3b84 Mon Sep 17 00:00:00 2001 From: marginal23326 <58261815+marginal23326@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:28:48 +0600 Subject: [PATCH 28/29] docs: improve installation guide clarity/structure --- README.md | 113 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index fd96088..f226683 100644 --- a/README.md +++ b/README.md @@ -21,80 +21,117 @@ We would like to officially thank [WarmShao](https://github.com/warmshao) for hi -## Installation Options +## Installation Guide + +### Prerequisites +- Python 3.11 or higher +- Git (for cloning the repository) ### Option 1: Local Installation Read the [quickstart guide](https://docs.browser-use.com/quickstart#prepare-the-environment) or follow the steps below to get started. -> Python 3.11 or higher is required. +#### Step 1: Clone the Repository +```bash +git clone https://github.com/browser-use/web-ui.git +cd web-ui +``` -First, we recommend using [uv](https://docs.astral.sh/uv/) to setup the Python environment. +#### Step 2: Set Up Python Environment +We recommend using [uv](https://docs.astral.sh/uv/) for managing the Python environment. +Using uv (recommended): ```bash uv venv --python 3.11 ``` -and activate it with: - +Activate the virtual environment: +- Windows (Command Prompt): +```cmd +.venv\Scripts\activate +``` +- Windows (PowerShell): +```powershell +.\.venv\Scripts\Activate.ps1 +``` +- macOS/Linux: ```bash source .venv/bin/activate ``` -Install the dependencies: - +#### Step 3: Install Dependencies +Install Python packages: ```bash uv pip install -r requirements.txt ``` -Then install playwright: - +Install Playwright: ```bash playwright install ``` +#### Step 4: Configure Environment +1. Create a copy of the example environment file: +- Windows (Command Prompt): +```bash +copy .env.example .env +``` +- macOS/Linux/Windows (PowerShell): +```bash +cp .env.example .env +``` +2. Open `.env` in your preferred text editor and add your API keys and other settings + ### Option 2: Docker Installation -1. **Prerequisites:** - - Docker and Docker Compose installed on your system - - Git to clone the repository +#### Prerequisites +- Docker and Docker Compose installed + - [Docker Desktop](https://www.docker.com/products/docker-desktop/) (For Windows/macOS) + - [Docker Engine](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/) (For Linux) -2. **Setup:** - ```bash - # Clone the repository - git clone https://github.com/browser-use/web-ui.git - cd web-ui +#### Installation Steps +1. Clone the repository: +```bash +git clone https://github.com/browser-use/web-ui.git +cd web-ui +``` - # Copy and configure environment variables - cp .env.example .env - # Edit .env with your preferred text editor and add your API keys - ``` +2. Create and configure environment file: +- Windows (Command Prompt): +```bash +copy .env.example .env +``` +- macOS/Linux/Windows (PowerShell): +```bash +cp .env.example .env +``` +Edit `.env` with your preferred text editor and add your API keys -3. **Run with Docker:** - ```bash - # Build and start the container with default settings (browser closes after AI tasks) - docker compose up --build - - # Or run with persistent browser (browser stays open between AI tasks) - CHROME_PERSISTENT_SESSION=true docker compose up --build - ``` - -4. **Access the Application:** - - WebUI: `http://localhost:7788` - - VNC Viewer (to see browser interactions): `http://localhost:6080/vnc.html` - - Default VNC password is "youvncpassword". You can change it by setting the `VNC_PASSWORD` environment variable in your `.env` file. +3. Run with Docker: +```bash +# Build and start the container with default settings (browser closes after AI tasks) +docker compose up --build +``` +```bash +# Or run with persistent browser (browser stays open between AI tasks) +CHROME_PERSISTENT_SESSION=true docker compose up --build +``` +4. Access the Application: +- Web Interface: Open `http://localhost:7788` in your browser +- VNC Viewer (for watching browser interactions): Open `http://localhost:6080/vnc.html` + - Default VNC password: "youvncpassword" + - Can be changed by setting `VNC_PASSWORD` in your `.env` file ## Usage ### Local Setup -1. Copy `.env.example` to `.env` and set your environment variables, including API keys for the LLM. `cp .env.example .env` -2. **Run the WebUI:** +1. **Run the WebUI:** + After completing the installation steps above, start the application: ```bash python webui.py --ip 127.0.0.1 --port 7788 ``` -4. WebUI options: +2. WebUI options: - `--ip`: The IP address to bind the WebUI to. Default is `127.0.0.1`. - `--port`: The port to bind the WebUI to. Default is `7788`. - `--theme`: The theme for the user interface. Default is `Ocean`. From f96d83b4c9530db3582b36c0ff12e8226e6eb545 Mon Sep 17 00:00:00 2001 From: carl Date: Tue, 4 Feb 2025 20:52:21 +1100 Subject: [PATCH 29/29] fix: ollama provider not respecting OLLAMA_ENDPOINT env var --- src/utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/utils.py b/src/utils/utils.py index 806c1b2..277df24 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -106,13 +106,13 @@ def get_llm_model(provider: str, **kwargs): base_url = os.getenv("OLLAMA_ENDPOINT", "http://localhost:11434") else: base_url = kwargs.get("base_url") - + if "deepseek-r1" in kwargs.get("model_name", "qwen2.5:7b"): return DeepSeekR1ChatOllama( model=kwargs.get("model_name", "deepseek-r1:14b"), temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), - base_url=kwargs.get("base_url", base_url), + base_url=base_url, ) else: return ChatOllama( @@ -120,7 +120,7 @@ def get_llm_model(provider: str, **kwargs): temperature=kwargs.get("temperature", 0.0), num_ctx=kwargs.get("num_ctx", 32000), num_predict=kwargs.get("num_predict", 1024), - base_url=kwargs.get("base_url", base_url), + base_url=base_url, ) elif provider == "azure_openai": if not kwargs.get("base_url", ""):