hedit 0.7.6.dev3__tar.gz → 0.7.6.dev5__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.
- {hedit-0.7.6.dev3/hedit.egg-info → hedit-0.7.6.dev5}/PKG-INFO +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5/hedit.egg-info}/PKG-INFO +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/pyproject.toml +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/api/main.py +13 -13
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/api/models.py +2 -2
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/config.py +5 -5
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/local_executor.py +4 -5
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/main.py +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/scripts/process_feedback.py +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/litellm_llm.py +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/openrouter_llm.py +2 -2
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/version.py +1 -1
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_integration_openrouter.py +2 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/LICENSE +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/PKG_README.md +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/README.md +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/hedit.egg-info/SOURCES.txt +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/hedit.egg-info/dependency_links.txt +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/hedit.egg-info/entry_points.txt +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/hedit.egg-info/requires.txt +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/hedit.egg-info/top_level.txt +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/setup.cfg +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/annotation_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/assessment_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/evaluation_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/feedback_summarizer.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/feedback_triage_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/state.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/validation_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/vision_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/agents/workflow.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/api/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/api/security.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/api_executor.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/client.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/commands/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/executor.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/cli/output.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/scripts/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/telemetry/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/telemetry/collector.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/telemetry/schema.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/telemetry/storage.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/error_remediation.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/github_client.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/hed_comprehensive_guide.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/hed_rules.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/image_processing.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/json_schema_loader.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/utils/schema_loader.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/validation/__init__.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/validation/hed_lsp.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/src/validation/hed_validator.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_annotation_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_api_endpoints.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_cli_client.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_cli_config.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_cli_integration.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_cli_main.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_comprehensive_guide.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_error_remediation.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_feedback_integration.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_feedback_triage.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_github_client.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_hed_lsp.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_json_schema_loader.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_keyword_extraction.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_litellm_llm.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_no_extend_propagation.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_openrouter_llm.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_schema_loader.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_security.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_state.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_telemetry.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_validation.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_validation_agent.py +0 -0
- {hedit-0.7.6.dev3 → hedit-0.7.6.dev5}/tests/test_version.py +0 -0
|
@@ -113,8 +113,8 @@ def create_openrouter_workflow(
|
|
|
113
113
|
# Apply defaults from environment
|
|
114
114
|
default_annotation_model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
115
115
|
default_annotation_provider = os.getenv("ANNOTATION_PROVIDER", "anthropic")
|
|
116
|
-
default_eval_model = os.getenv("EVALUATION_MODEL", "
|
|
117
|
-
default_eval_provider = os.getenv("EVALUATION_PROVIDER"
|
|
116
|
+
default_eval_model = os.getenv("EVALUATION_MODEL", "qwen/qwen3.5-397b-a17b")
|
|
117
|
+
default_eval_provider = os.getenv("EVALUATION_PROVIDER")
|
|
118
118
|
|
|
119
119
|
# Resolve final values: parameter > env var > default
|
|
120
120
|
actual_annotation_model = get_model_name(annotation_model or default_annotation_model)
|
|
@@ -240,8 +240,8 @@ def create_byok_vision_agent(
|
|
|
240
240
|
Configured VisionAgent using the user's key and model settings
|
|
241
241
|
"""
|
|
242
242
|
# Use user-provided settings or fall back to server defaults
|
|
243
|
-
default_vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-
|
|
244
|
-
default_vision_provider = os.getenv("VISION_PROVIDER", "
|
|
243
|
+
default_vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-32b-instruct")
|
|
244
|
+
default_vision_provider = os.getenv("VISION_PROVIDER", "novita")
|
|
245
245
|
|
|
246
246
|
actual_model = vision_model if vision_model else default_vision_model
|
|
247
247
|
actual_temperature = temperature if temperature is not None else 0.3
|
|
@@ -354,7 +354,7 @@ async def lifespan(app: FastAPI):
|
|
|
354
354
|
# Log configuration (env vars are read by create_openrouter_workflow)
|
|
355
355
|
print("Using OpenRouter with models:")
|
|
356
356
|
print(f" Annotation: {os.getenv('ANNOTATION_MODEL', 'anthropic/claude-haiku-4.5')}")
|
|
357
|
-
print(f" Evaluation: {os.getenv('EVALUATION_MODEL', 'qwen/qwen3-
|
|
357
|
+
print(f" Evaluation: {os.getenv('EVALUATION_MODEL', 'qwen/qwen3.5-397b-a17b')}")
|
|
358
358
|
print(f" Provider (annotation): {os.getenv('ANNOTATION_PROVIDER', 'anthropic')}")
|
|
359
359
|
print(f" Provider (eval): {os.getenv('EVALUATION_PROVIDER', '') or '(auto-routed)'}")
|
|
360
360
|
|
|
@@ -395,8 +395,8 @@ async def lifespan(app: FastAPI):
|
|
|
395
395
|
|
|
396
396
|
# Initialize vision agent (only for OpenRouter)
|
|
397
397
|
if llm_provider == "openrouter":
|
|
398
|
-
vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-
|
|
399
|
-
vision_provider = os.getenv("VISION_PROVIDER", "
|
|
398
|
+
vision_model = os.getenv("VISION_MODEL", "qwen/qwen3-vl-32b-instruct")
|
|
399
|
+
vision_provider = os.getenv("VISION_PROVIDER", "novita")
|
|
400
400
|
|
|
401
401
|
print(f"Initializing vision model: {vision_model} (provider: {vision_provider})")
|
|
402
402
|
|
|
@@ -666,7 +666,7 @@ async def annotate(
|
|
|
666
666
|
model_name = (
|
|
667
667
|
request.model
|
|
668
668
|
or req.headers.get("x-openrouter-model")
|
|
669
|
-
or os.getenv("ANNOTATION_MODEL", "
|
|
669
|
+
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
670
670
|
)
|
|
671
671
|
temperature = request.temperature
|
|
672
672
|
if temperature is None:
|
|
@@ -815,7 +815,7 @@ async def annotate_from_image(
|
|
|
815
815
|
validator_path=_byok_config.get("validator_path"),
|
|
816
816
|
use_js_validator=_byok_config.get("use_js_validator", True),
|
|
817
817
|
)
|
|
818
|
-
# Note: Vision agent uses its own provider (
|
|
818
|
+
# Note: Vision agent uses its own provider (novita for qwen-vl)
|
|
819
819
|
# Only pass provider_override to vision if a custom vision_model was specified
|
|
820
820
|
vision_provider = provider_override if vision_model_override else None
|
|
821
821
|
active_vision_agent = create_byok_vision_agent(
|
|
@@ -877,7 +877,7 @@ async def annotate_from_image(
|
|
|
877
877
|
model_name = (
|
|
878
878
|
request.model
|
|
879
879
|
or req.headers.get("x-openrouter-model")
|
|
880
|
-
or os.getenv("ANNOTATION_MODEL", "
|
|
880
|
+
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
881
881
|
)
|
|
882
882
|
temperature = request.temperature
|
|
883
883
|
if temperature is None:
|
|
@@ -967,7 +967,7 @@ async def _collect_stream_telemetry(
|
|
|
967
967
|
model_name = (
|
|
968
968
|
request.model
|
|
969
969
|
or req.headers.get("x-openrouter-model")
|
|
970
|
-
or os.getenv("ANNOTATION_MODEL", "
|
|
970
|
+
or os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
971
971
|
)
|
|
972
972
|
temperature = request.temperature
|
|
973
973
|
if temperature is None:
|
|
@@ -1386,7 +1386,7 @@ async def annotate_from_image_stream(
|
|
|
1386
1386
|
validator_path=_byok_config.get("validator_path"),
|
|
1387
1387
|
use_js_validator=_byok_config.get("use_js_validator", True),
|
|
1388
1388
|
)
|
|
1389
|
-
# Note: Vision agent uses its own provider (
|
|
1389
|
+
# Note: Vision agent uses its own provider (novita for qwen-vl)
|
|
1390
1390
|
# Only pass provider_override to vision if a custom vision_model was specified
|
|
1391
1391
|
vision_provider = provider_override if vision_model_override else None
|
|
1392
1392
|
active_vision_agent = create_byok_vision_agent(
|
|
@@ -1785,7 +1785,7 @@ async def submit_feedback(request: FeedbackRequest) -> FeedbackResponse:
|
|
|
1785
1785
|
)
|
|
1786
1786
|
|
|
1787
1787
|
# Create LLM for triage
|
|
1788
|
-
model = os.getenv("ANNOTATION_MODEL", "
|
|
1788
|
+
model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
1789
1789
|
provider = os.getenv("LLM_PROVIDER_PREFERENCE", "")
|
|
1790
1790
|
llm = create_openrouter_llm(
|
|
1791
1791
|
model=model,
|
|
@@ -41,7 +41,7 @@ class AnnotationRequest(BaseModel):
|
|
|
41
41
|
model: str | None = Field(
|
|
42
42
|
default=None,
|
|
43
43
|
description="Override model for annotation (BYOK mode only, e.g., 'openai/gpt-4o')",
|
|
44
|
-
examples=["
|
|
44
|
+
examples=["anthropic/claude-haiku-4.5", "qwen/qwen3.5-122b-a10b", "qwen/qwen3.5-397b-a17b"],
|
|
45
45
|
)
|
|
46
46
|
provider: str | None = Field(
|
|
47
47
|
default=None,
|
|
@@ -177,7 +177,7 @@ class ImageAnnotationRequest(BaseModel):
|
|
|
177
177
|
vision_model: str | None = Field(
|
|
178
178
|
default=None,
|
|
179
179
|
description="Override vision model for image description (BYOK mode only)",
|
|
180
|
-
examples=["qwen/qwen3-vl-
|
|
180
|
+
examples=["qwen/qwen3-vl-32b-instruct", "qwen/qwen3-vl-235b-a22b-instruct"],
|
|
181
181
|
)
|
|
182
182
|
provider: str | None = Field(
|
|
183
183
|
default=None,
|
|
@@ -41,13 +41,13 @@ DEFAULT_DEV_API_URL = "https://api.annotation.garden/hedit-dev"
|
|
|
41
41
|
DEFAULT_MODEL = "anthropic/claude-haiku-4.5"
|
|
42
42
|
DEFAULT_PROVIDER = "anthropic"
|
|
43
43
|
|
|
44
|
-
# Evaluation model: Qwen3-
|
|
45
|
-
DEFAULT_EVAL_MODEL = "qwen/qwen3-
|
|
44
|
+
# Evaluation model: Qwen3.5-397B MoE (most capable Qwen, high throughput)
|
|
45
|
+
DEFAULT_EVAL_MODEL = "qwen/qwen3.5-397b-a17b"
|
|
46
46
|
DEFAULT_EVAL_PROVIDER = None
|
|
47
47
|
|
|
48
|
-
# Vision model: Qwen3-VL for image descriptions
|
|
49
|
-
DEFAULT_VISION_MODEL = "qwen/qwen3-vl-
|
|
50
|
-
DEFAULT_VISION_PROVIDER =
|
|
48
|
+
# Vision model: Qwen3-VL-32B for image descriptions
|
|
49
|
+
DEFAULT_VISION_MODEL = "qwen/qwen3-vl-32b-instruct"
|
|
50
|
+
DEFAULT_VISION_PROVIDER = None
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
class CredentialsConfig(BaseModel):
|
|
@@ -77,11 +77,10 @@ class LocalExecutionBackend(ExecutionBackend):
|
|
|
77
77
|
|
|
78
78
|
Args:
|
|
79
79
|
api_key: OpenRouter API key (required for LLM operations, optional for health/validate)
|
|
80
|
-
model: Model for text annotation (default:
|
|
81
|
-
eval_model: Model for evaluation/assessment agents (default:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
vision_model: Model for image annotation (default: qwen/qwen3-vl-30b-a3b-instruct)
|
|
80
|
+
model: Model for text annotation (default: anthropic/claude-haiku-4.5)
|
|
81
|
+
eval_model: Model for evaluation/assessment agents (default: qwen/qwen3.5-397b-a17b)
|
|
82
|
+
eval_provider: Provider for evaluation model (None = OpenRouter auto-routes)
|
|
83
|
+
vision_model: Model for image annotation (default: qwen/qwen3-vl-32b-instruct)
|
|
85
84
|
provider: Provider preference (cleared if custom model specified)
|
|
86
85
|
temperature: LLM temperature (0.0-1.0)
|
|
87
86
|
schema_dir: Optional directory with JSON schemas (None = fetch from GitHub)
|
|
@@ -56,7 +56,7 @@ async def process_feedback_file(
|
|
|
56
56
|
sys.exit(1)
|
|
57
57
|
|
|
58
58
|
# Get model configuration from environment
|
|
59
|
-
model = os.getenv("ANNOTATION_MODEL", "
|
|
59
|
+
model = os.getenv("ANNOTATION_MODEL", "anthropic/claude-haiku-4.5")
|
|
60
60
|
provider = os.getenv("LLM_PROVIDER_PREFERENCE", "")
|
|
61
61
|
|
|
62
62
|
# Create LLM
|
|
@@ -29,7 +29,7 @@ from langchain_core.messages import BaseMessage
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def create_litellm_openrouter(
|
|
32
|
-
model: str = "
|
|
32
|
+
model: str = "anthropic/claude-haiku-4.5",
|
|
33
33
|
api_key: str | None = None,
|
|
34
34
|
temperature: float = 0.1,
|
|
35
35
|
max_tokens: int | None = None,
|
|
@@ -13,7 +13,7 @@ from langchain_core.messages import BaseMessage
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def create_openrouter_llm(
|
|
16
|
-
model: str = "
|
|
16
|
+
model: str = "anthropic/claude-haiku-4.5",
|
|
17
17
|
api_key: str | None = None,
|
|
18
18
|
temperature: float = 0.1,
|
|
19
19
|
max_tokens: int | None = None,
|
|
@@ -28,7 +28,7 @@ def create_openrouter_llm(
|
|
|
28
28
|
to include cache_control markers for 90% cost reduction on cache hits.
|
|
29
29
|
|
|
30
30
|
Args:
|
|
31
|
-
model: Model identifier (e.g., "
|
|
31
|
+
model: Model identifier (e.g., "anthropic/claude-haiku-4.5", "qwen/qwen3.5-397b-a17b")
|
|
32
32
|
api_key: OpenRouter API key (defaults to OPENROUTER_API_KEY env var)
|
|
33
33
|
temperature: Sampling temperature (0.0-1.0)
|
|
34
34
|
max_tokens: Maximum tokens to generate
|
|
@@ -451,7 +451,9 @@ class TestAPIEndpointIntegration:
|
|
|
451
451
|
os.environ["LLM_PROVIDER"] = "openrouter"
|
|
452
452
|
os.environ["OPENROUTER_API_KEY"] = test_api_key
|
|
453
453
|
os.environ["ANNOTATION_MODEL"] = TEST_MODEL
|
|
454
|
+
os.environ["ANNOTATION_PROVIDER"] = TEST_PROVIDER or ""
|
|
454
455
|
os.environ["EVALUATION_MODEL"] = os.getenv("EVALUATION_MODEL", TEST_MODEL)
|
|
456
|
+
os.environ["EVALUATION_PROVIDER"] = os.getenv("EVALUATION_PROVIDER", TEST_PROVIDER or "")
|
|
455
457
|
os.environ["ASSESSMENT_MODEL"] = os.getenv("ASSESSMENT_MODEL", TEST_MODEL)
|
|
456
458
|
os.environ["FEEDBACK_MODEL"] = os.getenv("FEEDBACK_MODEL", TEST_MODEL)
|
|
457
459
|
if TEST_PROVIDER:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|