focomy 0.1.108__tar.gz → 0.1.109__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 (209) hide show
  1. {focomy-0.1.108 → focomy-0.1.109}/PKG-INFO +1 -1
  2. {focomy-0.1.108 → focomy-0.1.109}/core/utils.py +7 -5
  3. {focomy-0.1.108 → focomy-0.1.109}/pyproject.toml +1 -1
  4. {focomy-0.1.108 → focomy-0.1.109}/.gitignore +0 -0
  5. {focomy-0.1.108 → focomy-0.1.109}/LICENSE +0 -0
  6. {focomy-0.1.108 → focomy-0.1.109}/README.md +0 -0
  7. {focomy-0.1.108 → focomy-0.1.109}/core/__init__.py +0 -0
  8. {focomy-0.1.108 → focomy-0.1.109}/core/admin/__init__.py +0 -0
  9. {focomy-0.1.108 → focomy-0.1.109}/core/admin/routes.py +0 -0
  10. {focomy-0.1.108 → focomy-0.1.109}/core/admin/url.py +0 -0
  11. {focomy-0.1.108 → focomy-0.1.109}/core/api/__init__.py +0 -0
  12. {focomy-0.1.108 → focomy-0.1.109}/core/api/auth.py +0 -0
  13. {focomy-0.1.108 → focomy-0.1.109}/core/api/comments.py +0 -0
  14. {focomy-0.1.108 → focomy-0.1.109}/core/api/entities.py +0 -0
  15. {focomy-0.1.108 → focomy-0.1.109}/core/api/forms.py +0 -0
  16. {focomy-0.1.108 → focomy-0.1.109}/core/api/media.py +0 -0
  17. {focomy-0.1.108 → focomy-0.1.109}/core/api/relations.py +0 -0
  18. {focomy-0.1.108 → focomy-0.1.109}/core/api/revisions.py +0 -0
  19. {focomy-0.1.108 → focomy-0.1.109}/core/api/schema.py +0 -0
  20. {focomy-0.1.108 → focomy-0.1.109}/core/api/search.py +0 -0
  21. {focomy-0.1.108 → focomy-0.1.109}/core/api/seo.py +0 -0
  22. {focomy-0.1.108 → focomy-0.1.109}/core/cli.py +0 -0
  23. {focomy-0.1.108 → focomy-0.1.109}/core/config.py +0 -0
  24. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/__init__.py +0 -0
  25. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/audit_log.yaml +0 -0
  26. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/category.yaml +0 -0
  27. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/channel.yaml +0 -0
  28. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/comment.yaml +0 -0
  29. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/edit_lock.yaml +0 -0
  30. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/form.yaml +0 -0
  31. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/form_submission.yaml +0 -0
  32. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/menu_item.yaml +0 -0
  33. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/news.yaml +0 -0
  34. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/page.yaml +0 -0
  35. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/plugin.yaml +0 -0
  36. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/plugin_developer.yaml +0 -0
  37. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/plugin_review.yaml +0 -0
  38. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/post.yaml +0 -0
  39. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/redirect.yaml +0 -0
  40. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/scheduled_action.yaml +0 -0
  41. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/series.yaml +0 -0
  42. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/site_setting.yaml +0 -0
  43. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/tag.yaml +0 -0
  44. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/user.yaml +0 -0
  45. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/widget.yaml +0 -0
  46. {focomy-0.1.108 → focomy-0.1.109}/core/content_types/workflow_history.yaml +0 -0
  47. {focomy-0.1.108 → focomy-0.1.109}/core/database.py +0 -0
  48. {focomy-0.1.108 → focomy-0.1.109}/core/engine/__init__.py +0 -0
  49. {focomy-0.1.108 → focomy-0.1.109}/core/engine/routes.py +0 -0
  50. {focomy-0.1.108 → focomy-0.1.109}/core/main.py +0 -0
  51. {focomy-0.1.108 → focomy-0.1.109}/core/migrations/env.py +0 -0
  52. {focomy-0.1.108 → focomy-0.1.109}/core/migrations/script.py.mako +0 -0
  53. {focomy-0.1.108 → focomy-0.1.109}/core/migrations/versions/2038bdf6693b_add_import_jobs_table.py +0 -0
  54. {focomy-0.1.108 → focomy-0.1.109}/core/migrations/versions/3a1b2c3d4e5f_add_file_hash_to_media.py +0 -0
  55. {focomy-0.1.108 → focomy-0.1.109}/core/models/__init__.py +0 -0
  56. {focomy-0.1.108 → focomy-0.1.109}/core/models/auth.py +0 -0
  57. {focomy-0.1.108 → focomy-0.1.109}/core/models/entity.py +0 -0
  58. {focomy-0.1.108 → focomy-0.1.109}/core/models/import_job.py +0 -0
  59. {focomy-0.1.108 → focomy-0.1.109}/core/models/media.py +0 -0
  60. {focomy-0.1.108 → focomy-0.1.109}/core/models/relation.py +0 -0
  61. {focomy-0.1.108 → focomy-0.1.109}/core/models/revision.py +0 -0
  62. {focomy-0.1.108 → focomy-0.1.109}/core/plugins/__init__.py +0 -0
  63. {focomy-0.1.108 → focomy-0.1.109}/core/plugins/base.py +0 -0
  64. {focomy-0.1.108 → focomy-0.1.109}/core/plugins/hooks.py +0 -0
  65. {focomy-0.1.108 → focomy-0.1.109}/core/plugins/loader.py +0 -0
  66. {focomy-0.1.108 → focomy-0.1.109}/core/plugins/manager.py +0 -0
  67. {focomy-0.1.108 → focomy-0.1.109}/core/rate_limit.py +0 -0
  68. {focomy-0.1.108 → focomy-0.1.109}/core/relations.yaml +0 -0
  69. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/.env.template +0 -0
  70. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/.gitignore.template +0 -0
  71. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/__init__.py +0 -0
  72. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/config.yaml.template +0 -0
  73. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/archive.html +0 -0
  74. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/base.html +0 -0
  75. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/category.html +0 -0
  76. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/home.html +0 -0
  77. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/post.html +0 -0
  78. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/templates/search.html +0 -0
  79. {focomy-0.1.108 → focomy-0.1.109}/core/scaffold/themes/default/theme.yaml +0 -0
  80. {focomy-0.1.108 → focomy-0.1.109}/core/schemas/__init__.py +0 -0
  81. {focomy-0.1.108 → focomy-0.1.109}/core/schemas/import_schema.py +0 -0
  82. {focomy-0.1.108 → focomy-0.1.109}/core/seo/__init__.py +0 -0
  83. {focomy-0.1.108 → focomy-0.1.109}/core/services/__init__.py +0 -0
  84. {focomy-0.1.108 → focomy-0.1.109}/core/services/api_auth.py +0 -0
  85. {focomy-0.1.108 → focomy-0.1.109}/core/services/assets.py +0 -0
  86. {focomy-0.1.108 → focomy-0.1.109}/core/services/audit.py +0 -0
  87. {focomy-0.1.108 → focomy-0.1.109}/core/services/auth.py +0 -0
  88. {focomy-0.1.108 → focomy-0.1.109}/core/services/block_converter.py +0 -0
  89. {focomy-0.1.108 → focomy-0.1.109}/core/services/bulk.py +0 -0
  90. {focomy-0.1.108 → focomy-0.1.109}/core/services/cache.py +0 -0
  91. {focomy-0.1.108 → focomy-0.1.109}/core/services/cleanup.py +0 -0
  92. {focomy-0.1.108 → focomy-0.1.109}/core/services/comment.py +0 -0
  93. {focomy-0.1.108 → focomy-0.1.109}/core/services/config_priority.py +0 -0
  94. {focomy-0.1.108 → focomy-0.1.109}/core/services/deployment.py +0 -0
  95. {focomy-0.1.108 → focomy-0.1.109}/core/services/edit_lock.py +0 -0
  96. {focomy-0.1.108 → focomy-0.1.109}/core/services/entity.py +0 -0
  97. {focomy-0.1.108 → focomy-0.1.109}/core/services/export.py +0 -0
  98. {focomy-0.1.108 → focomy-0.1.109}/core/services/field.py +0 -0
  99. {focomy-0.1.108 → focomy-0.1.109}/core/services/formula.py +0 -0
  100. {focomy-0.1.108 → focomy-0.1.109}/core/services/i18n.py +0 -0
  101. {focomy-0.1.108 → focomy-0.1.109}/core/services/index.py +0 -0
  102. {focomy-0.1.108 → focomy-0.1.109}/core/services/invite.py +0 -0
  103. {focomy-0.1.108 → focomy-0.1.109}/core/services/link_validator.py +0 -0
  104. {focomy-0.1.108 → focomy-0.1.109}/core/services/logging.py +0 -0
  105. {focomy-0.1.108 → focomy-0.1.109}/core/services/mail.py +0 -0
  106. {focomy-0.1.108 → focomy-0.1.109}/core/services/marketplace.py +0 -0
  107. {focomy-0.1.108 → focomy-0.1.109}/core/services/marketplace_verify.py +0 -0
  108. {focomy-0.1.108 → focomy-0.1.109}/core/services/media.py +0 -0
  109. {focomy-0.1.108 → focomy-0.1.109}/core/services/media_cleanup.py +0 -0
  110. {focomy-0.1.108 → focomy-0.1.109}/core/services/menu.py +0 -0
  111. {focomy-0.1.108 → focomy-0.1.109}/core/services/migration_helpers.py +0 -0
  112. {focomy-0.1.108 → focomy-0.1.109}/core/services/oauth.py +0 -0
  113. {focomy-0.1.108 → focomy-0.1.109}/core/services/pagination.py +0 -0
  114. {focomy-0.1.108 → focomy-0.1.109}/core/services/plugin_resolver.py +0 -0
  115. {focomy-0.1.108 → focomy-0.1.109}/core/services/plugin_sandbox.py +0 -0
  116. {focomy-0.1.108 → focomy-0.1.109}/core/services/preview.py +0 -0
  117. {focomy-0.1.108 → focomy-0.1.109}/core/services/query_optimizer.py +0 -0
  118. {focomy-0.1.108 → focomy-0.1.109}/core/services/rbac.py +0 -0
  119. {focomy-0.1.108 → focomy-0.1.109}/core/services/redirect.py +0 -0
  120. {focomy-0.1.108 → focomy-0.1.109}/core/services/relation.py +0 -0
  121. {focomy-0.1.108 → focomy-0.1.109}/core/services/revision.py +0 -0
  122. {focomy-0.1.108 → focomy-0.1.109}/core/services/routing.py +0 -0
  123. {focomy-0.1.108 → focomy-0.1.109}/core/services/sanitizer.py +0 -0
  124. {focomy-0.1.108 → focomy-0.1.109}/core/services/schedule.py +0 -0
  125. {focomy-0.1.108 → focomy-0.1.109}/core/services/search.py +0 -0
  126. {focomy-0.1.108 → focomy-0.1.109}/core/services/sentry.py +0 -0
  127. {focomy-0.1.108 → focomy-0.1.109}/core/services/seo.py +0 -0
  128. {focomy-0.1.108 → focomy-0.1.109}/core/services/settings.py +0 -0
  129. {focomy-0.1.108 → focomy-0.1.109}/core/services/spam_filter.py +0 -0
  130. {focomy-0.1.108 → focomy-0.1.109}/core/services/storage.py +0 -0
  131. {focomy-0.1.108 → focomy-0.1.109}/core/services/theme.py +0 -0
  132. {focomy-0.1.108 → focomy-0.1.109}/core/services/theme_inheritance.py +0 -0
  133. {focomy-0.1.108 → focomy-0.1.109}/core/services/thumbnail.py +0 -0
  134. {focomy-0.1.108 → focomy-0.1.109}/core/services/update.py +0 -0
  135. {focomy-0.1.108 → focomy-0.1.109}/core/services/widget.py +0 -0
  136. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/__init__.py +0 -0
  137. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/acf.py +0 -0
  138. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/analyzer.py +0 -0
  139. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/constants.py +0 -0
  140. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/content_sanitizer.py +0 -0
  141. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/diff_detector.py +0 -0
  142. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/dry_run.py +0 -0
  143. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/error_collector.py +0 -0
  144. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/id_resolver.py +0 -0
  145. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/import_service.py +0 -0
  146. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/importer.py +0 -0
  147. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/link_fixer.py +0 -0
  148. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/media.py +0 -0
  149. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/preview.py +0 -0
  150. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/redirects.py +0 -0
  151. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/rest_client.py +0 -0
  152. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/rollback.py +0 -0
  153. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/verification.py +0 -0
  154. {focomy-0.1.108 → focomy-0.1.109}/core/services/wordpress_import/wxr_parser.py +0 -0
  155. {focomy-0.1.108 → focomy-0.1.109}/core/services/workflow.py +0 -0
  156. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/backup.html +0 -0
  157. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/base.html +0 -0
  158. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/comments.html +0 -0
  159. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/components/editor.html +0 -0
  160. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/customize.html +0 -0
  161. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/dashboard.html +0 -0
  162. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/entity_form.html +0 -0
  163. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/entity_list.html +0 -0
  164. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/forgot_password.html +0 -0
  165. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/import.html +0 -0
  166. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/link_validator.html +0 -0
  167. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/login.html +0 -0
  168. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/media.html +0 -0
  169. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/menus.html +0 -0
  170. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/plugins.html +0 -0
  171. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/redirects.html +0 -0
  172. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/reset_password.html +0 -0
  173. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/settings.html +0 -0
  174. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/sitemap.html +0 -0
  175. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/system.html +0 -0
  176. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/themes.html +0 -0
  177. {focomy-0.1.108 → focomy-0.1.109}/core/templates/admin/widgets.html +0 -0
  178. {focomy-0.1.108 → focomy-0.1.109}/core/themes/__init__.py +0 -0
  179. {focomy-0.1.108 → focomy-0.1.109}/core/themes/customizer.py +0 -0
  180. {focomy-0.1.108 → focomy-0.1.109}/core/themes/manager.py +0 -0
  181. {focomy-0.1.108 → focomy-0.1.109}/core/themes/marketplace.py +0 -0
  182. {focomy-0.1.108 → focomy-0.1.109}/static/favicon.svg +0 -0
  183. {focomy-0.1.108 → focomy-0.1.109}/themes/blog/templates/base.html +0 -0
  184. {focomy-0.1.108 → focomy-0.1.109}/themes/blog/templates/home.html +0 -0
  185. {focomy-0.1.108 → focomy-0.1.109}/themes/blog/templates/post.html +0 -0
  186. {focomy-0.1.108 → focomy-0.1.109}/themes/blog/theme.yaml +0 -0
  187. {focomy-0.1.108 → focomy-0.1.109}/themes/corporate/templates/base.html +0 -0
  188. {focomy-0.1.108 → focomy-0.1.109}/themes/corporate/templates/home.html +0 -0
  189. {focomy-0.1.108 → focomy-0.1.109}/themes/corporate/templates/page.html +0 -0
  190. {focomy-0.1.108 → focomy-0.1.109}/themes/corporate/theme.yaml +0 -0
  191. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/404.html +0 -0
  192. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/500.html +0 -0
  193. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/archive.html +0 -0
  194. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/base.html +0 -0
  195. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/category.html +0 -0
  196. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/channel.html +0 -0
  197. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/form.html +0 -0
  198. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/form_success.html +0 -0
  199. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/home.html +0 -0
  200. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/page.html +0 -0
  201. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/post.html +0 -0
  202. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/search.html +0 -0
  203. {focomy-0.1.108 → focomy-0.1.109}/themes/default/templates/series.html +0 -0
  204. {focomy-0.1.108 → focomy-0.1.109}/themes/default/theme.yaml +0 -0
  205. {focomy-0.1.108 → focomy-0.1.109}/themes/minimal/templates/base.html +0 -0
  206. {focomy-0.1.108 → focomy-0.1.109}/themes/minimal/templates/home.html +0 -0
  207. {focomy-0.1.108 → focomy-0.1.109}/themes/minimal/templates/page.html +0 -0
  208. {focomy-0.1.108 → focomy-0.1.109}/themes/minimal/templates/post.html +0 -0
  209. {focomy-0.1.108 → focomy-0.1.109}/themes/minimal/theme.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: focomy
