jerewy commited on
Commit
e6850cb
·
verified ·
1 Parent(s): 9ab3339

Upload 69 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +34 -0
  2. Dockerfile +29 -0
  3. app/__pycache__/config.cpython-312.pyc +0 -0
  4. app/__pycache__/main.cpython-312.pyc +0 -0
  5. app/__pycache__/utils.cpython-312.pyc +0 -0
  6. app/config.py +16 -0
  7. app/main.py +80 -0
  8. app/static/uploads/08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg +3 -0
  9. app/static/uploads/32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg +3 -0
  10. app/static/uploads/37bce10e-8365-498f-a7c7-c0aaad59b555.jpg +3 -0
  11. app/static/uploads/392eb1ff-b670-4b52-b290-1416ec9db1ac.jpeg +0 -0
  12. app/static/uploads/39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg +3 -0
  13. app/static/uploads/52cc2c38-4e5b-404b-a2c1-d03cc0dd2c15.jpeg +0 -0
  14. app/static/uploads/5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg +3 -0
  15. app/static/uploads/5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg +3 -0
  16. app/static/uploads/6023b93c-01de-48e9-9925-60b4b38b6f3d.jpeg +0 -0
  17. app/static/uploads/649c0e73-e162-4189-b46b-6c92d168f7e4.jpg +3 -0
  18. app/static/uploads/64a2a0b3-b345-49a4-9947-b1e3e6b49168.jpeg +0 -0
  19. app/static/uploads/6c32edbf-65da-4d88-8f33-4146d2b17951.jpg +3 -0
  20. app/static/uploads/72085636-9c2c-46d3-8dc8-d9e1a09465ee.jpeg +0 -0
  21. app/static/uploads/7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg +3 -0
  22. app/static/uploads/747394f9-717d-4523-ac6b-911c6a4fff60.jpg +3 -0
  23. app/static/uploads/75ff8c1a-c4c9-4f3e-a125-6e9a59494faa.jpg +3 -0
  24. app/static/uploads/8a2f12d7-795a-479e-914c-c9ffb31f75b6.jpg +3 -0
  25. app/static/uploads/95be9105-ccbd-4580-9f8f-5ccd32700d1a.jpg +3 -0
  26. app/static/uploads/b1507ef3-0d2c-429a-a906-8b84acbfe59a.jpeg +0 -0
  27. app/static/uploads/b3eb6e20-1637-4ae8-87ad-55f09ceb3f80.jpg +3 -0
  28. app/static/uploads/babb35fa-dc86-4853-ad2e-5020cfb777a0.jpeg +0 -0
  29. app/static/uploads/c919d326-ca13-4105-a37d-cf61354f990a.jpg +3 -0
  30. app/static/uploads/d1955d96-b974-44b0-a109-cb061564c33a.jpg +3 -0
  31. app/static/uploads/d5c76281-801c-4b66-8456-aa2d5f9297f7.jpeg +0 -0
  32. app/static/uploads/e94a2d38-4a59-4f7e-b769-ba2e792c959d.jpg +3 -0
  33. app/static/uploads/f12c012c-415e-40d4-9382-03da0fbbf947.jpeg +0 -0
  34. app/static/uploads/f6e0d7d7-9f38-4d6b-a95a-88be5ad485dd.jpeg +0 -0
  35. app/static/uploads/f8384f65-5d94-40ea-966f-fd8791b510a5.jpeg +0 -0
  36. app/static/uploads/f996b653-16c6-4bd3-9e85-24db2179b522.jpeg +0 -0
  37. app/static/uploads/processed_08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg +3 -0
  38. app/static/uploads/processed_32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg +3 -0
  39. app/static/uploads/processed_37bce10e-8365-498f-a7c7-c0aaad59b555.jpg +3 -0
  40. app/static/uploads/processed_392eb1ff-b670-4b52-b290-1416ec9db1ac.jpeg +0 -0
  41. app/static/uploads/processed_39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg +3 -0
  42. app/static/uploads/processed_52cc2c38-4e5b-404b-a2c1-d03cc0dd2c15.jpeg +0 -0
  43. app/static/uploads/processed_5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg +3 -0
  44. app/static/uploads/processed_5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg +3 -0
  45. app/static/uploads/processed_6023b93c-01de-48e9-9925-60b4b38b6f3d.jpeg +0 -0
  46. app/static/uploads/processed_649c0e73-e162-4189-b46b-6c92d168f7e4.jpg +3 -0
  47. app/static/uploads/processed_64a2a0b3-b345-49a4-9947-b1e3e6b49168.jpeg +0 -0
  48. app/static/uploads/processed_6c32edbf-65da-4d88-8f33-4146d2b17951.jpg +3 -0
  49. app/static/uploads/processed_72085636-9c2c-46d3-8dc8-d9e1a09465ee.jpeg +0 -0
  50. app/static/uploads/processed_7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg +3 -0
