dulus 0.2.20__tar.gz → 0.2.21__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 (164) hide show
  1. {dulus-0.2.20/dulus.egg-info → dulus-0.2.21}/PKG-INFO +2 -2
  2. {dulus-0.2.20 → dulus-0.2.21}/README.md +1 -1
  3. {dulus-0.2.20 → dulus-0.2.21}/context.py +1 -0
  4. {dulus-0.2.20 → dulus-0.2.21}/docs/news.md +2 -0
  5. {dulus-0.2.20 → dulus-0.2.21/dulus.egg-info}/PKG-INFO +2 -2
  6. {dulus-0.2.20 → dulus-0.2.21}/dulus.py +1 -1
  7. {dulus-0.2.20 → dulus-0.2.21}/pyproject.toml +1 -1
  8. {dulus-0.2.20 → dulus-0.2.21}/LICENSE +0 -0
  9. {dulus-0.2.20 → dulus-0.2.21}/MANIFEST.in +0 -0
  10. {dulus-0.2.20 → dulus-0.2.21}/agent.py +0 -0
  11. {dulus-0.2.20 → dulus-0.2.21}/backend/__init__.py +0 -0
  12. {dulus-0.2.20 → dulus-0.2.21}/backend/compressor.py +0 -0
  13. {dulus-0.2.20 → dulus-0.2.21}/backend/context.py +0 -0
  14. {dulus-0.2.20 → dulus-0.2.21}/backend/githook.py +0 -0
  15. {dulus-0.2.20 → dulus-0.2.21}/backend/marketplace.py +0 -0
  16. {dulus-0.2.20 → dulus-0.2.21}/backend/mempalace_bridge.py +0 -0
  17. {dulus-0.2.20 → dulus-0.2.21}/backend/personas.py +0 -0
  18. {dulus-0.2.20 → dulus-0.2.21}/backend/plugins.py +0 -0
  19. {dulus-0.2.20 → dulus-0.2.21}/backend/server.py +0 -0
  20. {dulus-0.2.20 → dulus-0.2.21}/backend/tasks.py +0 -0
  21. {dulus-0.2.20 → dulus-0.2.21}/batch_api.py +0 -0
  22. {dulus-0.2.20 → dulus-0.2.21}/checkpoint/__init__.py +0 -0
  23. {dulus-0.2.20 → dulus-0.2.21}/checkpoint/hooks.py +0 -0
  24. {dulus-0.2.20 → dulus-0.2.21}/checkpoint/store.py +0 -0
  25. {dulus-0.2.20 → dulus-0.2.21}/checkpoint/types.py +0 -0
  26. {dulus-0.2.20 → dulus-0.2.21}/claude_code_watcher.py +0 -0
  27. {dulus-0.2.20 → dulus-0.2.21}/clipboard_utils.py +0 -0
  28. {dulus-0.2.20 → dulus-0.2.21}/cloudsave.py +0 -0
  29. {dulus-0.2.20 → dulus-0.2.21}/common.py +0 -0
  30. {dulus-0.2.20 → dulus-0.2.21}/compaction.py +0 -0
  31. {dulus-0.2.20 → dulus-0.2.21}/config.py +0 -0
  32. {dulus-0.2.20 → dulus-0.2.21}/data/__init__.py +0 -0
  33. {dulus-0.2.20 → dulus-0.2.21}/data/active_persona.json +0 -0
  34. {dulus-0.2.20 → dulus-0.2.21}/data/context.json +0 -0
  35. {dulus-0.2.20 → dulus-0.2.21}/data/marketplace.json +0 -0
  36. {dulus-0.2.20 → dulus-0.2.21}/data/personas.json +0 -0
  37. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/__init__.py +0 -0
  38. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/__init__.py +0 -0
  39. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/composio_plugin/__init__.py +0 -0
  40. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/composio_plugin/session_manager.py +0 -0
  41. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/composio_plugin/tool_generator.py +0 -0
  42. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/plugin.json +0 -0
  43. {dulus-0.2.20 → dulus-0.2.21}/data/plugins/composio/plugin_tool.py +0 -0
  44. {dulus-0.2.20 → dulus-0.2.21}/data/tasks.json +0 -0
  45. {dulus-0.2.20 → dulus-0.2.21}/docs/README.md +0 -0
  46. {dulus-0.2.20 → dulus-0.2.21}/docs/__init__.py +0 -0
  47. {dulus-0.2.20 → dulus-0.2.21}/docs/api.html +0 -0
  48. {dulus-0.2.20 → dulus-0.2.21}/docs/architecture.md +0 -0
  49. {dulus-0.2.20 → dulus-0.2.21}/docs/azure-speech-template.json +0 -0
  50. {dulus-0.2.20 → dulus-0.2.21}/docs/dashboard/index.html +0 -0
  51. {dulus-0.2.20 → dulus-0.2.21}/docs/divider.svg +0 -0
  52. {dulus-0.2.20 → dulus-0.2.21}/docs/generate.py +0 -0
  53. {dulus-0.2.20 → dulus-0.2.21}/docs/hero.svg +0 -0
  54. {dulus-0.2.20 → dulus-0.2.21}/docs/index.html +0 -0
  55. {dulus-0.2.20 → dulus-0.2.21}/docs/nvidia-models.svg +0 -0
  56. {dulus-0.2.20 → dulus-0.2.21}/docs/particle-playground.html +0 -0
  57. {dulus-0.2.20 → dulus-0.2.21}/docs/personas/index.html +0 -0
  58. {dulus-0.2.20 → dulus-0.2.21}/docs/poetry-banner.png +0 -0
  59. {dulus-0.2.20 → dulus-0.2.21}/docs/preview.html +0 -0
  60. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-agents.svg +0 -0
  61. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-brainstorm.svg +0 -0
  62. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-bridges.svg +0 -0
  63. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-features.svg +0 -0
  64. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-freetier.svg +0 -0
  65. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-memory.svg +0 -0
  66. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-models.svg +0 -0
  67. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-perms.svg +0 -0
  68. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-plugins.svg +0 -0
  69. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-quickstart.svg +0 -0
  70. {dulus-0.2.20 → dulus-0.2.21}/docs/sec-ssj.svg +0 -0
  71. {dulus-0.2.20 → dulus-0.2.21}/docs/spinners.svg +0 -0
  72. {dulus-0.2.20 → dulus-0.2.21}/docs/split-pane.svg +0 -0
  73. {dulus-0.2.20 → dulus-0.2.21}/docs/terminal-boot.svg +0 -0
  74. {dulus-0.2.20 → dulus-0.2.21}/docs/uploads/particle-playground.html +0 -0
  75. {dulus-0.2.20 → dulus-0.2.21}/dulus.egg-info/SOURCES.txt +0 -0
  76. {dulus-0.2.20 → dulus-0.2.21}/dulus.egg-info/dependency_links.txt +0 -0
  77. {dulus-0.2.20 → dulus-0.2.21}/dulus.egg-info/entry_points.txt +0 -0
  78. {dulus-0.2.20 → dulus-0.2.21}/dulus.egg-info/requires.txt +0 -0
  79. {dulus-0.2.20 → dulus-0.2.21}/dulus.egg-info/top_level.txt +0 -0
  80. {dulus-0.2.20 → dulus-0.2.21}/dulus_gui.py +0 -0
  81. {dulus-0.2.20 → dulus-0.2.21}/dulus_mcp/__init__.py +0 -0
  82. {dulus-0.2.20 → dulus-0.2.21}/dulus_mcp/client.py +0 -0
  83. {dulus-0.2.20 → dulus-0.2.21}/dulus_mcp/config.py +0 -0
  84. {dulus-0.2.20 → dulus-0.2.21}/dulus_mcp/tools.py +0 -0
  85. {dulus-0.2.20 → dulus-0.2.21}/dulus_mcp/types.py +0 -0
  86. {dulus-0.2.20 → dulus-0.2.21}/gui/__init__.py +0 -0
  87. {dulus-0.2.20 → dulus-0.2.21}/gui/agent_bridge.py +0 -0
  88. {dulus-0.2.20 → dulus-0.2.21}/gui/chat_widget.py +0 -0
  89. {dulus-0.2.20 → dulus-0.2.21}/gui/main_window.py +0 -0
  90. {dulus-0.2.20 → dulus-0.2.21}/gui/personas.py +0 -0
  91. {dulus-0.2.20 → dulus-0.2.21}/gui/session_utils.py +0 -0
  92. {dulus-0.2.20 → dulus-0.2.21}/gui/settings_dialog.py +0 -0
  93. {dulus-0.2.20 → dulus-0.2.21}/gui/sidebar.py +0 -0
  94. {dulus-0.2.20 → dulus-0.2.21}/gui/tasks_view.py +0 -0
  95. {dulus-0.2.20 → dulus-0.2.21}/gui/themes.py +0 -0
  96. {dulus-0.2.20 → dulus-0.2.21}/gui/tool_panel.py +0 -0
  97. {dulus-0.2.20 → dulus-0.2.21}/input.py +0 -0
  98. {dulus-0.2.20 → dulus-0.2.21}/license_manager.py +0 -0
  99. {dulus-0.2.20 → dulus-0.2.21}/memory/__init__.py +0 -0
  100. {dulus-0.2.20 → dulus-0.2.21}/memory/audit.py +0 -0
  101. {dulus-0.2.20 → dulus-0.2.21}/memory/consolidator.py +0 -0
  102. {dulus-0.2.20 → dulus-0.2.21}/memory/context.py +0 -0
  103. {dulus-0.2.20 → dulus-0.2.21}/memory/offload.py +0 -0
  104. {dulus-0.2.20 → dulus-0.2.21}/memory/palace.py +0 -0
  105. {dulus-0.2.20 → dulus-0.2.21}/memory/scan.py +0 -0
  106. {dulus-0.2.20 → dulus-0.2.21}/memory/sessions.py +0 -0
  107. {dulus-0.2.20 → dulus-0.2.21}/memory/store.py +0 -0
  108. {dulus-0.2.20 → dulus-0.2.21}/memory/tools.py +0 -0
  109. {dulus-0.2.20 → dulus-0.2.21}/memory/types.py +0 -0
  110. {dulus-0.2.20 → dulus-0.2.21}/memory/vector_search.py +0 -0
  111. {dulus-0.2.20 → dulus-0.2.21}/multi_agent/__init__.py +0 -0
  112. {dulus-0.2.20 → dulus-0.2.21}/multi_agent/subagent.py +0 -0
  113. {dulus-0.2.20 → dulus-0.2.21}/multi_agent/tools.py +0 -0
  114. {dulus-0.2.20 → dulus-0.2.21}/offload_helper.py +0 -0
  115. {dulus-0.2.20 → dulus-0.2.21}/plugin/__init__.py +0 -0
  116. {dulus-0.2.20 → dulus-0.2.21}/plugin/autoadapter.py +0 -0
  117. {dulus-0.2.20 → dulus-0.2.21}/plugin/loader.py +0 -0
  118. {dulus-0.2.20 → dulus-0.2.21}/plugin/recommend.py +0 -0
  119. {dulus-0.2.20 → dulus-0.2.21}/plugin/store.py +0 -0
  120. {dulus-0.2.20 → dulus-0.2.21}/plugin/types.py +0 -0
  121. {dulus-0.2.20 → dulus-0.2.21}/providers.py +0 -0
  122. {dulus-0.2.20 → dulus-0.2.21}/setup.cfg +0 -0
  123. {dulus-0.2.20 → dulus-0.2.21}/skill/__init__.py +0 -0
  124. {dulus-0.2.20 → dulus-0.2.21}/skill/builtin.py +0 -0
  125. {dulus-0.2.20 → dulus-0.2.21}/skill/clawhub.py +0 -0
  126. {dulus-0.2.20 → dulus-0.2.21}/skill/executor.py +0 -0
  127. {dulus-0.2.20 → dulus-0.2.21}/skill/loader.py +0 -0
  128. {dulus-0.2.20 → dulus-0.2.21}/skill/tools.py +0 -0
  129. {dulus-0.2.20 → dulus-0.2.21}/skills.py +0 -0
  130. {dulus-0.2.20 → dulus-0.2.21}/spinner.py +0 -0
  131. {dulus-0.2.20 → dulus-0.2.21}/string_utils.py +0 -0
  132. {dulus-0.2.20 → dulus-0.2.21}/subagent.py +0 -0
  133. {dulus-0.2.20 → dulus-0.2.21}/task/__init__.py +0 -0
  134. {dulus-0.2.20 → dulus-0.2.21}/task/store.py +0 -0
  135. {dulus-0.2.20 → dulus-0.2.21}/task/tools.py +0 -0
  136. {dulus-0.2.20 → dulus-0.2.21}/task/types.py +0 -0
  137. {dulus-0.2.20 → dulus-0.2.21}/tests/test_checkpoint.py +0 -0
  138. {dulus-0.2.20 → dulus-0.2.21}/tests/test_compaction.py +0 -0
  139. {dulus-0.2.20 → dulus-0.2.21}/tests/test_diff_view.py +0 -0
  140. {dulus-0.2.20 → dulus-0.2.21}/tests/test_injection_fix.py +0 -0
  141. {dulus-0.2.20 → dulus-0.2.21}/tests/test_license.py +0 -0
  142. {dulus-0.2.20 → dulus-0.2.21}/tests/test_mcp.py +0 -0
  143. {dulus-0.2.20 → dulus-0.2.21}/tests/test_memory.py +0 -0
  144. {dulus-0.2.20 → dulus-0.2.21}/tests/test_plugin.py +0 -0
  145. {dulus-0.2.20 → dulus-0.2.21}/tests/test_skills.py +0 -0
  146. {dulus-0.2.20 → dulus-0.2.21}/tests/test_subagent.py +0 -0
  147. {dulus-0.2.20 → dulus-0.2.21}/tests/test_task.py +0 -0
  148. {dulus-0.2.20 → dulus-0.2.21}/tests/test_telegram_buffer.py +0 -0
  149. {dulus-0.2.20 → dulus-0.2.21}/tests/test_tool_registry.py +0 -0
  150. {dulus-0.2.20 → dulus-0.2.21}/tests/test_voice.py +0 -0
  151. {dulus-0.2.20 → dulus-0.2.21}/tmux_offloader.py +0 -0
  152. {dulus-0.2.20 → dulus-0.2.21}/tmux_tools.py +0 -0
  153. {dulus-0.2.20 → dulus-0.2.21}/tool_registry.py +0 -0
  154. {dulus-0.2.20 → dulus-0.2.21}/tools.py +0 -0
  155. {dulus-0.2.20 → dulus-0.2.21}/ui/__init__.py +0 -0
  156. {dulus-0.2.20 → dulus-0.2.21}/ui/input.py +0 -0
  157. {dulus-0.2.20 → dulus-0.2.21}/ui/render.py +0 -0
  158. {dulus-0.2.20 → dulus-0.2.21}/voice/__init__.py +0 -0
  159. {dulus-0.2.20 → dulus-0.2.21}/voice/keyterms.py +0 -0
  160. {dulus-0.2.20 → dulus-0.2.21}/voice/recorder.py +0 -0
  161. {dulus-0.2.20 → dulus-0.2.21}/voice/stt.py +0 -0
  162. {dulus-0.2.20 → dulus-0.2.21}/voice/tts.py +0 -0
  163. {dulus-0.2.20 → dulus-0.2.21}/webchat.py +0 -0
  164. {dulus-0.2.20 → dulus-0.2.21}/webchat_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.20