3
- Version: 0.1.108
3
+ Version: 0.1.109
4
4
  Summary: The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system
5
5
  Project-URL: Homepage, https://github.com/focomy/focomy
6
6
  Project-URL: Documentation, https://focomy.dev/docs
@@ -48,7 +48,8 @@ def require_feature(feature: str) -> None:
48
48
  async def is_feature_enabled_async(feature: str, db) -> bool:
49
49
  """Check if a feature is enabled (async version, DB-first).
50
50
 
51
- Priority: DB settings > config.yaml > False
51
+ Priority: DB settings > code default (True)
52
+ Note: config.yaml is ignored for features to allow DB override without restart.
52
53
 
53
54
  Args:
54
55
  feature: Feature name (e.g., 'form', 'comment')
@@ -57,10 +58,11 @@ async def is_feature_enabled_async(feature: str, db) -> bool:
57
58
  Returns:
58
59
  True if feature is enabled, False otherwise
59
60
  """
60
- from .services.settings import SettingsService
61
+ from .services.settings import SettingsService, DEFAULT_SETTINGS
61
62
 
62
63
  settings_svc = SettingsService(db)
63
- db_value = await settings_svc.get(f"features.{feature}")
64
+ # Check DB directly (not through get() which includes config.yaml)
65
+ db_value = await settings_svc._get_db_value(f"features.{feature}")
64
66
 
65
67
  if db_value is not None:
66
68
  # DB value exists, use it
@@ -70,8 +72,8 @@ async def is_feature_enabled_async(feature: str, db) -> bool:
70
72
  return db_value.lower() in ("true", "1", "yes")
71
73
  return bool(db_value)
72
74
 
73
- # Fallback to config.yaml
74
- return is_feature_enabled(feature)
75
+ # Fallback to code default (ignore config.yaml)
76
+ return DEFAULT_SETTINGS.get("features", {}).get(feature, True)
75
77
 
76
78
 
77
79
  async def require_feature_async(feature: str, db) -> None:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "focomy"
7
- version = "0.1.108"
7
+ version = "0.1.109"
8
8
  description = "The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system"
9
9
  readme = "README.md"
10
10
  license = "MIT"
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