.gitattributes CHANGED
@@ -33,3 +33,37 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ app/static/uploads/08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg filter=lfs diff=lfs merge=lfs -text
37
+ app/static/uploads/32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg filter=lfs diff=lfs merge=lfs -text
38
+ app/static/uploads/37bce10e-8365-498f-a7c7-c0aaad59b555.jpg filter=lfs diff=lfs merge=lfs -text
39
+ app/static/uploads/39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg filter=lfs diff=lfs merge=lfs -text
40
+ app/static/uploads/5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg filter=lfs diff=lfs merge=lfs -text
41
+ app/static/uploads/5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg filter=lfs diff=lfs merge=lfs -text
42
+ app/static/uploads/649c0e73-e162-4189-b46b-6c92d168f7e4.jpg filter=lfs diff=lfs merge=lfs -text
43
+ app/static/uploads/6c32edbf-65da-4d88-8f33-4146d2b17951.jpg filter=lfs diff=lfs merge=lfs -text
44
+ app/static/uploads/7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg filter=lfs diff=lfs merge=lfs -text
45
+ app/static/uploads/747394f9-717d-4523-ac6b-911c6a4fff60.jpg filter=lfs diff=lfs merge=lfs -text
46
+ app/static/uploads/75ff8c1a-c4c9-4f3e-a125-6e9a59494faa.jpg filter=lfs diff=lfs merge=lfs -text
47
+ app/static/uploads/8a2f12d7-795a-479e-914c-c9ffb31f75b6.jpg filter=lfs diff=lfs merge=lfs -text
48
+ app/static/uploads/95be9105-ccbd-4580-9f8f-5ccd32700d1a.jpg filter=lfs diff=lfs merge=lfs -text
49
+ app/static/uploads/b3eb6e20-1637-4ae8-87ad-55f09ceb3f80.jpg filter=lfs diff=lfs merge=lfs -text
50
+ app/static/uploads/c919d326-ca13-4105-a37d-cf61354f990a.jpg filter=lfs diff=lfs merge=lfs -text
51
+ app/static/uploads/d1955d96-b974-44b0-a109-cb061564c33a.jpg filter=lfs diff=lfs merge=lfs -text
52
+ app/static/uploads/e94a2d38-4a59-4f7e-b769-ba2e792c959d.jpg filter=lfs diff=lfs merge=lfs -text
53
+ app/static/uploads/processed_08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg filter=lfs diff=lfs merge=lfs -text
54
+ app/static/uploads/processed_32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg filter=lfs diff=lfs merge=lfs -text
55
+ app/static/uploads/processed_37bce10e-8365-498f-a7c7-c0aaad59b555.jpg filter=lfs diff=lfs merge=lfs -text
56
+ app/static/uploads/processed_39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg filter=lfs diff=lfs merge=lfs -text
57
+ app/static/uploads/processed_5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg filter=lfs diff=lfs merge=lfs -text
58
+ app/static/uploads/processed_5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg filter=lfs diff=lfs merge=lfs -text
59
+ app/static/uploads/processed_649c0e73-e162-4189-b46b-6c92d168f7e4.jpg filter=lfs diff=lfs merge=lfs -text
60
+ app/static/uploads/processed_6c32edbf-65da-4d88-8f33-4146d2b17951.jpg filter=lfs diff=lfs merge=lfs -text
61
+ app/static/uploads/processed_7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg filter=lfs diff=lfs merge=lfs -text
62
+ app/static/uploads/processed_747394f9-717d-4523-ac6b-911c6a4fff60.jpg filter=lfs diff=lfs merge=lfs -text
63
+ app/static/uploads/processed_75ff8c1a-c4c9-4f3e-a125-6e9a59494faa.jpg filter=lfs diff=lfs merge=lfs -text
64
+ app/static/uploads/processed_8a2f12d7-795a-479e-914c-c9ffb31f75b6.jpg filter=lfs diff=lfs merge=lfs -text
65
+ app/static/uploads/processed_95be9105-ccbd-4580-9f8f-5ccd32700d1a.jpg filter=lfs diff=lfs merge=lfs -text
66
+ app/static/uploads/processed_b3eb6e20-1637-4ae8-87ad-55f09ceb3f80.jpg filter=lfs diff=lfs merge=lfs -text
67
+ app/static/uploads/processed_c919d326-ca13-4105-a37d-cf61354f990a.jpg filter=lfs diff=lfs merge=lfs -text
68
+ app/static/uploads/processed_d1955d96-b974-44b0-a109-cb061564c33a.jpg filter=lfs diff=lfs merge=lfs -text
69
+ app/static/uploads/processed_e94a2d38-4a59-4f7e-b769-ba2e792c959d.jpg filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 1. Use an official lightweight Python image
2
+ FROM python:3.10-slim
3
+
4
+ # 2. Set the working directory inside the container
5
+ WORKDIR /code
6
+
7
+ # 3. Install system dependencies for OpenCV
8
+ # (Required for cv2 to work on Linux containers)
9
+ RUN apt-get update && apt-get install -y \
10
+ libgl1-mesa-glx \
11
+ libglib2.0-0 \
12
+ && rm -rf /var/lib/apt/lists/*
13
+
14
+ # 4. Copy requirements and install them
15
+ # We rename requirements_deploy.txt to requirements.txt inside the container
16
+ COPY ./requirements_deploy.txt /code/requirements.txt
17
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
18
+
19
+ # 5. Copy your application code
20
+ COPY ./app /code/app
21
+ COPY ./models /code/models
22
+
23
+ # 6. Create a directory for uploads (and set permissions)
24
+ # This is CRITICAL for Hugging Face Spaces to allow file saving
25
+ RUN mkdir -p /code/app/static/uploads && chmod 777 /code/app/static/uploads
26
+
27
+ # 7. Command to run the application
28
+ # Hugging Face expects the app to run on port 7860 by default
29
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]
app/__pycache__/config.cpython-312.pyc ADDED
Binary file (865 Bytes). View file
 
app/__pycache__/main.cpython-312.pyc ADDED
Binary file (4.19 kB). View file
 
app/__pycache__/utils.cpython-312.pyc ADDED
Binary file (6.56 kB). View file
 
app/config.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from pathlib import Path
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+ BASE_DIR = Path(__file__).resolve().parent.parent
8
+ MODEL_PATH = BASE_DIR / "models" / "cardd_yolo11s_640_final.pt"
9
+ UPLOAD_DIR = BASE_DIR / "app" / "static" / "uploads"
10
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
11
+
12
+ # Ensure upload directory exists
13
+ UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
14
+
15
+ if not GROQ_API_KEY:
16
+ print("Warning: GROQ_API_KEY not found in environment variables. Groq features will fail.")
app/main.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request, UploadFile, File, Form, HTTPException
2
+ from fastapi.responses import HTMLResponse, JSONResponse
3
+ from fastapi.staticfiles import StaticFiles
4
+ from fastapi.templating import Jinja2Templates
5
+ from pathlib import Path
6
+ import shutil
7
+ import uuid
8
+ import logging
9
+ import time
10
+ from datetime import datetime
11
+ from .config import UPLOAD_DIR
12
+ from .utils import run_inference, generate_insurance_report
13
+
14
+ # Configure logging
15
+ logging.basicConfig(level=logging.INFO)
16
+ logger = logging.getLogger(__name__)
17
+
18
+ app = FastAPI(title="Car Damage Detection System")
19
+
20
+ # Mount static files
21
+ app.mount("/static", StaticFiles(directory="app/static"), name="static")
22
+
23
+ templates = Jinja2Templates(directory="app/templates")
24
+
25
+ @app.get("/", response_class=HTMLResponse)
26
+ async def read_root(request: Request):
27
+ return templates.TemplateResponse("index.html", {"request": request})
28
+
29
+ @app.post("/analyze")
30
+ async def analyze_image(
31
+ file: UploadFile = File(...),
32
+ make: str = Form(...),
33
+ model: str = Form(...),
34
+ year: str = Form(...)
35
+ ):
36
+ try:
37
+ # Validate file type
38
+ if not file.content_type.startswith("image/"):
39
+ raise HTTPException(status_code=400, detail="File must be an image")
40
+
41
+ # Save uploaded file
42
+ file_extension = Path(file.filename).suffix
43
+ unique_filename = f"{uuid.uuid4()}{file_extension}"
44
+ input_path = UPLOAD_DIR / unique_filename
45
+ output_filename = f"processed_{unique_filename}"
46
+ output_path = UPLOAD_DIR / output_filename
47
+
48
+ logger.info(f"Saving uploaded file to {input_path}")
49
+ with open(input_path, "wb") as buffer:
50
+ shutil.copyfileobj(file.file, buffer)
51
+
52
+ # Run Inference
53
+ logger.info("Running inference...")
54
+ inference_result = run_inference(str(input_path), str(output_path))
55
+
56
+ # Generate Report
57
+ logger.info("Generating report...")
58
+ report = generate_insurance_report(inference_result, make, model, year)
59
+
60
+ # Generate Report ID
61
+ report_id = f"DA-{datetime.now().strftime('%Y%m%d')}-{uuid.uuid4().hex[:4].upper()}"
62
+
63
+ return JSONResponse({
64
+ "status": "success",
65
+ "original_image": f"/static/uploads/{unique_filename}",
66
+ "processed_image": f"/static/uploads/{output_filename}",
67
+ "inference_data": inference_result,
68
+ "report": report,
69
+ "report_meta": {
70
+ "id": report_id,
71
+ "timestamp": datetime.now().strftime("%B %d, %Y, %I:%M %p")
72
+ }
73
+ })
74
+
75
+ except Exception as e:
76
+ logger.error(f"Error processing request: {e}")
77
+ return JSONResponse(
78
+ status_code=500,
79
+ content={"status": "error", "message": str(e)}
80
+ )
app/static/uploads/08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/37bce10e-8365-498f-a7c7-c0aaad59b555.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/392eb1ff-b670-4b52-b290-1416ec9db1ac.jpeg ADDED
app/static/uploads/39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/52cc2c38-4e5b-404b-a2c1-d03cc0dd2c15.jpeg ADDED
app/static/uploads/5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/6023b93c-01de-48e9-9925-60b4b38b6f3d.jpeg ADDED
app/static/uploads/649c0e73-e162-4189-b46b-6c92d168f7e4.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/64a2a0b3-b345-49a4-9947-b1e3e6b49168.jpeg ADDED
app/static/uploads/6c32edbf-65da-4d88-8f33-4146d2b17951.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/72085636-9c2c-46d3-8dc8-d9e1a09465ee.jpeg ADDED
app/static/uploads/7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/747394f9-717d-4523-ac6b-911c6a4fff60.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/75ff8c1a-c4c9-4f3e-a125-6e9a59494faa.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/8a2f12d7-795a-479e-914c-c9ffb31f75b6.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/95be9105-ccbd-4580-9f8f-5ccd32700d1a.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/b1507ef3-0d2c-429a-a906-8b84acbfe59a.jpeg ADDED
app/static/uploads/b3eb6e20-1637-4ae8-87ad-55f09ceb3f80.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/babb35fa-dc86-4853-ad2e-5020cfb777a0.jpeg ADDED
app/static/uploads/c919d326-ca13-4105-a37d-cf61354f990a.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/d1955d96-b974-44b0-a109-cb061564c33a.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/d5c76281-801c-4b66-8456-aa2d5f9297f7.jpeg ADDED
app/static/uploads/e94a2d38-4a59-4f7e-b769-ba2e792c959d.jpg ADDED

Git LFS Details

  • SHA256: 5f23000e6282fc7b0f823ad10127c16a95243700580f0c656f6494b2804109dc
  • Pointer size: 131 Bytes
  • Size of remote file: 224 kB
app/static/uploads/f12c012c-415e-40d4-9382-03da0fbbf947.jpeg ADDED
app/static/uploads/f6e0d7d7-9f38-4d6b-a95a-88be5ad485dd.jpeg ADDED
app/static/uploads/f8384f65-5d94-40ea-966f-fd8791b510a5.jpeg ADDED
app/static/uploads/f996b653-16c6-4bd3-9e85-24db2179b522.jpeg ADDED
app/static/uploads/processed_08e0a0df-54bf-4f6f-9aef-5656cfdc9d51.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_32360e28-c94c-4a9e-aad2-d3dcf0feed7a.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_37bce10e-8365-498f-a7c7-c0aaad59b555.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_392eb1ff-b670-4b52-b290-1416ec9db1ac.jpeg ADDED
app/static/uploads/processed_39caed1f-845a-4e09-9c62-5d557e3c9eed.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_52cc2c38-4e5b-404b-a2c1-d03cc0dd2c15.jpeg ADDED
app/static/uploads/processed_5468d3cd-0dff-4d17-8f56-0333dbb66a1a.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_5ba05f19-88f1-4780-a465-7cfaa5f68a05.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_6023b93c-01de-48e9-9925-60b4b38b6f3d.jpeg ADDED
app/static/uploads/processed_649c0e73-e162-4189-b46b-6c92d168f7e4.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_64a2a0b3-b345-49a4-9947-b1e3e6b49168.jpeg ADDED
app/static/uploads/processed_6c32edbf-65da-4d88-8f33-4146d2b17951.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB
app/static/uploads/processed_72085636-9c2c-46d3-8dc8-d9e1a09465ee.jpeg ADDED
app/static/uploads/processed_7407f1e8-7f39-4a2b-91be-d5e7d6447bc4.jpg ADDED

Git LFS Details

  • SHA256: 53182854bcd144a9dc07bac2a55db76b19238665a59d8fe29b0d2a0fba53adfd
  • Pointer size: 131 Bytes
  • Size of remote file: 328 kB