windows-mcp 0.5.3__tar.gz → 0.5.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/PKG-INFO +87 -103
  2. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/README.md +86 -102
  3. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/pyproject.toml +1 -1
  4. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/.gitignore +0 -0
  5. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/.python-version +0 -0
  6. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/CONTRIBUTING.md +0 -0
  7. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/LICENSE.md +0 -0
  8. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/SECURITY.md +0 -0
  9. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/demo1.mov +0 -0
  10. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/demo2.mov +0 -0
  11. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/logo.png +0 -0
  12. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/screenshots/screenshot_1.png +0 -0
  13. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/screenshots/screenshot_2.png +0 -0
  14. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/assets/screenshots/screenshot_3.png +0 -0
  15. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/manifest.json +0 -0
  16. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/notebook.ipynb +0 -0
  17. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/server.json +0 -0
  18. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/__init__.py +0 -0
  19. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/__main__.py +0 -0
  20. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/desktop/__init__.py +0 -0
  21. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/desktop/config.py +0 -0
  22. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/desktop/service.py +0 -0
  23. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/desktop/views.py +0 -0
  24. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/tree/__init__.py +0 -0
  25. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/tree/config.py +0 -0
  26. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/tree/service.py +0 -0
  27. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/tree/utils.py +0 -0
  28. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/src/windows_mcp/tree/views.py +0 -0
  29. {windows_mcp-0.5.3 → windows_mcp-0.5.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: windows-mcp
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: Lightweight MCP Server for interacting with Windows Operating System.
5
5
  Project-URL: homepage, https://github.com/CursorTouch
6
6
  Author-email: Jeomon George <jeogeoalukka@gmail.com>
@@ -75,7 +75,7 @@ Description-Content-Type: text/markdown
75
75
  mcp-name: io.github.CursorTouch/Windows-MCP
76
76
 
77
77
  ## Updates
78
-
78
+ - Windows-MCP is now available on [PyPI](https://pypi.org/project/windows-mcp/) (thus supports `uvx`)
79
79
  - Windows-MCP is added to [MCP Registry](https://github.com/modelcontextprotocol/registry)
80
80
  - Try out 🪟[Windows-Use](https://github.com/CursorTouch/Windows-Use)!!, an agent built using Windows-MCP.
81
81
  - Windows-MCP is now featured as Desktop Extension in `Claude Desktop`.
@@ -116,55 +116,6 @@ mcp-name: io.github.CursorTouch/Windows-MCP
116
116
  - **DOM Mode for Browser Automation**
117
117
  Special `use_dom=True` mode for State-Tool that focuses exclusively on web page content, filtering out browser UI elements for cleaner, more efficient web automation.
118
118
 
119
- ## 🌐 DOM Mode for Browser Automation
120
-
121
- Windows-MCP includes a powerful **DOM Mode** feature that enhances browser automation by focusing on web page content rather than browser UI elements.
122
-
123
- ### What is DOM Mode?
124
-
125
- When `use_dom=True` is set in the State-Tool, the MCP server:
126
- - **Filters out browser UI**: Removes address bars, tabs, toolbars, and other browser chrome elements
127
- - **Returns only web content**: Provides interactive elements (links, buttons, forms) from the actual web page
128
- - **Reduces token usage**: Cleaner output means fewer tokens sent to the LLM
129
- - **Improves accuracy**: LLM focuses only on relevant web page elements
130
-
131
- ### When to Use DOM Mode
132
-
133
- ✅ **Use `use_dom=True` when:**
134
- - Automating web applications or websites
135
- - Scraping web content
136
- - Filling out web forms
137
- - Clicking links or buttons on web pages
138
- - Testing web interfaces
139
- - You want to ignore browser UI and focus on page content
140
-
141
- ❌ **Use `use_dom=False` (default) when:**
142
- - Interacting with browser controls (address bar, tabs, bookmarks)
143
- - Working with desktop applications
144
- - Need to see all UI elements including browser chrome
145
- - Managing browser settings or extensions
146
-
147
- ### Example Usage
148
-
149
- ```python
150
- # Get web page content only (no browser UI)
151
- state_tool(use_vision=False, use_dom=True)
152
-
153
- # Get full desktop state including browser UI
154
- state_tool(use_vision=False, use_dom=False)
155
-
156
- # Get web page content with screenshot
157
- state_tool(use_vision=True, use_dom=True)
158
- ```
159
-
160
- ### Benefits
161
-
162
- 1. **Token Efficiency**: Reduces the amount of data sent to LLM by filtering irrelevant browser UI
163
- 2. **Better Focus**: LLM concentrates on actionable web page elements
164
- 3. **Cleaner Output**: Only relevant interactive elements from the DOM are returned
165
- 4. **Faster Processing**: Less data means faster LLM inference
166
- 5. **Cost Savings**: Fewer tokens = lower API costs for cloud LLMs
167
-
168
119
  ## 🛠️Installation
169
120
 
170
121
  ### Prerequisites
@@ -182,23 +133,56 @@ state_tool(use_vision=True, use_dom=True)
182
133
  npm install -g @anthropic-ai/mcpb
183
134
  ```
184
135
 
185
- 2. Clone the repository.
186
136
 
187
- ```shell
188
- git clone https://github.com/CursorTouch/Windows-MCP.git
137
+ 2. Configure the extension:
189
138
 
190
- cd Windows-MCP
191
- ```
139
+ **Option A: Install from PyPI (Recommended)**
140
+
141
+ Use `uvx` to run the latest version directly from PyPI.
142
+
143
+ Add this to your `claude_desktop_config.json`:
144
+ ```json
145
+ {
146
+ "mcpServers": {
147
+ "windows-mcp": {
148
+ "command": "uvx",
149
+ "args": [
150
+ "windows-mcp"
151
+ ]
152
+ }
153
+ }
154
+ }
155
+ ```
156
+
157
+ **Option B: Install from Source**
158
+
159
+ 1. Clone the repository:
160
+ ```shell
161
+ git clone https://github.com/CursorTouch/Windows-MCP.git
162
+ cd Windows-MCP
163
+ ```
164
+
165
+ 2. Add this to your `claude_desktop_config.json`:
166
+ ```json
167
+ {
168
+ "mcpServers": {
169
+ "windows-mcp": {
170
+ "command": "uv",
171
+ "args": [
172
+ "--directory",
173
+ "<path to the windows-mcp directory>",
174
+ "run",
175
+ "windows-mcp"
176
+ ]
177
+ }
178
+ }
179
+ }
180
+ ```
192
181
 
193
- 3. Build Desktop Extension `MCPB`:
194
182
 
195
- ```shell
196
- npx @anthropic-ai/mcpb pack
197
- ```
198
183
 
199
- 4. Open Claude Desktop:
184
+ 3. Open Claude Desktop and enjoy! 🥳
200
185
 
201
- Go to `Settings->Extensions->Advance Settings->Install Extension` (locate the `.mcpb` file)-> Install
202
186
 
203
187
  5. Enjoy 🥳.
204
188
 
@@ -224,17 +208,32 @@ Go to `Settings->Connectors->Add Connector->Advanced`
224
208
 
225
209
  4. Enter the name as `Windows-MCP`, then paste the following JSON in the text area.
226
210
 
227
- ```json
228
- {
229
- "command": "uv",
230
- "args": [
231
- "--directory",
232
- "<path to the windows-mcp directory>",
233
- "run",
234
- "main.py"
235
- ]
236
- }
237
- ```
211
+
212
+ **Option A: Install from PyPI (Recommended)**
213
+
214
+ ```json
215
+ {
216
+ "command": "uvx",
217
+ "args": [
218
+ "windows-mcp"
219
+ ]
220
+ }
221
+ ```
222
+
223
+ **Option B: Install from Source**
224
+
225
+ ```json
226
+ {
227
+ "command": "uv",
228
+ "args": [
229
+ "--directory",
230
+ "<path to the windows-mcp directory>",
231
+ "run",
232
+ "windows-mcp"
233
+ ]
234
+ }
235
+ ```
236
+
238
237
 
239
238
  5. Click `Save` and Enjoy 🥳.
240
239
 
@@ -250,13 +249,9 @@ For additional Claude Desktop integration troubleshooting, see the [Perplexity M
250
249
  npm install -g @google/gemini-cli
251
250
  ```
252
251
 
253
- 2. Clone the repository.
254
252
 
255
- ```shell
256
- git clone https://github.com/CursorTouch/Windows-MCP.git
253
+ 2. Configure the server in `%USERPROFILE%/.gemini/settings.json`:
257
254
 
258
- cd Windows-MCP
259
- ```
260
255
 
261
256
  3. Navigate to `%USERPROFILE%/.gemini` in File Explorer and open `settings.json`.
262
257
 
@@ -269,17 +264,16 @@ cd Windows-MCP
269
264
  //MCP Server Config
270
265
  "mcpServers": {
271
266
  "windows-mcp": {
272
- "command": "uv",
267
+ "command": "uvx",
273
268
  "args": [
274
- "--directory",
275
- "<path to the windows-mcp directory>",
276
- "run",
277
- "main.py"
269
+ "windows-mcp"
278
270
  ]
279
271
  }
280
272
  }
281
273
  }
282
274
  ```
275
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
276
+
283
277
 
284
278
  5. Rerun Gemini CLI in terminal. Enjoy 🥳
285
279
  </details>
@@ -291,13 +285,9 @@ cd Windows-MCP
291
285
  ```shell
292
286
  npm install -g @qwen-code/qwen-code@latest
293
287
  ```
294
- 2. Clone the repository.
295
288
 
296
- ```shell
297
- git clone https://github.com/CursorTouch/Windows-MCP.git
289
+ 2. Configure the server in `%USERPROFILE%/.qwen/settings.json`:
298
290
 
299
- cd Windows-MCP
300
- ```
301
291
 
302
292
  3. Navigate to `%USERPROFILE%/.qwen/settings.json`.
303
293
 
@@ -308,17 +298,16 @@ cd Windows-MCP
308
298
  //MCP Server Config
309
299
  "mcpServers": {
310
300
  "windows-mcp": {
311
- "command": "uv",
301
+ "command": "uvx",
312
302
  "args": [
313
- "--directory",
314
- "<path to the windows-mcp directory>",
315
- "run",
316
- "main.py"
303
+ "windows-mcp"
317
304
  ]
318
305
  }
319
306
  }
320
307
  }
321
308
  ```
309
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
310
+
322
311
 
323
312
  5. Rerun Qwen Code in terminal. Enjoy 🥳
324
313
  </details>
@@ -330,27 +319,22 @@ cd Windows-MCP
330
319
  ```shell
331
320
  npm install -g @openai/codex
332
321
  ```
333
- 2. Clone the repository.
334
322
 
335
- ```shell
336
- git clone https://github.com/CursorTouch/Windows-MCP.git
323
+ 2. Configure the server in `%USERPROFILE%/.codex/config.toml`:
337
324
 
338
- cd Windows-MCP
339
- ```
340
325
  3. Navigate to `%USERPROFILE%/.codex/config.toml`.
341
326
 
342
327
  4. Add the `windows-mcp` config in the `config.toml` and save it.
343
328
 
344
329
  ```toml
345
330
  [mcp_servers.windows-mcp]
346
- command="uv"
331
+ command="uvx"
347
332
  args=[
348
- "--directory",
349
- "<path to the windows-mcp directory>",
350
- "run",
351
- "main.py"
333
+ "windows-mcp"
352
334
  ]
353
335
  ```
336
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
337
+
354
338
 
355
339
  5. Rerun Codex CLI in terminal. Enjoy 🥳
356
340
  </details>
@@ -26,7 +26,7 @@
26
26
  mcp-name: io.github.CursorTouch/Windows-MCP
27
27
 
28
28
  ## Updates
29
-
29
+ - Windows-MCP is now available on [PyPI](https://pypi.org/project/windows-mcp/) (thus supports `uvx`)
30
30
  - Windows-MCP is added to [MCP Registry](https://github.com/modelcontextprotocol/registry)
31
31
  - Try out 🪟[Windows-Use](https://github.com/CursorTouch/Windows-Use)!!, an agent built using Windows-MCP.
32
32
  - Windows-MCP is now featured as Desktop Extension in `Claude Desktop`.
@@ -67,55 +67,6 @@ mcp-name: io.github.CursorTouch/Windows-MCP
67
67
  - **DOM Mode for Browser Automation**
68
68
  Special `use_dom=True` mode for State-Tool that focuses exclusively on web page content, filtering out browser UI elements for cleaner, more efficient web automation.
69
69
 
70
- ## 🌐 DOM Mode for Browser Automation
71
-
72
- Windows-MCP includes a powerful **DOM Mode** feature that enhances browser automation by focusing on web page content rather than browser UI elements.
73
-
74
- ### What is DOM Mode?
75
-
76
- When `use_dom=True` is set in the State-Tool, the MCP server:
77
- - **Filters out browser UI**: Removes address bars, tabs, toolbars, and other browser chrome elements
78
- - **Returns only web content**: Provides interactive elements (links, buttons, forms) from the actual web page
79
- - **Reduces token usage**: Cleaner output means fewer tokens sent to the LLM
80
- - **Improves accuracy**: LLM focuses only on relevant web page elements
81
-
82
- ### When to Use DOM Mode
83
-
84
- ✅ **Use `use_dom=True` when:**
85
- - Automating web applications or websites
86
- - Scraping web content
87
- - Filling out web forms
88
- - Clicking links or buttons on web pages
89
- - Testing web interfaces
90
- - You want to ignore browser UI and focus on page content
91
-
92
- ❌ **Use `use_dom=False` (default) when:**
93
- - Interacting with browser controls (address bar, tabs, bookmarks)
94
- - Working with desktop applications
95
- - Need to see all UI elements including browser chrome
96
- - Managing browser settings or extensions
97
-
98
- ### Example Usage
99
-
100
- ```python
101
- # Get web page content only (no browser UI)
102
- state_tool(use_vision=False, use_dom=True)
103
-
104
- # Get full desktop state including browser UI
105
- state_tool(use_vision=False, use_dom=False)
106
-
107
- # Get web page content with screenshot
108
- state_tool(use_vision=True, use_dom=True)
109
- ```
110
-
111
- ### Benefits
112
-
113
- 1. **Token Efficiency**: Reduces the amount of data sent to LLM by filtering irrelevant browser UI
114
- 2. **Better Focus**: LLM concentrates on actionable web page elements
115
- 3. **Cleaner Output**: Only relevant interactive elements from the DOM are returned
116
- 4. **Faster Processing**: Less data means faster LLM inference
117
- 5. **Cost Savings**: Fewer tokens = lower API costs for cloud LLMs
118
-
119
70
  ## 🛠️Installation
120
71
 
121
72
  ### Prerequisites
@@ -133,23 +84,56 @@ state_tool(use_vision=True, use_dom=True)
133
84
  npm install -g @anthropic-ai/mcpb
134
85
  ```
135
86
 
136
- 2. Clone the repository.
137
87
 
138
- ```shell
139
- git clone https://github.com/CursorTouch/Windows-MCP.git
88
+ 2. Configure the extension:
140
89
 
141
- cd Windows-MCP
142
- ```
90
+ **Option A: Install from PyPI (Recommended)**
91
+
92
+ Use `uvx` to run the latest version directly from PyPI.
93
+
94
+ Add this to your `claude_desktop_config.json`:
95
+ ```json
96
+ {
97
+ "mcpServers": {
98
+ "windows-mcp": {
99
+ "command": "uvx",
100
+ "args": [
101
+ "windows-mcp"
102
+ ]
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ **Option B: Install from Source**
109
+
110
+ 1. Clone the repository:
111
+ ```shell
112
+ git clone https://github.com/CursorTouch/Windows-MCP.git
113
+ cd Windows-MCP
114
+ ```
115
+
116
+ 2. Add this to your `claude_desktop_config.json`:
117
+ ```json
118
+ {
119
+ "mcpServers": {
120
+ "windows-mcp": {
121
+ "command": "uv",
122
+ "args": [
123
+ "--directory",
124
+ "<path to the windows-mcp directory>",
125
+ "run",
126
+ "windows-mcp"
127
+ ]
128
+ }
129
+ }
130
+ }
131
+ ```
143
132
 
144
- 3. Build Desktop Extension `MCPB`:
145
133
 
146
- ```shell
147
- npx @anthropic-ai/mcpb pack
148
- ```
149
134
 
150
- 4. Open Claude Desktop:
135
+ 3. Open Claude Desktop and enjoy! 🥳
151
136
 
152
- Go to `Settings->Extensions->Advance Settings->Install Extension` (locate the `.mcpb` file)-> Install
153
137
 
154
138
  5. Enjoy 🥳.
155
139
 
@@ -175,17 +159,32 @@ Go to `Settings->Connectors->Add Connector->Advanced`
175
159
 
176
160
  4. Enter the name as `Windows-MCP`, then paste the following JSON in the text area.
177
161
 
178
- ```json
179
- {
180
- "command": "uv",
181
- "args": [
182
- "--directory",
183
- "<path to the windows-mcp directory>",
184
- "run",
185
- "main.py"
186
- ]
187
- }
188
- ```
162
+
163
+ **Option A: Install from PyPI (Recommended)**
164
+
165
+ ```json
166
+ {
167
+ "command": "uvx",
168
+ "args": [
169
+ "windows-mcp"
170
+ ]
171
+ }
172
+ ```
173
+
174
+ **Option B: Install from Source**
175
+
176
+ ```json
177
+ {
178
+ "command": "uv",
179
+ "args": [
180
+ "--directory",
181
+ "<path to the windows-mcp directory>",
182
+ "run",
183
+ "windows-mcp"
184
+ ]
185
+ }
186
+ ```
187
+
189
188
 
190
189
  5. Click `Save` and Enjoy 🥳.
191
190
 
@@ -201,13 +200,9 @@ For additional Claude Desktop integration troubleshooting, see the [Perplexity M
201
200
  npm install -g @google/gemini-cli
202
201
  ```
203
202
 
204
- 2. Clone the repository.
205
203
 
206
- ```shell
207
- git clone https://github.com/CursorTouch/Windows-MCP.git
204
+ 2. Configure the server in `%USERPROFILE%/.gemini/settings.json`:
208
205
 
209
- cd Windows-MCP
210
- ```
211
206
 
212
207
  3. Navigate to `%USERPROFILE%/.gemini` in File Explorer and open `settings.json`.
213
208
 
@@ -220,17 +215,16 @@ cd Windows-MCP
220
215
  //MCP Server Config
221
216
  "mcpServers": {
222
217
  "windows-mcp": {
223
- "command": "uv",
218
+ "command": "uvx",
224
219
  "args": [
225
- "--directory",
226
- "<path to the windows-mcp directory>",
227
- "run",
228
- "main.py"
220
+ "windows-mcp"
229
221
  ]
230
222
  }
231
223
  }
232
224
  }
233
225
  ```
226
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
227
+
234
228
 
235
229
  5. Rerun Gemini CLI in terminal. Enjoy 🥳
236
230
  </details>
@@ -242,13 +236,9 @@ cd Windows-MCP
242
236
  ```shell
243
237
  npm install -g @qwen-code/qwen-code@latest
244
238
  ```
245
- 2. Clone the repository.
246
239
 
247
- ```shell
248
- git clone https://github.com/CursorTouch/Windows-MCP.git
240
+ 2. Configure the server in `%USERPROFILE%/.qwen/settings.json`:
249
241
 
250
- cd Windows-MCP
251
- ```
252
242
 
253
243
  3. Navigate to `%USERPROFILE%/.qwen/settings.json`.
254
244
 
@@ -259,17 +249,16 @@ cd Windows-MCP
259
249
  //MCP Server Config
260
250
  "mcpServers": {
261
251
  "windows-mcp": {
262
- "command": "uv",
252
+ "command": "uvx",
263
253
  "args": [
264
- "--directory",
265
- "<path to the windows-mcp directory>",
266
- "run",
267
- "main.py"
254
+ "windows-mcp"
268
255
  ]
269
256
  }
270
257
  }
271
258
  }
272
259
  ```
260
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
261
+
273
262
 
274
263
  5. Rerun Qwen Code in terminal. Enjoy 🥳
275
264
  </details>
@@ -281,27 +270,22 @@ cd Windows-MCP
281
270
  ```shell
282
271
  npm install -g @openai/codex
283
272
  ```
284
- 2. Clone the repository.
285
273
 
286
- ```shell
287
- git clone https://github.com/CursorTouch/Windows-MCP.git
274
+ 2. Configure the server in `%USERPROFILE%/.codex/config.toml`:
288
275
 
289
- cd Windows-MCP
290
- ```
291
276
  3. Navigate to `%USERPROFILE%/.codex/config.toml`.
292
277
 
293
278
  4. Add the `windows-mcp` config in the `config.toml` and save it.
294
279
 
295
280
  ```toml
296
281
  [mcp_servers.windows-mcp]
297
- command="uv"
282
+ command="uvx"
298
283
  args=[
299
- "--directory",
300
- "<path to the windows-mcp directory>",
301
- "run",
302
- "main.py"
284
+ "windows-mcp"
303
285
  ]
304
286
  ```
287
+ *Note: To run from source, replace the command with `uv` and args with `["--directory", "<path>", "run", "windows-mcp"]`.*
288
+
305
289
 
306
290
  5. Rerun Codex CLI in terminal. Enjoy 🥳
307
291
  </details>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "windows-mcp"
3
- version = "0.5.3"
3
+ version = "0.5.4"
4
4
  description = "Lightweight MCP Server for interacting with Windows Operating System."
5
5
  authors = [
6
6
  { name = "Jeomon George", email = "jeogeoalukka@gmail.com" }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes