openrunner-sdk 2.14.0__tar.gz → 2.14.2__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.
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/PKG-INFO +1 -1
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/__init__.py +1 -1
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/cli.py +9 -3
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/install_commands.py +69 -9
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/session.py +1 -1
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/pyproject.toml +1 -1
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/.gitignore +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/=6.0 +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/=8.1 +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/README.md +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/api_client.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/artifact.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/buffer.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/cache.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/config.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/cost.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/dataset.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/environment.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/evaluation.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/feedback.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/git_info.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/guardrails.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/__init__.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/accelerate.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/anthropic_tracer.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/catboost.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/diffusers.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/fastai.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/forced_alignment.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/gladia.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/gymnasium.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/huggingface.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/hydra.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/ignite.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/jax.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/keras.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/langchain.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/lightgbm.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/lightning.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/llamaindex.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/openai_finetune.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/openai_tracer.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/optuna.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/pytorch.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/sb3.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/sklearn.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/tensorflow.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/trl.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/tts.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/ultralytics.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/voice_agent.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/whisper.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/integration/xgboost.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/launch.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/media.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/migrate.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/model.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/offline.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/pii.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/plot.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/prompt.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/query_api.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/redact.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/run.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/scorers.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/sender.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/settings.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/summary.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/sweep.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/system_metrics.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/tensorboard.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/trace.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/transcript_formatter.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/wal.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/wandb_compat/__init__.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/wandb_compat/_shim.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/openrunner/wer.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/__init__.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/conftest.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_alert.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_aliases.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_api_client.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_artifact.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_buffer.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_cache.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_class_scorers.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_cli.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_config.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_evaluation.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_finish.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_git_info.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_init.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_fastai.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_huggingface.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_keras.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_langchain.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_lightning.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_pytorch.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_sklearn.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_integration_xgboost.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_launch.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_log.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_log_code.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_media.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_migrate.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_offline.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_offline_sync.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_pii.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_plot.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_query_api.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_resume.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_sdk_features.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_sender.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_summary.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_sweep.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_system_metrics.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_trace.py +0 -0
- {openrunner_sdk-2.14.0 → openrunner_sdk-2.14.2}/tests/test_wandb_compat.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrunner-sdk
|
|
3
|
-
Version: 2.14.
|
|
3
|
+
Version: 2.14.2
|
|
4
4
|
Summary: OpenRunner SDK - W&B-compatible ML experiment tracking client
|
|
5
5
|
Project-URL: Homepage, https://github.com/jqueguiner/openrunner
|
|
6
6
|
Project-URL: Repository, https://github.com/jqueguiner/openrunner
|
|
@@ -120,7 +120,7 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
|
|
|
120
120
|
# openrunner.trace.patch_openai() syntax
|
|
121
121
|
trace.patch_openai = _patch_openai # type: ignore[attr-defined]
|
|
122
122
|
|
|
123
|
-
__version__ = "2.14.
|
|
123
|
+
__version__ = "2.14.2"
|
|
124
124
|
|
|
125
125
|
logger = logging.getLogger("openrunner")
|
|
126
126
|
|
|
@@ -119,9 +119,15 @@ def login(host: str | None, expiry: int, manual: bool) -> None:
|
|
|
119
119
|
Use --manual to skip the browser flow and paste an API key directly.
|
|
120
120
|
"""
|
|
121
121
|
settings = _load_settings()
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
)
|
|
122
|
+
if host:
|
|
123
|
+
base_url = host
|
|
124
|
+
elif settings.get("base_url"):
|
|
125
|
+
base_url = settings["base_url"]
|
|
126
|
+
elif sys.stdin.isatty():
|
|
127
|
+
base_url = click.prompt("Server URL")
|
|
128
|
+
else:
|
|
129
|
+
click.echo("Error: No server URL configured. Run with --host or set base_url in ~/.openrunner/settings.json")
|
|
130
|
+
return
|
|
125
131
|
|
|
126
132
|
if manual:
|
|
127
133
|
# Legacy manual flow
|
|
@@ -102,7 +102,7 @@ project_override = '$ARGUMENTS'.strip() or None
|
|
|
102
102
|
run_id = sync_session_to_openrunner(parsed, project=project_override)
|
|
103
103
|
if run_id:
|
|
104
104
|
config = get_session_config()
|
|
105
|
-
base = config.get('base_url', '
|
|
105
|
+
base = config.get('base_url', '')
|
|
106
106
|
print(f'Synced -> {{base}}/runs/{{run_id}}')
|
|
107
107
|
else:
|
|
108
108
|
print('Sync failed. Run: openrunner session setup')
|
|
@@ -134,7 +134,7 @@ from openrunner.api_client import APIClient
|
|
|
134
134
|
settings_file = Path.home() / '.openrunner' / 'settings.json'
|
|
135
135
|
settings = json.loads(settings_file.read_text()) if settings_file.exists() else {{}}
|
|
136
136
|
api_key = os.environ.get('OPENRUNNER_API_KEY') or settings.get('api_key')
|
|
137
|
-
base_url = os.environ.get('OPENRUNNER_BASE_URL') or settings.get('base_url',
|
|
137
|
+
base_url = os.environ.get('OPENRUNNER_BASE_URL') or settings.get('base_url', config.get('base_url', ''))
|
|
138
138
|
project = os.environ.get('OPENRUNNER_SESSION_PROJECT', 'research-sessions')
|
|
139
139
|
|
|
140
140
|
note = '''$ARGUMENTS'''
|
|
@@ -286,21 +286,81 @@ name: {prefix}login
|
|
|
286
286
|
description: Authenticate OpenRunner CLI via browser
|
|
287
287
|
allowed-tools:
|
|
288
288
|
- Bash
|
|
289
|
+
- AskUserQuestion
|
|
289
290
|
---
|
|
290
291
|
|
|
291
|
-
|
|
292
|
+
## Process
|
|
293
|
+
|
|
294
|
+
### Step 1: Check if already logged in
|
|
292
295
|
|
|
293
296
|
```bash
|
|
294
297
|
python3 -c "
|
|
295
|
-
import
|
|
298
|
+
import json
|
|
299
|
+
from pathlib import Path
|
|
300
|
+
f = Path.home() / '.openrunner' / 'settings.json'
|
|
301
|
+
if f.exists():
|
|
302
|
+
s = json.loads(f.read_text())
|
|
303
|
+
if s.get('api_key') and s.get('base_url'):
|
|
304
|
+
print(f'LOGGED_IN base_url={{s[\"base_url\"]}}')
|
|
305
|
+
elif s.get('base_url'):
|
|
306
|
+
print(f'NEED_KEY base_url={{s[\"base_url\"]}}')
|
|
307
|
+
else:
|
|
308
|
+
print('NEED_SETUP')
|
|
309
|
+
else:
|
|
310
|
+
print('NEED_SETUP')
|
|
311
|
+
"
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Step 2: If NEED_SETUP, ask user for their OpenRunner server URL
|
|
315
|
+
|
|
316
|
+
Use AskUserQuestion: "What is your OpenRunner server URL?" (e.g. https://your-instance.example.com)
|
|
317
|
+
|
|
318
|
+
### Step 3: Initiate browser login
|
|
319
|
+
|
|
320
|
+
Replace BASE_URL below with the user's answer (or saved base_url from step 1):
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
python3 -c "
|
|
324
|
+
import sys, os, json, time
|
|
325
|
+
from pathlib import Path
|
|
296
326
|
for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
|
|
297
327
|
if os.path.isdir(p): sys.path.insert(0, p)
|
|
298
|
-
|
|
299
|
-
|
|
328
|
+
import httpx
|
|
329
|
+
|
|
330
|
+
base_url = 'BASE_URL'
|
|
331
|
+
resp = httpx.post(f'{{base_url}}/api/v1/auth/cli/initiate', json={{'expiry_days': 90}}, timeout=10)
|
|
332
|
+
data = resp.json()
|
|
333
|
+
code = data['code']
|
|
334
|
+
auth_url = data['url']
|
|
335
|
+
print(f'Open this URL to approve: {{auth_url}}')
|
|
336
|
+
|
|
337
|
+
import webbrowser
|
|
338
|
+
webbrowser.open(auth_url)
|
|
339
|
+
|
|
340
|
+
print('Waiting for browser approval...')
|
|
341
|
+
for i in range(60):
|
|
342
|
+
time.sleep(2)
|
|
343
|
+
poll = httpx.get(f'{{base_url}}/api/v1/auth/cli/poll/{{code}}', timeout=10)
|
|
344
|
+
pd = poll.json()
|
|
345
|
+
if pd['status'] == 'approved':
|
|
346
|
+
api_key = pd['api_key']
|
|
347
|
+
email = pd.get('email', '')
|
|
348
|
+
sf = Path.home() / '.openrunner' / 'settings.json'
|
|
349
|
+
sf.parent.mkdir(parents=True, exist_ok=True)
|
|
350
|
+
sf.write_text(json.dumps({{'api_key': api_key, 'base_url': base_url}}, indent=2))
|
|
351
|
+
print(f'SUCCESS: Logged in as {{email}}')
|
|
352
|
+
sys.exit(0)
|
|
353
|
+
elif pd['status'] == 'expired':
|
|
354
|
+
print('EXPIRED')
|
|
355
|
+
sys.exit(1)
|
|
356
|
+
print('TIMEOUT')
|
|
357
|
+
sys.exit(1)
|
|
358
|
+
"
|
|
300
359
|
```
|
|
301
360
|
|
|
302
|
-
|
|
303
|
-
|
|
361
|
+
### Step 4: If TIMEOUT or browser didn't work
|
|
362
|
+
|
|
363
|
+
Ask user to either open the URL manually OR paste an API key from Settings page. Save it.
|
|
304
364
|
"""
|
|
305
365
|
|
|
306
366
|
CODE_UPLOAD_CMD = """---
|
|
@@ -365,7 +425,7 @@ if redacted_count > 0:
|
|
|
365
425
|
|
|
366
426
|
import openrunner
|
|
367
427
|
os.environ['OPENRUNNER_API_KEY'] = config['api_key']
|
|
368
|
-
os.environ['OPENRUNNER_BASE_URL'] = config.get('base_url', '
|
|
428
|
+
os.environ['OPENRUNNER_BASE_URL'] = config.get('base_url', '')
|
|
369
429
|
run = openrunner.init(project=project_name, name='code-upload', save_code=False)
|
|
370
430
|
artifact = openrunner.Artifact('source-code', type='code')
|
|
371
431
|
artifact.add_dir(str(tmp_dir))
|
|
@@ -394,7 +394,7 @@ def interactive_setup() -> dict:
|
|
|
394
394
|
|
|
395
395
|
# Step 1: API key
|
|
396
396
|
api_key = config.get("api_key")
|
|
397
|
-
base_url = config.get("base_url", "
|
|
397
|
+
base_url = config.get("base_url", "")
|
|
398
398
|
|
|
399
399
|
if not api_key:
|
|
400
400
|
print("OpenRunner session sync — first-time setup")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|