diff --git a/ENTERPRISE_ROADMAP.md b/ENTERPRISE_ROADMAP.md new file mode 100644 index 0000000..9c50ced --- /dev/null +++ b/ENTERPRISE_ROADMAP.md @@ -0,0 +1,1427 @@ +# Enterprise-Grade PDF Accessibility Checker - Roadmap + +> **Transforming a Proof-of-Concept into Production-Ready Enterprise Software** +> Strategic plan to build a world-class PDF accessibility validation and remediation platform + +--- + +## ๐ŸŽฏ Executive Summary + +### Current State +You have a **functional, AI-powered PDF accessibility checker** with 95% WCAG coverage. It works well for individual use and small-scale deployments, but lacks enterprise features needed for production deployment at scale. + +### Vision +Transform this into an **enterprise-grade SaaS platform** that organizations can deploy to validate and remediate thousands of PDFs, with multi-user support, audit trails, compliance reporting, and advanced automation. + +### Gap Analysis + +| Category | Current State | Enterprise Requirement | Priority | +|----------|---------------|----------------------|----------| +| **Authentication** | None | Multi-user, SSO, RBAC | ๐Ÿ”ด Critical | +| **Data Persistence** | File-based | Database (PostgreSQL/MySQL) | ๐Ÿ”ด Critical | +| **Scalability** | Single server | Horizontal scaling, queue-based | ๐Ÿ”ด Critical | +| **Security** | Basic | Enterprise-grade (encryption, audit logs) | ๐Ÿ”ด Critical | +| **Reporting** | Single check | Historical trends, compliance dashboards | ๐ŸŸ  High | +| **Remediation** | Basic fixes | Advanced AI-powered corrections | ๐ŸŸ  High | +| **Integration** | REST API | Webhooks, SDKs, plugins | ๐ŸŸก Medium | +| **Monitoring** | None | APM, alerting, cost tracking | ๐ŸŸก Medium | +| **Testing** | Manual | Automated test suite (unit, integration, E2E) | ๐ŸŸก Medium | +| **Documentation** | Extensive | API docs, admin guides, user training | ๐ŸŸข Low | + +--- + +## ๐Ÿ“‹ Phase 1: Foundation (Weeks 1-4) + +### Goal: Production-Ready Infrastructure + +#### 1.1 Database Migration ๐Ÿ”ด **CRITICAL** + +**Problem:** File-based storage doesn't scale and lacks querying capabilities. + +**Solution:** Migrate to PostgreSQL with proper schema design. + +**Database Schema:** + +```sql +-- Users and Authentication +CREATE TABLE users ( + id SERIAL PRIMARY KEY, + email VARCHAR(255) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + full_name VARCHAR(255), + organization_id INTEGER REFERENCES organizations(id), + role VARCHAR(50) NOT NULL, -- 'admin', 'user', 'viewer' + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_login TIMESTAMP, + is_active BOOLEAN DEFAULT true +); + +-- Organizations (Multi-tenancy) +CREATE TABLE organizations ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + subdomain VARCHAR(100) UNIQUE, + api_key_hash VARCHAR(255), + plan_tier VARCHAR(50), -- 'free', 'pro', 'enterprise' + monthly_quota INTEGER, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- PDF Documents +CREATE TABLE documents ( + id SERIAL PRIMARY KEY, + user_id INTEGER REFERENCES users(id), + organization_id INTEGER REFERENCES organizations(id), + original_filename VARCHAR(500) NOT NULL, + file_hash VARCHAR(64) UNIQUE, -- SHA-256 for deduplication + file_size BIGINT, + storage_path VARCHAR(1000), + uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + status VARCHAR(50), -- 'uploaded', 'processing', 'completed', 'failed' + is_deleted BOOLEAN DEFAULT false +); + +-- Accessibility Checks +CREATE TABLE accessibility_checks ( + id SERIAL PRIMARY KEY, + document_id INTEGER REFERENCES documents(id), + check_type VARCHAR(50), -- 'full', 'quick', 'custom' + accessibility_score INTEGER, + total_pages INTEGER, + started_at TIMESTAMP, + completed_at TIMESTAMP, + duration_seconds INTEGER, + api_cost_usd DECIMAL(10, 4), + result_json JSONB, -- Full check results + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- Issues (Normalized for querying) +CREATE TABLE issues ( + id SERIAL PRIMARY KEY, + check_id INTEGER REFERENCES accessibility_checks(id), + severity VARCHAR(20), -- 'CRITICAL', 'ERROR', 'WARNING', 'INFO', 'SUCCESS' + category VARCHAR(100), + description TEXT, + page_number INTEGER, + wcag_criterion VARCHAR(20), + recommendation TEXT, + coordinates JSONB, + is_auto_fixable BOOLEAN DEFAULT false, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- Remediation History +CREATE TABLE remediations ( + id SERIAL PRIMARY KEY, + document_id INTEGER REFERENCES documents(id), + original_check_id INTEGER REFERENCES accessibility_checks(id), + remediated_file_path VARCHAR(1000), + fixes_applied JSONB, -- Array of fix types + new_check_id INTEGER REFERENCES accessibility_checks(id), + score_improvement INTEGER, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- Audit Log +CREATE TABLE audit_logs ( + id SERIAL PRIMARY KEY, + user_id INTEGER REFERENCES users(id), + action VARCHAR(100), -- 'upload', 'check', 'remediate', 'download', 'delete' + resource_type VARCHAR(50), + resource_id INTEGER, + ip_address INET, + user_agent TEXT, + metadata JSONB, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- API Usage Tracking +CREATE TABLE api_usage ( + id SERIAL PRIMARY KEY, + organization_id INTEGER REFERENCES organizations(id), + date DATE NOT NULL, + checks_count INTEGER DEFAULT 0, + api_cost_usd DECIMAL(10, 4) DEFAULT 0, + documents_processed INTEGER DEFAULT 0, + UNIQUE(organization_id, date) +); + +-- Indexes for performance +CREATE INDEX idx_documents_user ON documents(user_id); +CREATE INDEX idx_documents_org ON documents(organization_id); +CREATE INDEX idx_documents_hash ON documents(file_hash); +CREATE INDEX idx_checks_document ON accessibility_checks(document_id); +CREATE INDEX idx_issues_check ON issues(check_id); +CREATE INDEX idx_issues_severity ON issues(severity); +CREATE INDEX idx_audit_user ON audit_logs(user_id); +CREATE INDEX idx_audit_created ON audit_logs(created_at); +``` + +**Implementation:** +- Create database migration scripts +- Build ORM layer (SQLAlchemy for Python) +- Update `api.php` to use PDO for database access +- Migrate existing file-based data + +**Estimated Effort:** 1 week + +--- + +#### 1.2 Authentication & Authorization ๐Ÿ”ด **CRITICAL** + +**Problem:** No user management or access control. + +**Solution:** Implement JWT-based authentication with role-based access control (RBAC). + +**Features:** +- User registration and login +- Password hashing (bcrypt) +- JWT token generation and validation +- Role-based permissions (Admin, User, Viewer) +- API key management for programmatic access +- Session management +- Password reset flow + +**Implementation:** + +```python +# auth.py - Authentication module +from passlib.hash import bcrypt +import jwt +from datetime import datetime, timedelta + +class AuthManager: + def __init__(self, secret_key, db_connection): + self.secret_key = secret_key + self.db = db_connection + + def register_user(self, email, password, full_name, organization_id): + """Register new user""" + password_hash = bcrypt.hash(password) + # Insert into database + # Return user object + + def authenticate(self, email, password): + """Verify credentials and return JWT token""" + user = self.db.get_user_by_email(email) + if user and bcrypt.verify(password, user.password_hash): + token = self.generate_token(user) + return token + return None + + def generate_token(self, user, expires_in=86400): + """Generate JWT token""" + payload = { + 'user_id': user.id, + 'email': user.email, + 'role': user.role, + 'org_id': user.organization_id, + 'exp': datetime.utcnow() + timedelta(seconds=expires_in) + } + return jwt.encode(payload, self.secret_key, algorithm='HS256') + + def verify_token(self, token): + """Verify and decode JWT token""" + try: + payload = jwt.decode(token, self.secret_key, algorithms=['HS256']) + return payload + except jwt.ExpiredSignatureError: + return None + except jwt.InvalidTokenError: + return None + + def check_permission(self, user, action, resource): + """Check if user has permission for action on resource""" + # Implement RBAC logic + pass +``` + +**API Endpoints:** +``` +POST /api/auth/register +POST /api/auth/login +POST /api/auth/logout +POST /api/auth/refresh +POST /api/auth/reset-password +GET /api/auth/me +``` + +**Estimated Effort:** 1 week + +--- + +#### 1.3 Queue-Based Processing ๐Ÿ”ด **CRITICAL** + +**Problem:** Synchronous processing doesn't scale; long-running checks block the API. + +**Solution:** Implement asynchronous job queue with worker processes. + +**Architecture:** + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Web API โ”‚ +โ”‚ (api.php) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Redis โ”‚โ—„โ”€โ”€โ”€โ”€โ–บโ”‚ Workers โ”‚ +โ”‚ Queue โ”‚ โ”‚ (Python) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚ + โ–ผ โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ PostgreSQL โ”‚ โ”‚ S3/Storage โ”‚ +โ”‚ Database โ”‚ โ”‚ (PDFs) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**Implementation:** + +```python +# worker.py - Background job processor +import redis +from rq import Worker, Queue, Connection +from enterprise_pdf_checker import EnterprisePDFChecker +import psycopg2 + +# Connect to Redis +redis_conn = redis.Redis(host='localhost', port=6379, db=0) +queue = Queue('pdf_checks', connection=redis_conn) + +def process_pdf_check(document_id, check_type='full', api_keys=None): + """Background job to process PDF""" + # 1. Fetch document from database + doc = db.get_document(document_id) + + # 2. Download PDF from storage + pdf_path = download_from_storage(doc.storage_path) + + # 3. Run accessibility check + checker = EnterprisePDFChecker( + pdf_path, + config={'anthropic_key': api_keys.get('anthropic')}, + quick_mode=(check_type == 'quick') + ) + results = checker.check_all() + + # 4. Store results in database + check_id = db.create_check_record(document_id, results) + + # 5. Store issues + for issue in results['issues']: + db.create_issue_record(check_id, issue) + + # 6. Update document status + db.update_document_status(document_id, 'completed') + + # 7. Send notification (webhook, email) + notify_completion(document_id, check_id) + + return check_id + +# Start worker +if __name__ == '__main__': + with Connection(redis_conn): + worker = Worker(['pdf_checks']) + worker.work() +``` + +**Queue Management:** +```python +# Enqueue job from API +from rq import Queue +import redis + +redis_conn = redis.Redis() +queue = Queue('pdf_checks', connection=redis_conn) + +job = queue.enqueue( + process_pdf_check, + document_id=123, + check_type='full', + api_keys={'anthropic': 'sk-ant-...'}, + timeout='10m' +) + +# Check job status +job.get_status() # 'queued', 'started', 'finished', 'failed' +job.result # Get result when finished +``` + +**Benefits:** +- โœ… Non-blocking API responses +- โœ… Horizontal scaling (add more workers) +- โœ… Retry failed jobs automatically +- โœ… Job prioritization +- โœ… Progress tracking + +**Estimated Effort:** 1 week + +--- + +#### 1.4 Cloud Storage Integration ๐Ÿ”ด **CRITICAL** + +**Problem:** Local file storage doesn't scale and lacks redundancy. + +**Solution:** Integrate with AWS S3 or Google Cloud Storage. + +**Implementation:** + +```python +# storage.py - Cloud storage abstraction +import boto3 +from google.cloud import storage as gcs +import hashlib + +class StorageManager: + def __init__(self, provider='s3', bucket_name=None, credentials=None): + self.provider = provider + self.bucket_name = bucket_name + + if provider == 's3': + self.client = boto3.client('s3', **credentials) + elif provider == 'gcs': + self.client = gcs.Client(credentials=credentials) + self.bucket = self.client.bucket(bucket_name) + + def upload_pdf(self, file_path, organization_id, document_id): + """Upload PDF to cloud storage""" + # Generate storage key + file_hash = self._calculate_hash(file_path) + key = f"orgs/{organization_id}/documents/{document_id}/{file_hash}.pdf" + + if self.provider == 's3': + self.client.upload_file(file_path, self.bucket_name, key) + elif self.provider == 'gcs': + blob = self.bucket.blob(key) + blob.upload_from_filename(file_path) + + return key + + def download_pdf(self, storage_key, local_path): + """Download PDF from cloud storage""" + if self.provider == 's3': + self.client.download_file(self.bucket_name, storage_key, local_path) + elif self.provider == 'gcs': + blob = self.bucket.blob(storage_key) + blob.download_to_filename(local_path) + + return local_path + + def delete_pdf(self, storage_key): + """Delete PDF from cloud storage""" + if self.provider == 's3': + self.client.delete_object(Bucket=self.bucket_name, Key=storage_key) + elif self.provider == 'gcs': + blob = self.bucket.blob(storage_key) + blob.delete() + + def generate_presigned_url(self, storage_key, expiration=3600): + """Generate temporary download URL""" + if self.provider == 's3': + return self.client.generate_presigned_url( + 'get_object', + Params={'Bucket': self.bucket_name, 'Key': storage_key}, + ExpiresIn=expiration + ) + elif self.provider == 'gcs': + blob = self.bucket.blob(storage_key) + return blob.generate_signed_url(expiration=expiration) + + def _calculate_hash(self, file_path): + """Calculate SHA-256 hash of file""" + sha256 = hashlib.sha256() + with open(file_path, 'rb') as f: + for chunk in iter(lambda: f.read(4096), b''): + sha256.update(chunk) + return sha256.hexdigest() +``` + +**Benefits:** +- โœ… Unlimited scalability +- โœ… Automatic redundancy and backups +- โœ… CDN integration for fast downloads +- โœ… Cost-effective (pay per use) +- โœ… Deduplication via file hashing + +**Estimated Effort:** 3 days + +--- + +## ๐Ÿ“‹ Phase 2: Enterprise Features (Weeks 5-8) + +### Goal: Multi-Tenancy and Advanced Capabilities + +#### 2.1 Multi-Tenancy & Organization Management ๐ŸŸ  **HIGH** + +**Features:** +- Organization creation and management +- User invitation and onboarding +- Team collaboration +- Usage quotas and billing +- Custom branding (logo, colors) +- Subdomain routing (org1.pdfchecker.com) + +**Implementation:** + +```python +# organizations.py +class OrganizationManager: + def create_organization(self, name, admin_email, plan_tier='free'): + """Create new organization""" + org = Organization( + name=name, + subdomain=self._generate_subdomain(name), + plan_tier=plan_tier, + monthly_quota=self._get_quota_for_plan(plan_tier) + ) + db.save(org) + + # Create admin user + admin = User( + email=admin_email, + organization_id=org.id, + role='admin' + ) + db.save(admin) + + return org + + def invite_user(self, org_id, email, role='user'): + """Send invitation to join organization""" + token = self._generate_invitation_token(org_id, email, role) + self._send_invitation_email(email, token) + return token + + def check_quota(self, org_id): + """Check if organization has remaining quota""" + usage = db.get_monthly_usage(org_id) + org = db.get_organization(org_id) + return usage.checks_count < org.monthly_quota + + def get_usage_stats(self, org_id, start_date, end_date): + """Get detailed usage statistics""" + return db.query_usage(org_id, start_date, end_date) +``` + +**Estimated Effort:** 1 week + +--- + +#### 2.2 Advanced Reporting & Analytics ๐ŸŸ  **HIGH** + +**Features:** +- Historical trend analysis +- Compliance dashboards +- Exportable reports (PDF, Excel, CSV) +- Custom report templates +- Scheduled reports (email digest) +- Comparative analysis (before/after remediation) + +**Dashboard Metrics:** +- Average accessibility score over time +- Most common issues by category +- Remediation success rate +- API cost tracking +- Processing time trends +- WCAG criterion compliance breakdown + +**Implementation:** + +```python +# analytics.py +class AnalyticsEngine: + def generate_compliance_report(self, org_id, date_range): + """Generate comprehensive compliance report""" + checks = db.get_checks_in_range(org_id, date_range) + + report = { + 'summary': { + 'total_documents': len(set(c.document_id for c in checks)), + 'total_checks': len(checks), + 'average_score': sum(c.accessibility_score for c in checks) / len(checks), + 'compliance_rate': self._calculate_compliance_rate(checks) + }, + 'trends': { + 'scores_over_time': self._calculate_score_trend(checks), + 'issues_by_severity': self._group_issues_by_severity(checks), + 'top_issues': self._get_top_issues(checks, limit=10) + }, + 'wcag_compliance': { + criterion: self._calculate_criterion_compliance(checks, criterion) + for criterion in WCAG_CRITERIA + }, + 'cost_analysis': { + 'total_cost': sum(c.api_cost_usd for c in checks), + 'cost_per_document': self._calculate_cost_per_doc(checks), + 'cost_trend': self._calculate_cost_trend(checks) + } + } + + return report + + def export_to_excel(self, report, output_path): + """Export report to Excel with charts""" + import openpyxl + from openpyxl.chart import LineChart, BarChart + + wb = openpyxl.Workbook() + # Create sheets: Summary, Trends, Issues, WCAG Compliance + # Add charts and formatting + wb.save(output_path) +``` + +**Estimated Effort:** 1 week + +--- + +#### 2.3 Advanced AI Remediation ๐ŸŸ  **HIGH** + +**Problem:** Current remediation only fixes basic metadata issues. + +**Solution:** Use AI to intelligently fix complex accessibility problems. + +**Advanced Remediation Capabilities:** + +1. **AI-Generated Alt Text** + - Use Claude to generate meaningful alt text for images without it + - Validate and improve existing alt text + - Classify decorative vs. informational images + +2. **Reading Order Correction** + - Analyze visual layout vs. tag order + - Automatically reorder tags to match visual flow + - Fix multi-column layout issues + +3. **Table Structure Enhancement** + - Detect table headers automatically + - Add scope attributes + - Fix nested table issues + +4. **Heading Hierarchy Repair** + - Detect heading levels from font size/weight + - Correct skipped heading levels (H1 โ†’ H3) + - Add missing headings + +5. **Form Field Labeling** + - Generate labels from nearby text + - Add tooltips and descriptions + - Set tab order logically + +**Implementation:** + +```python +# advanced_remediation.py +class AdvancedRemediator: + def __init__(self, pdf_path, anthropic_client): + self.pdf = PdfReader(pdf_path) + self.claude = anthropic_client + + def generate_alt_text_for_images(self): + """Use AI to generate alt text for all images""" + images = self._extract_images() + + for img in images: + if not img.has_alt_text(): + # Send image to Claude + alt_text = self.claude.generate_alt_text( + image_bytes=img.bytes, + context=img.surrounding_text + ) + img.set_alt_text(alt_text) + + def fix_reading_order(self): + """Correct reading order based on visual layout""" + for page in self.pdf.pages: + # Get visual positions of all elements + elements = self._get_page_elements_with_positions(page) + + # Sort by visual reading order (top-to-bottom, left-to-right) + visual_order = sorted(elements, key=lambda e: (e.y, e.x)) + + # Get current tag order + tag_order = self._get_tag_order(page) + + # If they don't match, reorder tags + if visual_order != tag_order: + self._reorder_tags(page, visual_order) + + def enhance_table_structure(self): + """Improve table accessibility""" + tables = self._find_tables() + + for table in tables: + # Detect header row + header_row = self._detect_header_row(table) + if header_row: + self._mark_as_header(header_row) + + # Add scope attributes + for cell in table.cells: + if cell.is_header: + cell.set_scope('col' if cell.in_header_row else 'row') + + def fix_heading_hierarchy(self): + """Correct heading levels""" + headings = self._extract_headings() + + # Detect levels from font size + for heading in headings: + detected_level = self._detect_heading_level(heading) + if heading.level != detected_level: + heading.set_level(detected_level) + + # Fix skipped levels + self._fill_skipped_levels(headings) +``` + +**Estimated Effort:** 2 weeks + +--- + +#### 2.4 Batch Processing & Bulk Operations ๐ŸŸก **MEDIUM** + +**Features:** +- Upload multiple PDFs at once +- Bulk remediation +- Folder/directory processing +- Scheduled batch jobs +- Progress tracking for bulk operations +- Bulk export of results + +**Implementation:** + +```python +# batch_processor.py +class BatchProcessor: + def __init__(self, queue, storage, db): + self.queue = queue + self.storage = storage + self.db = db + + def process_batch(self, document_ids, check_type='full', priority='normal'): + """Process multiple documents""" + batch_id = self.db.create_batch(document_ids) + + for doc_id in document_ids: + job = self.queue.enqueue( + process_pdf_check, + document_id=doc_id, + check_type=check_type, + batch_id=batch_id, + job_timeout='15m', + priority=priority + ) + + return batch_id + + def get_batch_progress(self, batch_id): + """Get progress of batch operation""" + batch = self.db.get_batch(batch_id) + jobs = self.db.get_batch_jobs(batch_id) + + return { + 'batch_id': batch_id, + 'total': len(jobs), + 'completed': sum(1 for j in jobs if j.status == 'completed'), + 'failed': sum(1 for j in jobs if j.status == 'failed'), + 'in_progress': sum(1 for j in jobs if j.status == 'processing'), + 'average_score': self._calculate_average_score(jobs) + } + + def remediate_batch(self, batch_id, fix_types=None): + """Remediate all documents in batch""" + documents = self.db.get_batch_documents(batch_id) + + for doc in documents: + self.queue.enqueue( + remediate_document, + document_id=doc.id, + fix_types=fix_types or ['all'] + ) +``` + +**Estimated Effort:** 1 week + +--- + +## ๐Ÿ“‹ Phase 3: Integration & Automation (Weeks 9-12) + +### Goal: Seamless Integration with Existing Workflows + +#### 3.1 Webhooks & Event System ๐ŸŸก **MEDIUM** + +**Features:** +- Configurable webhooks for events +- Event types: document.uploaded, check.completed, remediation.finished +- Retry logic for failed webhooks +- Webhook signature verification +- Event history and logs + +**Implementation:** + +```python +# webhooks.py +class WebhookManager: + def __init__(self, db): + self.db = db + + def register_webhook(self, org_id, url, events, secret=None): + """Register webhook endpoint""" + webhook = Webhook( + organization_id=org_id, + url=url, + events=events, + secret=secret or self._generate_secret(), + is_active=True + ) + self.db.save(webhook) + return webhook + + def trigger_event(self, event_type, payload): + """Trigger webhooks for event""" + webhooks = self.db.get_webhooks_for_event(event_type) + + for webhook in webhooks: + if webhook.is_active: + self._send_webhook(webhook, event_type, payload) + + def _send_webhook(self, webhook, event_type, payload): + """Send webhook with retry logic""" + import requests + import hmac + import hashlib + + # Create signature + signature = hmac.new( + webhook.secret.encode(), + json.dumps(payload).encode(), + hashlib.sha256 + ).hexdigest() + + headers = { + 'Content-Type': 'application/json', + 'X-Webhook-Signature': signature, + 'X-Event-Type': event_type + } + + try: + response = requests.post( + webhook.url, + json=payload, + headers=headers, + timeout=10 + ) + + # Log delivery + self.db.log_webhook_delivery( + webhook.id, + event_type, + response.status_code, + success=(response.status_code == 200) + ) + + except Exception as e: + # Retry logic + self._schedule_retry(webhook, event_type, payload) +``` + +**Event Payload Example:** +```json +{ + "event": "check.completed", + "timestamp": "2025-01-20T10:30:00Z", + "data": { + "document_id": 12345, + "check_id": 67890, + "filename": "annual_report.pdf", + "accessibility_score": 85, + "severity_counts": { + "critical": 0, + "error": 2, + "warning": 5, + "info": 3 + }, + "result_url": "https://api.pdfchecker.com/v1/checks/67890" + } +} +``` + +**Estimated Effort:** 1 week + +--- + +#### 3.2 SDK Development ๐ŸŸก **MEDIUM** + +**Languages:** +- Python SDK +- JavaScript/TypeScript SDK +- PHP SDK (for WordPress/Drupal integration) + +**Python SDK Example:** + +```python +# pdf_checker_sdk.py +class PDFCheckerClient: + def __init__(self, api_key, base_url='https://api.pdfchecker.com/v1'): + self.api_key = api_key + self.base_url = base_url + self.session = requests.Session() + self.session.headers.update({'Authorization': f'Bearer {api_key}'}) + + def upload_document(self, file_path): + """Upload PDF for checking""" + with open(file_path, 'rb') as f: + response = self.session.post( + f'{self.base_url}/documents', + files={'file': f} + ) + return response.json()['document_id'] + + def start_check(self, document_id, check_type='full'): + """Start accessibility check""" + response = self.session.post( + f'{self.base_url}/checks', + json={'document_id': document_id, 'type': check_type} + ) + return response.json()['check_id'] + + def get_results(self, check_id): + """Get check results""" + response = self.session.get(f'{self.base_url}/checks/{check_id}') + return response.json() + + def wait_for_completion(self, check_id, timeout=300, poll_interval=5): + """Wait for check to complete""" + import time + start_time = time.time() + + while time.time() - start_time < timeout: + result = self.get_results(check_id) + if result['status'] == 'completed': + return result + elif result['status'] == 'failed': + raise Exception(f"Check failed: {result.get('error')}") + time.sleep(poll_interval) + + raise TimeoutError(f"Check did not complete within {timeout} seconds") + + # Convenience method + def check_pdf(self, file_path, check_type='full', wait=True): + """Upload and check PDF in one call""" + doc_id = self.upload_document(file_path) + check_id = self.start_check(doc_id, check_type) + + if wait: + return self.wait_for_completion(check_id) + else: + return {'check_id': check_id, 'status': 'processing'} + +# Usage +client = PDFCheckerClient(api_key='your-api-key') +result = client.check_pdf('document.pdf') +print(f"Accessibility Score: {result['accessibility_score']}") +``` + +**Estimated Effort:** 2 weeks (all SDKs) + +--- + +#### 3.3 CMS Plugins ๐ŸŸก **MEDIUM** + +**Platforms:** +- WordPress plugin +- Drupal module +- SharePoint integration +- Google Drive add-on + +**WordPress Plugin Features:** +- Check PDFs on upload +- Bulk check media library +- Display accessibility badge on PDFs +- Block publication of inaccessible PDFs +- Auto-remediation option + +**Estimated Effort:** 2 weeks (WordPress), 1 week each for others + +--- + +#### 3.4 CI/CD Integration ๐ŸŸก **MEDIUM** + +**GitHub Action:** + +```yaml +# .github/workflows/pdf-accessibility.yml +name: PDF Accessibility Check + +on: + pull_request: + paths: + - '**.pdf' + +jobs: + check-pdfs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: PDF Accessibility Check + uses: pdf-checker/github-action@v1 + with: + api-key: ${{ secrets.PDF_CHECKER_API_KEY }} + fail-on-critical: true + min-score: 80 + files: '**/*.pdf' + + - name: Upload Results + uses: actions/upload-artifact@v2 + with: + name: accessibility-reports + path: reports/ +``` + +**GitLab CI:** + +```yaml +# .gitlab-ci.yml +pdf-accessibility: + stage: test + image: pdfchecker/cli:latest + script: + - pdf-checker check --api-key $PDF_CHECKER_API_KEY --min-score 80 docs/**/*.pdf + artifacts: + reports: + junit: reports/junit.xml + paths: + - reports/ +``` + +**Estimated Effort:** 1 week + +--- + +## ๐Ÿ“‹ Phase 4: Monitoring & Optimization (Weeks 13-16) + +### Goal: Production Monitoring and Performance + +#### 4.1 Application Performance Monitoring (APM) ๐ŸŸก **MEDIUM** + +**Tools:** +- Sentry for error tracking +- Datadog/New Relic for APM +- Prometheus + Grafana for metrics +- ELK stack for log aggregation + +**Metrics to Track:** +- Request latency (p50, p95, p99) +- Error rates by endpoint +- Queue depth and processing time +- API cost per check +- Cache hit rate +- Database query performance +- Worker utilization + +**Implementation:** + +```python +# monitoring.py +from prometheus_client import Counter, Histogram, Gauge +import sentry_sdk + +# Metrics +check_duration = Histogram('pdf_check_duration_seconds', 'Time to complete PDF check') +api_cost = Histogram('api_cost_usd', 'API cost per check') +queue_depth = Gauge('queue_depth', 'Number of jobs in queue') +error_counter = Counter('errors_total', 'Total errors', ['type']) + +@check_duration.time() +def process_pdf_with_monitoring(document_id): + try: + result = process_pdf_check(document_id) + api_cost.observe(result['api_cost_usd']) + return result + except Exception as e: + error_counter.labels(type=type(e).__name__).inc() + sentry_sdk.capture_exception(e) + raise +``` + +**Estimated Effort:** 1 week + +--- + +#### 4.2 Cost Optimization ๐ŸŸก **MEDIUM** + +**Strategies:** + +1. **Intelligent Caching** + - Cache by content hash, not just file name + - Shared cache across organization + - Configurable TTL + +2. **API Cost Tracking** + - Real-time cost monitoring + - Budget alerts + - Cost attribution by user/org + +3. **Smart Image Sampling** + - Analyze representative sample of images, not all + - Configurable sampling rate + - Prioritize images by size/importance + +4. **Batch API Calls** + - Send multiple images to Claude in one request + - Reduce per-request overhead + +5. **Tiered Checking** + - Quick mode for drafts + - Full mode for final checks + - Custom mode for specific criteria + +**Implementation:** + +```python +# cost_optimizer.py +class CostOptimizer: + def __init__(self, budget_limit_usd=100): + self.budget_limit = budget_limit_usd + + def should_use_ai_analysis(self, org_id, image_count): + """Decide if AI analysis should be used based on budget""" + current_usage = db.get_monthly_cost(org_id) + estimated_cost = image_count * 0.015 + + if current_usage + estimated_cost > self.budget_limit: + # Send alert + self.send_budget_alert(org_id) + return False + + return True + + def optimize_image_sampling(self, images, max_images=10): + """Sample representative images""" + if len(images) <= max_images: + return images + + # Prioritize by size and uniqueness + sorted_images = sorted(images, key=lambda i: i.size, reverse=True) + return sorted_images[:max_images] +``` + +**Estimated Effort:** 1 week + +--- + +#### 4.3 Automated Testing Suite ๐ŸŸก **MEDIUM** + +**Test Coverage:** +- Unit tests (80%+ coverage) +- Integration tests +- End-to-end tests +- Performance tests +- Security tests + +**Test Structure:** + +```python +# tests/test_checker.py +import pytest +from enterprise_pdf_checker import EnterprisePDFChecker + +class TestPDFChecker: + @pytest.fixture + def sample_pdf(self): + return 'tests/fixtures/sample_good.pdf' + + def test_basic_structure_check(self, sample_pdf): + """Test basic PDF structure validation""" + checker = EnterprisePDFChecker(sample_pdf, config={}) + result = checker._check_basic_structure() + + assert result.passed == True + assert len(result.issues) == 0 + + def test_missing_metadata(self): + """Test detection of missing metadata""" + checker = EnterprisePDFChecker('tests/fixtures/no_metadata.pdf', config={}) + result = checker._check_metadata() + + assert result.passed == False + assert any(i.category == 'Metadata' for i in result.issues) + + @pytest.mark.integration + def test_full_check_with_ai(self, sample_pdf): + """Integration test with actual AI APIs""" + config = { + 'anthropic_key': os.getenv('ANTHROPIC_API_KEY'), + 'google_credentials': os.getenv('GOOGLE_APPLICATION_CREDENTIALS') + } + checker = EnterprisePDFChecker(sample_pdf, config) + result = checker.check_all() + + assert 'accessibility_score' in result + assert result['accessibility_score'] >= 0 + assert result['accessibility_score'] <= 100 + +# tests/test_api.py +def test_upload_endpoint(client): + """Test PDF upload""" + with open('tests/fixtures/sample.pdf', 'rb') as f: + response = client.post('/api/documents', files={'file': f}) + + assert response.status_code == 201 + assert 'document_id' in response.json() + +def test_check_endpoint(client, uploaded_document): + """Test starting a check""" + response = client.post('/api/checks', json={ + 'document_id': uploaded_document['id'], + 'type': 'quick' + }) + + assert response.status_code == 202 + assert 'check_id' in response.json() +``` + +**CI/CD Integration:** +```yaml +# .github/workflows/test.yml +name: Test Suite + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: '3.9' + + - name: Install dependencies + run: pip install -r requirements.txt -r requirements-dev.txt + + - name: Run unit tests + run: pytest tests/ -v --cov=. --cov-report=xml + + - name: Upload coverage + uses: codecov/codecov-action@v2 +``` + +**Estimated Effort:** 2 weeks + +--- + +## ๐Ÿ“‹ Phase 5: Advanced Features (Weeks 17-20) + +### Goal: Differentiation and Innovation + +#### 5.1 Screen Reader Simulator ๐ŸŸข **LOW (High Value)** + +**Features:** +- Simulate screen reader output +- Show reading order +- Highlight navigation issues +- Audio preview (TTS) + +**Implementation:** +```python +# screen_reader_simulator.py +class ScreenReaderSimulator: + def simulate_reading_order(self, pdf_path): + """Generate screen reader output simulation""" + pdf = PdfReader(pdf_path) + output = [] + + for page in pdf.pages: + struct_tree = self._parse_structure_tree(page) + + for element in struct_tree: + if element.type == 'H1': + output.append(f"[Heading Level 1] {element.text}") + elif element.type == 'P': + output.append(f"[Paragraph] {element.text}") + elif element.type == 'Figure': + alt = element.get_alt_text() + output.append(f"[Image] {alt or 'NO ALT TEXT'}") + elif element.type == 'Table': + output.append(f"[Table: {element.rows} rows, {element.cols} columns]") + + return output +``` + +**Estimated Effort:** 1 week + +--- + +#### 5.2 Accessibility Scoring Algorithm v2 ๐ŸŸข **LOW** + +**Improvements:** +- Weighted scoring by WCAG level (A vs AA vs AAA) +- Industry-specific scoring profiles +- Customizable scoring rules +- Confidence intervals + +**Estimated Effort:** 1 week + +--- + +#### 5.3 Machine Learning Enhancements ๐ŸŸข **LOW** + +**Features:** +- Learn from user corrections +- Predict common issues by document type +- Recommend fixes based on similar documents +- Anomaly detection + +**Estimated Effort:** 2 weeks + +--- + +## ๐ŸŽฏ Implementation Priority Matrix + +### Must-Have (Phase 1-2) +| Feature | Business Impact | Technical Complexity | Effort | Priority | +|---------|----------------|---------------------|--------|----------| +| Database Migration | ๐Ÿ”ด Critical | Medium | 1 week | 1 | +| Authentication | ๐Ÿ”ด Critical | Medium | 1 week | 2 | +| Queue System | ๐Ÿ”ด Critical | High | 1 week | 3 | +| Cloud Storage | ๐Ÿ”ด Critical | Low | 3 days | 4 | +| Multi-Tenancy | ๐ŸŸ  High | Medium | 1 week | 5 | +| Advanced Reporting | ๐ŸŸ  High | Medium | 1 week | 6 | +| AI Remediation | ๐ŸŸ  High | High | 2 weeks | 7 | + +### Should-Have (Phase 3) +| Feature | Business Impact | Technical Complexity | Effort | Priority | +|---------|----------------|---------------------|--------|----------| +| Webhooks | ๐ŸŸก Medium | Low | 1 week | 8 | +| SDK Development | ๐ŸŸก Medium | Medium | 2 weeks | 9 | +| CI/CD Integration | ๐ŸŸก Medium | Low | 1 week | 10 | +| Batch Processing | ๐ŸŸก Medium | Medium | 1 week | 11 | + +### Nice-to-Have (Phase 4-5) +| Feature | Business Impact | Technical Complexity | Effort | Priority | +|---------|----------------|---------------------|--------|----------| +| APM | ๐ŸŸก Medium | Low | 1 week | 12 | +| Cost Optimization | ๐ŸŸก Medium | Medium | 1 week | 13 | +| Testing Suite | ๐ŸŸก Medium | Medium | 2 weeks | 14 | +| CMS Plugins | ๐ŸŸข Low | Medium | 3 weeks | 15 | +| Screen Reader Sim | ๐ŸŸข Low | Medium | 1 week | 16 | +| ML Enhancements | ๐ŸŸข Low | High | 2 weeks | 17 | + +--- + +## ๐Ÿ’ฐ Cost Estimates + +### Development Costs + +| Phase | Duration | Developer Cost (1 FTE @ $100/hr) | Infrastructure | Total | +|-------|----------|----------------------------------|----------------|-------| +| Phase 1 | 4 weeks | $16,000 | $500 | $16,500 | +| Phase 2 | 4 weeks | $16,000 | $500 | $16,500 | +| Phase 3 | 4 weeks | $16,000 | $500 | $16,500 | +| Phase 4 | 4 weeks | $16,000 | $500 | $16,500 | +| Phase 5 | 4 weeks | $16,000 | $500 | $16,500 | +| **Total** | **20 weeks** | **$80,000** | **$2,500** | **$82,500** | + +### Ongoing Costs (Monthly) + +| Category | Cost | +|----------|------| +| Cloud Infrastructure (AWS/GCP) | $500-2,000 | +| Database (RDS/Cloud SQL) | $200-500 | +| Storage (S3/GCS) | $100-500 | +| Queue (Redis Cloud) | $50-200 | +| Monitoring (Datadog/New Relic) | $100-500 | +| API Costs (Anthropic + Google) | Variable (usage-based) | +| **Total** | **$950-3,700/month** | + +--- + +## ๐Ÿ“Š Success Metrics + +### Technical Metrics +- โœ… API response time < 200ms (p95) +- โœ… Queue processing time < 2 minutes per document +- โœ… System uptime > 99.9% +- โœ… Test coverage > 80% +- โœ… Zero critical security vulnerabilities + +### Business Metrics +- โœ… 1,000+ documents processed per day +- โœ… 100+ active organizations +- โœ… Average accessibility score improvement: 20+ points +- โœ… Customer satisfaction > 4.5/5 +- โœ… API cost per document < $0.15 + +--- + +## ๐Ÿš€ Getting Started + +### Immediate Next Steps + +1. **Week 1: Database Design** + - Finalize schema + - Set up PostgreSQL + - Create migration scripts + +2. **Week 2: Authentication** + - Implement user registration/login + - JWT token system + - RBAC + +3. **Week 3: Queue System** + - Set up Redis + - Implement worker processes + - Migrate existing processing + +4. **Week 4: Cloud Storage** + - Choose provider (AWS S3 vs GCS) + - Implement upload/download + - Migrate existing files + +--- + +## ๐Ÿ“š Resources Needed + +### Team +- 1-2 Full-stack developers (Python + PHP/JavaScript) +- 1 DevOps engineer (part-time) +- 1 QA engineer (part-time) +- 1 Technical writer (documentation) + +### Infrastructure +- Cloud account (AWS or Google Cloud) +- CI/CD pipeline (GitHub Actions or GitLab CI) +- Monitoring tools (Sentry, Datadog) +- Development/staging/production environments + +### External Services +- Anthropic API account +- Google Cloud account +- Email service (SendGrid, AWS SES) +- CDN (CloudFlare, AWS CloudFront) + +--- + +## ๐ŸŽฏ Conclusion + +This roadmap transforms your proof-of-concept into a **production-ready, enterprise-grade SaaS platform**. The phased approach allows for: + +โœ… **Incremental value delivery** - Each phase adds tangible business value +โœ… **Risk mitigation** - Critical infrastructure first, advanced features later +โœ… **Flexibility** - Adjust priorities based on customer feedback +โœ… **Scalability** - Built to handle thousands of documents per day +โœ… **Maintainability** - Clean architecture, comprehensive testing + +**Total Timeline:** 20 weeks (5 months) +**Total Investment:** ~$85,000 development + $1,000-4,000/month infrastructure +**Expected Outcome:** Enterprise-ready PDF accessibility platform + +--- + +**Ready to build the future of PDF accessibility? Let's make the web accessible for everyone. ๐ŸŒŸ** diff --git a/README.md b/README.md new file mode 100644 index 0000000..71565ec --- /dev/null +++ b/README.md @@ -0,0 +1,574 @@ +# PDF Accessibility Checker - Current State + +> **AI-Powered PDF Accessibility Validation System** +> Comprehensive WCAG 2.1 compliance checking with enterprise-grade features + +--- + +## ๐Ÿ“‹ What This Application Does + +This is a **production-ready PDF accessibility checker** that validates PDF documents against WCAG 2.1 Level A & AA standards. It combines traditional PDF analysis with cutting-edge AI to achieve approximately **95% automated coverage** of accessibility requirements. + +### Core Capabilities + +โœ… **Automated WCAG Validation** - Checks 30+ accessibility criteria +โœ… **AI-Powered Image Analysis** - Uses Anthropic Claude 3.5 Sonnet for alt text validation +โœ… **OCR & Text Detection** - Google Cloud Vision for text-in-images detection +โœ… **Color Contrast Analysis** - WCAG AA/AAA compliance checking +โœ… **Readability Metrics** - Flesch scores and grade-level analysis +โœ… **Auto-Remediation** - Fixes common issues automatically +โœ… **Visual Inspector** - See exactly where issues occur on each page +โœ… **Three Interfaces** - Web UI, REST API, and Command Line + +--- + +## ๐Ÿ—๏ธ System Architecture + +### Components + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Web Interface (index.html) โ”‚ +โ”‚ โ€ข Drag-and-drop PDF upload โ”‚ +โ”‚ โ€ข Real-time progress tracking โ”‚ +โ”‚ โ€ข Visual results dashboard โ”‚ +โ”‚ โ€ข Issue filtering and navigation โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ REST API (api.php) โ”‚ +โ”‚ โ€ข File upload management โ”‚ +โ”‚ โ€ข Job queue processing โ”‚ +โ”‚ โ€ข Result storage and retrieval โ”‚ +โ”‚ โ€ข Auto-remediation endpoint โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Processing Engine (enterprise_pdf_checker.py) โ”‚ +โ”‚ โ€ข PDF structure analysis โ”‚ +โ”‚ โ€ข Image extraction and AI analysis โ”‚ +โ”‚ โ€ข Color contrast checking โ”‚ +โ”‚ โ€ข Readability analysis โ”‚ +โ”‚ โ€ข Comprehensive reporting โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚ + โ–ผ โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ External APIs โ”‚ โ”‚ Remediation Engine โ”‚ +โ”‚ โ€ข Claude Vision โ”‚ โ”‚ (pdf_remediation.py) โ”‚ +โ”‚ โ€ข Google Vision โ”‚ โ”‚ โ€ข Metadata fixes โ”‚ +โ”‚ โ€ข Document AI โ”‚ โ”‚ โ€ข Language setting โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ€ข Tagging corrections โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +### File Structure + +``` +PDF-Accessibility-checker/ +โ”œโ”€โ”€ enterprise_pdf_checker.py # Main checker (1,499 lines) +โ”œโ”€โ”€ pdf_remediation.py # Auto-fix engine (453 lines) +โ”œโ”€โ”€ api.php # REST API backend (529 lines) +โ”œโ”€โ”€ index.html # Web interface (1,727 lines) +โ”œโ”€โ”€ requirements.txt # Python dependencies +โ”œโ”€โ”€ .env.example # Environment configuration template +โ”‚ +โ”œโ”€โ”€ uploads/ # Uploaded PDFs (temporary) +โ”œโ”€โ”€ results/ # Check results and metadata +โ”œโ”€โ”€ .cache/ # API response cache (cost optimization) +โ”‚ +โ”œโ”€โ”€ Test_files/ # Sample PDFs for testing +โ”‚ โ”œโ”€โ”€ sample_good.pdf +โ”‚ โ””โ”€โ”€ sample_poor.pdf +โ”‚ +โ””โ”€โ”€ README's/ # Extensive documentation (19 files) + โ”œโ”€โ”€ START_HERE.md + โ”œโ”€โ”€ QUICKSTART.md + โ”œโ”€โ”€ ENTERPRISE_README.md + โ”œโ”€โ”€ ARCHITECTURE.md + โ”œโ”€โ”€ WCAG_LIMITATIONS.md + โ””โ”€โ”€ ... (14 more guides) +``` + +--- + +## ๐Ÿš€ Quick Setup Guide + +### Prerequisites + +- **Python 3.8+** +- **PHP 7.4+** (for web interface) +- **Tesseract OCR** (for text extraction) +- **Poppler** (for PDF rendering) +- **API Keys:** + - Anthropic API key (required for AI analysis) + - Google Cloud credentials (optional, enhances analysis) + +### Installation (5 Minutes) + +```bash +# 1. Navigate to project directory +cd /path/to/PDF-Accessibility-checker + +# 2. Install Python dependencies +pip3 install -r requirements.txt + +# 3. Install system dependencies (macOS) +brew install tesseract poppler + +# 4. Configure API keys +cp .env.example .env +nano .env # Add your Anthropic API key + +# 5. Start the web server +php -S localhost:8000 + +# 6. Open browser +open http://localhost:8000 +``` + +### Alternative: Command Line Usage + +```bash +# Basic check +python3 enterprise_pdf_checker.py document.pdf + +# With output file +python3 enterprise_pdf_checker.py document.pdf --output report.json + +# Quick mode (skip AI analysis) +python3 enterprise_pdf_checker.py document.pdf --quick +``` + +--- + +## ๐ŸŽฏ Key Features Explained + +### 1. **AI-Powered Image Analysis** + +Uses **Anthropic Claude 3.5 Sonnet** to analyze every image in the PDF: +- Validates alt text quality and meaningfulness +- Detects text embedded in images (WCAG 1.4.5 violation) +- Identifies color-only information (WCAG 1.4.1) +- Classifies images as decorative vs. informational +- Provides specific accessibility recommendations + +**Cost:** ~$0.015 per image (cached for free on repeat checks) + +### 2. **Comprehensive WCAG Checks** + +Automated validation of 30+ criteria including: +- โœ… Document structure and tagging (1.3.1, 4.1.2) +- โœ… Text alternatives for images (1.1.1) +- โœ… Color contrast ratios (1.4.3) - AA/AAA levels +- โœ… Language declaration (3.1.1) +- โœ… Page titles (2.4.2) +- โœ… Link text quality (2.4.4) +- โœ… Form field labels (3.3.2) +- โœ… Reading order (1.3.2) +- โœ… Font embedding (1.4.4) +- โœ… Content readability (3.1.5) + +### 3. **Auto-Remediation** + +Automatically fixes common issues: +- Missing document title +- Missing author/subject metadata +- Language not set +- Document not marked as tagged +- Missing bookmarks + +**Usage:** +```bash +python3 pdf_remediation.py document.pdf --output fixed.pdf --all +``` + +### 4. **Visual Page Inspector** + +- Displays PDF pages as images +- Highlights issue locations with color-coded markers +- Zoom and pan functionality +- Click issues to see exact page location +- Severity-based color coding (Critical/Error/Warning/Info) + +### 5. **Smart Caching** + +- Caches all API responses by content hash +- Repeat checks of same document = $0 cost +- Similar images across documents = cached automatically +- Reduces typical document cost from $0.10 to $0.00 on re-check + +--- + +## ๐Ÿ“Š What Gets Checked + +### Fully Automated (75% of WCAG) + +| Check | WCAG Criterion | Description | +|-------|----------------|-------------| +| Document Structure | 1.3.1, 4.1.2 | PDF tagging and semantic structure | +| Metadata | 2.4.2, 3.1.1 | Title, language, author, subject | +| Text Extractability | - | Ensures text can be read by screen readers | +| Font Embedding | 1.4.4 | Fonts are embedded for consistent rendering | +| Color Contrast | 1.4.3 | WCAG AA/AAA compliance (4.5:1, 7:1 ratios) | +| Form Fields | 3.3.2 | Labels and descriptions present | +| Links | 2.4.4 | Descriptive link text (not "click here") | +| Reading Order | 1.3.2 | Logical content sequence | + +### AI-Assisted (20% of WCAG) + +| Check | WCAG Criterion | AI Model | Description | +|-------|----------------|----------|-------------| +| Alt Text Quality | 1.1.1 | Claude 3.5 | Validates meaningfulness of alt text | +| Text in Images | 1.4.5 | Claude + Google Vision | Detects text embedded in images | +| Color-Only Info | 1.4.1 | Claude 3.5 | Identifies information conveyed by color alone | +| Content Readability | 3.1.5 | TextBlob | Flesch scores, grade level analysis | +| Image Classification | 1.1.1 | Claude 3.5 | Decorative vs. informational | + +### Requires Manual Review (5% of WCAG) + +- โš ๏ธ Keyboard navigation and tab order (2.1.1) +- โš ๏ธ Focus indicators (2.4.7) +- โš ๏ธ Actual screen reader testing +- โš ๏ธ Semantic structure quality +- โš ๏ธ Real user experience validation + +--- + +## ๐Ÿ’ฐ Cost Structure + +### Per Document Estimate (10 pages, 5 images) + +| Service | Usage | Cost | +|---------|-------|------| +| Anthropic Claude | 5 images @ $0.015 | $0.075 | +| Google Cloud Vision | 5 images @ $0.0015 | $0.008 | +| Google Document AI (OCR) | 10 pages @ $0.0015 | $0.015 | +| **Total** | | **~$0.10** | + +### Monthly Costs by Volume + +- 100 documents/month = **$10** +- 500 documents/month = **$50** +- 1,000 documents/month = **$100** +- 5,000 documents/month = **$500** + +### ROI Comparison + +| Method | Cost/Document | Time | Coverage | +|--------|---------------|------|----------| +| **This Tool** | $0.10 | 2-5 min | 95% | +| Manual Review | $100 | 1-2 hours | 100% | +| Adobe Acrobat Pro | $20+ | 5-10 min | 90% | +| PAC (Free) | $0 | 3-5 min | 75% | + +**Break-even:** After 2-3 documents vs. manual review +**Time savings:** 96% reduction in review time + +--- + +## ๐Ÿ”ง Current Limitations + +### What This Tool CANNOT Do + +1. **Full Screen Reader Simulation** - Cannot replicate NVDA/JAWS behavior +2. **Keyboard Navigation Testing** - Cannot test actual tab order functionality +3. **Real User Testing** - Cannot replace human accessibility auditors +4. **PDF Creation** - Only validates, doesn't create accessible PDFs +5. **Complex Table Analysis** - Limited validation of table structure complexity +6. **Mathematical Content** - Cannot validate MathML or equation accessibility + +### Known Issues + +- **Large PDFs (>50MB)** - May timeout or require increased PHP limits +- **Scanned PDFs** - OCR quality depends on scan quality +- **Complex Layouts** - Multi-column layouts may have reading order issues +- **Non-English Content** - AI analysis optimized for English +- **Password-Protected PDFs** - Cannot analyze encrypted documents + +--- + +## ๐Ÿ“ˆ Accessibility Score Calculation + +``` +Starting Score: 100 points + +Deductions: +- Critical Issue: -25 points each +- Error: -10 points each +- Warning: -5 points each +- Info: -2 points each + +Minimum Score: 0 +``` + +### Score Interpretation + +| Score | Grade | Meaning | +|-------|-------|---------| +| 90-100 | A | Excellent - Minor improvements only | +| 80-89 | B | Good - Several issues to address | +| 70-79 | C | Fair - Significant barriers present | +| 60-69 | D | Poor - Major accessibility issues | +| 0-59 | F | Critical - Document largely inaccessible | + +--- + +## ๐Ÿ”Œ API Endpoints + +### Upload PDF +```http +POST /api.php?action=upload +Content-Type: multipart/form-data + +Body: pdf (file) + +Response: +{ + "success": true, + "data": { + "job_id": "pdf_123456", + "filename": "document.pdf" + } +} +``` + +### Start Check +```http +POST /api.php?action=check +Content-Type: application/json + +Body: +{ + "job_id": "pdf_123456", + "quick_mode": false +} + +Response: +{ + "success": true, + "data": { + "job_id": "pdf_123456", + "status": "processing" + } +} +``` + +### Get Results +```http +GET /api.php?action=result&job_id=pdf_123456 + +Response: +{ + "success": true, + "data": { + "filename": "document.pdf", + "accessibility_score": 75, + "severity_counts": {...}, + "issues": [...] + } +} +``` + +### Auto-Remediate +```http +POST /api.php?action=remediate +Content-Type: application/json + +Body: {"job_id": "pdf_123456"} + +Response: +{ + "success": true, + "data": { + "remediated_pdf": "pdf_123456_remediated.pdf", + "fixes_applied": 5, + "download_url": "api.php?action=download&job_id=pdf_123456&type=remediated" + } +} +``` + +--- + +## ๐Ÿงช Testing + +### Test Files Included + +- `Test_files/sample_good.pdf` - Well-structured PDF with metadata +- `Test_files/sample_poor.pdf` - PDF with multiple accessibility issues + +### Quick Test + +```bash +# Test the checker +python3 enterprise_pdf_checker.py Test_files/sample_poor.pdf --output test_result.json + +# View results +cat test_result.json | python3 -m json.tool + +# Test remediation +python3 pdf_remediation.py Test_files/sample_poor.pdf --output fixed.pdf --all +``` + +--- + +## ๐Ÿ“š Documentation + +The `README's/` folder contains **19 comprehensive guides** (140KB+ of documentation): + +### Essential Reading +1. **START_HERE.md** - Package overview and quick start +2. **QUICKSTART.md** - 5-minute setup guide +3. **ENTERPRISE_README.md** - Complete installation and usage +4. **ARCHITECTURE.md** - System design and technical details + +### Advanced Topics +5. **WCAG_LIMITATIONS.md** - What can't be automated +6. **INTEGRATION_GUIDE.md** - API integration strategies +7. **IMPLEMENTATION_ROADMAP.md** - Step-by-step coding guide +8. **API_QUICK_REFERENCE.md** - One-page cheat sheet +9. **MASTER_GUIDE.md** - Evolution and best practices + +### Specialized Guides +- MAMP_SETUP.md - Local server configuration +- PROGRESS_DISPLAY_GUIDE.md - Real-time progress implementation +- TECHNICAL_BACKGROUND.md - Deep dive into accessibility standards +- screen_reader_simulator_proposal.md - Future enhancement ideas + +--- + +## ๐Ÿ”’ Security Considerations + +### Current Implementation + +โœ… File type validation (PDF only) +โœ… File size limits (50MB default) +โœ… API keys in environment variables +โœ… Temporary file cleanup +โœ… CORS headers configured +โœ… Input sanitization in API + +### Production Recommendations + +- [ ] Enable HTTPS (required) +- [ ] Implement rate limiting +- [ ] Add user authentication +- [ ] Set up malware scanning +- [ ] Configure file retention policies +- [ ] Enable audit logging +- [ ] Implement API key rotation + +--- + +## ๐ŸŽฏ Use Cases + +### 1. **Content Publishing** +Check PDFs before publication to ensure accessibility compliance + +### 2. **Legal Compliance** +Validate documents meet Section 508, ADA, WCAG 2.1 requirements + +### 3. **Quality Assurance** +Integrate into CI/CD pipeline for automated accessibility testing + +### 4. **Batch Processing** +Audit large document libraries for accessibility issues + +### 5. **Remediation Workflow** +Identify issues โ†’ Auto-fix simple problems โ†’ Manual review complex cases + +--- + +## ๐Ÿ› ๏ธ Technology Stack + +### Backend +- **Python 3.8+** - Core processing engine +- **PHP 7.4+** - REST API and web server +- **Tesseract OCR** - Text extraction from images +- **Poppler** - PDF rendering and conversion + +### Python Libraries +- `pypdf` - PDF parsing and manipulation +- `pdfplumber` - Advanced PDF analysis +- `Pillow` - Image processing +- `numpy` - Numerical computations +- `textblob` - Natural language processing +- `anthropic` - Claude AI integration +- `google-cloud-vision` - Google Vision API +- `google-cloud-documentai` - Document AI + +### Frontend +- **Pure HTML5/CSS3/JavaScript** - No frameworks +- **Montserrat Font** - Professional typography +- **Responsive Design** - Mobile-friendly interface + +--- + +## ๐Ÿ“ž Support & Resources + +### Getting Help +1. Check the extensive documentation in `README's/` folder +2. Review troubleshooting section in ENTERPRISE_README.md +3. Test with sample PDFs in `Test_files/` +4. Verify API keys are properly configured + +### External Resources +- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/) +- [Anthropic Claude API Docs](https://docs.anthropic.com/) +- [Google Cloud Vision Docs](https://cloud.google.com/vision/docs) +- [PDF/UA Standard](https://www.pdfa.org/resource/pdfua-in-a-nutshell/) + +--- + +## ๐ŸŒŸ What Makes This Special + +โœจ **Quality-First Design** - Uses best-in-class AI models (Claude, Google) +โœจ **Production-Ready** - Enterprise-grade code and architecture +โœจ **Complete Package** - Nothing else to buy or build +โœจ **Well-Documented** - 140KB+ of comprehensive guides +โœจ **Cost-Optimized** - Smart caching reduces API costs +โœจ **Three Interfaces** - Web, CLI, and REST API +โœจ **Easy Integration** - Simple REST API for existing systems +โœจ **Proven Technology** - Built on industry-standard libraries + +--- + +## ๐Ÿ“Š Current Status Summary + +| Aspect | Status | Notes | +|--------|--------|-------| +| **Core Functionality** | โœ… Complete | All checks implemented | +| **Web Interface** | โœ… Complete | Drag-drop, progress, results | +| **REST API** | โœ… Complete | All endpoints functional | +| **CLI** | โœ… Complete | Full command-line support | +| **AI Integration** | โœ… Complete | Claude + Google Vision | +| **Auto-Remediation** | โœ… Complete | Fixes common issues | +| **Visual Inspector** | โœ… Complete | Page-level issue visualization | +| **Documentation** | โœ… Extensive | 19 guides, 140KB+ | +| **Testing** | โš ๏ธ Basic | Sample PDFs provided | +| **Authentication** | โŒ Not Implemented | Open access currently | +| **Multi-tenancy** | โŒ Not Implemented | Single-user design | +| **Report History** | โŒ Not Implemented | No tracking over time | + +--- + +## ๐Ÿš€ Quick Start Checklist + +- [ ] Install Python 3.8+ and PHP 7.4+ +- [ ] Install Tesseract and Poppler +- [ ] Run `pip3 install -r requirements.txt` +- [ ] Copy `.env.example` to `.env` +- [ ] Add Anthropic API key to `.env` +- [ ] (Optional) Add Google Cloud credentials +- [ ] Start server: `php -S localhost:8000` +- [ ] Open browser: `http://localhost:8000` +- [ ] Upload a test PDF +- [ ] Review accessibility report + +**Estimated setup time: 10 minutes** + +--- + +**Built with โค๏ธ for web accessibility. Making the internet accessible for everyone.** diff --git a/results/pdf_68f68176c722a5.03184737.error.log b/results/pdf_68f68176c722a5.03184737.error.log deleted file mode 100644 index cbcc2dc..0000000 --- a/results/pdf_68f68176c722a5.03184737.error.log +++ /dev/null @@ -1,56 +0,0 @@ -Traceback (most recent call last): - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/enterprise_pdf_checker.py", line 1297, in - main() - ~~~~^^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/enterprise_pdf_checker.py", line 1275, in main - checker = EnterprisePDFChecker(args.pdf_file, config, quick_mode=args.quick) - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/enterprise_pdf_checker.py", line 328, in __init__ - self.vision_client = vision.ImageAnnotatorClient() - ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/cloud/vision_v1/services/image_annotator/client.py", line 709, in __init__ - self._transport = transport_init( - ~~~~~~~~~~~~~~^ - credentials=credentials, - ^^^^^^^^^^^^^^^^^^^^^^^^ - ...<7 lines>... - api_audience=self._client_options.api_audience, - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - ) - ^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/cloud/vision_v1/services/image_annotator/transports/grpc.py", line 237, in __init__ - super().__init__( - ~~~~~~~~~~~~~~~~^ - host=host, - ^^^^^^^^^^ - ...<6 lines>... - api_audience=api_audience, - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - ) - ^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/cloud/vision_v1/services/image_annotator/transports/base.py", line 107, in __init__ - credentials, _ = google.auth.default( - ~~~~~~~~~~~~~~~~~~~^ - **scopes_kwargs, quota_project_id=quota_project_id - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - ) - ^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/auth/_default.py", line 705, in default - credentials, project_id = checker() - ~~~~~~~^^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/auth/_default.py", line 698, in - lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/auth/_default.py", line 346, in _get_explicit_environ_credentials - credentials, project_id = load_credentials_from_file( - ~~~~~~~~~~~~~~~~~~~~~~~~~~^ - os.environ[environment_vars.CREDENTIALS], - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - quota_project_id=quota_project_id, - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - ) - ^ - File "/Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/venv/lib/python3.14/site-packages/google/auth/_default.py", line 173, in load_credentials_from_file - raise exceptions.DefaultCredentialsError( - "File {} was not found.".format(filename) - ) -google.auth.exceptions.DefaultCredentialsError: File /path/to/your/google-credentials.json was not found. diff --git a/results/pdf_68f690e61b1447.67377632.error.log b/results/pdf_68f690e61b1447.67377632.error.log deleted file mode 100644 index af47b9b..0000000 --- a/results/pdf_68f690e61b1447.67377632.error.log +++ /dev/null @@ -1,29 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f690e61b1447.67377632.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f690e61b1447.67377632.result.json diff --git a/results/pdf_68f690f834ae44.29322803.error.log b/results/pdf_68f690f834ae44.29322803.error.log deleted file mode 100644 index 6bee585..0000000 --- a/results/pdf_68f690f834ae44.29322803.error.log +++ /dev/null @@ -1,29 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f690f834ae44.29322803.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f690f834ae44.29322803.result.json diff --git a/results/pdf_68f6910eeeb3d7.85806352.error.log b/results/pdf_68f6910eeeb3d7.85806352.error.log deleted file mode 100644 index 1ac4a44..0000000 --- a/results/pdf_68f6910eeeb3d7.85806352.error.log +++ /dev/null @@ -1,123 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6910eeeb3d7.85806352.pdf -============================================================ - -โณ Running: Document Structure... โœ… (0.00s) -โณ Running: Metadata... โœ… (0.00s) -โณ Running: Language Declaration... โœ… (0.00s) -โณ Running: Text Extractability... โœ… (0.45s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โœ… (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 94 images to analyze... - ๐Ÿ“ท Analyzed image 1/94 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/94 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 4/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 5/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 6/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 7/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 8/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 9/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 10/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 11/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 12/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 13/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 14/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 15/94 (Page 3) (cached) - ๐Ÿ“ท Analyzed image 16/94 (Page 4) (cached) - ๐Ÿ“ท Analyzed image 17/94 (Page 4) (cached) - ๐Ÿ“ท Analyzed image 18/94 (Page 4) (cached) - ๐Ÿ“ท Analyzed image 19/94 (Page 4) (cached) - ๐Ÿ“ท Analyzed image 20/94 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 21/94 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 22/94 (Page 5) (cached) - ๐Ÿ“ท Analyzed image 23/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 24/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 25/94 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 26/94 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 27/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 28/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 29/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 30/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 31/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 32/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 33/94 (Page 7) (cached) - ๐Ÿ“ท Analyzed image 34/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 35/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 36/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 37/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 38/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 39/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 40/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 41/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 42/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 43/94 (Page 8) (cached) - ๐Ÿ“ท Analyzed image 44/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 45/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 46/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 47/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 48/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 49/94 (Page 10) (cached) - ๐Ÿ“ท Analyzed image 50/94 (Page 10) (cached) - ๐Ÿ“ท Analyzed image 51/94 (Page 10) (cached) - ๐Ÿ“ท Analyzed image 52/94 (Page 9) (cached) - ๐Ÿ“ท Analyzed image 53/94 (Page 10) (cached) - ๐Ÿ“ท Analyzed image 54/94 (Page 10) (cached) - ๐Ÿ“ท Analyzed image 55/94 (Page 11) (cached) - ๐Ÿ“ท Analyzed image 56/94 (Page 11) (cached) - ๐Ÿ“ท Analyzed image 57/94 (Page 11) (cached) - ๐Ÿ“ท Analyzed image 58/94 (Page 11) (cached) - ๐Ÿ“ท Analyzed image 59/94 (Page 12) (cached) - ๐Ÿ“ท Analyzed image 60/94 (Page 12) (cached) - ๐Ÿ“ท Analyzed image 61/94 (Page 12) (cached) - ๐Ÿ“ท Analyzed image 62/94 (Page 12) (cached) - ๐Ÿ“ท Analyzed image 63/94 (Page 12) (cached) - ๐Ÿ“ท Analyzed image 64/94 (Page 14) (cached) - ๐Ÿ“ท Analyzed image 65/94 (Page 13) (cached) - ๐Ÿ“ท Analyzed image 66/94 (Page 14) (cached) - ๐Ÿ“ท Analyzed image 67/94 (Page 14) (cached) - ๐Ÿ“ท Analyzed image 68/94 (Page 13) (cached) - ๐Ÿ“ท Analyzed image 69/94 (Page 14) (cached) - ๐Ÿ“ท Analyzed image 70/94 (Page 15) (cached) - ๐Ÿ“ท Analyzed image 71/94 (Page 15) (cached) - ๐Ÿ“ท Analyzed image 72/94 (Page 15) (cached) - ๐Ÿ“ท Analyzed image 73/94 (Page 15) (cached) - ๐Ÿ“ท Analyzed image 74/94 (Page 15) (cached) - ๐Ÿ“ท Analyzed image 75/94 (Page 16) (cached) - ๐Ÿ“ท Analyzed image 76/94 (Page 16) (cached) - ๐Ÿ“ท Analyzed image 77/94 (Page 16) (cached) - ๐Ÿ“ท Analyzed image 78/94 (Page 16) (cached) - ๐Ÿ“ท Analyzed image 79/94 (Page 17) (cached) - ๐Ÿ“ท Analyzed image 80/94 (Page 19) (cached) - ๐Ÿ“ท Analyzed image 81/94 (Page 19) (cached) - ๐Ÿ“ท Analyzed image 82/94 (Page 19) (cached) - ๐Ÿ“ท Analyzed image 83/94 (Page 20) (cached) - ๐Ÿ“ท Analyzed image 84/94 (Page 20) (cached) - ๐Ÿ“ท Analyzed image 85/94 (Page 20) (cached) - ๐Ÿ“ท Analyzed image 86/94 (Page 20) (cached) - ๐Ÿ“ท Analyzed image 87/94 (Page 22) (cached) - ๐Ÿ“ท Analyzed image 88/94 (Page 22) (cached) - ๐Ÿ“ท Analyzed image 89/94 (Page 26) (cached) - ๐Ÿ“ท Analyzed image 90/94 (Page 23) (cached) - ๐Ÿ“ท Analyzed image 91/94 (Page 26) (cached) - ๐Ÿ“ท Analyzed image 92/94 (Page 26) (cached) - โœ… Completed analysis of 92/94 images -โŒ (1.54s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.01s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.04s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6910eeeb3d7.85806352.result.json diff --git a/results/pdf_68f6916ce7f617.79988789.error.log b/results/pdf_68f6916ce7f617.79988789.error.log deleted file mode 100644 index 244117f..0000000 --- a/results/pdf_68f6916ce7f617.79988789.error.log +++ /dev/null @@ -1,29 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6916ce7f617.79988789.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.19s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6916ce7f617.79988789.result.json diff --git a/results/pdf_68f69229886380.01972382.error.log b/results/pdf_68f69229886380.01972382.error.log deleted file mode 100644 index 205c479..0000000 --- a/results/pdf_68f69229886380.01972382.error.log +++ /dev/null @@ -1,32 +0,0 @@ -โšก Quick mode enabled - skipping expensive checks - - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69229886380.01972382.pdf -============================================================ - -โณ Running: Document Structure... โœ… (0.00s) -โณ Running: Metadata... โœ… (0.00s) -โณ Running: Language Declaration... โœ… (0.00s) -โณ Running: Text Extractability... โœ… (0.45s) -โณ Running: OCR Quality... โฉ Skipping OCR analysis (quick mode) -โœ… (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 94 images to analyze... - โฉ Skipping AI image analysis (quick mode) -โœ… (1.49s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โฉ Skipping detailed contrast analysis (quick mode) -โœ… (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.04s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69229886380.01972382.result.json diff --git a/results/pdf_68f6935c7349c0.04540621.error.log b/results/pdf_68f6935c7349c0.04540621.error.log deleted file mode 100644 index 75a9f55..0000000 --- a/results/pdf_68f6935c7349c0.04540621.error.log +++ /dev/null @@ -1,32 +0,0 @@ -โšก Quick mode enabled - skipping expensive checks - - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6935c7349c0.04540621.pdf -============================================================ - -โณ Running: Document Structure... โœ… (0.00s) -โณ Running: Metadata... โœ… (0.00s) -โณ Running: Language Declaration... โœ… (0.00s) -โณ Running: Text Extractability... โœ… (0.45s) -โณ Running: OCR Quality... โฉ Skipping OCR analysis (quick mode) -โœ… (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 94 images to analyze... - โฉ Skipping AI image analysis (quick mode) -โœ… (1.46s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โฉ Skipping detailed contrast analysis (quick mode) -โœ… (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.05s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6935c7349c0.04540621.result.json diff --git a/results/pdf_68f6958a113a43.08606753.error.log b/results/pdf_68f6958a113a43.08606753.error.log deleted file mode 100644 index e29773e..0000000 --- a/results/pdf_68f6958a113a43.08606753.error.log +++ /dev/null @@ -1,35 +0,0 @@ -โšก Quick mode enabled - skipping expensive checks - - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6958a113a43.08606753.pdf -============================================================ - -โณ Running: Document Structure... โœ… (0.00s) -โณ Running: Metadata... โœ… (0.00s) -โณ Running: Language Declaration... โœ… (0.00s) -โณ Running: Text Extractability... โœ… (0.45s) -โณ Running: OCR Quality... โฉ Skipping OCR analysis (quick mode) -โœ… (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 94 images to analyze... - โฉ Skipping AI image analysis (quick mode) -โœ… (1.49s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โฉ Skipping detailed contrast analysis (quick mode) -โœ… (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.06s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6958a113a43.08606753.result.json diff --git a/results/pdf_68f695b6821ca6.28479502.error.log b/results/pdf_68f695b6821ca6.28479502.error.log deleted file mode 100644 index e60cd22..0000000 --- a/results/pdf_68f695b6821ca6.28479502.error.log +++ /dev/null @@ -1,32 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f695b6821ca6.28479502.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f695b6821ca6.28479502.result.json diff --git a/results/pdf_68f6961adb6136.16828488.error.log b/results/pdf_68f6961adb6136.16828488.error.log deleted file mode 100644 index f12ae5c..0000000 --- a/results/pdf_68f6961adb6136.16828488.error.log +++ /dev/null @@ -1,32 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6961adb6136.16828488.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6961adb6136.16828488.result.json diff --git a/results/pdf_68f6962a8dcc17.54521335.error.log b/results/pdf_68f6962a8dcc17.54521335.error.log deleted file mode 100644 index da51657..0000000 --- a/results/pdf_68f6962a8dcc17.54521335.error.log +++ /dev/null @@ -1,32 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6962a8dcc17.54521335.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6962a8dcc17.54521335.result.json diff --git a/results/pdf_68f699e7ec43d9.29719320.error.log b/results/pdf_68f699e7ec43d9.29719320.error.log deleted file mode 100644 index 33d10d0..0000000 --- a/results/pdf_68f699e7ec43d9.29719320.error.log +++ /dev/null @@ -1,32 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f699e7ec43d9.29719320.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.00s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f699e7ec43d9.29719320.result.json diff --git a/results/pdf_68f69a05d34264.73320265.error.log b/results/pdf_68f69a05d34264.73320265.error.log deleted file mode 100644 index eb1b1de..0000000 --- a/results/pdf_68f69a05d34264.73320265.error.log +++ /dev/null @@ -1,40 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69a05d34264.73320265.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.01s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 6 images to analyze... - ๐Ÿ“ท Analyzed image 1/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 4/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 5/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 6/6 (Page 2) (cached) - โœ… Completed analysis of 6/6 images -โŒ (0.26s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69a05d34264.73320265.result.json diff --git a/results/pdf_68f69a5a2e6be2.05642819.error.log b/results/pdf_68f69a5a2e6be2.05642819.error.log deleted file mode 100644 index 3fe4f02..0000000 --- a/results/pdf_68f69a5a2e6be2.05642819.error.log +++ /dev/null @@ -1,40 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69a5a2e6be2.05642819.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.01s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 6 images to analyze... - ๐Ÿ“ท Analyzed image 1/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 4/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 5/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 6/6 (Page 2) (cached) - โœ… Completed analysis of 6/6 images -โŒ (0.29s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... - โš ๏ธ Contrast check skipped: Unable to get page count. Is poppler installed and in PATH? -โŒ (0.00s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โš ๏ธ Could not generate page images: Unable to get page count. Is poppler installed and in PATH? - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69a5a2e6be2.05642819.result.json diff --git a/results/pdf_68f69b6cedb0f4.31927028.error.log b/results/pdf_68f69b6cedb0f4.31927028.error.log deleted file mode 100644 index 154d390..0000000 --- a/results/pdf_68f69b6cedb0f4.31927028.error.log +++ /dev/null @@ -1,43 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69b6cedb0f4.31927028.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.01s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_yd_fmnie_input.PPM for filename /tmp/tess_yd_fmnie_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_yd_fmnie_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.49s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 6 images to analyze... - ๐Ÿ“ท Analyzed image 1/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 4/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 5/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 6/6 (Page 2) (cached) - โœ… Completed analysis of 6/6 images -โŒ (0.30s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.23s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/3 - โœ… Page 2/3 - โœ… Page 3/3 - โœ… Generated 3 page images - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69b6cedb0f4.31927028.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69b6cedb0f4.31927028.result_images diff --git a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_1.png b/results/pdf_68f69b6cedb0f4.31927028.result_images/page_1.png deleted file mode 100644 index 6528db5..0000000 Binary files a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_2.png b/results/pdf_68f69b6cedb0f4.31927028.result_images/page_2.png deleted file mode 100644 index 322adef..0000000 Binary files a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_3.png b/results/pdf_68f69b6cedb0f4.31927028.result_images/page_3.png deleted file mode 100644 index dab1dcf..0000000 Binary files a/results/pdf_68f69b6cedb0f4.31927028.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f69c31da9ad5.56277356.error.log b/results/pdf_68f69c31da9ad5.56277356.error.log deleted file mode 100644 index c4a0802..0000000 --- a/results/pdf_68f69c31da9ad5.56277356.error.log +++ /dev/null @@ -1,43 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69c31da9ad5.56277356.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.01s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_d7nz8xrh_input.PPM for filename /tmp/tess_d7nz8xrh_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_d7nz8xrh_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.80s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 6 images to analyze... - ๐Ÿ“ท Analyzed image 1/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 4/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 5/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 6/6 (Page 2) (cached) - โœ… Completed analysis of 6/6 images -โŒ (0.34s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.23s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/3 - โœ… Page 2/3 - โœ… Page 3/3 - โœ… Generated 3 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69c31da9ad5.56277356.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69c31da9ad5.56277356.result_images diff --git a/results/pdf_68f69c31da9ad5.56277356.result_images/page_1.png b/results/pdf_68f69c31da9ad5.56277356.result_images/page_1.png deleted file mode 100644 index 9c95ccc..0000000 Binary files a/results/pdf_68f69c31da9ad5.56277356.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f69c31da9ad5.56277356.result_images/page_2.png b/results/pdf_68f69c31da9ad5.56277356.result_images/page_2.png deleted file mode 100644 index 2da27a1..0000000 Binary files a/results/pdf_68f69c31da9ad5.56277356.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f69c31da9ad5.56277356.result_images/page_3.png b/results/pdf_68f69c31da9ad5.56277356.result_images/page_3.png deleted file mode 100644 index b0c103e..0000000 Binary files a/results/pdf_68f69c31da9ad5.56277356.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f69dcda1c508.99882465.error.log b/results/pdf_68f69dcda1c508.99882465.error.log deleted file mode 100644 index 0de394c..0000000 --- a/results/pdf_68f69dcda1c508.99882465.error.log +++ /dev/null @@ -1,43 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69dcda1c508.99882465.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.01s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_an3o0ktc_input.PPM for filename /tmp/tess_an3o0ktc_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_an3o0ktc_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.72s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 6 images to analyze... - ๐Ÿ“ท Analyzed image 1/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 3/6 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 4/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 5/6 (Page 2) (cached) - ๐Ÿ“ท Analyzed image 6/6 (Page 2) (cached) - โœ… Completed analysis of 6/6 images -โŒ (0.30s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.23s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/3 - โœ… Page 2/3 - โœ… Page 3/3 - โœ… Generated 3 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69dcda1c508.99882465.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69dcda1c508.99882465.result_images diff --git a/results/pdf_68f69dcda1c508.99882465.result_images/page_1.png b/results/pdf_68f69dcda1c508.99882465.result_images/page_1.png deleted file mode 100644 index 9c95ccc..0000000 Binary files a/results/pdf_68f69dcda1c508.99882465.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f69dcda1c508.99882465.result_images/page_2.png b/results/pdf_68f69dcda1c508.99882465.result_images/page_2.png deleted file mode 100644 index 2da27a1..0000000 Binary files a/results/pdf_68f69dcda1c508.99882465.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f69dcda1c508.99882465.result_images/page_3.png b/results/pdf_68f69dcda1c508.99882465.result_images/page_3.png deleted file mode 100644 index b0c103e..0000000 Binary files a/results/pdf_68f69dcda1c508.99882465.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.error.log b/results/pdf_68f69fc9645e11.90581929.error.log deleted file mode 100644 index 302046c..0000000 --- a/results/pdf_68f69fc9645e11.90581929.error.log +++ /dev/null @@ -1,191 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f69fc9645e11.90581929.pdf -============================================================ - -โณ Running: Document Structure... โœ… (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (1.84s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_4msa_qe3_input.PPM for filename /tmp/tess_4msa_qe3_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_4msa_qe3_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.28s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 104 images to analyze... - ๐Ÿ“ท Analyzed image 1/104 (Page 6) - ๐Ÿ“ท Analyzed image 2/104 (Page 7) - ๐Ÿ“ท Analyzed image 3/104 (Page 7) - ๐Ÿ“ท Analyzed image 4/104 (Page 5) - ๐Ÿ“ท Analyzed image 5/104 (Page 6) - ๐Ÿ“ท Analyzed image 6/104 (Page 7) - ๐Ÿ“ท Analyzed image 7/104 (Page 7) - ๐Ÿ“ท Analyzed image 8/104 (Page 7) - ๐Ÿ“ท Analyzed image 9/104 (Page 10) - ๐Ÿ“ท Analyzed image 10/104 (Page 7) - ๐Ÿ“ท Analyzed image 11/104 (Page 10) - ๐Ÿ“ท Analyzed image 12/104 (Page 10) - ๐Ÿ“ท Analyzed image 13/104 (Page 10) - ๐Ÿ“ท Analyzed image 14/104 (Page 12) - ๐Ÿ“ท Analyzed image 15/104 (Page 12) - ๐Ÿ“ท Analyzed image 16/104 (Page 12) - ๐Ÿ“ท Analyzed image 17/104 (Page 14) - ๐Ÿ“ท Analyzed image 18/104 (Page 16) - ๐Ÿ“ท Analyzed image 19/104 (Page 18) - ๐Ÿ“ท Analyzed image 20/104 (Page 18) - ๐Ÿ“ท Analyzed image 21/104 (Page 18) - ๐Ÿ“ท Analyzed image 22/104 (Page 18) - ๐Ÿ“ท Analyzed image 23/104 (Page 20) - ๐Ÿ“ท Analyzed image 24/104 (Page 20) - ๐Ÿ“ท Analyzed image 25/104 (Page 20) - ๐Ÿ“ท Analyzed image 26/104 (Page 26) - ๐Ÿ“ท Analyzed image 27/104 (Page 26) - ๐Ÿ“ท Analyzed image 28/104 (Page 26) - ๐Ÿ“ท Analyzed image 29/104 (Page 22) - ๐Ÿ“ท Analyzed image 30/104 (Page 28) - ๐Ÿ“ท Analyzed image 31/104 (Page 33) - ๐Ÿ“ท Analyzed image 32/104 (Page 29) - ๐Ÿ“ท Analyzed image 33/104 (Page 33) - ๐Ÿ“ท Analyzed image 34/104 (Page 40) - ๐Ÿ“ท Analyzed image 35/104 (Page 33) - ๐Ÿ“ท Analyzed image 36/104 (Page 35) - ๐Ÿ“ท Analyzed image 37/104 (Page 44) - ๐Ÿ“ท Analyzed image 38/104 (Page 40) - ๐Ÿ“ท Analyzed image 39/104 (Page 46) - ๐Ÿ“ท Analyzed image 40/104 (Page 41) - ๐Ÿ“ท Analyzed image 41/104 (Page 46) - ๐Ÿ“ท Analyzed image 42/104 (Page 46) - ๐Ÿ“ท Analyzed image 43/104 (Page 46) - ๐Ÿ“ท Analyzed image 44/104 (Page 48) - ๐Ÿ“ท Analyzed image 45/104 (Page 61) - ๐Ÿ“ท Analyzed image 46/104 (Page 68) - ๐Ÿ“ท Analyzed image 47/104 (Page 68) - ๐Ÿ“ท Analyzed image 48/104 (Page 68) - ๐Ÿ“ท Analyzed image 49/104 (Page 68) - ๐Ÿ“ท Analyzed image 50/104 (Page 68) - ๐Ÿ“ท Analyzed image 51/104 (Page 68) - ๐Ÿ“ท Analyzed image 52/104 (Page 69) - ๐Ÿ“ท Analyzed image 53/104 (Page 69) - ๐Ÿ“ท Analyzed image 54/104 (Page 69) - ๐Ÿ“ท Analyzed image 55/104 (Page 69) - ๐Ÿ“ท Analyzed image 56/104 (Page 68) - ๐Ÿ“ท Analyzed image 57/104 (Page 69) - ๐Ÿ“ท Analyzed image 58/104 (Page 69) - ๐Ÿ“ท Analyzed image 59/104 (Page 71) - ๐Ÿ“ท Analyzed image 60/104 (Page 71) - ๐Ÿ“ท Analyzed image 61/104 (Page 71) - ๐Ÿ“ท Analyzed image 62/104 (Page 71) - ๐Ÿ“ท Analyzed image 63/104 (Page 71) - ๐Ÿ“ท Analyzed image 64/104 (Page 71) - ๐Ÿ“ท Analyzed image 65/104 (Page 71) - ๐Ÿ“ท Analyzed image 66/104 (Page 71) - ๐Ÿ“ท Analyzed image 67/104 (Page 71) - ๐Ÿ“ท Analyzed image 68/104 (Page 71) - ๐Ÿ“ท Analyzed image 69/104 (Page 71) - ๐Ÿ“ท Analyzed image 70/104 (Page 71) - ๐Ÿ“ท Analyzed image 71/104 (Page 71) - ๐Ÿ“ท Analyzed image 72/104 (Page 71) - ๐Ÿ“ท Analyzed image 73/104 (Page 71) - ๐Ÿ“ท Analyzed image 74/104 (Page 71) - ๐Ÿ“ท Analyzed image 75/104 (Page 71) - ๐Ÿ“ท Analyzed image 76/104 (Page 71) - ๐Ÿ“ท Analyzed image 77/104 (Page 71) - ๐Ÿ“ท Analyzed image 78/104 (Page 72) - ๐Ÿ“ท Analyzed image 79/104 (Page 73) - ๐Ÿ“ท Analyzed image 80/104 (Page 73) - ๐Ÿ“ท Analyzed image 81/104 (Page 72) - ๐Ÿ“ท Analyzed image 82/104 (Page 73) - ๐Ÿ“ท Analyzed image 83/104 (Page 72) - ๐Ÿ“ท Analyzed image 84/104 (Page 73) - โœ… Completed analysis of 84/104 images -โŒ (437.27s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.16s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.17s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/73 - โœ… Page 2/73 - โœ… Page 3/73 - โœ… Page 4/73 - โœ… Page 5/73 - โœ… Page 6/73 - โœ… Page 7/73 - โœ… Page 8/73 - โœ… Page 9/73 - โœ… Page 10/73 - โœ… Page 11/73 - โœ… Page 12/73 - โœ… Page 13/73 - โœ… Page 14/73 - โœ… Page 15/73 - โœ… Page 16/73 - โœ… Page 17/73 - โœ… Page 18/73 - โœ… Page 19/73 - โœ… Page 20/73 - โœ… Page 21/73 - โœ… Page 22/73 - โœ… Page 23/73 - โœ… Page 24/73 - โœ… Page 25/73 - โœ… Page 26/73 - โœ… Page 27/73 - โœ… Page 28/73 - โœ… Page 29/73 - โœ… Page 30/73 - โœ… Page 31/73 - โœ… Page 32/73 - โœ… Page 33/73 - โœ… Page 34/73 - โœ… Page 35/73 - โœ… Page 36/73 - โœ… Page 37/73 - โœ… Page 38/73 - โœ… Page 39/73 - โœ… Page 40/73 - โœ… Page 41/73 - โœ… Page 42/73 - โœ… Page 43/73 - โœ… Page 44/73 - โœ… Page 45/73 - โœ… Page 46/73 - โœ… Page 47/73 - โœ… Page 48/73 - โœ… Page 49/73 - โœ… Page 50/73 - โœ… Page 51/73 - โœ… Page 52/73 - โœ… Page 53/73 - โœ… Page 54/73 - โœ… Page 55/73 - โœ… Page 56/73 - โœ… Page 57/73 - โœ… Page 58/73 - โœ… Page 59/73 - โœ… Page 60/73 - โœ… Page 61/73 - โœ… Page 62/73 - โœ… Page 63/73 - โœ… Page 64/73 - โœ… Page 65/73 - โœ… Page 66/73 - โœ… Page 67/73 - โœ… Page 68/73 - โœ… Page 69/73 - โœ… Page 70/73 - โœ… Page 71/73 - โœ… Page 72/73 - โœ… Page 73/73 - โœ… Generated 73 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69fc9645e11.90581929.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f69fc9645e11.90581929.result_images diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_1.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_1.png deleted file mode 100644 index cbcb21a..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_10.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_10.png deleted file mode 100644 index af40b6d..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_10.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_11.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_11.png deleted file mode 100644 index d9128e5..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_11.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_12.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_12.png deleted file mode 100644 index 8f32f77..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_12.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_13.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_13.png deleted file mode 100644 index 9798541..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_13.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_14.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_14.png deleted file mode 100644 index d681469..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_14.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_15.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_15.png deleted file mode 100644 index 032340e..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_15.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_16.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_16.png deleted file mode 100644 index e450a57..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_16.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_17.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_17.png deleted file mode 100644 index e068a21..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_17.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_18.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_18.png deleted file mode 100644 index 07b4fc5..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_18.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_19.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_19.png deleted file mode 100644 index 60c8000..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_19.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_2.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_2.png deleted file mode 100644 index 46d28be..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_20.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_20.png deleted file mode 100644 index ea7608f..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_20.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_21.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_21.png deleted file mode 100644 index a500e02..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_21.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_22.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_22.png deleted file mode 100644 index 99ffbc3..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_22.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_23.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_23.png deleted file mode 100644 index fc3e372..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_23.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_24.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_24.png deleted file mode 100644 index 0e2a855..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_24.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_25.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_25.png deleted file mode 100644 index 36d0132..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_25.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_26.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_26.png deleted file mode 100644 index 978480c..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_26.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_27.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_27.png deleted file mode 100644 index 6633b40..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_27.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_28.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_28.png deleted file mode 100644 index b0ae83c..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_28.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_29.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_29.png deleted file mode 100644 index 5b025ea..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_29.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_3.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_3.png deleted file mode 100644 index 76924a1..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_30.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_30.png deleted file mode 100644 index 79018ef..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_30.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_31.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_31.png deleted file mode 100644 index 8bc7acb..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_31.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_32.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_32.png deleted file mode 100644 index 98a030a..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_32.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_33.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_33.png deleted file mode 100644 index bd5d07a..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_33.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_34.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_34.png deleted file mode 100644 index b09495c..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_34.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_35.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_35.png deleted file mode 100644 index c02d735..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_35.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_36.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_36.png deleted file mode 100644 index 6c6e5c7..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_36.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_37.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_37.png deleted file mode 100644 index 16558f3..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_37.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_38.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_38.png deleted file mode 100644 index d9d233e..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_38.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_39.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_39.png deleted file mode 100644 index e4269e5..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_39.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_4.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_4.png deleted file mode 100644 index e0c9246..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_4.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_40.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_40.png deleted file mode 100644 index 7f728dd..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_40.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_41.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_41.png deleted file mode 100644 index bdac3f6..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_41.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_42.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_42.png deleted file mode 100644 index e5624c0..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_42.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_43.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_43.png deleted file mode 100644 index 5d6364d..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_43.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_44.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_44.png deleted file mode 100644 index 4dacab4..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_44.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_45.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_45.png deleted file mode 100644 index cd27b90..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_45.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_46.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_46.png deleted file mode 100644 index c2155e2..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_46.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_47.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_47.png deleted file mode 100644 index 9ebc521..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_47.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_48.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_48.png deleted file mode 100644 index c20a88d..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_48.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_49.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_49.png deleted file mode 100644 index 4e22281..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_49.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_5.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_5.png deleted file mode 100644 index a4c15ea..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_5.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_50.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_50.png deleted file mode 100644 index 9614a64..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_50.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_51.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_51.png deleted file mode 100644 index 36555ff..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_51.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_52.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_52.png deleted file mode 100644 index dcc104b..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_52.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_53.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_53.png deleted file mode 100644 index a8ac1da..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_53.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_54.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_54.png deleted file mode 100644 index 2d37634..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_54.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_55.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_55.png deleted file mode 100644 index 98d42d4..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_55.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_56.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_56.png deleted file mode 100644 index b37d068..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_56.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_57.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_57.png deleted file mode 100644 index 9efc70e..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_57.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_58.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_58.png deleted file mode 100644 index 019a8fb..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_58.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_59.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_59.png deleted file mode 100644 index fae5bc3..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_59.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_6.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_6.png deleted file mode 100644 index b697045..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_6.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_60.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_60.png deleted file mode 100644 index 4e111f3..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_60.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_61.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_61.png deleted file mode 100644 index a0da3b7..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_61.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_62.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_62.png deleted file mode 100644 index 933a336..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_62.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_63.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_63.png deleted file mode 100644 index 62343f7..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_63.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_64.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_64.png deleted file mode 100644 index a1e39a3..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_64.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_65.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_65.png deleted file mode 100644 index 0c80aa9..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_65.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_66.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_66.png deleted file mode 100644 index 763fb40..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_66.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_67.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_67.png deleted file mode 100644 index 8acf21f..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_67.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_68.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_68.png deleted file mode 100644 index afb03f6..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_68.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_69.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_69.png deleted file mode 100644 index 024e4c2..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_69.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_7.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_7.png deleted file mode 100644 index e7a9596..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_7.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_70.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_70.png deleted file mode 100644 index 993ddc0..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_70.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_71.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_71.png deleted file mode 100644 index 8a237f2..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_71.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_72.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_72.png deleted file mode 100644 index a6ad6d4..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_72.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_73.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_73.png deleted file mode 100644 index 49ea6a2..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_73.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_8.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_8.png deleted file mode 100644 index b6b84bb..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_8.png and /dev/null differ diff --git a/results/pdf_68f69fc9645e11.90581929.result_images/page_9.png b/results/pdf_68f69fc9645e11.90581929.result_images/page_9.png deleted file mode 100644 index 0178e7b..0000000 Binary files a/results/pdf_68f69fc9645e11.90581929.result_images/page_9.png and /dev/null differ diff --git a/results/pdf_68f6a123103a16.95205684.error.log b/results/pdf_68f6a123103a16.95205684.error.log deleted file mode 100644 index b38026a..0000000 --- a/results/pdf_68f6a123103a16.95205684.error.log +++ /dev/null @@ -1,33 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6a123103a16.95205684.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.03s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_clnzq0j4_input.PPM for filename /tmp/tess_clnzq0j4_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_clnzq0j4_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.29s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... -โŒ (0.00s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.22s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6a123103a16.95205684.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6a123103a16.95205684.result_images diff --git a/results/pdf_68f6a123103a16.95205684.result_images/page_1.png b/results/pdf_68f6a123103a16.95205684.result_images/page_1.png deleted file mode 100644 index 7a16d46..0000000 Binary files a/results/pdf_68f6a123103a16.95205684.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6ab952aea59.61854300.error.log b/results/pdf_68f6ab952aea59.61854300.error.log deleted file mode 100644 index 6afb8e0..0000000 --- a/results/pdf_68f6ab952aea59.61854300.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6ab952aea59.61854300.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_ov70rw4l_input.PPM for filename /tmp/tess_ov70rw4l_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_ov70rw4l_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.58s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) - โœ… Completed analysis of 2/2 images -โŒ (8.51s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.19s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ab952aea59.61854300.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ab952aea59.61854300.result_images diff --git a/results/pdf_68f6ab952aea59.61854300.result_images/page_1.png b/results/pdf_68f6ab952aea59.61854300.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6ab952aea59.61854300.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6abe9c77e33.83416866.error.log b/results/pdf_68f6abe9c77e33.83416866.error.log deleted file mode 100644 index 87c27b4..0000000 --- a/results/pdf_68f6abe9c77e33.83416866.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6abe9c77e33.83416866.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_4dmby7lx_input.PPM for filename /tmp/tess_4dmby7lx_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_4dmby7lx_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.30s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.06s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.13s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6abe9c77e33.83416866.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6abe9c77e33.83416866.result_images diff --git a/results/pdf_68f6abe9c77e33.83416866.result_images/page_1.png b/results/pdf_68f6abe9c77e33.83416866.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6abe9c77e33.83416866.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6ade0d96bc7.16714326.error.log b/results/pdf_68f6ade0d96bc7.16714326.error.log deleted file mode 100644 index 264cfbe..0000000 --- a/results/pdf_68f6ade0d96bc7.16714326.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6ade0d96bc7.16714326.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_s5x0tsw3_input.PPM for filename /tmp/tess_s5x0tsw3_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_s5x0tsw3_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.25s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.11s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ade0d96bc7.16714326.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ade0d96bc7.16714326.result_images diff --git a/results/pdf_68f6ade0d96bc7.16714326.result_images/page_1.png b/results/pdf_68f6ade0d96bc7.16714326.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6ade0d96bc7.16714326.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6adf7410db2.07790225.error.log b/results/pdf_68f6adf7410db2.07790225.error.log deleted file mode 100644 index fdc4545..0000000 --- a/results/pdf_68f6adf7410db2.07790225.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6adf7410db2.07790225.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_k2rksq_n_input.PPM for filename /tmp/tess_k2rksq_n_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_k2rksq_n_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.24s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.11s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6adf7410db2.07790225.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6adf7410db2.07790225.result_images diff --git a/results/pdf_68f6adf7410db2.07790225.result_images/page_1.png b/results/pdf_68f6adf7410db2.07790225.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6adf7410db2.07790225.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6ae11dc5909.87744585.error.log b/results/pdf_68f6ae11dc5909.87744585.error.log deleted file mode 100644 index 40d0e42..0000000 --- a/results/pdf_68f6ae11dc5909.87744585.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6ae11dc5909.87744585.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_0ypnsqjx_input.PPM for filename /tmp/tess_0ypnsqjx_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_0ypnsqjx_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.25s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.11s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ae11dc5909.87744585.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6ae11dc5909.87744585.result_images diff --git a/results/pdf_68f6ae11dc5909.87744585.result_images/page_1.png b/results/pdf_68f6ae11dc5909.87744585.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6ae11dc5909.87744585.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6aed1383740.11031975.error.log b/results/pdf_68f6aed1383740.11031975.error.log deleted file mode 100644 index 8f26ff7..0000000 --- a/results/pdf_68f6aed1383740.11031975.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6aed1383740.11031975.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_rfk_yptb_input.PPM for filename /tmp/tess_rfk_yptb_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_rfk_yptb_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.25s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.12s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6aed1383740.11031975.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6aed1383740.11031975.result_images diff --git a/results/pdf_68f6aed1383740.11031975.result_images/page_1.png b/results/pdf_68f6aed1383740.11031975.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6aed1383740.11031975.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6af6245f318.77370078.error.log b/results/pdf_68f6af6245f318.77370078.error.log deleted file mode 100644 index 4309b31..0000000 --- a/results/pdf_68f6af6245f318.77370078.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6af6245f318.77370078.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_o376e9iv_input.PPM for filename /tmp/tess_o376e9iv_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_o376e9iv_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.25s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.11s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6af6245f318.77370078.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6af6245f318.77370078.result_images diff --git a/results/pdf_68f6af6245f318.77370078.result_images/page_1.png b/results/pdf_68f6af6245f318.77370078.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6af6245f318.77370078.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6b0ed318ed3.95218801.error.log b/results/pdf_68f6b0ed318ed3.95218801.error.log deleted file mode 100644 index b5d1c4d..0000000 --- a/results/pdf_68f6b0ed318ed3.95218801.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6b0ed318ed3.95218801.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_5dn0uau5_input.PPM for filename /tmp/tess_5dn0uau5_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_5dn0uau5_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.24s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.11s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b0ed318ed3.95218801.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b0ed318ed3.95218801.result_images diff --git a/results/pdf_68f6b0ed318ed3.95218801.result_images/page_1.png b/results/pdf_68f6b0ed318ed3.95218801.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6b0ed318ed3.95218801.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6b140959eb8.73318317.error.log b/results/pdf_68f6b140959eb8.73318317.error.log deleted file mode 100644 index d306cc5..0000000 --- a/results/pdf_68f6b140959eb8.73318317.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6b140959eb8.73318317.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_stx6b7yl_input.PPM for filename /tmp/tess_stx6b7yl_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_stx6b7yl_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.30s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.12s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.01s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b140959eb8.73318317.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b140959eb8.73318317.result_images diff --git a/results/pdf_68f6b140959eb8.73318317.result_images/page_1.png b/results/pdf_68f6b140959eb8.73318317.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6b140959eb8.73318317.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6b3cabf22f6.61086159.error.log b/results/pdf_68f6b3cabf22f6.61086159.error.log deleted file mode 100644 index 18b598b..0000000 --- a/results/pdf_68f6b3cabf22f6.61086159.error.log +++ /dev/null @@ -1,38 +0,0 @@ -Object 2 0 not defined. - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6b3cabf22f6.61086159.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (0.04s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_hrrnkpj2_input.PPM for filename /tmp/tess_hrrnkpj2_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_hrrnkpj2_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.30s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 2 images to analyze... - ๐Ÿ“ท Analyzed image 1/2 (Page 1) (cached) - ๐Ÿ“ท Analyzed image 2/2 (Page 1) (cached) - โœ… Completed analysis of 2/2 images -โŒ (0.05s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.12s) -โณ Running: Content Readability... โŒ (0.00s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/1 - โœ… Generated 1 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b3cabf22f6.61086159.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b3cabf22f6.61086159.result_images diff --git a/results/pdf_68f6b3cabf22f6.61086159.result_images/page_1.png b/results/pdf_68f6b3cabf22f6.61086159.result_images/page_1.png deleted file mode 100644 index 027f0ca..0000000 Binary files a/results/pdf_68f6b3cabf22f6.61086159.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.error.log b/results/pdf_68f6b43e2556a6.15321010.error.log deleted file mode 100644 index 6c33299..0000000 --- a/results/pdf_68f6b43e2556a6.15321010.error.log +++ /dev/null @@ -1,57 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f6b43e2556a6.15321010.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (1.31s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_cl1fg9mv_input.PPM for filename /tmp/tess_cl1fg9mv_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_cl1fg9mv_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.29s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 3 images to analyze... - ๐Ÿ“ท Analyzed image 1/3 (Page 6) - ๐Ÿ“ท Analyzed image 2/3 (Page 6) - ๐Ÿ“ท Analyzed image 3/3 (Page 9) - โœ… Completed analysis of 3/3 images -โŒ (20.50s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.16s) -โณ Running: Content Readability... โŒ (0.01s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/20 - โœ… Page 2/20 - โœ… Page 3/20 - โœ… Page 4/20 - โœ… Page 5/20 - โœ… Page 6/20 - โœ… Page 7/20 - โœ… Page 8/20 - โœ… Page 9/20 - โœ… Page 10/20 - โœ… Page 11/20 - โœ… Page 12/20 - โœ… Page 13/20 - โœ… Page 14/20 - โœ… Page 15/20 - โœ… Page 16/20 - โœ… Page 17/20 - โœ… Page 18/20 - โœ… Page 19/20 - โœ… Page 20/20 - โœ… Generated 20 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b43e2556a6.15321010.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f6b43e2556a6.15321010.result_images diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_1.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_1.png deleted file mode 100644 index cbeab4c..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_10.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_10.png deleted file mode 100644 index 3b62c46..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_10.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_11.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_11.png deleted file mode 100644 index 30a8de6..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_11.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_12.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_12.png deleted file mode 100644 index 8b418fa..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_12.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_13.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_13.png deleted file mode 100644 index 7b8c9eb..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_13.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_14.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_14.png deleted file mode 100644 index 62aaddf..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_14.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_15.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_15.png deleted file mode 100644 index 9ecd048..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_15.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_16.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_16.png deleted file mode 100644 index e04e6ec..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_16.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_17.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_17.png deleted file mode 100644 index 9086973..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_17.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_18.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_18.png deleted file mode 100644 index 20946b2..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_18.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_19.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_19.png deleted file mode 100644 index ad324d1..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_19.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_2.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_2.png deleted file mode 100644 index e9f0a78..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_20.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_20.png deleted file mode 100644 index 080711c..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_20.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_3.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_3.png deleted file mode 100644 index a7df08d..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_4.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_4.png deleted file mode 100644 index fdeb67d..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_4.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_5.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_5.png deleted file mode 100644 index 958007d..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_5.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_6.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_6.png deleted file mode 100644 index eaa909b..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_6.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_7.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_7.png deleted file mode 100644 index a4f39dc..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_7.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_8.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_8.png deleted file mode 100644 index 38b2ad6..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_8.png and /dev/null differ diff --git a/results/pdf_68f6b43e2556a6.15321010.result_images/page_9.png b/results/pdf_68f6b43e2556a6.15321010.result_images/page_9.png deleted file mode 100644 index 46fbe80..0000000 Binary files a/results/pdf_68f6b43e2556a6.15321010.result_images/page_9.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.error.log b/results/pdf_68f7946b8c7544.64378350.error.log deleted file mode 100644 index 454318d..0000000 --- a/results/pdf_68f7946b8c7544.64378350.error.log +++ /dev/null @@ -1,64 +0,0 @@ - โ„น๏ธ Using Google API key: AIzaSyDWVxBWiDTeECqa... - โœ… Anthropic Claude initialized -๐Ÿ” Enterprise PDF Accessibility Check -๐Ÿ“„ File: pdf_68f7946b8c7544.64378350.pdf -============================================================ - -โณ Running: Document Structure... โŒ (0.00s) -โณ Running: Metadata... โŒ (0.00s) -โณ Running: Language Declaration... โŒ (0.00s) -โณ Running: Text Extractability... โŒ (1.26s) -โณ Running: OCR Quality... ๐Ÿ” Running OCR analysis... - โš ๏ธ OCR check skipped: (1, 'Error in fopenReadStream: failed to open locally with tail tess_90drwcxh_input.PPM for filename /tmp/tess_90drwcxh_input.PPM Leptonica Error in findFileFormat: image file not found: /tmp/tess_90drwcxh_input.PPM Error in fopenReadStream: failed to open locally with tail P6 for filename P6 Leptonica Error in pixRead: image file not found: P6 Image file P6 cannot be read! Error during processing.') -โŒ (0.65s) -โณ Running: Image Accessibility... ๐Ÿ–ผ๏ธ Analyzing images with AI... - ๐Ÿ“Š Found 3 images to analyze... - ๐Ÿ“ท Analyzed image 1/3 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 2/3 (Page 6) (cached) - ๐Ÿ“ท Analyzed image 3/3 (Page 9) (cached) - โœ… Completed analysis of 3/3 images -โŒ (0.12s) -โณ Running: Color Contrast... ๐ŸŽจ Checking color contrast... -โŒ (0.19s) -โณ Running: Content Readability... โŒ (0.01s) -โณ Running: Link Quality... โŒ (0.00s) -โณ Running: Heading Structure... โŒ (0.00s) -โณ Running: Form Accessibility... โŒ (0.00s) -โณ Running: Table Structure... โŒ (0.00s) -โณ Running: Reading Order... โŒ (0.00s) -โณ Running: Font Accessibility... โŒ (0.00s) -โณ Running: Security Settings... โŒ (0.00s) -โณ Running: Navigation Aids... โŒ (0.00s) -โณ Running: PDF/UA Structure (veraPDF)... - ๐Ÿ“‹ Running veraPDF PDF/UA validation... - โš ๏ธ veraPDF validation error: veraPDF failed: -โŒ (1.28s) - -๐Ÿ”ง Analyzing auto-remediation options... - โœ… 5 issues can be auto-fixed - -๐Ÿ“ธ Generating page images for visual display... - โœ… Page 1/20 - โœ… Page 2/20 - โœ… Page 3/20 - โœ… Page 4/20 - โœ… Page 5/20 - โœ… Page 6/20 - โœ… Page 7/20 - โœ… Page 8/20 - โœ… Page 9/20 - โœ… Page 10/20 - โœ… Page 11/20 - โœ… Page 12/20 - โœ… Page 13/20 - โœ… Page 14/20 - โœ… Page 15/20 - โœ… Page 16/20 - โœ… Page 17/20 - โœ… Page 18/20 - โœ… Page 19/20 - โœ… Page 20/20 - โœ… Generated 20 page images at 150 DPI - -๐Ÿ“„ Report saved: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f7946b8c7544.64378350.result.json -๐Ÿ“ธ Page images saved to: /Users/daveporter/Desktop/CODING-2024/PDF-Accessibility-checker/results/pdf_68f7946b8c7544.64378350.result_images diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_1.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_1.png deleted file mode 100644 index cbeab4c..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_1.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_10.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_10.png deleted file mode 100644 index 3b62c46..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_10.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_11.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_11.png deleted file mode 100644 index 30a8de6..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_11.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_12.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_12.png deleted file mode 100644 index 8b418fa..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_12.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_13.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_13.png deleted file mode 100644 index 7b8c9eb..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_13.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_14.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_14.png deleted file mode 100644 index 62aaddf..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_14.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_15.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_15.png deleted file mode 100644 index 9ecd048..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_15.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_16.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_16.png deleted file mode 100644 index e04e6ec..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_16.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_17.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_17.png deleted file mode 100644 index 9086973..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_17.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_18.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_18.png deleted file mode 100644 index 20946b2..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_18.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_19.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_19.png deleted file mode 100644 index ad324d1..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_19.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_2.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_2.png deleted file mode 100644 index e9f0a78..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_2.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_20.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_20.png deleted file mode 100644 index 080711c..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_20.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_3.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_3.png deleted file mode 100644 index a7df08d..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_3.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_4.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_4.png deleted file mode 100644 index fdeb67d..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_4.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_5.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_5.png deleted file mode 100644 index 958007d..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_5.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_6.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_6.png deleted file mode 100644 index eaa909b..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_6.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_7.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_7.png deleted file mode 100644 index a4f39dc..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_7.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_8.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_8.png deleted file mode 100644 index 38b2ad6..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_8.png and /dev/null differ diff --git a/results/pdf_68f7946b8c7544.64378350.result_images/page_9.png b/results/pdf_68f7946b8c7544.64378350.result_images/page_9.png deleted file mode 100644 index 46fbe80..0000000 Binary files a/results/pdf_68f7946b8c7544.64378350.result_images/page_9.png and /dev/null differ diff --git a/results/test_demo.result_images/page_1.png b/results/test_demo.result_images/page_1.png deleted file mode 100644 index 6528db5..0000000 Binary files a/results/test_demo.result_images/page_1.png and /dev/null differ diff --git a/results/test_demo.result_images/page_2.png b/results/test_demo.result_images/page_2.png deleted file mode 100644 index 322adef..0000000 Binary files a/results/test_demo.result_images/page_2.png and /dev/null differ diff --git a/results/test_demo.result_images/page_3.png b/results/test_demo.result_images/page_3.png deleted file mode 100644 index dab1dcf..0000000 Binary files a/results/test_demo.result_images/page_3.png and /dev/null differ diff --git a/results/test_numbering.result_images/page_1.png b/results/test_numbering.result_images/page_1.png deleted file mode 100644 index 9c95ccc..0000000 Binary files a/results/test_numbering.result_images/page_1.png and /dev/null differ diff --git a/results/test_numbering.result_images/page_2.png b/results/test_numbering.result_images/page_2.png deleted file mode 100644 index 2da27a1..0000000 Binary files a/results/test_numbering.result_images/page_2.png and /dev/null differ diff --git a/results/test_numbering.result_images/page_3.png b/results/test_numbering.result_images/page_3.png deleted file mode 100644 index b0c103e..0000000 Binary files a/results/test_numbering.result_images/page_3.png and /dev/null differ diff --git a/uploads/pdf_68f690e61b1447.67377632.pdf b/uploads/pdf_68f690e61b1447.67377632.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f690e61b1447.67377632.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f690f834ae44.29322803.pdf b/uploads/pdf_68f690f834ae44.29322803.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f690f834ae44.29322803.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f6910eeeb3d7.85806352.pdf b/uploads/pdf_68f6910eeeb3d7.85806352.pdf deleted file mode 100644 index 998a35b..0000000 Binary files a/uploads/pdf_68f6910eeeb3d7.85806352.pdf and /dev/null differ diff --git a/uploads/pdf_68f6916ce7f617.79988789.pdf b/uploads/pdf_68f6916ce7f617.79988789.pdf deleted file mode 100644 index 28eeda1..0000000 Binary files a/uploads/pdf_68f6916ce7f617.79988789.pdf and /dev/null differ diff --git a/uploads/pdf_68f69229886380.01972382.pdf b/uploads/pdf_68f69229886380.01972382.pdf deleted file mode 100644 index 998a35b..0000000 Binary files a/uploads/pdf_68f69229886380.01972382.pdf and /dev/null differ diff --git a/uploads/pdf_68f6935c7349c0.04540621.pdf b/uploads/pdf_68f6935c7349c0.04540621.pdf deleted file mode 100644 index 998a35b..0000000 Binary files a/uploads/pdf_68f6935c7349c0.04540621.pdf and /dev/null differ diff --git a/uploads/pdf_68f6958a113a43.08606753.pdf b/uploads/pdf_68f6958a113a43.08606753.pdf deleted file mode 100644 index 998a35b..0000000 Binary files a/uploads/pdf_68f6958a113a43.08606753.pdf and /dev/null differ diff --git a/uploads/pdf_68f695b6821ca6.28479502.pdf b/uploads/pdf_68f695b6821ca6.28479502.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f695b6821ca6.28479502.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f6961adb6136.16828488.pdf b/uploads/pdf_68f6961adb6136.16828488.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f6961adb6136.16828488.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f6962a8dcc17.54521335.pdf b/uploads/pdf_68f6962a8dcc17.54521335.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f6962a8dcc17.54521335.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f699e7ec43d9.29719320.pdf b/uploads/pdf_68f699e7ec43d9.29719320.pdf deleted file mode 100644 index 7c02b9e..0000000 --- a/uploads/pdf_68f699e7ec43d9.29719320.pdf +++ /dev/null @@ -1,91 +0,0 @@ -%PDF-1.3 -%โใฯำ -1 0 obj -<< -/Producer (pypdf) -/Title (Sample Accessible Document) -/Author (PDF Accessibility Checker) -/Subject (Demonstration of accessible PDF features) ->> -endobj -2 0 obj -<< -/Type /Pages -/Count 1 -/Kids [ 4 0 R ] ->> -endobj -3 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj -4 0 obj -<< -/Contents 5 0 R -/MediaBox [ 0 0 612 792 ] -/Resources << -/Font 6 0 R -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> -/Rotate 0 -/Trans << ->> -/Type /Page -/Parent 2 0 R ->> -endobj -5 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] -/Length 272 ->> -stream -Gas2Cd7s`t&4PLPMYi2VXP7>1X)BJNORPM%Ipag[>I/HD3ud_YmBWC&!iD/F9^Xo"UQDCONkb8&PJQ'A6"u],<07nL/%h7sENc'oDQh6br8"E;6KL4>pBgI/5?c5b]%N[Qjros?JTspJr8R*Q(Umg]FRcAiL6lFGE;5ZXs;EdN3#CQk5`gp>8$c;R@TK'ROK@OBPht2*sA?W,Hklf~> -endstream -endobj -6 0 obj -<< -/F1 7 0 R -/F2 8 0 R ->> -endobj -7 0 obj -<< -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding -/Name /F1 -/Subtype /Type1 -/Type /Font ->> -endobj -8 0 obj -<< -/BaseFont /Helvetica-Bold -/Encoding /WinAnsiEncoding -/Name /F2 -/Subtype /Type1 -/Type /Font ->> -endobj -xref -0 9 -0000000000 65535 f -0000000015 00000 n -0000000178 00000 n -0000000237 00000 n -0000000286 00000 n -0000000475 00000 n -0000000838 00000 n -0000000879 00000 n -0000000986 00000 n -trailer -<< -/Size 9 -/Root 3 0 R -/Info 1 0 R ->> -startxref -1098 -%%EOF diff --git a/uploads/pdf_68f69a05d34264.73320265.pdf b/uploads/pdf_68f69a05d34264.73320265.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/pdf_68f69a05d34264.73320265.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF diff --git a/uploads/pdf_68f69a5a2e6be2.05642819.pdf b/uploads/pdf_68f69a5a2e6be2.05642819.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/pdf_68f69a5a2e6be2.05642819.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF diff --git a/uploads/pdf_68f69b6cedb0f4.31927028.pdf b/uploads/pdf_68f69b6cedb0f4.31927028.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/pdf_68f69b6cedb0f4.31927028.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF diff --git a/uploads/pdf_68f69c31da9ad5.56277356.pdf b/uploads/pdf_68f69c31da9ad5.56277356.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/pdf_68f69c31da9ad5.56277356.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF diff --git a/uploads/pdf_68f69dcda1c508.99882465.pdf b/uploads/pdf_68f69dcda1c508.99882465.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/pdf_68f69dcda1c508.99882465.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF diff --git a/uploads/pdf_68f69fc9645e11.90581929.pdf b/uploads/pdf_68f69fc9645e11.90581929.pdf deleted file mode 100644 index 5826c8a..0000000 Binary files a/uploads/pdf_68f69fc9645e11.90581929.pdf and /dev/null differ diff --git a/uploads/pdf_68f6a123103a16.95205684.pdf b/uploads/pdf_68f6a123103a16.95205684.pdf deleted file mode 100644 index 3b71ba5..0000000 --- a/uploads/pdf_68f6a123103a16.95205684.pdf +++ /dev/null @@ -1,74 +0,0 @@ -%PDF-1.4 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -5 0 obj -<< -/PageMode /UseNone /Pages 7 0 R /Type /Catalog ->> -endobj -6 0 obj -<< -/Author (\(anonymous\)) /CreationDate (D:20250915170729+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20250915170729+00'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False ->> -endobj -7 0 obj -<< -/Count 1 /Kids [ 4 0 R ] /Type /Pages ->> -endobj -8 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 2007 ->> -stream -Gatm;9lm'h&A@7.oP)I9FZb1/fR(deR7t&Zg*HCQP`#sUUG3l\!lru$^F]b#*!9,D[H1"S#t_>touCj[i8DZ+s.^:dlOppZF2@NW\H^Y-q66C,c1:5QR9T(N!slftBKD\YnH?RFoF%oa_m=6/>l`&I?fa<5.PFU7\`7YiHJoRq04Pjs4hl?XH%O4$=HG(?nNB!],Ng&45@O@*/rk.N&Wc]I2T0eYL:AoEK5'7t0QOhQT=?7"A,a=+$#Y59KI80r=Bi\no[-@G>!8^iJ$6,F25mk&qMFEg3!D1je8'GM^G>u4^XEdc;MH=@N-?uEU)F;W\F`Uq8^a-itZ;$'Dem(H`#g6>YdH3iK.POo9^Na(PnH+M7aB\5EN!dQ\-ob!F@9X'La&qoqhIM^,<5l8*@YtQ.4DiKZ!AaT9q#aorUMj9C1Ff(Hm$K=1'!`9t2.fdU(NKWdQD4,pde2^LIW7/s76staE6Zu";I[)JS1?NOiuPtANH+!Knr/AA$2qjH>po(GIdU[f2hIhrA@IPVLa;WBare/n0*!H6^]X_92G7/cK=Cm?mtW6uCP'6PB!9>o?"Ik4&)'&=:(o2F;^C]1RVLkC[NV_*Q5(BTZ61\a-S'@^D$h&l@W9\i1+Cq0C](c@1(l,kGRNSD7ZqshS'%^+[\qISAm??Hb,&S&7]klnDe4qs-We_%km1]^d<`D:20>-W(CUXX&0^DX-k#j@!hUUthIYoMoT9[Mt>I/gliIX99\L(n?PYR8R1r_WL=2Ih2!"a#CNXY!JfD_Qc>+05]u*fOiLh-fV`n1pq1;%5FKikM"-,5SVMU6bHnb\FJLGs-Bk*O#;?.P+@fV15%d@oqQ-V!gI.eb3Q'Z9F]FKQG0CrsnVVK34\KEj(ui]"YK(hZYp=b2>Z(]@!W'eTc9`P"*(o1>.@"RRB,4`bs/g7#t/f@80DsI$D]iW9QXMQsWBQWtnCZcjT`?XTd!/_>g0Xh.Y@m,Fc.IRm---7HR4MC1"6;OJ$t`c+":\1O,&NoS]&6r1BmbqZ/UR;LSLL+"%[Rp18P_8iSVtfdDU$;!@l-Fn#+pH&bbCs>!Gn:#jNjiKjJo%2K<'qabkc_@D:HI]"BS-.KhK$=d-TnNga8.u@f3T,iJbd`4%K3/QDK`Y-/QBOi;J[9h,$Eendstream -endobj -xref -0 9 -0000000000 65535 f -0000000073 00000 n -0000000114 00000 n -0000000221 00000 n -0000000333 00000 n -0000000536 00000 n -0000000604 00000 n -0000000887 00000 n -0000000946 00000 n -trailer -<< -/ID -[<8d7f4ccf48e440f88cb7af2826b614cb><8d7f4ccf48e440f88cb7af2826b614cb>] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 6 0 R -/Root 5 0 R -/Size 9 ->> -startxref -3044 -%%EOF diff --git a/uploads/pdf_68f6ab952aea59.61854300.pdf b/uploads/pdf_68f6ab952aea59.61854300.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6ab952aea59.61854300.pdf and /dev/null differ diff --git a/uploads/pdf_68f6abe9c77e33.83416866.pdf b/uploads/pdf_68f6abe9c77e33.83416866.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6abe9c77e33.83416866.pdf and /dev/null differ diff --git a/uploads/pdf_68f6ade0d96bc7.16714326.pdf b/uploads/pdf_68f6ade0d96bc7.16714326.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6ade0d96bc7.16714326.pdf and /dev/null differ diff --git a/uploads/pdf_68f6adf7410db2.07790225.pdf b/uploads/pdf_68f6adf7410db2.07790225.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6adf7410db2.07790225.pdf and /dev/null differ diff --git a/uploads/pdf_68f6ae11dc5909.87744585.pdf b/uploads/pdf_68f6ae11dc5909.87744585.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6ae11dc5909.87744585.pdf and /dev/null differ diff --git a/uploads/pdf_68f6aed1383740.11031975.pdf b/uploads/pdf_68f6aed1383740.11031975.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6aed1383740.11031975.pdf and /dev/null differ diff --git a/uploads/pdf_68f6af6245f318.77370078.pdf b/uploads/pdf_68f6af6245f318.77370078.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6af6245f318.77370078.pdf and /dev/null differ diff --git a/uploads/pdf_68f6b0ed318ed3.95218801.pdf b/uploads/pdf_68f6b0ed318ed3.95218801.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6b0ed318ed3.95218801.pdf and /dev/null differ diff --git a/uploads/pdf_68f6b140959eb8.73318317.pdf b/uploads/pdf_68f6b140959eb8.73318317.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6b140959eb8.73318317.pdf and /dev/null differ diff --git a/uploads/pdf_68f6b3cabf22f6.61086159.pdf b/uploads/pdf_68f6b3cabf22f6.61086159.pdf deleted file mode 100644 index bd8e600..0000000 Binary files a/uploads/pdf_68f6b3cabf22f6.61086159.pdf and /dev/null differ diff --git a/uploads/pdf_68f6b43e2556a6.15321010.pdf b/uploads/pdf_68f6b43e2556a6.15321010.pdf deleted file mode 100644 index 8490cf3..0000000 Binary files a/uploads/pdf_68f6b43e2556a6.15321010.pdf and /dev/null differ diff --git a/uploads/pdf_68f7946b8c7544.64378350.pdf b/uploads/pdf_68f7946b8c7544.64378350.pdf deleted file mode 100644 index 8490cf3..0000000 Binary files a/uploads/pdf_68f7946b8c7544.64378350.pdf and /dev/null differ diff --git a/uploads/test_visual_demo.pdf b/uploads/test_visual_demo.pdf deleted file mode 100644 index 1f43be5..0000000 --- a/uploads/test_visual_demo.pdf +++ /dev/null @@ -1,182 +0,0 @@ -%PDF-1.3 -%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< -/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R ->> -endobj -2 0 obj -<< -/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font ->> -endobj -3 0 obj -<< -/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font ->> -endobj -4 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 1451 /Subtype /Image - /Type /XObject /Width 300 ->> -stream -Gb"0U:P__`(r5Yt,l\28,"<@I,_]>K;\UNM/2/TUKS@F<@6n$%)pH;'AY[?(A8K7P(5Ke+`K+F5HMYqn-F1kFQb_3ELetzzzzzzzzzzzzz!!!!-Pbh%7gc9ZY>2%[UT9kiZ\T1,>XXXaK2c%;%cCBBH/t-eFec]6>'O%iZi'(MUc*'J&[3496qX)6O+hJ>\EHSBoUnR_+Kbqs:Y#oqn6ih=9Bg/T8Il`+05Eg?K6mr9bhg$:!;X9d+($j:okI^Hj2U>`:CfL^$[VL(Ue1.BQ#4Sp(A"+/NA#QqU9RQF/%nh'A&=\6X\H'Y:CfL^Me84R5>\JbQA6"DkHA7c_jS6O6N>j`9\Y3W^<+BS?7Csjc^sB.3T3oZhL'Xr+^Hq"Bu!H4FC`rRq=RBNU)u'9)"?iWF7QkXR6?\XkOm?S3<_2#k"RFXqYI"T>g=+(u9T'rLcIIk`HASr$aF7QC(.0oUoX<7Er,d]6alq9P(&K4RBk7pje5/H2:JBbTSMWn``>pF@#G0eRm.Yo/a3?IOp*V-V^@`H8'`VDU0Bu'ZclPB=.rfjd!Aal+Qc2&`)0kV2m]m,G*5]V+haO5-nO!CH!7tS2?5rl+ukHps:2Y'Z_>:b1G.=ARLNpF`k!'OcGA?.8,uJ[;33mUPCGI*_`%U8F/W`7bZLnRlWWBn`$:l.%_Oh5LDW6_EA&X.@7BuAa$gLF;.bToM.^=daI\F3;0sWWR:sH^-?;f$GnUIQS8#9;6dlD^OCCKS-aD[QgDPC"q>6`Q8)kh;]r-bL"NtZEoVmTO_KL;hrXZT/]\ec$7#Lr0NG]W<"BoEpY15IVrIm%V[(Pendstream -endobj -5 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 120 /Length 2263 /Subtype /Image - /Type /XObject /Width 350 ->> -stream -Gb"0UH#+0p*5M)GH>j0WTFrdu!g24eE`>HpUC[t>'p3IV%>':aW)s+$0lf["&PF]GM:%uQ_8O8"9oPfDs6tg_K/`R\)@sIqlL4BTh4<6Ph)?@cgR@Tlo>g:bRsjmWn$g'"g"f[MV^>/De,dTs"dW/n=tYn@@IYt^3f"@Ih/A?Y]VGp81uG[peeoHYgio'hm`&MIoP`;r/kknsZL?SBHJbh\e9?tPU-dD(Q"lPcpYA$^kFD>#2DouOmZWj2:RsH:=3!s=*D5MZ=-M86YuE:mV>CthWtA3qhm*"QghM7'CW;XWP?[gWX45f0n*F)8;h#fa%np!ZoCPH3Q"LM'-[/"j,p(#\L5AEgdbd,So\Dp[JeN2#Cgn571;7rG8S;JH,"St`=Y5Ok\=5D^p%B+lkYTMR>AL_IXTH)G$ZXci_^=fL)L:EjRV!Bd(V9fbeeftOCIac\j;'chH1e#Ue[9@cd2K4Fr!a)n!p&bgn@MDEqV5'I;66tYGhqu%9.4dp!e$T9:>X"[ltDF?F"F:k&gK8LOO6r-MLF\CfGoP=!tGV'kThlUJEQ1tSlM_cum"<&&$L_map'IJT$]MO\$'cR$?=G@b$[Gl5d5M?TNRN7Z)Ht[4f51-X?2?jF-N;'7m:-%G"'$G=S)fXD\;g6SI%Z'E-]4)q2K%gSWVb$[#_V_Wo9:71.LN+(/W?pBQ7YsKqZbNc&1Y&8e?_p2CK".>4mb870k=6Ts1\a+T)-8">6[k_?&G^QL>.-J)dU\*a=a%Q&;B]^fF:M'%>Y-N4#K?Yg9aq-`r@@#4pL.NnJr@A#h$E6uDQ!sV*T7K&4d=43g9"hrF5A6/;o1ceAU%q+Q[<;=[TZYWn]l'7b8,_Is=io3?<#NOX-d;-a`\;+o&MFro02?daHuAcFurlMY0"e+^;[Oa$th&[f6h:l[r_;VqG\?L#H,SbB-5$eQ,.nbJRX=4Wf>/_Q0J,`:+RHcg[dKd:X-(S`a.OdR.48CG.DcR:[K[Mfa?n(G=fI2Sk"[.T(Sp8KF^h;Qd7jM2W%\Ac6?)dO@loX).`'#X++Y1kCljHohQdV6O0JW2?-+5R^$r32OZ](SrA7C$/D)7*C.tX"bNQSJCZ;,PaW7K48VY08N^RL6(qH1#:[Zn7US:L06WbDRKs)OL"1.Y3O2_eCKeaM2O-2O^p3(MRHGp$`VC&G)8MOe2W2sU\IlE0Yn(%I$QMZNK!=U<$e)(ckSi0endstream -endobj -6 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2549 /Subtype /Image - /Type /XObject /Width 280 ->> -stream -Gb"0U$#g>t*!btg,d%GnKncJs5U@_PXUpaH)Ti3CWhW1eN^;K$ALJRAheM.!lABp.UPPpALo-1h8DKGcOG&E.+qjGBSbsfr41jtKHS9[,2rHrJ#asCm5A2"&B_B^UJ.5Pg)(W4tUjAf'D)"GAH+82g'Isrrd%Tku'ZgpDf*>*^&'j%Alo!_-k#Hm)R^:BuZ,#j5QMuHrS=0cl.$r(S`p^gCfHs!XaaZN9thnJDf_ha+TerJNh*iU_n0Nr1o`'5C=/bZ0)s,@upTEO@Flpm!P1EX/;nPE.^HpU/o>TODT3(;.]Cu2M]Akd,/Jj7EPmL@Y>H0!&eZ;jq+fa8Jn[CBSc,Q1K).J#A=+m2,O;58\$0Bi`mN;puBJ":)t<-J#>J6bcQhH*h^0%lD(/=]OH'\&."82dmjZ.`C>7g6kJ)pX?"an$5N;#3QFZB?@PQPGYrS.`bI^aWkASU`QnaS=_3k4rq,H=Y^H*,7oG8e96PJmMg]%oL[t94a2mP93T"<=b*@2CHaK)/-0:/YckY)m*Xs:n(?88?f*-*]dE_ec'g:C2nME;OZiZ53qY[;QRs0Anp`U3,gOOW-/dn,mD=RPe8p"]pDftG9"K3%J^k&?An!bFUU'am7l`)\PUY%:&W9?e;eG^SPk'ORW`@!%u6m4UX>FWL`\./VOOH?EZ6pGbl]+#V>8\%%a!W+Y859!RoWM=`LZ_-IFQ<;tIiH*8;165`ZcH7A1_%^V<[dFu,8P&XP,q?=noK,(DQ6tW+BP`'Gl.0^`]"RWT#)jC1X0AhA;IVB[4ZoCIdI:%'pUJ'VX&1>O].]/`'7l!M*8b!Z\Ge$!ZlINXb/pOWe()f(nX)9V0hH8f#d_,B`o=6g"F_H;XO]@>0%imb"5p<*Z(h=CCO,WrR3,k]SrrISN>0-sjTF?%48&^T(o158niPLMfCY/:31m$<.AA3-bIMMP:aNZ:q275KfLCO,`hm:OrEcTsc0B(R-UMJK<;NEE3`BQa[L8)>1s0Y;;,D1HX^!l'<$)W^5NY\8,R59hi8&^]+o10b'M-dk>1_!Kg*2qBTgt>,%eZ%#8'L$m+ThK+KW`Hg"S*Qph$JN_!ZY(5GTjDdJYj1?`AuU64U9-^Mn7;[l;Dh_?jHMCBq8Of;`G,\%Yo^SY&OrrUXqrJ$d%;VStd;`$I^3`%91R7HfWl.ii0ACVh%6!fijL!CoqI`du$P.])`/%K-.T]"`FClZ-3O&&B/*a@`&:Rq3AGuRHPrI&TAjgRd#ED?)5Ln*YS91]4RUJd+\O5+V,`N[q"nk0>OeJap&,i=&W\F?Z60lA!2Pq"r4:p]A2A??rhTN&'b(9LpAQ&!C9gsDHZ`K>65-m0X=)Io"@YsE2B&8L[iX/_a2N?((kL$@jPXSj]qPlEREI^q7Meot#$1QUVk9n;Jna]A>Wd%SX?Sk%B.;1sZn7RZl@9(L6P/tJEpKf$hh[s@T*;MuPMO,/UJLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCM!1,r+3k=+Zi~>endstream -endobj -7 0 obj -<< -/Contents 18 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.2c2d8c1a59ccd390014a13df1823520c 6 0 R /FormXob.4239313bbffe37482d3f1e78247febb9 5 0 R /FormXob.c61c5faae8c5519bf83811c2a31afbe3 4 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -8 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 80 /Length 1760 /Subtype /Image - /Type /XObject /Width 200 ->> -stream -Gb"0SHUnlS*!btK%spT278X2APSBr^+VdBXo_M3)&dk?LrDb",77$mGWO]17lYB4#;)>3%bSOEbO!W"Th-+sQopKFU[<0sbgT0/2GJACT__fZh74r[f^;G_nF3\\DS,%*ebc(-al%k.OLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLknUFdH%':2/+Xj/L0D?U!H(`SMcPE7;i!2gZ1uM`-+3?['^uUfj9Mei0%Kqg_[`OU:&rJNJ>IBZLB_;CQsT)lOP9^Z?DP)0frt"_5)_7b2US(1s\@2S)Soc1GHj^:4,LCk+stsS%W0TX6OPe/%N%u[QB1'ahsD:d;Pe^S].eR:GZ(oIjUp<[kUr@RB*OQc7aB\1Qa2([\Q]!WE`n%$X:JH`.Hf-pkQ$@Cla,]7W#ls#_nR4E*JhDk=_^$67ImA%Q*jsPZo%EU?hs^V7pj9XrAn9mOn#o+Z#1X./oD1%_XGSa;L)/*tl3eRO)Igg9(c=9P?3YHHNu1Rbk[:LU).nsp'X5g\g>O2iZ`T[-Ao;[,a`4UkR4:jq[I$]Y7)^CfqeLZtcQ_h8fh8A(4_>Ucb8<]_R"h+hVM<<=RG29o?af>BD\P6mk=aqRaJ4RZAnBI\?g0C2j3+JBOMi:anWH&.SAJ&V82n>#m!BWl&,fq4lb!+ci9\`S:HDRo.BQZsTMri-ss5GA_qi3e;l504J.+=N^E]A3E0HK76j^T!CH)c0nj.>1hAlV?$:.#M7PTM3=/,P"?esj*,QAN@/4RI=sXK:J,?`0/>^^Hh!HrBo2g!.~>endstream -endobj -9 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 90 /Length 2270 /Subtype /Image - /Type /XObject /Width 250 ->> -stream -Gb"0TI8!XP*!bu?=)2B:rFIL[/XdQTi]!gmb[^Idi+ta!1:qXS4:d@8L'MpPrJg`9]G_&*oj[B;t]5lk:?7t$ILI[@8kAi3\CIb/gh.Q)Ekgc>*2Vn1,m/Gn3kt8li['\Hn5te(OPl/pWGa:.L7N>_;@'9@<[JIfm!Y;Fq#iQ>*W-"?9%?^H5lQWk=lTn6C@jE`DEN@Y6eMrn/d0i\NHOV7gu!C#d$!c-s:"Fp6_:k[T8imJ(imbu`b$:NMTpr=[DAT>d[e:Mt8r3&G@,o^\lq^-V.Z8)/H?fJDcrV_gUnVVOd(duGZT-kBK3>2u38o=s-HoZkh#'HO)g7iPAqb*?VHJ-=VTGHa%]JF'3,%lla\.dQTcMN;e)ejTWs:%[[umnS*_+Za2jAnhE\CDT?cfD27\&:WLNs_X7auj8$^d=E\jJjg;5%@nm"!I^E'mX,_Qe&oVaV4_kS13@#q!q9s7W0Q=V70^V?XRgka/d9qO+'F+WK,Cnma+q_KLX-/jm#i@42rBQm+X_ZVL=*kL5UK>;"%oHQTRK+]92`]*Tq!u(?gCneoRmJNV7C/L2"P8)itN!c#Kl;?%8Q@eYKmPTL#nCO`pQK:Y>[:G-j1KC@^n$jKsQ]3UQ)WXLrhTkAL1Nqp](e_I6for/>(/,QZ*6DWc\b(&-m8I'UZEYbsNH18`kuHI@h;pnXOZH6&@OI_'4/n[p-QAEOajbmVe+LoX:Set;ZYPY+[I-);QJW*%($W`ZD'UE6ImY9f'+3UL&-fRd[]Mg`IuMJk,M8%]:X9(SgoZl;S4g4NuBM*C5I>sIQ`gQ!_l->Kl%='W'uDQh0\0f\R!VF47Uk!oU$#tFHDU\BX]08rLu]D,]k%$.>kOVK7@+pU91[Q?,6QDZ>O,qk&.sg4Q*]br2pUa\[#&)fll[H8)WI:\/C:U4Z]YGM+6U9^"OU"r0`)g?f3J@+Ci'L9m(mB-5CW(].TGe^7*=S;MTPi2Rh6P+rr"A(6QcGDq]71jX+KFt[W)E.je3]n![peTp*t>+'88?kl4`HDs4l]n*a"b`C6WIld>bWJ(Y'u_7%uuW0hrKT)nOnirBfD%MCo!"GD;9O\:"i=i%pST,'b75d[?%e*l^o7.rXYfeoV^M%qTF529R4sP*n7Ig(40>)S[_Ul@:!We&UqeUjQpnr+naYj1^;eRLcPQ4'N$S9m>8"nMT59!dcGYu[$sMuMpfSliP7EmKkjDgWjh9t+)0=k5;K+,LkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkpkCLkr2^IfkUlr,2~>endstream -endobj -10 0 obj -<< -/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 100 /Length 2098 /Subtype /Image - /Type /XObject /Width 320 ->> -stream -Gb"0UBiEMR(l%"a5&LXl$S!>%iiZ9`.U&YaY./u`/g0/6Q90sJ14UL"F.VBnPD\TMe!!(WkM4Z:dW?k)VOqsC&dedBzzzzzzzzzzzzzz!!!AhcCHJPbE!]-qU6h_PKfRUQ^@*q]/Q_7]6E^CTs(Zg2kCib%eoDIe(Ap=m+JSpq:`5lD/a6SregYUF^4Kqs.96dIe/EoU))hacQ^-&KpuFRB54fT=gR8-KaSP-';\T@AnGY"G^.]7:#WO'F`l<=?2O9YP:A+7/81DnGB^*QrV$'YkN/==RSKD7V4[53\PljB5;4da4[4Ak<968+4Y"3rs*j#;X^(P:L"j(TfD-,=`MKE-l07H+TqQ>X[\Y')G5^4KfQd;emA['6qi%;FUMXjbiIbd15JIF6*n6:0m/6bTml(+Ao=Jqu5.,DqJjNOUDtnEFXN^LjQ06>W09KcCq!g^!*7RRFCC'@t2Fm`mj]D'j&(_d=),[*mgSP1T2Dmn?Fj?L;'<[O^hoO_/Gir/O?#==ILF4s5>"_n]/($r/NTBibX]sM,oB&bXEpW8`=8Bmt+04Z9cOOpuq5l'8hp\K!X(6*cDSq2=j()&k#J/QGIOk`QgCc'fWOpdNr2Pmn*&tKUo',R?+OlO)&X>2$;V3h1GbJJ>$>*]-7Sb5T31pM=$t7[Lm2h2P)^L,n,E:_p%,Y2hdW)09PRM=B5`$M\gNVA=%BG='&IirH:X#X)T*>pX#U$qK[(#1&XI>bcgE3==hHMf4nI'4aQa6[CoGB6X1N"X+bu@!8?EU[]B@r,QDN&Da4]XcH]0(Bq!XSY?kL:U&5B2%gVpd]mI6UYeIh8j[3%lDgQiC--ORi9Zp*+DHY$&g`&g*il[?ih4.Z4MG*ToY4cdor*-/uRYHP$)uLJAWq*3)WuUk_o&n>kKD]KNg&;L%3"W'd>L?j,XI.mQ5Ak3G+$Qds;Q43QG&-=O[mOERSf^[$9pJX!9:;TYp2#cebEcM;'(tk_ltg39Z-fK^CYoM"Q!Z&ncjJ[bl:0"k&3N/q)]Nj.hU^7ia0g,cI%DG5pXN'24GfTJj2[5(b7B=*Hc*Tc>hS[`pCo*=[.(Q4p/j6N<&A;c=TmgJc't011du.7e]Q@ted1j$dEuCQH@("(QS0\<6^Wfs<'91?d*Yrl3mSTZ+%D\[e`snF)HpD#)TdT:;<=OC/NZda^P+Oajdos0fAEWg`(adP<,I^V;uQ,2'A>fD,-N%IAuJeO7d5e"ckTDd&(U]mEh-;jtkSs"A%krSkeSq>#Z/g`^Y*/:0YceRXW]%X&Bzzzzzzzzzzzzz!!!#WYOE("02E8~>endstream -endobj -11 0 obj -<< -/Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << -/FormXob.1310210de56a359f75cadd6058093d5c 8 0 R /FormXob.85598c76e5387c61e079109a4090d1fe 10 0 R /FormXob.fe6121c1aa08a49ce6c0bd2422036546 9 0 R ->> ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -12 0 obj -<< -/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font ->> -endobj -13 0 obj -<< -/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font ->> -endobj -14 0 obj -<< -/Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 17 0 R /Resources << -/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] ->> /Rotate 0 /Trans << - ->> - /Type /Page ->> -endobj -15 0 obj -<< -/PageMode /UseNone /Pages 17 0 R /Type /Catalog ->> -endobj -16 0 obj -<< -/Author (anonymous) /CreationDate (D:20251020161349-04'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20251020161349-04'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (unspecified) /Title (untitled) /Trapped /False ->> -endobj -17 0 obj -<< -/Count 3 /Kids [ 7 0 R 11 0 R 14 0 R ] /Type /Pages ->> -endobj -18 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 341 ->> -stream -GarWr9i&Y\$jPX:ItbE6&maiL1uX6udNf;FjhN`n',IsXJsHT`hpOU*nK9/qZ*Zp?=GnqpB^3Zg\lWZTo68Cf!.WaZc`5in9GDZ%R(!@*)"BsDtendstream -endobj -19 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 344 ->> -stream -GarWs9hPRC&-h(ireg6C@b[=(,b'$WZqsRqaMDY\bhC3WKAA-SoA/g1NJ)uDKfj9?JA\,A)-_W,%uV_71&)YXbn^"8\FmfqB4*UZD!1LRV[l*=<,/qp_WaF4(>qiqc[,[GDuFLaS#tC!?$4sh\hih/i6T1!ru6I11s&fn"1a/8,Fq*/abM4Z=s1c_&/sbfWXIJ@*k#Q]GOhNl[:$otBErSq[H$5h`F>80m8I?;W?c#k,hdoL]=QEFUh!;+FCil4DK>8,14!Eb`$k;JWPoEIU_(lWjeA,ulbnYu9;@dJA4iG\d24hBH&gG/fiT->V6-I8_9*A$T[7,A=saK3GDm#MXT~>endstream -endobj -20 0 obj -<< -/Filter [ /ASCII85Decode /FlateDecode ] /Length 442 ->> -stream -GasbV92EDi'SZ;\MW51?/=k35\e>/!#\\19)`FO!BXP%f9\#d(oV'c<'%:B[h"6!gSBbOsou"r$O+@VX@*ZP=n/[m5f\d.]pdmKT@+iNS)B7_SSCInc`.b=90mXAeShRgo1_kUi"ZO^NMCDDo$Ibd]rX+,JKC*!s`3K`nK2oG>q4iWhFc1hYI4r'_j8bX;T\rNki)>`]lI15^[ObkfsST8VodBK%7U*+4ust^O'%Jk&hHsIW1DRX-QC5H*H?@\rGCjBpH>nendstream -endobj -xref -0 21 -0000000000 65535 f -0000000073 00000 n -0000000136 00000 n -0000000243 00000 n -0000000355 00000 n -0000001997 00000 n -0000004451 00000 n -0000007190 00000 n -0000007544 00000 n -0000009494 00000 n -0000011954 00000 n -0000014244 00000 n -0000014600 00000 n -0000014684 00000 n -0000014762 00000 n -0000014958 00000 n -0000015028 00000 n -0000015325 00000 n -0000015399 00000 n -0000015831 00000 n -0000016266 00000 n -trailer -<< -/ID -[] -% ReportLab generated PDF document -- digest (http://www.reportlab.com) - -/Info 16 0 R -/Root 15 0 R -/Size 21 ->> -startxref -16799 -%%EOF