3
+ Version: 0.2.21
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
5
5
  Author: KevRojo
6
6
  License: GPL-3.0
@@ -69,7 +69,7 @@ SET /sticky_input ON since the first run for the best experience!
69
69
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
70
70
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
71
71
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
72
- <img src="https://img.shields.io/badge/version-v0.2.20-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
72
+ <img src="https://img.shields.io/badge/version-v0.2.21-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
73
73
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
74
74
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
75
75
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -22,7 +22,7 @@ SET /sticky_input ON since the first run for the best experience!
22
22
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
23
23
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
24
24
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
25
- <img src="https://img.shields.io/badge/version-v0.2.20-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
25
+ <img src="https://img.shields.io/badge/version-v0.2.21-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
26
26
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
27
27
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
28
28
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -19,6 +19,7 @@ You are Dulus, an AI coding agent. Think in English; reply to KevRojo in Dominic
19
19
  # Env: {cwd} | {platform} | auto_show={auto_show}
20
20
  # Autonomy: Background scripts (nohup/&) allowed | Never refuse monitoring/long tasks | Always wait for tool results before replying
21
21
  # Tools: SearchLastOutput → for [TRUNCATED] | WebFetch/WebSearch → web | TmuxOffload → tasks > 5s | ReadJob → background results
22
+ # SleepTimer: ONLY for user-facing reminders/notifications (e.g. "remind me in 10min"). NEVER use it to wait between your own tool calls — it freezes the console. To pause inside a command sequence, put `sleep N` INSIDE the Bash command itself (e.g. Bash('cmd1 && sleep 2 && cmd2')).
22
23
  # Multi-agent: Agent(subagent_type=...) | isolation="worktree" runs parallel | wait=false + name=... for fire-and-forget
