kader 2.7.2__tar.gz → 2.7.3__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.
- {kader-2.7.2 → kader-2.7.3}/PKG-INFO +1 -1
- {kader-2.7.2 → kader-2.7.3}/cli/app.py +12 -123
- {kader-2.7.2 → kader-2.7.3}/pyproject.toml +1 -1
- {kader-2.7.2 → kader-2.7.3}/uv.lock +1 -1
- {kader-2.7.2 → kader-2.7.3}/.github/workflows/ci.yml +0 -0
- {kader-2.7.2 → kader-2.7.3}/.github/workflows/pages.yml +0 -0
- {kader-2.7.2 → kader-2.7.3}/.github/workflows/release.yml +0 -0
- {kader-2.7.2 → kader-2.7.3}/.gitignore +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/KADER.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/commands/lint-test/CONTENT.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/skills/contributing-to-kader/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/skills/contributing-to-kader/assets/contributor_checklist.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/skills/contributing-to-kader/references/kader_agent_instructions.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.kader/skills/contributing-to-kader/scripts/dev_helper.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/.opencode/skills/contributing-to-kader/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.opencode/skills/contributing-to-kader/assets/contributor_checklist.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.opencode/skills/contributing-to-kader/references/kader_agent_instructions.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/.opencode/skills/contributing-to-kader/scripts/dev_helper.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/.python-version +0 -0
- {kader-2.7.2 → kader-2.7.3}/AGENTS.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/CONTRIBUTING.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/LICENSE +0 -0
- {kader-2.7.2 → kader-2.7.3}/README.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/cli_integration.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/cli_message_flow.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/cli_tool_confirmation.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/memory_flow.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/planner_executor_sequence.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/architecture/planner_executor_workflow.mmd +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/code.html +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/code1.html +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/code2.html +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/code3.html +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/screen.png +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/screen1.png +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/screen2.png +0 -0
- {kader-2.7.2 → kader-2.7.3}/assets/design/v2/screen3.png +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/README.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/__main__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/commands/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/commands/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/commands/initialize.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/llm_factory.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/cli/utils.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/assets/imgs/kader-cli.png +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/cli/index.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/configuration.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/core-framework/agents.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/core-framework/index.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/core-framework/memory.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/core-framework/providers.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/core-framework/tools.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/guide.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/docs/index.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/.gitignore +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/README.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/anthropic_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/google_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/memory_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/mistral_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/ollama_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/openai_compatible_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/planner_executor_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/planning_agent_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/python_developer/main.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/python_developer/template.yaml +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/react_agent_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/simple_agent.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/hello_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/react_agent.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/calculator/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/calculator/scripts/calculate.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/github/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/hello/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/hello/scripts/hello.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/joke/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/skills/skills/visualization/SKILL.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/todo_agent/main.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/examples/tools_example.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/README.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/agent/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/agent/agents.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/agent/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/agent/logger.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/config.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/compression.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/conversation.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/session.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/state.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/summarization.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/memory/types.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/agent_prompts.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/cli_prompts.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/command_agent.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/executor_agent.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/init_command_prompt.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/kader_planner.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/planning_agent.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/prompts/templates/react_agent.j2 +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/anthropic.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/google.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/mistral.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/mock.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/ollama.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/providers/openai_compatible.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/README.md +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/agent.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/commands.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/exec_commands.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/filesys.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/filesystem.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/protocol.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/rag.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/skills.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/todo.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/utils.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/tools/web.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/utils/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/utils/checkpointer.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/utils/context_aggregator.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/utils/ignore.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/workflows/__init__.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/workflows/base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/kader/workflows/planner_executor.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/mkdocs.yml +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/conftest.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_anthropic_provider.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_google.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_mistral_provider.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_mock.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_ollama.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_openai_compatible_provider.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/providers/test_providers_base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_agent_logger.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_agent_logger_integration.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_base_agent.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_file_memory.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_hierarchical_memory.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/test_todo_tool.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_agent_tool.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_agent_tool_persistence.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_agent_tool_skills.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_exec_commands.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_filesys_tools.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_filesystem_tools.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_rag.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_skills.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_tools_base.py +0 -0
- {kader-2.7.2 → kader-2.7.3}/tests/tools/test_web.py +0 -0
|
@@ -612,139 +612,28 @@ class KaderApp:
|
|
|
612
612
|
self.console.print(f"\n [kader.orange]\\[>] Executing:[/kader.orange] `{cmd}`")
|
|
613
613
|
|
|
614
614
|
try:
|
|
615
|
-
output = await self.
|
|
615
|
+
output = await self._run_terminal_command_direct(cmd)
|
|
616
616
|
|
|
617
617
|
if not output:
|
|
618
|
-
|
|
619
|
-
|
|
618
|
+
output = "Command executed successfully with no output."
|
|
619
|
+
|
|
620
|
+
self.console.print()
|
|
621
|
+
self.console.print(
|
|
622
|
+
Panel(
|
|
623
|
+
output,
|
|
624
|
+
title="[kader.orange]Terminal Output[/kader.orange]",
|
|
625
|
+
border_style="dark_orange",
|
|
626
|
+
padding=(0, 1),
|
|
620
627
|
)
|
|
628
|
+
)
|
|
621
629
|
|
|
622
630
|
except Exception as e:
|
|
623
631
|
self.console.print(
|
|
624
632
|
rf" [kader.red]\[-][/kader.red] Error executing command: {e}"
|
|
625
633
|
)
|
|
626
634
|
|
|
627
|
-
async def _run_terminal_command_pty(self, command: str) -> str:
|
|
628
|
-
"""Run a terminal command using PTY for interactive support."""
|
|
629
|
-
import platform
|
|
630
|
-
|
|
631
|
-
system = platform.system().lower()
|
|
632
|
-
|
|
633
|
-
if system == "windows":
|
|
634
|
-
return await self._run_terminal_command_winpty(command)
|
|
635
|
-
else:
|
|
636
|
-
return await self._run_terminal_command_unix_pty(command)
|
|
637
|
-
|
|
638
|
-
async def _run_terminal_command_unix_pty(self, command: str) -> str:
|
|
639
|
-
"""Run a terminal command using PTY on Unix."""
|
|
640
|
-
import os
|
|
641
|
-
import pty
|
|
642
|
-
|
|
643
|
-
master_fd, slave_fd = pty.openpty()
|
|
644
|
-
|
|
645
|
-
env = os.environ.copy()
|
|
646
|
-
env["TERM"] = "xterm-256color"
|
|
647
|
-
|
|
648
|
-
shell = "/bin/bash"
|
|
649
|
-
|
|
650
|
-
try:
|
|
651
|
-
process = await asyncio.create_subprocess_exec(
|
|
652
|
-
shell,
|
|
653
|
-
"-c",
|
|
654
|
-
command,
|
|
655
|
-
stdin=slave_fd,
|
|
656
|
-
stdout=asyncio.subprocess.PIPE,
|
|
657
|
-
stderr=asyncio.subprocess.STDOUT,
|
|
658
|
-
env=env,
|
|
659
|
-
)
|
|
660
|
-
finally:
|
|
661
|
-
os.close(slave_fd)
|
|
662
|
-
os.close(master_fd)
|
|
663
|
-
|
|
664
|
-
output_parts = []
|
|
665
|
-
stdout = process.stdout
|
|
666
|
-
assert stdout is not None
|
|
667
|
-
|
|
668
|
-
while True:
|
|
669
|
-
line = await asyncio.wait_for(stdout.readline(), timeout=0.1)
|
|
670
|
-
if line:
|
|
671
|
-
text = line.decode("utf-8", errors="replace")
|
|
672
|
-
output_parts.append(text)
|
|
673
|
-
self.console.print(text, end="")
|
|
674
|
-
elif process.returncode is not None:
|
|
675
|
-
break
|
|
676
|
-
|
|
677
|
-
await process.wait()
|
|
678
|
-
return "".join(output_parts).strip()
|
|
679
|
-
|
|
680
|
-
async def _run_terminal_command_winpty(self, command: str) -> str:
|
|
681
|
-
"""Run a terminal command using pywinpty on Windows."""
|
|
682
|
-
|
|
683
|
-
try:
|
|
684
|
-
import pywinpty
|
|
685
|
-
except ImportError:
|
|
686
|
-
return await self._run_terminal_command_direct(command)
|
|
687
|
-
|
|
688
|
-
command_lower = command.lower().strip()
|
|
689
|
-
is_powershell = command_lower.startswith("pwsh") or command_lower.startswith(
|
|
690
|
-
"powershell"
|
|
691
|
-
)
|
|
692
|
-
|
|
693
|
-
if is_powershell:
|
|
694
|
-
shell = "powershell.exe"
|
|
695
|
-
shell_args = ["-Command", command]
|
|
696
|
-
else:
|
|
697
|
-
shell = "cmd.exe"
|
|
698
|
-
shell_args = ["/c", command]
|
|
699
|
-
|
|
700
|
-
try:
|
|
701
|
-
pty_obj = pywinpty.PTY(width=80, height=24, visible=False)
|
|
702
|
-
except Exception:
|
|
703
|
-
return await self._run_terminal_command_direct(command)
|
|
704
|
-
|
|
705
|
-
try:
|
|
706
|
-
process = pty_obj.spawn(shell, shell_args)
|
|
707
|
-
except Exception:
|
|
708
|
-
return await self._run_terminal_command_direct(command)
|
|
709
|
-
|
|
710
|
-
output_parts = []
|
|
711
|
-
max_attempts = 100
|
|
712
|
-
attempts = 0
|
|
713
|
-
|
|
714
|
-
while attempts < max_attempts:
|
|
715
|
-
try:
|
|
716
|
-
data = process.read(blocking=False)
|
|
717
|
-
if data:
|
|
718
|
-
output_parts.append(data)
|
|
719
|
-
self.console.print(data, end="")
|
|
720
|
-
attempts = 0
|
|
721
|
-
except Exception:
|
|
722
|
-
pass
|
|
723
|
-
|
|
724
|
-
if not process.isalive():
|
|
725
|
-
await asyncio.sleep(0.1)
|
|
726
|
-
try:
|
|
727
|
-
data = process.read(blocking=False)
|
|
728
|
-
if data:
|
|
729
|
-
output_parts.append(data)
|
|
730
|
-
self.console.print(data, end="")
|
|
731
|
-
except Exception:
|
|
732
|
-
pass
|
|
733
|
-
if not process.isalive():
|
|
734
|
-
break
|
|
735
|
-
|
|
736
|
-
attempts += 1
|
|
737
|
-
await asyncio.sleep(0.05)
|
|
738
|
-
|
|
739
|
-
result = "".join(output_parts).strip()
|
|
740
|
-
|
|
741
|
-
if not result:
|
|
742
|
-
return await self._run_terminal_command_direct(command)
|
|
743
|
-
|
|
744
|
-
return result
|
|
745
|
-
|
|
746
635
|
async def _run_terminal_command_direct(self, command: str) -> str:
|
|
747
|
-
"""Run a terminal command directly without PTY
|
|
636
|
+
"""Run a terminal command directly without PTY."""
|
|
748
637
|
|
|
749
638
|
try:
|
|
750
639
|
process = await asyncio.create_subprocess_shell(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kader-2.7.2 → kader-2.7.3}/.kader/skills/contributing-to-kader/assets/contributor_checklist.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kader-2.7.2 → kader-2.7.3}/.opencode/skills/contributing-to-kader/assets/contributor_checklist.md
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|