@bobfrankston/msger 0.1.74 → 0.1.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/KNOWN-BUGS.md +121 -0
- package/MSGER-API-SUMMARY.md +162 -0
- package/MSGER-API.md +376 -0
- package/README.md +93 -0
- package/SESSION-2025-11-06.md +191 -0
- package/SESSION-NOTES.md +678 -0
- package/clihandler.d.ts.map +1 -1
- package/clihandler.js +62 -2
- package/clihandler.js.map +1 -1
- package/clihandler.ts +60 -2
- package/icon.png +0 -0
- package/icon1.png +0 -0
- package/msger-native/Cargo.toml +1 -0
- package/msger-native/bin/msgernative.exe +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Breadcrumbs +12 -118
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/BrowserMetrics/{BrowserMetrics-690552AF-DCD4.pma → BrowserMetrics-690B9AD3-657C.pma} +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/BrowserMetrics/{BrowserMetrics-69055373-F88C.pma → BrowserMetrics-690BA05A-501C.pma} +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Crashpad/settings.dat +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/BrowsingTopicsState +1 -1
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/data_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/{BrowserMetrics/BrowserMetrics-69055587-A65C.pma → Default/Cache/Cache_Data/data_2} +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/data_3 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000001 +383 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000002 +1091 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000003 +2153 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000004 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000005 +626 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/f_000006 +393 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Cache/Cache_Data/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/01241693cfdc32b9_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/0ba1eea781f3552c_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/323aa210eebefe2c_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/4608446ac118e77a_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/6938205dc2f77841_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/6de12299dc89e5f3_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/8f403c112eaa455b_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/9a3aceb491137f07_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/aedb266cbaf9c28f_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/ca526fdda86d0b9d_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/f5d11d783c9fdf69_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Collections/collectionsSQLite +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Collections/collectionsSQLite-journal +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DIPS +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DawnGraphiteCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DawnGraphiteCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DawnWebGPUCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DawnWebGPUCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Extension State/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Extension State/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Favicons +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/GPUCache/data_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/GPUCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/GPUCache/data_2 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/GPUCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/History +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/MediaDeviceSalts +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/MediaDeviceSalts-journal +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Network/Network Persistent State +1 -1
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Network/TransportSecurity +1 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Preferences +1 -1
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/CacheStorage/14e849fa8522d406112ea607cf7fd6342b71b987/249ee9af-c3df-4a86-89a8-2c51f3370ee0/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/CacheStorage/14e849fa8522d406112ea607cf7fd6342b71b987/249ee9af-c3df-4a86-89a8-2c51f3370ee0/index-dir/the-real-index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/CacheStorage/14e849fa8522d406112ea607cf7fd6342b71b987/index.txt +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/CURRENT +1 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/LOCK +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/LOG +3 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/LOG.old +3 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/Database/MANIFEST-000001 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/ScriptCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Session Storage/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Session Storage/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Session Storage/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Site Characteristics Database/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Site Characteristics Database/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Sync Data/LevelDB/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/WebStorage/QuotaManager +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/WebStorage/QuotaManager-journal +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/favorites_diagnostic.log +27 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/000003.log +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOG +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/shared_proto_db/metadata/LOG.old +3 -3
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/data_0 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/data_3 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/f_000003 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/f_000004 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GrShaderCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GraphiteDawnCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/GraphiteDawnCache/index +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Local State +1 -1
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/RevisitationBloomfilter +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/ShaderCache/data_1 +0 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/ShaderCache/index +0 -0
- package/msger-native/src/main.rs +343 -37
- package/msger-native/src/template.html +103 -28
- package/msger-storage-demo.html +290 -0
- package/msger.code-workspace +3 -0
- package/msgerdefs/README.md +122 -0
- package/msgerdefs/msgerdefs.d.ts +322 -0
- package/msgerdefs/msgerdefs.d.ts.map +1 -0
- package/msgerdefs/msgerdefs.js +110 -0
- package/msgerdefs/msgerdefs.js.map +1 -0
- package/msgerdefs/msgerdefs.ts +427 -0
- package/msgerdefs/package.json +38 -0
- package/msgerdefs/samples.html +431 -0
- package/msgerdefs/test1.cmd +1 -0
- package/msgerdefs/tsconfig.json +17 -0
- package/msgernative-linux-x64 +0 -0
- package/package.json +5 -1
- package/shower.d.ts +2 -0
- package/shower.d.ts.map +1 -1
- package/shower.js +17 -0
- package/shower.js.map +1 -1
- package/shower.ts +24 -0
- package/test-data-persistence.html +315 -0
- package/test-htmlfrom.html +29 -0
- package/test-ipc-reach.html +113 -0
- package/test-msger-api.html +120 -0
- package/test-msger-functions.html +325 -0
- package/msger-native/bin/msgernative.exe.WebView2/EBWebView/BrowserMetrics/BrowserMetrics-69055419-C8A0.pma +0 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
// Weather module - handles weather API integration and temperature display
|
|
2
|
+
import { addToDebugLog, addToDebugWarn, addToDebugErr, addToDebugPriority } from './logging.js';
|
|
3
|
+
import { getOpenWeatherApiKey, getIpstackApiKey, loadApiKeys } from './keys.js';
|
|
4
|
+
// Weather configuration
|
|
5
|
+
const WEATHER_UPDATE_INTERVAL = 60 * 60 * 1000; // Update every hour (in milliseconds)
|
|
6
|
+
const WEATHER_CACHE_KEY = 'wallclock-weather-cache';
|
|
7
|
+
const WEATHER_CACHE_DURATION = 60 * 60 * 1000; // Cache for 1 hour
|
|
8
|
+
const LOCATION_CACHE_KEY = 'wallclock-location-cache';
|
|
9
|
+
// Newton MA coordinates (fallback until Nov 2nd, 2025)
|
|
10
|
+
const NEWTON_MA_LAT = 42.3370;
|
|
11
|
+
const NEWTON_MA_LON = -71.2092;
|
|
12
|
+
// Weather state
|
|
13
|
+
let weatherUpdateInterval;
|
|
14
|
+
let weatherRetryTimeout = null;
|
|
15
|
+
let currentTemperature = null;
|
|
16
|
+
let currentFeelsLike = null;
|
|
17
|
+
let currentHumidity = null;
|
|
18
|
+
let currentWeatherCondition = null; // "Rain", "Snow", "Clear", etc.
|
|
19
|
+
let lastWeatherUpdate = 0;
|
|
20
|
+
let lastWeatherError = 0;
|
|
21
|
+
let weatherRetryDelay = 0;
|
|
22
|
+
// Initialize weather system
|
|
23
|
+
export async function initializeWeather() {
|
|
24
|
+
// Load API keys first
|
|
25
|
+
await loadApiKeys();
|
|
26
|
+
createWeatherDisplay();
|
|
27
|
+
loadCachedWeather();
|
|
28
|
+
updateWeather(); // Initial update
|
|
29
|
+
// Set up hourly updates
|
|
30
|
+
weatherUpdateInterval = window.setInterval(updateWeather, WEATHER_UPDATE_INTERVAL);
|
|
31
|
+
addToDebugLog('[WEATHER] Weather system initialized');
|
|
32
|
+
}
|
|
33
|
+
// Create temperature display element in upper right
|
|
34
|
+
function createWeatherDisplay() {
|
|
35
|
+
const weatherDisplay = document.createElement('div');
|
|
36
|
+
weatherDisplay.id = 'weather-display';
|
|
37
|
+
weatherDisplay.classList.add('weather-temperature');
|
|
38
|
+
weatherDisplay.textContent = '--°F'; // Placeholder
|
|
39
|
+
document.body.appendChild(weatherDisplay);
|
|
40
|
+
addToDebugLog('[WEATHER] Temperature display created');
|
|
41
|
+
}
|
|
42
|
+
// Load cached weather data if still valid
|
|
43
|
+
function loadCachedWeather() {
|
|
44
|
+
try {
|
|
45
|
+
const cached = localStorage.getItem(WEATHER_CACHE_KEY);
|
|
46
|
+
if (cached) {
|
|
47
|
+
const weatherData = JSON.parse(cached);
|
|
48
|
+
const now = Date.now();
|
|
49
|
+
// Check if cache is still valid (less than 1 hour old)
|
|
50
|
+
if (now - weatherData.timestamp < WEATHER_CACHE_DURATION) {
|
|
51
|
+
currentTemperature = weatherData.temperature;
|
|
52
|
+
currentFeelsLike = weatherData.feelsLike;
|
|
53
|
+
currentHumidity = weatherData.humidity;
|
|
54
|
+
currentWeatherCondition = weatherData.condition;
|
|
55
|
+
lastWeatherUpdate = weatherData.timestamp;
|
|
56
|
+
updateTemperatureDisplay();
|
|
57
|
+
addToDebugLog(`[WEATHER] Loaded cached temperature: ${currentTemperature}°F (feels like ${currentFeelsLike}°F, ${currentHumidity}% humidity)`);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Cache expired, remove it
|
|
62
|
+
localStorage.removeItem(WEATHER_CACHE_KEY);
|
|
63
|
+
addToDebugLog('[WEATHER] Weather cache expired, will fetch fresh data');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
addToDebugErr(`[WEATHER] Error loading cached weather: ${error.message}`);
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
// Get user's location using browser geolocation API with IP-based fallback
|
|
73
|
+
async function getUserLocation() {
|
|
74
|
+
// First try browser geolocation API with shorter timeout on Linux
|
|
75
|
+
if (navigator.geolocation) {
|
|
76
|
+
addToDebugLog('[WEATHER] Requesting geolocation permission...');
|
|
77
|
+
// Detect if we're on Linux for different timeout handling
|
|
78
|
+
const isLinux = navigator.userAgent.toLowerCase().includes('linux');
|
|
79
|
+
const geolocationTimeout = isLinux ? 5000 : 10000; // Shorter timeout on Linux
|
|
80
|
+
addToDebugLog(`[WEATHER] Using ${geolocationTimeout}ms timeout (Linux: ${isLinux})`);
|
|
81
|
+
const location = await new Promise((resolve) => {
|
|
82
|
+
const timeoutId = setTimeout(() => {
|
|
83
|
+
addToDebugPriority(`[WEATHER] Geolocation timed out after ${geolocationTimeout}ms, trying IP fallback`, '#885304ff');
|
|
84
|
+
resolve(null);
|
|
85
|
+
}, geolocationTimeout);
|
|
86
|
+
navigator.geolocation.getCurrentPosition((position) => {
|
|
87
|
+
clearTimeout(timeoutId);
|
|
88
|
+
const lat = position.coords.latitude;
|
|
89
|
+
const lon = position.coords.longitude;
|
|
90
|
+
addToDebugPriority(`[WEATHER] Location obtained from GPS: ${lat.toFixed(4)}, ${lon.toFixed(4)}`);
|
|
91
|
+
resolve({ lat, lon });
|
|
92
|
+
}, (error) => {
|
|
93
|
+
clearTimeout(timeoutId);
|
|
94
|
+
addToDebugPriority(`[WEATHER] Geolocation error: ${error.code} - ${error.message}`, '#d32f2f');
|
|
95
|
+
addToDebugPriority(`[WEATHER] Error details: PERMISSION_DENIED=${error.PERMISSION_DENIED}, POSITION_UNAVAILABLE=${error.POSITION_UNAVAILABLE}, TIMEOUT=${error.TIMEOUT}`, '#d32f2f');
|
|
96
|
+
resolve(null);
|
|
97
|
+
}, {
|
|
98
|
+
timeout: geolocationTimeout,
|
|
99
|
+
enableHighAccuracy: false, // Don't need precise GPS
|
|
100
|
+
maximumAge: 300000 // Cache location for 5 minutes
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
// If geolocation succeeded, return it
|
|
104
|
+
if (location) {
|
|
105
|
+
return location;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
addToDebugWarn('[WEATHER] Geolocation not supported, trying IP location fallback');
|
|
110
|
+
}
|
|
111
|
+
// Fallback to IP-based location (with caching to prevent quota exhaustion)
|
|
112
|
+
try {
|
|
113
|
+
addToDebugLog('[WEATHER] Attempting to get location from IP address...');
|
|
114
|
+
// Try multiple IP detection services for better reliability
|
|
115
|
+
let ipAddress = null;
|
|
116
|
+
const ipServices = [
|
|
117
|
+
'https://ipinfo.io/ip',
|
|
118
|
+
'https://api.ipify.org',
|
|
119
|
+
'https://icanhazip.com'
|
|
120
|
+
];
|
|
121
|
+
for (const service of ipServices) {
|
|
122
|
+
try {
|
|
123
|
+
addToDebugLog(`[WEATHER] Trying IP service: ${service}`);
|
|
124
|
+
const ipResponse = await fetch(service, {
|
|
125
|
+
headers: {
|
|
126
|
+
'Accept': 'text/plain,application/json,*/*'
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
if (ipResponse.ok) {
|
|
130
|
+
ipAddress = (await ipResponse.text()).trim();
|
|
131
|
+
addToDebugLog(`[WEATHER] External IP address: ${ipAddress} (from ${service})`);
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (ipError) {
|
|
136
|
+
addToDebugWarn(`[WEATHER] IP service ${service} failed: ${ipError.message}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (!ipAddress) {
|
|
140
|
+
throw new Error('All IP detection services failed');
|
|
141
|
+
}
|
|
142
|
+
// Check if we have a cached location for this IP address
|
|
143
|
+
const cachedLocation = getCachedLocation(ipAddress);
|
|
144
|
+
if (cachedLocation) {
|
|
145
|
+
addToDebugLog(`[WEATHER] Using cached location for IP ${ipAddress}: ${cachedLocation.lat.toFixed(4)}, ${cachedLocation.lon.toFixed(4)}`);
|
|
146
|
+
return { lat: cachedLocation.lat, lon: cachedLocation.lon };
|
|
147
|
+
}
|
|
148
|
+
// Check if we're before Nov 2nd, 2025 - use Newton MA as fallback
|
|
149
|
+
const now = new Date();
|
|
150
|
+
const cutoffDate = new Date('2025-11-02T00:00:00');
|
|
151
|
+
if (now < cutoffDate) {
|
|
152
|
+
addToDebugPriority(`[WEATHER] Using Newton MA fallback (until Nov 2nd): ${NEWTON_MA_LAT.toFixed(4)}, ${NEWTON_MA_LON.toFixed(4)}`, '#FF9800');
|
|
153
|
+
// Cache this location with the IP
|
|
154
|
+
cacheLocation(ipAddress, NEWTON_MA_LAT, NEWTON_MA_LON);
|
|
155
|
+
return { lat: NEWTON_MA_LAT, lon: NEWTON_MA_LON };
|
|
156
|
+
}
|
|
157
|
+
// After Nov 2nd, call IPStack to get actual location
|
|
158
|
+
const IPSTACK_API_KEY = getIpstackApiKey();
|
|
159
|
+
if (!IPSTACK_API_KEY) {
|
|
160
|
+
throw new Error('IPStack API key not configured');
|
|
161
|
+
}
|
|
162
|
+
addToDebugPriority(`[WEATHER] IP changed - calling IPStack API for: ${ipAddress}`, '#9C27B0');
|
|
163
|
+
const locationResponse = await fetch(`https://api.ipstack.com/${ipAddress}?access_key=${IPSTACK_API_KEY}`, {
|
|
164
|
+
headers: {
|
|
165
|
+
'Accept': 'application/json'
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
if (!locationResponse.ok) {
|
|
169
|
+
const errorText = await locationResponse.text();
|
|
170
|
+
throw new Error(`IPStack API error: ${locationResponse.status} ${locationResponse.statusText} - ${errorText}`);
|
|
171
|
+
}
|
|
172
|
+
const data = await locationResponse.json();
|
|
173
|
+
addToDebugLog(`[WEATHER] IPStack response: ${JSON.stringify(data)}`);
|
|
174
|
+
if (data.error) {
|
|
175
|
+
throw new Error(`IPStack API error: ${data.error.info || data.error.type}`);
|
|
176
|
+
}
|
|
177
|
+
if (data.latitude && data.longitude) {
|
|
178
|
+
const lat = parseFloat(data.latitude);
|
|
179
|
+
const lon = parseFloat(data.longitude);
|
|
180
|
+
addToDebugPriority(`[WEATHER] Location obtained from IPStack: ${lat.toFixed(4)}, ${lon.toFixed(4)} (${data.city || 'Unknown'}, ${data.region_name || data.country_name || 'Unknown'})`, '#4CAF50');
|
|
181
|
+
// Cache this location with the IP
|
|
182
|
+
cacheLocation(ipAddress, lat, lon);
|
|
183
|
+
return { lat, lon };
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
throw new Error(`IPStack returned invalid data: lat=${data.latitude}, lon=${data.longitude}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
addToDebugErr(`[WEATHER] IP location fallback failed: ${error.message}`);
|
|
191
|
+
addToDebugWarn('[WEATHER] No location available from any source, no weather data will be displayed');
|
|
192
|
+
// Log network debugging information
|
|
193
|
+
if (error.name === 'TypeError' && error.message.includes('Failed to fetch')) {
|
|
194
|
+
addToDebugErr('[WEATHER] Network fetch failed - check internet connection and CORS policy');
|
|
195
|
+
addToDebugErr('[WEATHER] On Linux/Ubuntu: may need to check system proxy settings or DNS resolution');
|
|
196
|
+
}
|
|
197
|
+
// Set retry delay to prevent rapid network error spam
|
|
198
|
+
lastWeatherError = Date.now();
|
|
199
|
+
weatherRetryDelay = 30000; // 30 seconds delay after location failure
|
|
200
|
+
addToDebugWarn('[WEATHER] Network location failure - delaying weather updates for 30 seconds');
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Get cached location for a specific IP address
|
|
205
|
+
function getCachedLocation(ipAddress) {
|
|
206
|
+
try {
|
|
207
|
+
const cached = localStorage.getItem(LOCATION_CACHE_KEY);
|
|
208
|
+
if (cached) {
|
|
209
|
+
const locationCache = JSON.parse(cached);
|
|
210
|
+
// Check if the IP matches
|
|
211
|
+
if (locationCache.ipAddress === ipAddress) {
|
|
212
|
+
addToDebugLog(`[WEATHER] Found cached location for IP ${ipAddress}`);
|
|
213
|
+
return { lat: locationCache.lat, lon: locationCache.lon };
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
addToDebugPriority(`[WEATHER] IP changed from ${locationCache.ipAddress} to ${ipAddress}`, '#2196F3');
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
addToDebugErr(`[WEATHER] Error loading cached location: ${error.message}`);
|
|
223
|
+
}
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
// Cache location with IP address
|
|
227
|
+
function cacheLocation(ipAddress, lat, lon) {
|
|
228
|
+
try {
|
|
229
|
+
const locationCache = {
|
|
230
|
+
ipAddress: ipAddress,
|
|
231
|
+
lat: lat,
|
|
232
|
+
lon: lon,
|
|
233
|
+
timestamp: Date.now()
|
|
234
|
+
};
|
|
235
|
+
localStorage.setItem(LOCATION_CACHE_KEY, JSON.stringify(locationCache));
|
|
236
|
+
addToDebugLog(`[WEATHER] Cached location for IP ${ipAddress}: ${lat.toFixed(4)}, ${lon.toFixed(4)}`);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
addToDebugErr(`[WEATHER] Error caching location: ${error.message}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// Cache weather data
|
|
243
|
+
function cacheWeatherData(temperature, feelsLike, humidity, condition, description) {
|
|
244
|
+
try {
|
|
245
|
+
const weatherData = {
|
|
246
|
+
temperature: temperature,
|
|
247
|
+
feelsLike: feelsLike,
|
|
248
|
+
humidity: humidity,
|
|
249
|
+
condition: condition,
|
|
250
|
+
description: description,
|
|
251
|
+
timestamp: Date.now()
|
|
252
|
+
};
|
|
253
|
+
localStorage.setItem(WEATHER_CACHE_KEY, JSON.stringify(weatherData));
|
|
254
|
+
addToDebugLog('[WEATHER] Weather data cached');
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
addToDebugErr(`[WEATHER] Error caching weather data: ${error.message}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Update weather data from API
|
|
261
|
+
async function updateWeather() {
|
|
262
|
+
const now = Date.now();
|
|
263
|
+
// Check if we're in a retry delay period
|
|
264
|
+
if (weatherRetryDelay > 0 && (now - lastWeatherError) < weatherRetryDelay) {
|
|
265
|
+
const remainingDelay = Math.ceil((weatherRetryDelay - (now - lastWeatherError)) / 1000);
|
|
266
|
+
addToDebugLog(`[WEATHER] Skipping update - retry delay active (${remainingDelay}s remaining)`);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const WEATHER_API_KEY = getOpenWeatherApiKey();
|
|
270
|
+
// Skip if no API key configured (fallback to mock data)
|
|
271
|
+
if (!WEATHER_API_KEY || WEATHER_API_KEY.length < 10) {
|
|
272
|
+
addToDebugWarn('[WEATHER] No valid API key configured, using mock temperature');
|
|
273
|
+
// Use mock temperature for development
|
|
274
|
+
currentTemperature = Math.round(65 + Math.random() * 30); // Random temp between 65-95°F
|
|
275
|
+
updateTemperatureDisplay();
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
addToDebugLog('[WEATHER] Fetching weather data...');
|
|
280
|
+
// Get user's location
|
|
281
|
+
const location = await getUserLocation();
|
|
282
|
+
if (!location) {
|
|
283
|
+
addToDebugLog('[WEATHER] No location available, skipping weather update');
|
|
284
|
+
currentTemperature = null;
|
|
285
|
+
updateTemperatureDisplay();
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const lat = location.lat;
|
|
289
|
+
const lon = location.lon;
|
|
290
|
+
// Fetch weather data from OpenWeatherMap API
|
|
291
|
+
const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=${WEATHER_API_KEY}&units=imperial`);
|
|
292
|
+
if (!response.ok) {
|
|
293
|
+
throw new Error(`Weather API error: ${response.status} ${response.statusText}`);
|
|
294
|
+
}
|
|
295
|
+
const data = await response.json();
|
|
296
|
+
// Extract weather data (temperature in Fahrenheit due to units=imperial)
|
|
297
|
+
currentTemperature = Math.round(data.main.temp);
|
|
298
|
+
currentFeelsLike = Math.round(data.main.feels_like);
|
|
299
|
+
currentHumidity = data.main.humidity; // Percentage
|
|
300
|
+
currentWeatherCondition = data.weather[0].main; // "Rain", "Snow", "Clear", "Clouds", etc.
|
|
301
|
+
const description = data.weather[0].description;
|
|
302
|
+
// Update display
|
|
303
|
+
updateTemperatureDisplay();
|
|
304
|
+
// Cache the data
|
|
305
|
+
cacheWeatherData(currentTemperature, currentFeelsLike, currentHumidity, currentWeatherCondition, description);
|
|
306
|
+
lastWeatherUpdate = Date.now();
|
|
307
|
+
weatherRetryDelay = 0; // Clear any retry delay on success
|
|
308
|
+
if (weatherRetryTimeout) {
|
|
309
|
+
clearTimeout(weatherRetryTimeout);
|
|
310
|
+
weatherRetryTimeout = null;
|
|
311
|
+
}
|
|
312
|
+
addToDebugLog(`[WEATHER] Updated: ${currentTemperature}°F (feels ${currentFeelsLike}°F, ${currentHumidity}% humidity, ${currentWeatherCondition})`);
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
addToDebugErr(`[WEATHER] Error fetching weather: ${error.message}`);
|
|
316
|
+
// Set retry delay based on error type
|
|
317
|
+
lastWeatherError = Date.now();
|
|
318
|
+
const retryDelayMs = 60000; // Always retry after 1 minute on failure
|
|
319
|
+
addToDebugWarn(`[WEATHER] Weather fetch failed - will retry in 1 minute`);
|
|
320
|
+
// Schedule retry after 1 minute
|
|
321
|
+
if (weatherRetryTimeout) {
|
|
322
|
+
clearTimeout(weatherRetryTimeout);
|
|
323
|
+
}
|
|
324
|
+
weatherRetryTimeout = window.setTimeout(() => {
|
|
325
|
+
addToDebugLog('[WEATHER] Retrying weather update after failure...');
|
|
326
|
+
updateWeather();
|
|
327
|
+
}, retryDelayMs);
|
|
328
|
+
// On error, show cached data or placeholder
|
|
329
|
+
if (currentTemperature === null) {
|
|
330
|
+
currentTemperature = null; // Keep null to show placeholder
|
|
331
|
+
currentFeelsLike = null;
|
|
332
|
+
currentHumidity = null;
|
|
333
|
+
currentWeatherCondition = null;
|
|
334
|
+
updateTemperatureDisplay();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Update temperature display element
|
|
339
|
+
function updateTemperatureDisplay() {
|
|
340
|
+
const weatherDisplay = document.getElementById('weather-display');
|
|
341
|
+
if (weatherDisplay) {
|
|
342
|
+
if (currentTemperature !== null) {
|
|
343
|
+
// Create display with main temp, feels like, humidity, and condition
|
|
344
|
+
const mainTemp = `${currentTemperature}°F`;
|
|
345
|
+
const feelsLikeText = currentFeelsLike !== null ? `${currentFeelsLike}°` : '';
|
|
346
|
+
const humidityText = currentHumidity !== null ? `${currentHumidity}%` : '';
|
|
347
|
+
// Show rain/snow condition if applicable
|
|
348
|
+
const conditionText = (currentWeatherCondition === 'Rain' || currentWeatherCondition === 'Drizzle') ? 'Rain' :
|
|
349
|
+
(currentWeatherCondition === 'Snow') ? 'Snow' : '';
|
|
350
|
+
weatherDisplay.innerHTML = `
|
|
351
|
+
<div class="weather-main">${mainTemp}</div>
|
|
352
|
+
${feelsLikeText ? `<div class="weather-feels-like">${feelsLikeText}</div>` : ''}
|
|
353
|
+
${humidityText ? `<div class="weather-humidity">${humidityText}</div>` : ''}
|
|
354
|
+
${conditionText ? `<div class="weather-condition">${conditionText}</div>` : ''}
|
|
355
|
+
`;
|
|
356
|
+
weatherDisplay.classList.remove('weather-error');
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
weatherDisplay.innerHTML = '<div class="weather-main">--°F</div>';
|
|
360
|
+
weatherDisplay.classList.add('weather-error');
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Get current temperature (for voice responses)
|
|
365
|
+
export function getCurrentTemperature() {
|
|
366
|
+
if (currentTemperature !== null) {
|
|
367
|
+
return `${currentTemperature} degrees Fahrenheit`;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
return 'Location not available, cannot get weather data';
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Force weather update (for voice commands)
|
|
374
|
+
export function forceWeatherUpdate() {
|
|
375
|
+
addToDebugLog('[WEATHER] Force updating weather data...');
|
|
376
|
+
updateWeather();
|
|
377
|
+
}
|
|
378
|
+
// Clean up weather system
|
|
379
|
+
export function cleanupWeather() {
|
|
380
|
+
if (weatherUpdateInterval) {
|
|
381
|
+
clearInterval(weatherUpdateInterval);
|
|
382
|
+
weatherUpdateInterval = null;
|
|
383
|
+
}
|
|
384
|
+
addToDebugLog('[WEATHER] Weather system cleaned up');
|
|
385
|
+
}
|
|
386
|
+
// Export weather state getters
|
|
387
|
+
export function getLastWeatherUpdate() {
|
|
388
|
+
return lastWeatherUpdate;
|
|
389
|
+
}
|
|
390
|
+
export function hasValidWeatherData() {
|
|
391
|
+
return currentTemperature !== null;
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=weather.js.map
|
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/01241693cfdc32b9_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/0ba1eea781f3552c_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/323aa210eebefe2c_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/4608446ac118e77a_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/6938205dc2f77841_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/6de12299dc89e5f3_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/8f403c112eaa455b_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/9a3aceb491137f07_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/aedb266cbaf9c28f_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/ca526fdda86d0b9d_0
ADDED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Code Cache/js/f5d11d783c9fdf69_0
ADDED
|
Binary file
|
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Collections/collectionsSQLite
ADDED
|
Binary file
|
|
File without changes
|
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/DawnGraphiteCache/data_1
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
2025/11/
|
|
2
|
-
2025/11/
|
|
3
|
-
2025/11/
|
|
1
|
+
2025/11/05-14:07:07.350 74d0 Reusing MANIFEST y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Extension State/MANIFEST-000001
|
|
2
|
+
2025/11/05-14:07:07.350 74d0 Recovering log #3
|
|
3
|
+
2025/11/05-14:07:07.351 74d0 Reusing old log y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Extension State/000003.log
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
2025/11/
|
|
2
|
-
2025/11/
|
|
3
|
-
2025/11/
|
|
1
|
+
2025/11/05-13:43:32.121 6e08 Reusing MANIFEST y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Extension State/MANIFEST-000001
|
|
2
|
+
2025/11/05-13:43:32.122 6e08 Recovering log #3
|
|
3
|
+
2025/11/05-13:43:32.122 6e08 Reusing old log y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Extension State/000003.log
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/000003.log
CHANGED
|
Binary file
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
2025/11/
|
|
2
|
-
2025/11/
|
|
3
|
-
2025/11/
|
|
1
|
+
2025/11/05-14:07:07.079 bbfc Reusing MANIFEST y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
|
2
|
+
2025/11/05-14:07:07.112 bbfc Recovering log #3
|
|
3
|
+
2025/11/05-14:07:07.124 bbfc Reusing old log y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Local Storage/leveldb/LOG.old
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
2025/11/
|
|
2
|
-
2025/11/
|
|
3
|
-
2025/11/
|
|
1
|
+
2025/11/05-13:43:32.041 c6e8 Reusing MANIFEST y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
|
2
|
+
2025/11/05-13:43:32.071 c6e8 Recovering log #3
|
|
3
|
+
2025/11/05-13:43:32.081 c6e8 Reusing old log y:\dev\utils\msger\msger-native\bin\msgernative.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
|
Binary file
|
|
File without changes
|
package/msger-native/bin/msgernative.exe.WebView2/EBWebView/Default/Network/Network Persistent State
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"net":{"http_server_properties":{"servers":[],"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G"}}}
|
|
1
|
+
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13406873937100798","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA4AAABodHRwczovL2Fhei5sdAAA",false,0],"server":"https://cdn.jsdelivr.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13409379548284914","port":443,"protocol_str":"quic"}],"anonymization":["FAAAAA4AAABodHRwczovL2Fhei5sdAAA",false,0],"server":"https://ipinfo.io","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://eastus-edge.tts.speech.microsoft.com","supports_spdy":true}],"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G"}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"sts":[{"expiry":1793850090.833311,"host":"DYiU5qcwZCf/JAH1tpyXFebkF3eDGAWNtHRiv/XGKK4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1762314090.83332},{"expiry":1764905948.286127,"host":"iJIPK9TXZkQbXwvyR8eB+9rfOfMaA0bSymddd61JR+k=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1762313948.286134},{"expiry":1793849937.104667,"host":"qaDeFdT1UTirY0OQe+c5LKw+zjx6vF/+3vFh7CgrAOY=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1762313937.104675}],"version":2}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"aadc_info":{"age_group":0},"accessibility":{"captions":{"headless_caption_enabled":false}},"account_tracker_service_last_update":"13406423851925676","alternate_error_pages":{"backup":true},"autocomplete":{"retention_policy_last_version":141},"autofill":{"edge_autofill_purge_low_quality_profiles_by_timeline":false,"last_version_deduped":141},"bookmark":{"storage_computation_last_update":"13406423851924148"},"browser":{"available_dark_theme_options":"All","recent_theme_color_list":[4293914607.0,4293914607.0,4293914607.0,4293914607.0,4293914607.0],"user_level_features_context":{}},"browser_content_container_height":400,"browser_content_container_width":600,"browser_content_container_x":0,"browser_content_container_y":0,"commerce_daily_metrics_last_update_time":"13406423851926157","countryid_at_install":21843,"credentials_enable_service":false,"devtools":{"preferences":{"EdgeDevToolsLayoutInfo":{"current_dock_state":0,"horizontal_size":300,"showEmulationMode":false,"vertical_size":555}}},"domain_diversity":{"last_reporting_timestamp":"13406443249852147"},"edge":{"bookmarks":{"last_dup_info_record_time":"13406424523767682"},"msa_sso_info":{"allow_for_non_msa_profile":true},"profile_sso_info":{"is_msa_first_profile":true,"msa_sso_algo_state":1},"services":{"signin_scoped_device_id":"2857beaa-33f3-4648-a971-936781a4c1fd"}},"edge_journeys":{"latest_journeys_count":0},"edge_rewards":{"cache_data":"CAA=","coachmark_promotions":{},"hva_promotions":[],"hva_webui_action_status_dict":{},"refresh_status_muted_until":"13406941871555797"},"edge_ux_config":{"assignmentcontext":"","dataversion":"0","experimentvariables":{},"flights":{}},"edge_vpn":{"available":true},"edge_wallet":{"passwords":{"password_lost_report_date":"13406427032261253"}},"enterprise_profile_guid":"9c0bf8a9-6a1d-47a2-bc3d-1044eeceac6a","extension":{"installed_extension_count":2},"extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"141.0.3537.99","pdf_upsell_triggered":false,"pinned_extension_migration":true,"pinned_extensions":[],"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":{"account_extension_type":0,"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"disable_reasons":[],"events":[],"first_install_time":"13405633918991803","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13405633918991803","location":5,"manifest":{"content_capabilities":{"include_globs":["https://*excel.officeapps.live.com/*","https://*onenote.officeapps.live.com/*","https://*powerpoint.officeapps.live.com/*","https://*word-edit.officeapps.live.com/*","https://*excel.officeapps.live.com.mcas.ms/*","https://*onenote.officeapps.live.com.mcas.ms/*","https://*word-edit.officeapps.live.com.mcas.ms/*","https://*excel.partner.officewebapps.cn/*","https://*onenote.partner.officewebapps.cn/*","https://*powerpoint.partner.officewebapps.cn/*","https://*word-edit.partner.officewebapps.cn/*","https://*excel.gov.online.office365.us/*","https://*onenote.gov.online.office365.us/*","https://*powerpoint.gov.online.office365.us/*","https://*word-edit.gov.online.office365.us/*","https://*excel.dod.online.office365.us/*","https://*onenote.dod.online.office365.us/*","https://*powerpoint.dod.online.office365.us/*","https://*word-edit.dod.online.office365.us/*","https://*visio.partner.officewebapps.cn/*","https://*visio.gov.online.office365.us/*","https://*visio.dod.online.office365.us/*"],"matches":["https://*.officeapps.live.com/*","https://*.officeapps.live.com.mcas.ms/*","https://*.partner.officewebapps.cn/*","https://*.gov.online.office365.us/*","https://*.dod.online.office365.us/*","https://*.app.whiteboard.microsoft.com/*","https://*.whiteboard.office.com/*","https://*.app.int.whiteboard.microsoft.com/*","https://*.whiteboard.office365.us/*","https://*.dev.whiteboard.microsoft.com/*"],"permissions":["clipboardRead","clipboardWrite"]},"default_locale":"en","description":"This extension grants Microsoft web sites permission to read and write from the clipboard.","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCz4t/X7GeuP6GBpjmxndrjtzF//4CWeHlC68rkoV7hP3h5Ka6eX7ZMNlYJkSjmB5iRmPHO5kR1y7rGY8JXnRPDQh/CQNLVA7OsKeV6w+UO+vx8KGI+TrTAhzH8YGcMIsxsUjxtC4cBmprja+xDr0zVp2EMgqHu+GBKgwSRHTkDuwIDAQAB","manifest_version":2,"minimum_chrome_version":"77","name":"Microsoft Clipboard Extension","version":"1.0"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\141.0.3537.92\\resources\\edge_clipboard","preferences":{},"regular_only_preferences":{},"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","fileSystem.readFullPath","errorReporting","edgeLearningToolsPrivate","fileSystem.getCurrentEntry","edgePdfPrivate","edgeCertVerifierPrivate"],"explicit_host":["edge://resources/*","edge://webui-test/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"disable_reasons":[],"events":[],"first_install_time":"13405633918990755","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13405633918990755","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:; trusted-types edge-internal fast-html pdf-url edge-pdf-static-policy;","description":"","incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN6hM0rsDYGbzQPQfOygqlRtQgKUXMfnSjhIBL7LnReAVBEd7ZmKtyN2qmSasMl4HZpMhVe2rPWVVwBDl6iyNE/Kok6E6v6V3vCLGsOpQAuuNVye/3QxzIldzG/jQAdWZiyXReRVapOhZtLjGfywCvlWq7Sl/e3sbc0vWybSDI2QIDAQAB","manifest_version":2,"mime_types":["application/pdf"],"mime_types_handler":"edge_pdf/index.html","name":"Microsoft Edge PDF Viewer","offline_enabled":true,"permissions":["errorReporting","chrome://resources/","chrome://webui-test/","contentSettings","metricsPrivate","edgeCertVerifierPrivate","edgeLearningToolsPrivate","edgePdfPrivate","pdfViewerPrivate","resourcesPrivate","tabs",{"fileSystem":["write","readFullPath","getCurrentEntry"]}],"version":"1"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\141.0.3537.92\\resources\\edge_pdf","preferences":{},"regular_only_preferences":{},"was_installed_by_default":false,"was_installed_by_oem":false}}},"fsd":{"retention_policy_last_version":141},"gaia_cookie":{"periodic_report_time_2":"13406423851803395"},"intl":{"selected_languages":"en-US,en"},"media":{"engagement":{"schema_version":5}},"muid":{"last_sync":"13406423851924976","values_seen":[]},"optimization_guide":{"hintsfetcher":{"hosts_successfully_fetched":{}},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"GLIC_ACTION_PAGE_BLOCK":true,"HISTORY_CLUSTERS":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PAGE_ENTITIES":true,"PRICE_INSIGHTS":true,"PRICE_TRACKING":true,"SALIENT_IMAGE":true,"SHOPPING_DISCOUNTS":true,"SHOPPING_PAGE_TYPES":true,"V8_COMPILE_HINTS":true}},"password_manager":{"account_store_backup_password_cleaning_last_timestamp":"13406349535826337","account_store_migrated_to_os_crypt_async":true,"profile_store_backup_password_cleaning_last_timestamp":"13406349535827351","profile_store_migrated_to_os_crypt_async":true},"personalization_data_consent":{"personalization_in_context_consent_can_prompt":true,"personalization_in_context_count":0},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":20,"content_settings":{"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"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":{},"clear_browsing_data_cookies_exceptions":{},"client_hints":{},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"edge_ad_targeting":{},"edge_ad_targeting_data":{},"edge_browser_action":{},"edge_sdsm":{},"edge_split_screen":{},"edge_tech_scam_detection":{},"edge_u2f_api_request":{},"edge_user_agent_token":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{},"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":{},"geolocation_with_options":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network_access":{},"media_engagement":{},"media_stream_camera":{},"media_stream_mic":{},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"protected_media_identifier":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"secure_network":{},"secure_network_sites":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{},"sleeping_tabs":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"trackers":{},"trackers_data":{},"tracking_org_exceptions":{},"tracking_org_relationships":{},"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":"141.0.3537.92","creation_time":"13405633918888904","edge_password_is_using_new_login_db_path":false,"edge_password_login_db_path_flip_flop_count":0,"edge_profile_id":"527b2764-117b-4077-ae65-077c5c11a460","exit_type":"Normal","has_seen_signin_fre":false,"is_relative_to_aad":true,"last_time_obsolete_http_credentials_removed":1761875935.826714,"last_time_password_store_metrics_reported":1761953432.260137,"managed_user_id":"","name":"Profile 1","network_pbs":{},"observed_session_time":{"feedback_rating_in_product_help_observed_session_time_key_141.0.3537.92":6.0,"feedback_rating_in_product_help_observed_session_time_key_141.0.3537.99":446.0},"password_hash_data_list":[],"signin_fre_seen_time":"13405633918946336","were_old_google_logins_removed":true},"protection":{"macs":{"browser":{"show_home_button":"2A6F649F6787376B184B5DF9CDB9C06C82BD06AA2307E47BE768051C1B4A0627"},"default_search_provider_data":{"template_url_data":"B21CB6840E240F1C8A5863FF816893BF5C6C54A379B5AA5A697436F5319BA5CB"},"edge":{"services":{"account_id":"2FF6115A736DF35839A007CF992BE676B2090D9F05FFDB583E7A43FA1AF20A87","last_username":"091FC5425CC825A57E05E2071F698D486DAF76254EFDCB1E3B15F290EDC0F321"}},"enterprise_signin":{"policy_recovery_token":"ED3353D8829461E78C867774EBE939621F7B6D0967D174719A6CAA60E76B7467"},"extensions":{"install":{"initiallist":"FB1B46AAE8F6E94CA75262B4427520E2EFE78B05B6657898790C70B7197307A6"},"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":"9006F519031806C79617EBDF0B58C033F915B887068C2D0DB6EEA0FABF4FC52A","mhjfbmdgcfjbbpaeojofohoefgiehjai":"0882722781AC8B1446BE076FE06B986D5F1BBCE045C4104166F769F82D64CEB5"},"ui":{"developer_mode":"CD3F9EB12B3FAE383E76201F354508F7C4ADE21AE1A98F0BE432393C71E827EB"}},"google":{"services":{"last_signed_in_username":"1B01014EDBE0CC47CE3D24741D0309DA4ECF0DC81F5E43D4B21689E8927429C8"}},"homepage":"D11C12528151C024D640374ADF2605B2F63A51091AF26B3832973FAC76BE68F8","homepage_is_newtabpage":"C66A8A1D90BC573CFDAC54BB65F041F49E2C52F94318CF1CC234A5A677B80964","media":{"cdm":{"origin_data":"7AA02AC5C4BF3C38636B8772873A7E73DB32E8870E2306DE06F1EA24F7D57D67"},"storage_id_salt":"C907A55B4508B6A2A456FE6D29DD09A03190F94CCBFFC83960000BA01099250D"},"pinned_tabs":"C6D8FE523947107D4D304A2BB0CD69EE885A7DC535D34A2D744175037D0AEF11","prefs":{"preference_reset_time":"907D3B7B9E0A0F02D767043F1BC2BCC3CEC725FE2504C1F0E1B2729E6E511E3B"},"safebrowsing":{"incidents_sent":"3805F282BCCE90B17D9896C4047105EE47D3C28772466B95758A74CA4903ABDC"},"schedule_to_flush_to_disk":"1DED5E8F110DB75248E951DF924FFED034D7A2AD03A807D7BA7CCD668D7F85EB","search_provider_overrides":"CFA5DEDB8E664E6382F0939AD3A2117FD6C20056432756646850FA6F99726D9C","session":{"restore_on_startup":"920BF7C9B2069853D511763697DE0452040BDF509ABC5CB5D49B5BD4B4F88594","startup_urls":"507D8D0F536510D01AE775E88008AC8AF27775F57F094ED5D1308E7BE1DE5700"}}},"reset_prepopulated_engines":false,"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"sessions":{"event_log":[{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406442934950729","type":2,"window_count":0},{"crashed":false,"time":"13406443031435588","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443040573374","type":2,"window_count":0},{"crashed":false,"time":"13406443089214585","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443102887407","type":2,"window_count":0},{"crashed":false,"time":"13406443167547274","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443176658131","type":2,"window_count":0},{"crashed":false,"time":"13406443249694202","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443258727430","type":2,"window_count":0},{"crashed":false,"time":"13406443278941961","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443287349454","type":2,"window_count":0},{"crashed":false,"time":"13406443297612109","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443301077328","type":2,"window_count":0},{"crashed":false,"time":"13406443340369897","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443350648146","type":2,"window_count":0},{"crashed":false,"time":"13406443389376115","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443398031254","type":2,"window_count":0},{"crashed":false,"time":"13406443411756828","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406443425747121","type":2,"window_count":0}],"session_data_status":3},"signin":{"allowed":true,"cookie_clear_on_exit_migration_notice_complete":true},"spellcheck":{"dictionaries":["en-US"]},"syncing_theme_prefs_migrated_to_non_syncing":true,"total_passwords_available_for_account":0,"total_passwords_available_for_profile":0,"translate_site_blacklist":[],"translate_site_blocklist_with_time":{},"user_experience_metrics":{"personalization_data_consent_enabled_last_known_value":false}}
|
|
1
|
+
{"aadc_info":{"age_group":0},"accessibility":{"captions":{"headless_caption_enabled":false}},"account_tracker_service_last_update":"13406784944506831","alternate_error_pages":{"backup":true},"autocomplete":{"retention_policy_last_version":141},"autofill":{"edge_autofill_purge_low_quality_profiles_by_timeline":false,"last_version_deduped":141},"bookmark":{"storage_computation_last_update":"13406784944506385"},"browser":{"available_dark_theme_options":"All","recent_theme_color_list":[4293914607.0,4293914607.0,4293914607.0,4293914607.0,4293914607.0],"user_level_features_context":{}},"browser_content_container_height":1728,"browser_content_container_width":3072,"browser_content_container_x":0,"browser_content_container_y":0,"collections":{"prism_collections":{"policy":{"cached":0}}},"commerce_daily_metrics_last_update_time":"13406784944507759","countryid_at_install":21843,"credentials_enable_service":false,"devtools":{"preferences":{"EdgeDevToolsLayoutInfo":{"current_dock_state":0,"horizontal_size":300,"showEmulationMode":false,"vertical_size":555}}},"domain_diversity":{"last_reporting_timestamp":"13406793392031553"},"edge":{"bookmarks":{"last_dup_info_record_time":"13406787545670740"},"msa_sso_info":{"allow_for_non_msa_profile":true},"profile_sso_info":{"is_msa_first_profile":true,"msa_sso_algo_state":1},"services":{"signin_scoped_device_id":"5209b07a-59dc-406c-8abf-63bf54595eca"}},"edge_journeys":{"latest_journeys_count":0},"edge_rewards":{"cache_data":"CAA=","coachmark_promotions":{},"hva_promotions":[],"hva_webui_action_status_dict":{},"refresh_status_muted_until":"13406941871555797"},"edge_ux_config":{"assignmentcontext":"","dataversion":"0","experimentvariables":{},"flights":{}},"edge_vpn":{"available":true},"edge_wallet":{"passwords":{"password_lost_report_date":"13406787565519473"}},"enterprise_profile_guid":"9c0bf8a9-6a1d-47a2-bc3d-1044eeceac6a","extension":{"installed_extension_count":2},"extensions":{"alerts":{"initialized":true},"chrome_url_overrides":{},"last_chrome_version":"141.0.3537.99","pdf_upsell_triggered":false,"pinned_extension_migration":true,"pinned_extensions":[],"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":{"account_extension_type":0,"active_permissions":{"api":[],"explicit_host":[],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"disable_reasons":[],"events":[],"first_install_time":"13405633918991803","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13405633918991803","location":5,"manifest":{"content_capabilities":{"include_globs":["https://*excel.officeapps.live.com/*","https://*onenote.officeapps.live.com/*","https://*powerpoint.officeapps.live.com/*","https://*word-edit.officeapps.live.com/*","https://*excel.officeapps.live.com.mcas.ms/*","https://*onenote.officeapps.live.com.mcas.ms/*","https://*word-edit.officeapps.live.com.mcas.ms/*","https://*excel.partner.officewebapps.cn/*","https://*onenote.partner.officewebapps.cn/*","https://*powerpoint.partner.officewebapps.cn/*","https://*word-edit.partner.officewebapps.cn/*","https://*excel.gov.online.office365.us/*","https://*onenote.gov.online.office365.us/*","https://*powerpoint.gov.online.office365.us/*","https://*word-edit.gov.online.office365.us/*","https://*excel.dod.online.office365.us/*","https://*onenote.dod.online.office365.us/*","https://*powerpoint.dod.online.office365.us/*","https://*word-edit.dod.online.office365.us/*","https://*visio.partner.officewebapps.cn/*","https://*visio.gov.online.office365.us/*","https://*visio.dod.online.office365.us/*"],"matches":["https://*.officeapps.live.com/*","https://*.officeapps.live.com.mcas.ms/*","https://*.partner.officewebapps.cn/*","https://*.gov.online.office365.us/*","https://*.dod.online.office365.us/*","https://*.app.whiteboard.microsoft.com/*","https://*.whiteboard.office.com/*","https://*.app.int.whiteboard.microsoft.com/*","https://*.whiteboard.office365.us/*","https://*.dev.whiteboard.microsoft.com/*"],"permissions":["clipboardRead","clipboardWrite"]},"default_locale":"en","description":"This extension grants Microsoft web sites permission to read and write from the clipboard.","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCz4t/X7GeuP6GBpjmxndrjtzF//4CWeHlC68rkoV7hP3h5Ka6eX7ZMNlYJkSjmB5iRmPHO5kR1y7rGY8JXnRPDQh/CQNLVA7OsKeV6w+UO+vx8KGI+TrTAhzH8YGcMIsxsUjxtC4cBmprja+xDr0zVp2EMgqHu+GBKgwSRHTkDuwIDAQAB","manifest_version":2,"minimum_chrome_version":"77","name":"Microsoft Clipboard Extension","version":"1.0"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\141.0.3537.92\\resources\\edge_clipboard","preferences":{},"regular_only_preferences":{},"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","fileSystem.readFullPath","errorReporting","edgeLearningToolsPrivate","fileSystem.getCurrentEntry","edgePdfPrivate","edgeCertVerifierPrivate"],"explicit_host":["edge://resources/*","edge://webui-test/*"],"manifest_permissions":[],"scriptable_host":[]},"commands":{},"content_settings":[],"creation_flags":1,"disable_reasons":[],"events":[],"first_install_time":"13405633918990755","from_webstore":false,"incognito_content_settings":[],"incognito_preferences":{},"last_update_time":"13405633918990755","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:; trusted-types edge-internal fast-html pdf-url edge-pdf-static-policy;","description":"","incognito":"split","key":"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN6hM0rsDYGbzQPQfOygqlRtQgKUXMfnSjhIBL7LnReAVBEd7ZmKtyN2qmSasMl4HZpMhVe2rPWVVwBDl6iyNE/Kok6E6v6V3vCLGsOpQAuuNVye/3QxzIldzG/jQAdWZiyXReRVapOhZtLjGfywCvlWq7Sl/e3sbc0vWybSDI2QIDAQAB","manifest_version":2,"mime_types":["application/pdf"],"mime_types_handler":"edge_pdf/index.html","name":"Microsoft Edge PDF Viewer","offline_enabled":true,"permissions":["errorReporting","chrome://resources/","chrome://webui-test/","contentSettings","metricsPrivate","edgeCertVerifierPrivate","edgeLearningToolsPrivate","edgePdfPrivate","pdfViewerPrivate","resourcesPrivate","tabs",{"fileSystem":["write","readFullPath","getCurrentEntry"]}],"version":"1"},"path":"C:\\Program Files (x86)\\Microsoft\\EdgeWebView\\Application\\141.0.3537.92\\resources\\edge_pdf","preferences":{},"regular_only_preferences":{},"was_installed_by_default":false,"was_installed_by_oem":false}}},"fsd":{"retention_policy_last_version":141},"gaia_cookie":{"periodic_report_time_2":"13406784944314331"},"intl":{"selected_languages":"en-US,en"},"language_dwell_time_average":{"en":30.862068965517242},"language_model_counters":{"en":29},"language_usage_count":{"en":29},"media":{"device_id_salt":"4494F98AD078624E4D63749260D8496E","engagement":{"schema_version":5}},"muid":{"last_sync":"13406784944507425","values_seen":[]},"optimization_guide":{"hintsfetcher":{"hosts_successfully_fetched":{}},"previously_registered_optimization_types":{"ABOUT_THIS_SITE":true,"GLIC_ACTION_PAGE_BLOCK":true,"HISTORY_CLUSTERS":true,"LOADING_PREDICTOR":true,"MERCHANT_TRUST_SIGNALS_V2":true,"PAGE_ENTITIES":true,"PRICE_INSIGHTS":true,"PRICE_TRACKING":true,"SALIENT_IMAGE":true,"SHOPPING_DISCOUNTS":true,"SHOPPING_PAGE_TYPES":true,"V8_COMPILE_HINTS":true}},"password_manager":{"account_store_backup_password_cleaning_last_timestamp":"13406349535826337","account_store_migrated_to_os_crypt_async":true,"profile_store_backup_password_cleaning_last_timestamp":"13406349535827351","profile_store_migrated_to_os_crypt_async":true},"personalization_data_consent":{"personalization_in_context_consent_can_prompt":true,"personalization_in_context_count":0},"privacy_sandbox":{"first_party_sets_data_access_allowed_initialized":true},"profile":{"avatar_index":20,"content_settings":{"exceptions":{"3pcd_heuristics_grants":{},"3pcd_support":{},"abusive_notification_permissions":{},"access_to_get_all_screens_media_in_session":{},"anti_abuse":{},"app_banner":{},"ar":{},"are_suspicious_notifications_allowlisted_by_user":{},"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":{},"clear_browsing_data_cookies_exceptions":{},"client_hints":{},"clipboard":{},"controlled_frame":{},"cookie_controls_metadata":{"file:///*,*":{"last_modified":"13406843227656285","setting":{}},"https://[*.]aaz.lt,*":{"last_modified":"13406787536688501","setting":{}}},"cookies":{},"direct_sockets":{},"direct_sockets_private_network_access":{},"display_media_system_audio":{},"disruptive_notification_permissions":{},"durable_storage":{},"edge_ad_targeting":{},"edge_ad_targeting_data":{},"edge_browser_action":{},"edge_sdsm":{},"edge_split_screen":{},"edge_tech_scam_detection":{},"edge_u2f_api_request":{},"edge_user_agent_token":{},"fedcm_idp_registration":{},"fedcm_idp_signin":{},"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":{"https://rmf39.aaz.lt:443,*":{"last_modified":"13406787686410813","last_visit":"13406601600000000","setting":1}},"geolocation_with_options":{},"hand_tracking":{},"hid_chooser_data":{},"hid_guard":{},"http_allowed":{},"https_enforced":{},"idle_detection":{},"images":{},"important_site_info":{},"initialized_translations":{},"intent_picker_auto_display":{},"javascript":{},"javascript_jit":{},"javascript_optimizer":{},"keyboard_lock":{},"legacy_cookie_access":{},"legacy_cookie_scope":{},"local_fonts":{},"local_network_access":{},"media_engagement":{"https://rmf39.aaz.lt:443,*":{"expiration":"13414564140511155","last_modified":"13406788140511169","lifetime":"7776000000000","setting":{"hasHighScore":false,"lastMediaPlaybackTime":0.0,"mediaPlaybacks":0,"visits":1}}},"media_stream_camera":{},"media_stream_mic":{"https://rmf39.aaz.lt:443,*":{"last_modified":"13406787689075998","last_used":"13406788140513143","last_visit":"13406601600000000","setting":1}},"midi_sysex":{},"mixed_script":{},"nfc_devices":{},"notification_interactions":{},"notification_permission_review":{},"notifications":{},"ondevice_languages_downloaded":{},"password_protection":{},"payment_handler":{},"permission_autoblocking_data":{},"permission_autorevocation_data":{},"pointer_lock":{},"popups":{},"protected_media_identifier":{},"protocol_handler":{},"reduced_accept_language":{},"safe_browsing_url_check_data":{},"secure_network":{},"secure_network_sites":{},"sensors":{},"serial_chooser_data":{},"serial_guard":{},"site_engagement":{"https://rmf39.aaz.lt:443,*":{"last_modified":"13406840801827314","setting":{"lastEngagementTime":1.3406812001827256e+16,"lastShortcutLaunchTime":0.0,"pointsAddedToday":0.0,"rawScore":3.0}}},"sleeping_tabs":{},"sound":{},"speaker_selection":{},"ssl_cert_decisions":{},"storage_access":{},"storage_access_header_origin_trial":{},"subresource_filter":{},"subresource_filter_data":{},"suspicious_notification_ids":{},"third_party_storage_partitioning":{},"top_level_3pcd_origin_trial":{},"top_level_3pcd_support":{},"top_level_storage_access":{},"trackers":{},"trackers_data":{"https://cdn.jsdelivr.net:443,*":{"last_modified":"13406787536709870","setting":{"allowed_tracker_count":1}}},"tracking_org_exceptions":{},"tracking_org_relationships":{},"tracking_protection":{},"unused_site_permissions":{},"usb_chooser_data":{},"usb_guard":{},"vr":{},"web_app_installation":{},"webid_api":{},"webid_auto_reauthn":{},"window_placement":{}},"permission_actions":{"geolocation":[{"action":0,"prompt_disposition":1,"time":"13406787686416624"}],"mic_stream":[{"action":0,"prompt_disposition":1,"time":"13406787689080024"}]},"pref_version":1},"created_by_version":"141.0.3537.92","creation_time":"13405633918888904","edge_password_is_using_new_login_db_path":false,"edge_password_login_db_path_flip_flop_count":0,"edge_profile_id":"527b2764-117b-4077-ae65-077c5c11a460","exit_type":"Normal","has_seen_signin_fre":false,"is_relative_to_aad":true,"last_engagement_time":"13406812001827256","last_time_obsolete_http_credentials_removed":1761875935.826714,"last_time_password_store_metrics_reported":1762313965.516101,"managed_user_id":"","name":"Profile 1","network_pbs":{},"observed_session_time":{"feedback_rating_in_product_help_observed_session_time_key_141.0.3537.92":6.0,"feedback_rating_in_product_help_observed_session_time_key_141.0.3537.99":1562.0},"one_time_permission_prompts_decided_count":2,"password_hash_data_list":[],"signin_fre_seen_time":"13405633918946336","were_old_google_logins_removed":true},"protection":{"macs":{"browser":{"show_home_button":"2A6F649F6787376B184B5DF9CDB9C06C82BD06AA2307E47BE768051C1B4A0627"},"default_search_provider_data":{"template_url_data":"B21CB6840E240F1C8A5863FF816893BF5C6C54A379B5AA5A697436F5319BA5CB"},"edge":{"services":{"account_id":"2FF6115A736DF35839A007CF992BE676B2090D9F05FFDB583E7A43FA1AF20A87","last_username":"091FC5425CC825A57E05E2071F698D486DAF76254EFDCB1E3B15F290EDC0F321"}},"enterprise_signin":{"policy_recovery_token":"ED3353D8829461E78C867774EBE939621F7B6D0967D174719A6CAA60E76B7467"},"extensions":{"install":{"initiallist":"FB1B46AAE8F6E94CA75262B4427520E2EFE78B05B6657898790C70B7197307A6"},"settings":{"dgiklkfkllikcanfonkcabmbdfmgleag":"9006F519031806C79617EBDF0B58C033F915B887068C2D0DB6EEA0FABF4FC52A","mhjfbmdgcfjbbpaeojofohoefgiehjai":"0882722781AC8B1446BE076FE06B986D5F1BBCE045C4104166F769F82D64CEB5"},"ui":{"developer_mode":"CD3F9EB12B3FAE383E76201F354508F7C4ADE21AE1A98F0BE432393C71E827EB"}},"google":{"services":{"last_signed_in_username":"1B01014EDBE0CC47CE3D24741D0309DA4ECF0DC81F5E43D4B21689E8927429C8"}},"homepage":"D11C12528151C024D640374ADF2605B2F63A51091AF26B3832973FAC76BE68F8","homepage_is_newtabpage":"C66A8A1D90BC573CFDAC54BB65F041F49E2C52F94318CF1CC234A5A677B80964","media":{"cdm":{"origin_data":"7AA02AC5C4BF3C38636B8772873A7E73DB32E8870E2306DE06F1EA24F7D57D67"},"storage_id_salt":"C907A55B4508B6A2A456FE6D29DD09A03190F94CCBFFC83960000BA01099250D"},"pinned_tabs":"C6D8FE523947107D4D304A2BB0CD69EE885A7DC535D34A2D744175037D0AEF11","prefs":{"preference_reset_time":"907D3B7B9E0A0F02D767043F1BC2BCC3CEC725FE2504C1F0E1B2729E6E511E3B"},"safebrowsing":{"incidents_sent":"3805F282BCCE90B17D9896C4047105EE47D3C28772466B95758A74CA4903ABDC"},"schedule_to_flush_to_disk":"1DED5E8F110DB75248E951DF924FFED034D7A2AD03A807D7BA7CCD668D7F85EB","search_provider_overrides":"CFA5DEDB8E664E6382F0939AD3A2117FD6C20056432756646850FA6F99726D9C","session":{"restore_on_startup":"920BF7C9B2069853D511763697DE0452040BDF509ABC5CB5D49B5BD4B4F88594","startup_urls":"507D8D0F536510D01AE775E88008AC8AF27775F57F094ED5D1308E7BE1DE5700"}}},"reset_prepopulated_engines":false,"safety_hub":{"unused_site_permissions_revocation":{"migration_completed":true}},"sessions":{"event_log":[{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406837950566067","type":2,"window_count":0},{"crashed":false,"time":"13406838128948454","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":1,"time":"13406838214600163","type":2,"window_count":1},{"crashed":false,"time":"13406840801424135","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406840837751336","type":2,"window_count":0},{"crashed":false,"time":"13406840914849144","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406840923122394","type":2,"window_count":0},{"crashed":false,"time":"13406841033387176","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406841046499276","type":2,"window_count":0},{"crashed":false,"time":"13406841157093045","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406841530771462","type":2,"window_count":0},{"crashed":false,"time":"13406841535903357","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406841569212259","type":2,"window_count":0},{"crashed":false,"time":"13406841577099663","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406841583982437","type":2,"window_count":0},{"crashed":false,"time":"13406841811770919","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406842271009562","type":2,"window_count":0},{"crashed":false,"time":"13406843226800364","type":0},{"did_schedule_command":false,"first_session_service":true,"tab_count":0,"time":"13406843237029985","type":2,"window_count":0}],"session_data_status":3},"signin":{"allowed":true,"cookie_clear_on_exit_migration_notice_complete":true},"spellcheck":{"dictionaries":["en-US"],"dictionary":""},"syncing_theme_prefs_migrated_to_non_syncing":true,"total_passwords_available_for_account":0,"total_passwords_available_for_profile":0,"translate_site_blacklist":[],"translate_site_blocklist_with_time":{},"user_experience_metrics":{"personalization_data_consent_enabled_last_known_value":false}}
|