23
24
  # Rules: Edit > Write | Use absolute paths + line numbers | Surface errors immediately, do not retry blindly
24
25
  # Input: "🎙 Transcribed:" prefix = voice input — tolerate typos/misspellings
@@ -3,6 +3,8 @@
3
3
  ## 🔥🔥🔥 News (Pacific Time)
4
4
 
5
5
 
6
+ - May 09, 2026 (**v0.2.21**): **System prompt clarifies SleepTimer scope** — added an explicit hint that SleepTimer is ONLY for user-facing reminders/notifications, NEVER for inter-tool waits (those freeze the console). When a pause is needed mid-pipeline, models should use `sleep N` inside the Bash command itself. Fixes a recurring console-freeze when models reflexively reached for SleepTimer between commands.
7
+
6
8
  - May 09, 2026 (**v0.2.20**): **IPC port-collision fix on Windows** — `SO_REUSEADDR` on Windows lets two sockets share the same port, which would let a second Dulus instance silently "steal" the IPC listener. Switched to `SO_EXCLUSIVEADDRUSE` so the second instance correctly backs off and acts as a client. Verified end-to-end with the new test harness.
7
9
 
8
10
  - May 09, 2026 (**v0.2.19**): **Shared sessions via tiny TCP socket — daemon workaround supremo**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.20
3
+ Version: 0.2.21
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
5
5
  Author: KevRojo
6
6
  License: GPL-3.0
@@ -69,7 +69,7 @@ SET /sticky_input ON since the first run for the best experience!
69
69
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
70
70
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
71
71
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
72
- <img src="https://img.shields.io/badge/version-v0.2.20-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
72
+ <img src="https://img.shields.io/badge/version-v0.2.21-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
73
73
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
74
74
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
75
75
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -218,7 +218,7 @@ try:
218
218
  from importlib.metadata import version as _pkg_version
219
219
  VERSION = _pkg_version("dulus")
220
220
  except Exception:
221
- VERSION = "0.2.20" # dev fallback — keep in sync with pyproject.toml
221
+ VERSION = "0.2.21" # dev fallback — keep in sync with pyproject.toml
222
222
 
223
223
  # ── ANSI helpers (used even with rich for non-markdown output) ─────────────
224
224
  from common import C, clr, info, ok, warn, err, stream_thinking, print_tool_start, print_tool_end, sanitize_text
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dulus"
7
- version = "0.2.20"
7
+ version = "0.2.21"
8
8
  description = "Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
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
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
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
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
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
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
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
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
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
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
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
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
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
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